• Log in or sign up for an account here: https://www.sythe.org/login

In what order should I learn different languages?

If you want to learn Programming, you don't start high level and spend years working your way down.

You start low level, in Assembly. Learning the instruction set. Learning how the stack works. Learning the purpose of volatile and non volatile registers. Learning the different calling conventions used in compilers.
Once you grasp it, you can start going up to a machine level language such as C.

Learn the compiler process.
How the compiler translates code to what the processor can understand.
You'll be able to look at a function call in C and replicate it in Assembly very close to what the compiler can generate. You'll know how the heap, .data section and locals are handled.

Of course, now compilers are very efficient at optimization. I'd say more so than humans.

But if you're able to look at a function call and replicate it with assembly,
push the arguments onto the stack.
Depending on the calling convention either from left to right, or right to left.
Then how the call instruction pushes the return address onto stack and makes a non conditional jump to the target address.
Then how the function pulls the arguments from the stack using the ESP register and after the standard prologue using the EBP register, then how the function pops the return address from the stack and returns back to the instruction after the call,
how to clean up the stack, either let the callee or the caller fix the stack pointer,
you've pretty much learnt to program.

There's really little restriction beyond this point to what language you want to embark on, other than the syntax and the API the language provides.



I think throwing assembly at noobs from the get go would just discourage most people. I don't think I would have ever pursued programming further if I first had to learn assembly. There is a time and place for it. But a noob can get away with high level language because at the start it really is all about learning basic concepts. No need to overcomplicate something like a variable... To me assembly just isn't fun. If that was my first class I wouldn't have taken another programming class because I would have assumed all programming is like that. My first programming class was Python and it was fun because we would actually make useful programs.
 
Poképedia
Pokémon Trainer
Tier 2 Prizebox
I thought my previous comment would make more sense after you'd sunk your teeth into it a bit.

A lot of java/simba scripts are just hooks within the API, so basically, you're using custom functions, that you didn't make. If that makes sense.

Say I create a function to right click and attack a certain npc, I take the npc value and perhaps combat level. From that I check if it require a right click or left click with the combat level difference, and then move the mouse to it, and click it. You're just calling that function, from within the API.
This is how coding in every language works.
If you want to learn Programming, you don't start high level and spend years working your way down.

You start low level, in Assembly. Learning the instruction set. Learning how the stack works. Learning the purpose of volatile and non volatile registers. Learning the different calling conventions used in compilers.
Once you grasp it, you can start going up to a machine level language such as C.

Learn the compiler process.
How the compiler translates code to what the processor can understand.
You'll be able to look at a function call in C and replicate it in Assembly very close to what the compiler can generate. You'll know how the heap, .data section and locals are handled.

Of course, now compilers are very efficient at optimization. I'd say more so than humans.

But if you're able to look at a function call and replicate it with assembly,
push the arguments onto the stack.
Depending on the calling convention either from left to right, or right to left.
Then how the call instruction pushes the return address onto stack and makes a non conditional jump to the target address.
Then how the function pulls the arguments from the stack using the ESP register and after the standard prologue using the EBP register, then how the function pops the return address from the stack and returns back to the instruction after the call,
how to clean up the stack, either let the callee or the caller fix the stack pointer,
you've pretty much learnt to program.

There's really little restriction beyond this point to what language you want to embark on, other than the syntax and the API the language provides.

People spent years and years creating things like assembly so you wouldn't need to program in binary. People spent years and years creating compilers so you wouldn't need to code in assembly, people spent years and years on high level languages, garbage collectors and dynamic typing so you would be more productive.
Then , people spent years and years on different libraries so you wouldn't need to start from scratch.

You don't need to learn everything about a library to use it, you don't need to know how to make it, the same goes for every other aspect of the toolchain.
If we use your approach, we would spend years and years before we even get to the point where we can use a useful library like I/O, and even then, I would have to learn how it works and how to replicate it before I got to print a hello world?
Noted , at your third year of studying hard you would have a pretty good grasp, but you still have to "climb" the technology laddder and learn how to implement garbage collectors, etc...

High level learning is the best way to go. Start from something you want to do, and learn the skills on a need to basis. This way, if you don't need to learn assembly, you don't waste your time on it, if you don't need to implement a garbage collector, you don't waste time on it.
Ground up learning fails just because the amount of stuff you would need to know to know everything is too damn big, and if you try to do it, you'll be easily discouraged.

Soo what I'm saying is, start with python. Once you learned how the language works, and how some of its library works, try to use it to implement any of your ideas. Then climb up into more complex ideas using external libraries. Libraries (other people's code) are going to be what allows you to make useful code, you NEED to step on other people's shoulders to do anything useful, it's more like a collaboration. And you will take years if you have to learn everything from scratch.
 
Gohan has AIDS
Sythe's 10th Anniversary
You can't really make a website in this age without styling. You practically take them together. You can learn basics of HTML in a matter of days (It's a markup language) and then apply styling via CSS.

You don't need CSS knowledge to learn Javascript (Scripting Language), what you need is to understand the concept of DOM (Document Object Model) (as long as you want to go for front end development).

I wouldn't suggest jumping into jQuery directly. Understand what Javascript is, how it works then move to frameworks/libraries!

There are a lot of shortcuts but in the long run you end up learning things ground up when you get complex projects on your plate

Good Luck! :)
 
Runescape Gamblingrunescape gambling
Back
Top