Hey /g/, I want to start learning C right away. I got Learn C The Hard Way in pdf. I'm not willing to switch to GNU/Linux again right now, so I want to stick to windows.
I think I'm ready to learn, but I still need to choose a compiler. I have Visual Studio 2013, but some /g/uy said to avoid using it. Can you guys recommend me a good compiler?
And any tips? Thanks bros.
Why not CodeBlocks with mingw?
Back in 2007 I used BloodshedDev-C++ - it even had inbuild C-tutorials
>why choose C?
-It's much closer to how a computer actually works than other languages
-It DOESN'T hold your hand; it forces you to learn by fucking up
-Teaches you about memory management
-Fucking almost everything else takes things from C
-C works fucking everywhere
Because you are a shitheel scumbag who should have been left in a dumpster at birth.
This isn't angry. I'm not even that guy you insulted.
You are a sub-human piece of garbage. Your suicide would make the world a better place. It was a logical utilitarian solution that this current post of yours added another datapoint to support my conclusion.
Sorry, every breath you take is a net negative value to the world.
>not treating everything and yourself as an object.
It is good practice.
Don't let feminism cloud your clarity.
Depends what you want to do. If you just want to code simple programs to speed up your workflow or have fun, python is cool. If you want to develop android apps or GUI application, Java is good. If you want to have an honorable knowledge about programming and computers, C is the way to go.
Get Notepad++ or Sublime Text 2 (if you don't mind non-free software). If you start off using an IDE you'll be useless without one.
OP, download debian or ubuntu and do a:
as root:apt-get updateapt-get install build-essential
or if using sudo(like ubuntu):sudo apt-get updatesudo apt-get install build-essential
This will set you up to start learning C, make a new file, hello.c and type:#include <stdio.h>
Then compile it with:make hello
You will see a new executable in your working directory, named 'hello'...
should printHello, /g/!
From there, get a book - I'm using 'The C Programming Language", some feel it's a bit outdated and you may want to get a suggestion from someone else(esp if you have no programming experience).
If you are a babby(no offense), I'd start with ubuntu.
well, gcc is the compiler and make is a toolset to build programs. When you build from source and/or start writing more complex programs, make will be used so it's a good idea(IMO) to get started with it immediately.
No, and you won't have to unlearn any bad habits from C.
Stroustrup: No. C isn’t simpler for C-style programming than C++ is, nor “closer to the hardware,” nor indeed more efficient. I have yet to see a program that can be written better in C than in C++. I don’t believe such a program could exist. By “better” I mean smaller, more efficient, or more maintainable. The myth that “C is simpler and more efficient” have caused (and causes) untold numbers of beginners to concentrate on obscure workarounds and difficult-to-master techniques, rather than learning how to use more powerful supporting features. Many then fall in love with their obscure and complex code, considering it a sign of expert knowledge. It is amazing what people can fail to learn when they are told that it is difficult and useless. The only reason I know of to use “plain C” rather than a suitable subset of C++ is lack of tool support on a given platform.
Dude, you are going further into the rabbithole..
But you are both right, unfortunately many many jobs are for java/c#.
Having said that, someone who knows their shit in C or C++ is worth their weight in gold
>keep being a shit level programming monkey
C++ is by far the most common language vidya is developed in, and for good reason. These AAA companies aren't either stupid or ignorant. Performance is critical to their industry, but reasonably fast turnaround of huge projects is also highly important. They typically are dealing with huge codebases, and integrating with huge array of pipeline tools. Good abstractions are necessary to make this work well, and make relatively rapid turnarounds possible.
Solution? There's only one at the moment--C++.
Although turnkey distros are great for fast deployment/testing, for a babby I'd say it's best to start with a easy to use distro with smart default configurations(ubuntu, etc). At least that way he/she can get familiar with how it all works and not expect everything to be working OOB
Hey, I do have a job!
It isn't primarily programming though.
Like I said, YOU ARE RIGHT, and most codemonkey jobs are going to be Java/C#.
whoops, probably shouldve went to the site, I was thinking it was a turnkey distro. My bad.
Why do people constantly say Mono is shit without providing any reasons? Its an implementation of C# 3.0 for other OSs and it fucking works, it even outperforms Microsofts runtime in some areas.
Is it because certain frameworks like WPF that have external dependencies and won't work with it? That has got nothing to do with Mono but with how WPF is written.
>I'm not willing to switch to GNU/Linux again right now, so I want to stick to windows.
is why I recommended this approach instead of just using Linux Mint instead, which of course would be alot better for programming C in, and very easy to get started in for Windows users.
tbh, I haven't tried it since maybe 2011, and it was(iirc) in it's infancy. Maybe I'll try it again - but with the sheer amount of truly portable, cross platform languages I don't see the point tbh.
I wish I could make the jump to GNU/Linux, then I could actually be productive and learn a language instead of just posting about learning it and switching books as soon as I pass the basic sections.
Linux Mint Cinnamon is a very easy distro to pick up. Try running Windows apps under the latest Wine (be sure to also install Playonlinux and use that as your front-end for all Wine-based program installs). That will probably cover the majority of Windows applications on Linux issues for you. Barring that, create some room on your laptop for another partition, install Mint on it, and dual-boot with it.
That way, you'll have an easy distro, all the power of writing software on Linux, and you can still use your apps you need?
Aren't these generally different use cases? I'm just a dilettante but my simplistic understanding was that C and its variants do the heavy lifting (OS and serious apps), Java allows cross-platform use, and Python is simple and is good for writing apps that run on top of C.
Java and cross platform is pure marketing bullshit. C# runs on every platform as well, that is if it has .net. Java is only "platform independent" because they left out every function that doesn't work on all platforms. You can load them as libs though, but then your code only runs on one platform. Also the JVM performance is considerably worse on any non-windows platform. If you wanted do develop cross platform you'd gave better luck with some script language.