d2jsp
d2jsp Forums > Programmer's Haven > C/C++/C# > Books For Beginners To Get Into Programing? > Iso You Guys Advice :)
Prev123
Add Reply New Topic New Poll
boxboxbox
#21 Jul 13 2016 11:17pm
Group: Member
Posts: 3,939
Joined: Feb 1 2013
Gold: 2,749.09
Warn: 20%

the foundation on which all other languages are built is assembly language, master ASM and you will have a solid foundation.

python is the best mainstream high-level language, an appropriate choice for most projects. but it won't teach you how the computer actually works, only ASM can do that.

GL
AbDuCt
#22 Jul 15 2016 06:55am
Group: Member
Posts: 13,423
Joined: Sep 29 2007
Gold: 0.00
Warn: 30%
If you want to learn how a computer works you're better off learning verilog and working with a programmable gate array. Assembly is not better at teaching you at how a computer works that any other language. Sure you work directly with registers and the stack but that is only a subset of knowing "how a computer works".

This post was edited by AbDuCt on Jul 15 2016 06:56am
boxboxbox
#23 Jul 15 2016 02:24pm
Group: Member
Posts: 3,939
Joined: Feb 1 2013
Gold: 2,749.09
Warn: 20%
Quote (AbDuCt @ Jul 15 2016 05:55am)
If you want to learn how a computer works you're better off learning verilog and working with a programmable gate array. Assembly is not better at teaching you at how a computer works that any other language. Sure you work directly with registers and the stack but that is only a subset of knowing "how a computer works".


re-read that. the further abstracted a language is from the hardware, the less suitable it is for getting a foundation in software programming. He didn't say he wanted to do hardware design, so I don't see where verilog comes into it.
Sobe911
#24 Jul 15 2016 02:27pm
Group: Member
Posts: 13,893
Joined: Jun 26 2007
Gold: 0.00
Get the book "But How Do It Know" for a really good explanations of how computers work explained piece by piece in a way that even a simpleton would understand.

It really is crucial to understand how a computer works. And cool. Normal people wont find it cool, but yeah. You should feel cooler when you understand the fundamentals.
AbDuCt
#25 Jul 15 2016 05:51pm
Group: Member
Posts: 13,423
Joined: Sep 29 2007
Gold: 0.00
Warn: 30%
Quote (boxboxbox @ Jul 15 2016 04:24pm)
re-read that. the further abstracted a language is from the hardware, the less suitable it is for getting a foundation in software programming. He didn't say he wanted to do hardware design, so I don't see where verilog comes into it.


Doing hardware design would teach you more about computers than any level of programming. Plus verilog is a programming language which allows you to define hardware logic.

Also with your logic working with bytecode directly is yet one less abstraction and will teach you about the all mighty computer. Just because you use a higher level language doesn't mean you can't learn the underlaying logic of computers. For example writing your own processor emulator and the like will quickly teach you about stacks, memory banks/addresses, registers, flow control, special registers, program counters, and individual instructions as well and how they function (for example call/ret).

This post was edited by AbDuCt on Jul 15 2016 05:54pm
boxboxbox
#26 Jul 15 2016 06:37pm
Group: Member
Posts: 3,939
Joined: Feb 1 2013
Gold: 2,749.09
Warn: 20%
>Doing hardware design would teach you more about computers than any level of programming. Plus verilog is a programming language which allows you to define hardware logic.

He's not asking about computers in general, he's asking about programming.


>Also with your logic working with bytecode directly is yet one less abstraction and will teach you about the all mighty computer.

who said anything about bytecode? ASM isn't bytecode.
I mentioned ASM in context of "getting a foundation in programming"


>Just because you use a higher level language doesn't mean you can't learn the underlaying logic of computers.

What I said is that learning ASM will give a more solid foundation than learning a high level language, which it will. I didn't imply mutual exclusion.


>For example writing your own processor emulator and the like will quickly teach you about stacks, memory banks/addresses, registers, flow control, special registers, program counters, and individual instructions as well and how they function (for example call/ret).

How exactly are you going to write a processor emulator (an ASM interpreter) before learning how to program the processor (ASM)? (hint: you aren't.)


AbDuCt
#27 Jul 15 2016 07:04pm
Group: Member
Posts: 13,423
Joined: Sep 29 2007
Gold: 0.00
Warn: 30%
Quote
He's not asking about computers in general, he's asking about programming.


Then why did you bring up `teach you how the computer actually works, only ASM can do that.' This is what I was basing my responses from.

Quote
who said anything about bytecode? ASM isn't bytecode.
I mentioned ASM in context of "getting a foundation in programming"


I know assembly is not bytecode. I brought it up because you think less abstraction when working with the machine will teach you more about the machine.

Quote
What I said is that learning ASM will give a more solid foundation than learning a high level language, which it will. I didn't imply mutual exclusion.


Okay, I agree with this somewhat. I misinterpreted your post. Although my above response of a CPU emulator is one example of how a higher level language can also teach you core concepts as well as a solid foundation of how a processor works.

Quote
How exactly are you going to write a processor emulator (an ASM interpreter) before learning how to program the processor (ASM)? (hint: you aren't.)


That's what documentation is for. If there is documentation for an xor %al, X call which provides an except of what the instruction does, then it is not at all too difficult to figure out how to represent it in a higher level language. Sure some more underlying knowledge may be needed (how PC effects program flow, etc), but for the most part documentation can allow you to do such a thing without knowing much or any assembly. After all you are simply reading in bytes of data and then using logic to preform operations that the byte(s) of data represent. That doesn't require assembly knowledge in the least.

A good example could be the CHIP8 virtual processor. There is plenty of documentation of all the instructions, including the extended instruction set, that anyone with basic knowledge of logic flow operations (if statements, switch statements, function calls, etc) can successfully implement it. It will also teach you about registers, the stack, and other things that may be used to learn more about computing.

------------------------------------------------------------------

The thing I am trying to get at is that assembly isn't the only way to learn how a `computer actually works.'

This post was edited by AbDuCt on Jul 15 2016 07:05pm
Opponent
#28 Jul 30 2016 12:23am
Group: Member
Posts: 1,944
Joined: Apr 20 2016
Gold: 25.00
Another battle, who won here?
freewebs
#29 Jul 31 2016 03:04am
Group: Member
Posts: 1,563
Joined: Feb 10 2007
Gold: 0.00
:banana:
Go Back To C/C++/C# Topic List
Prev123
Add Reply New Topic New Poll