[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Book questions

On 04/14/2015 12:35 AM, Petter Adsen wrote:
I see that a lot of people advice me on going
with something other than C, and I can understand that there are good
reasons for this advice. While I still want to learn C at some point,
I'm beginning to think that it might be wise to consider getting a good
foundation in another language first.
Would Python be appropriate? I see a lot of software these days that is
written in Python, so it would be helpful in that way. The person I am
most likely to go to for help knows Python, so that's a bonus.

I consider machine code to be the "foundation" programming language of most "general purpose" computers. It is the most powerful and flexible of all programming languages, because it can execute any instruction the processor implements. Macro assembler makes machine code accessible. C is the next level up. C++, C#, Java, Python, Perl, PHP, Ruby, etc., are still higher. The downside with high-level languages is that you lose low-level detail and control -- e.g. branch on carry bit set, select indexed indirect addressing mode, etc.. Shell, Make, regular expressions, SQL, are domain-specific languages, and very useful for solving specific problems. Sophisticated programs and systems integrate multiple pieces. It's a pyramid of hidden complexities (or a house of cards, if you're a cynic).

There is also a hierarchy of concepts, founded in mathematics and computer science.

Good CS/ programming books explain both, and their the connections.

If you want to understand the guts of Unix, then you need to learn assembly language and C because those are what Unix is built from (and more, as noted by others).

If you want to write applications that run on top of Unix, higher level languages can produce working programs with fewer KLOC's. (As can good libraries called from any language.)

I mentioned SICP before. The concepts are great, but the Scheme programming language and REPL environment aren't my favorite. If you're serious about computer science and computer programming, read it first and then choose what's next:



Reply to: