Which language to learn next...

Started by
33 comments, last by PlayGGY 20 years, 3 months ago
First, a little background. I am sixteen, and have been programming in C++ for almost two years. I now think I have mastered it, with lots of help from you at GameDev (thanks a lot, guys... ). What should I learn that next? Assembly? I have always wanted to understand how C++ works under the hood. Or should I learn C#? It looks really nice, but keep in mind that I do not intend on developing exclusively on Windows forever. What would be most benificial for me to learn next? I am thinking of learning assembly and then C#, because C# shouldn't take very long to learn, but what do you think? I am open to all opinions (well, I did ask here, right? ) -Daniel [edited by - PlayGGY on January 14, 2004 11:57:37 PM]
And the rockets' red glare, the bombs bursting in air,gave proof through the fight that our flag was still there.Oh say, does that star-spangled banner yet waveover the land of the free and the home of the brave?
Advertisement
It depends what you plan on doing.

If you are wanting to make highly tuned games or someday migrate to consoles then asm could definatly be a good thing to learn. Of course if you want to make programs for cell phones you probably should learn Java.


Drakonite

[Insert Witty Signature Here]
Shoot Pixels Not People
Thanks for the input.

For those of you who know assembly:

Did you learn it for multiple CPUs? I assume it is about the same thing for most of them.
And the rockets' red glare, the bombs bursting in air,gave proof through the fight that our flag was still there.Oh say, does that star-spangled banner yet waveover the land of the free and the home of the brave?
No actually i THINK its even different between compilers... (well jsut keywords) and im usre due to different cpu archetecture it would be noticeably different, but by how much i dont know (i wanted to look into asm, but couldnt find any real good resources and kinda got shot down...)

there IS a community that might help you there though...

Win32 Asm Community

(first board that didnt flame me as a n00b :-D)
When General Patton died after World War 2 he went to the gates of Heaven to talk to St. Peter. The first thing he asked is if there were any Marines in heaven. St. Peter told him no, Marines are too rowdy for heaven. He then asked why Patton wanted to know. Patton told him he was sick of the Marines overshadowing the Army because they did more with less and were all hard-core sons of bitches. St. Peter reassured him there were no Marines so Patton went into Heaven. As he was checking out his new home he rounded a corner and saw someone in Marine Dress Blues. He ran back to St. Peter and yelled "You lied to me! There are Marines in heaven!" St. Peter said "Who him? That's just God. He wishes he were a Marine."
quote:Original post by PlayGGY
Did you learn it for multiple CPUs? I assume it is about the same thing for most of them.


Take it this way - most (all) programming languages share the same concepts, and yet they each have differences in the way things are done. Assembly languages is the same. They will all have instructions for arithmetic operations, reading/writing to memory, etc, but the details of how they work, how to best arrange them, etc may vary wildly from machine to machine. Then, just like you have different high-level programming paradigms (imperative, functional, logical, structured, object-based, object-oriented), you have different ISA paradigms (the great CISC/RISC debate).

So, just like knowing one language well will give you hints as to how things work in another language (they''re all targetting Van Neumann binary computers, after all), knowing an ASM language well will give you some insight into other ASM languages, but will not make you proficient in them by any stretch of the imagination. Knowing the concepts involved (addressing, stack, etc...) is useful even if you don''t go into the detail needed to be an effective ASM programmer.

I suggest that, rather than, or in addition to your computer''s ASM language, you go and learn languages that do things completely differently from C++, so that you get exposed to another way of thinking, and come back with some understanding of the decisions that have to be taken in language design, and, yes, some idea of what they are doing under the hood (e.g. the 1001 ways a language can do function calls, handle arguments (currying, type inference, closures... hmmm good stuff), how it all boils down to a CALL or a JMP (tail recursion tricks!), that kind of stuff).

And of course, no post of mine could be complete without a plug for python.

“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” — Brian W. Kernighan (C programming language co-inventor)
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan
Yeah, thanks Ademan555, I remember doing a google search, and lots of the info is from 1996 or earlier. Well, probably CPUs haven''t added many new instructions. Tommorow I am probably going to start on assembly, and hope I can find a good tutorial.
And the rockets' red glare, the bombs bursting in air,gave proof through the fight that our flag was still there.Oh say, does that star-spangled banner yet waveover the land of the free and the home of the brave?
Fruny, thanks for the long reply.
What you said made me wan to learn assembly even more. I think it will be easier to understand other languages once I understand what they are all doing underneath the surface. And I will have to google some of those paradigms, even thouh a few look nearly identical to another (like functional and sturctured). Thanks for your help!

[edited by - PlayGGY on January 14, 2004 12:55:13 AM]
And the rockets' red glare, the bombs bursting in air,gave proof through the fight that our flag was still there.Oh say, does that star-spangled banner yet waveover the land of the free and the home of the brave?
C# isn''t exclusive to Windows.

It''s also a damn fine language. I have a few complaints about the libraries supplied by Microsoft (the System.Net async socket functions seem to be a bit buggy and poorly thought-out), but nothing major, and nothing that can''t be fixed by a patch to their .NET framework.
quote:Original post by glassJAw
C# isn''t exclusive to Windows.

It''s also a damn fine language. I have a few complaints about the libraries supplied by Microsoft (the System.Net async socket functions seem to be a bit buggy and poorly thought-out), but nothing major, and nothing that can''t be fixed by a patch to their .NET framework.


Yeah, but I really doubt it will become big on any other platform. I see it becoming huge on Windows, but nothing else. I am planning on learning it, but I am just wondering what order I should learn things. I don''t see how anyone learned assembly, the resources on the net are pretty sparce (and all of the code looks completely different... some code uses macros that I know isn''t part of assembly, like ''.IF''. The don''t explain where the macros came from though). Does anyone have a good resource?

And the rockets' red glare, the bombs bursting in air,gave proof through the fight that our flag was still there.Oh say, does that star-spangled banner yet waveover the land of the free and the home of the brave?
Here's a resource, not related to your C# question in any way () but which you may still find interesting (click on the picture and check out the links on the page).

“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” — Brian W. Kernighan (C programming language co-inventor)

[edited by - Fruny on January 15, 2004 1:11:49 AM]
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan

This topic is closed to new replies.

Advertisement