
C++
Moderator: Moderators
I'm by no means a proffesional coder or anything, but I'm very happy that the stuff I do know is C++. Sure the syntaxes are similar etc it's easy to learn more languages, but personally I don't see much point, as I know C++, to use other languages. There's way more interesting things to learn, like how opengl or directx works.SwiftSpear wrote:Ugg, do you really believe learning is so closed ended? I hope to god your coding knowledge is good because your psychology knowledge is really really bad.Zpock wrote:C++ should be learned first otherwise the aspiring programmer would probably get comfortable with whatever else he learns first and never bother to learn proper c++ and become some b-rate programmer:
Getting comfortable with java/C#/another strict OOP language is fine, C++ isn't that different, it basicly just has more odd obscurities that must be learned through trial and error in comparison. Hell, it's pretty odd for a decent coder to not have a passable mastery of a good half dozen or so languages. It helps that most languages are reasonably similar once you get over syntax, but still...
100% agree. My university taught programming with Python (when I started, now they skip straight to Java - though with a python project in the 2nd half of the year... let's just say I think the whole department has gone rapidly downhill.) Python is a great language to learn the basics.imbaczek wrote:You can count on my disagreement to this line 24/7.KDR_11k wrote:Should also not be Python since strict typing is something that needs to be learned early on.
Why Python is good:
- teaches indentation
- doesn't bother you with complex syntax (which you need in C++ if you want STL, that is all the time)
- no need to compile
- reads well
- good documentation, free online books (dive into python)
- static typing gets in the way unless you really need it (not too often) - not a problem in Python, no static typing (you can still check types explicitly)
- it fits your head - very important for newcomers
C++ is arguably the worst choice for a first programming language you can make. Even Lisp or assembly is better, because they teach you something other than fighting obscure compile errors.
If you want to go into graphics engine development or something similar, that's fine. For pretty much every other project, a different language is probably better.Zpock wrote:I don't see much point, as I know C++, to use other languages. There's way more interesting things to learn, like how opengl or directx works.
-
- Posts: 14
- Joined: 12 Apr 2007, 22:50
AF - C is important because it teaches you pointers and weird type syntax of C, which is missing from modern higher level languages.
As for C++ vs more advanced languages and salaries - here, C++ programmers generally earn less than experienced C# developers.
This is because productivity is generally higher in C#.
It holds true even for me personally, I used to work as game engine developer (C++ job), it was high skill job, they didnt even answer to you unless you had master in computer sciences or math and entry exams were hard, but still, salary was about 3x smaller than I get as enterprise .NET developer (mostly C#).
Personally my route was: Basic, 8bit assembler/machine code, Pascal, 80x86 assembler, object pascal, C, PHP, Delphi, C++, Java, C#/.NET
For my own apps I like to work with C# most, because it gives you high comfort, very fast development speed and decent run speed.
If spring was in C# there would be no desyncs, and even if they were due to programming error, finding them would be easy, because resync would be much easier to implement (built in binary serialization/desirialization)
As for C++ vs more advanced languages and salaries - here, C++ programmers generally earn less than experienced C# developers.
This is because productivity is generally higher in C#.
It holds true even for me personally, I used to work as game engine developer (C++ job), it was high skill job, they didnt even answer to you unless you had master in computer sciences or math and entry exams were hard, but still, salary was about 3x smaller than I get as enterprise .NET developer (mostly C#).
Personally my route was: Basic, 8bit assembler/machine code, Pascal, 80x86 assembler, object pascal, C, PHP, Delphi, C++, Java, C#/.NET
For my own apps I like to work with C# most, because it gives you high comfort, very fast development speed and decent run speed.
If spring was in C# there would be no desyncs, and even if they were due to programming error, finding them would be easy, because resync would be much easier to implement (built in binary serialization/desirialization)
Algorithms book. Seriously. CLRS or something similar. When you have some experience in such diverse languages (I mean, VB + Lisp? That's hard to come by even in the open source hacker community!), you need to switch to a higher level of abstraction, where the language is a tool and not an objective.neddiedrow wrote:Now, I have some weak experience in Basic, Java, VB and Lisp.
Where should I actually learn how to program?
You should start with assembly. Other languages are overbloat for wussies. 
No really, when you begin, it's very comfortable to start in language where you have only a hundred or so opcode and then nothing else, where all variables are basically the same type, where the only operation you can do are addition and substraction*, etc... I much prefer this clearly delimited settings of assembly to something like C++ where between the leftover of C and each compiler idiosyncrasies, the syntax alone takes five hundred page to be described, where to get anything done you'll need to use libraries, but merely listing all c++ library would take millenias, where the compiler will nag you for unimportant stuff like the lack of a cast between a char* and unsigned char* but on the other hand let pointers and arrays indexes roam freely, etc...
Otherwise, I'd recommand to start programming in one of those nice and fuzzy languages real programmer wouldn't even call programming language, something like some javascript lines in a *.htm, or a programmable calculator, or whatever else where you can get things done and start to have fun without having to spend 30hr to merely get the "Hello world!" straight from the book to compile. Something were you can display a small image at a position with two keywords, without having to digest phonebook sized tomes on graphical library, something where you can concanetate strings with just a +, something high level but friendly.
Because it's more important to start having fun with shitty little code than to want to start right away with professional code and grow discouraged before even writing a single line of your own.
* Ok, some processor have multiplication now, but imo that's just cheating.
But then, "what language to start with" may be slightly off topic if Suck-Suck is already proficient in many languages but just asking for recommandation on a C++ compiler. Which is unlikely come to think of it.

No really, when you begin, it's very comfortable to start in language where you have only a hundred or so opcode and then nothing else, where all variables are basically the same type, where the only operation you can do are addition and substraction*, etc... I much prefer this clearly delimited settings of assembly to something like C++ where between the leftover of C and each compiler idiosyncrasies, the syntax alone takes five hundred page to be described, where to get anything done you'll need to use libraries, but merely listing all c++ library would take millenias, where the compiler will nag you for unimportant stuff like the lack of a cast between a char* and unsigned char* but on the other hand let pointers and arrays indexes roam freely, etc...
Otherwise, I'd recommand to start programming in one of those nice and fuzzy languages real programmer wouldn't even call programming language, something like some javascript lines in a *.htm, or a programmable calculator, or whatever else where you can get things done and start to have fun without having to spend 30hr to merely get the "Hello world!" straight from the book to compile. Something were you can display a small image at a position with two keywords, without having to digest phonebook sized tomes on graphical library, something where you can concanetate strings with just a +, something high level but friendly.
Because it's more important to start having fun with shitty little code than to want to start right away with professional code and grow discouraged before even writing a single line of your own.
* Ok, some processor have multiplication now, but imo that's just cheating.
You just sound like a professor that's all about theory of teaching but never had any children and forgot how he learnt himself. Strict typing is way overrated. For a beginner, it's just an annoying annoyance and nothing else. And if you later need it, well, it's not like there is anything that prevent you from getting used to it afterward. No really, learning about type will just come naturally after a while, when the time is ripe and the young programmer start wondering about deeper issues, but trying to force it upfront doesn't help, to the contrary. It just teach people to go casting all over the place without a second thought when the compiler starts complaining. Totally unlike assembly, where the lack of any type checking force you to actually think about what represent the bytes you are manipulating.KDR_11k wrote:I still think that not learning strict typing is a hazard to a young programmer's development.
But then, "what language to start with" may be slightly off topic if Suck-Suck is already proficient in many languages but just asking for recommandation on a C++ compiler. Which is unlikely come to think of it.