not sure whether there's any truth in it but a dev told me the c stands for cheese because so many people have earned so much cheese from programming the language as oppose to other lesser paid languages
Funny thing is there is no "Perfect" or "Best Language"
I've not been programming for long but I always wanted to understand hardware and how the things we create run in unison with it. So I learnt C (Still learning.)
I then picked up Python/Ruby just because hey, easy shit and more for scripting and automation I can build little tools to automate things that grind the piss out of me.
It's more the concepts of programming you need to understand, a lot of teachers and courses don't get in to that heavy problem solving bit, that's what you honestly need.
There are certainly languages that do things better than others, but if you're really pissed because things aren't working you can just use C to create your own language and build from it.
Programming and writing code never really made sense until I put in at least 600+ hours of writing and then one day I just woke up and shit just clicked and it all made sense.
So pick a language and get cracking, it's not difficult, it's just the hours you put in.
Programming is a form of self-expression: if a language is designed to constrain a programmer, then the language is trying to stop certain ideas from being expressed. So, the only reasonable language that I will use is one that is designed to be used to express things, rather than one that is designed to stop you from expressing yourself. So, will I use some crap like Java, Go, Rust? No way.
Programming is about talking to the hardware. If you don't have go-to statements and pointers, you can't talk to the hardware. I wont even consider a language that doesn't even have basic shit like that. ESR wants to talk about how he is a "tribal elder" and stuff about UNIX when it was cool... truly the John Romero of the UNIX community... although John Romero was actually relevant at some point. Sometimes ESR can write things that make sense, but other times he falls flat. It's like a coin-flip reading his blog.
Yeah that's true, I'd still always recommend someone to learn C - Then they can branch off in to C++ and it's just a lot easier to then take all the concepts from one language and syntax and apply it to other things.
I've been having mad fun learning Ruby recently, but like loads know;
Writing 1000000 lines of code doesn't really mean you're a good programmer, it's how efficient you are with your code.
I like the fact that I can use C and write one massive program, compile it and it just does what I want, without having to mess around with a multitude of libraries etc.
It's all semantics really, so long as you have an idea in mind and pick a language to execute it in, that's where you need to start.
Like don't just learn to program for the sake of programming, learn to make something, it'll make it a lot easier to learn and be persistent.
So C/C++/C# could be all a good starting point, but the point really is to just pick a language and get going.
Writing 1000000 lines of code doesn't really mean you're a good programmer, it's how efficient you are with your code.
Yep. One can come up with lots of hacky solutions but the sign of a truly good programmer is by accomplishing things in an efficient, and potentially elegant, way. That's not something you can achieve through trial and error alone; it requires a lot of reflection and a clear understanding of all the components of the task you're trying to accomplish.
My only complaint with C++ is that the language is too big. If i'm writing C++, then I can just write it without using the features I don't like, but, I really do have a hard time reading C++ code that other people have written. I don't have this issue in C since it doesn't try and reinvent things like for loops...
So, I just stick to C, since it feels more consistent to use.
You're not a real programmer until you have a talk at C++ con where you complain about how bad C++ is and then get a bunch of angry questions on the Q&A
I think C can have this problem too though, where reading larger projects almost feels like reading a unique "superset" of C, with how people use macros and stuff. In theory C++ should be able to represent more complex structures in a more concise and readable way, but some of the syntax is really obtuse. I recently wrote a compiler for a uni project and used anonymous functions in generating the abstract syntax tree. The C++ lambda syntax is just gross :<
Templates have potential to be beautiful in use, but can get out of hand pretty fast.
People seem to be really divided on the C++11 (and later) STL but I've seen some really good benchmarks and it standardizes a lot of really useful stuff. I think the modern C++ style is much more readable in many ways, but I've seen things still tend towards ugly shit at the "bottom layer".
I agree with you about larger projects, but in general I find them easier to read than C++, for example I can read the cpython codebase just fine.
I Just see too many unpredictable things with C++, because I think that the more features there are, the more bad edge cases there are, and then you eventually see more and more of them in someone's code.
Different languages are good for different things. One could argue Assembly is the best family of languages because it can produce the most optimized programs.
But try writing QC in Assembly.
We need abstraction.
Java is good for general purpose programming (web servers, for one, because there are so many good libraries out there for the language, and because the JVM is actually very good and fast right now). And it helps that it's supported by plenty of platforms.
C and C++ are good because they can both be very abstract (especially C++ of course), but also very low-level. GCC can compile well written code into optimized code very well.
Rust is interesting, as it's a functional programming language that is way easier to read and understand than languages like Lisp and Haskell.
Go is awesome because it's so simple, yet still capable of amazing things.
There is no need for these kinds of wars or arguments. Choose the appropriate language for your project, because it won't always be the same one (unless you are stubborn and don't intend to ever work in the business for any real amount of time).