Live data from Hacker News

Ask HN: I want to learn a low-level, compiled language. What should I chose?

news.ycombinator.com

21–29 of 29 posts

Re: Ask HN: I want to learn a low-level, compiled language. What should I chose?

#21
I'm not familiar with Rust, so I can't advise you there. But I have worked with the other two languages.

Go is not a great choice, because it's not very low level. You don't allocate and free memory explicitly, and you often work with maps, slices, and channels, which are quite high-level.

C is a reasonable choice, since the core of it is fairly simple. I expect that forty years of incremental additions have added quite a bit of cruft though, which you have to be able to see though. There also isn't very much work done in plain C these days. Most people in this space use C++, which is even more complicated.

May I ask what you are hoping to do with this skill? If you just want a chance to learn more about how computers work, an artificial assembly language like MMIX may teach you more while avoiding much of the cruft that real languages pick up as they evolve. If you actually want to use this for work, C++ is the way to go, but expect to be a beginner for a long time.

https://en.wikipedia.org/wiki/MMIX

Re: Ask HN: I want to learn a low-level, compiled language. What should I chose?

#22

I'm not familiar with Rust, so I can't advise you there. But I have worked with the other two languages. Go is not a great choice, because it's not very low level. You don't allocate and free memory explicitly, and you often work with maps, slices, and channels, which are quite high-level. C is a reasonable choice, since the core of it is fairly simple. I expect that forty years of incremental additions have added qu…

Are there any workbooks with challenging exercises for MMIX?

Re: Ask HN: I want to learn a low-level, compiled language. What should I chose?

#23

I'm not familiar with Rust, so I can't advise you there. But I have worked with the other two languages. Go is not a great choice, because it's not very low level. You don't allocate and free memory explicitly, and you often work with maps, slices, and channels, which are quite high-level. C is a reasonable choice, since the core of it is fairly simple. I expect that forty years of incremental additions have added qu…

Are there any workbooks with challenging exercises for MMIX?

I haven't used it, but this supplement to Knuth's classic The Art of Computer Programming is bound to be instructive:

http://www.amazon.com/gp/product/0133992314

Re: Ask HN: I want to learn a low-level, compiled language. What should I chose?

#25
Aside from everything already said, C integrates very well with Python; understanding C will let you write Python bindings for new libraries and will let you easily rewrite performance-critical chunks of Python in a faster language.

For Java, you could learn C++ (via JNI) for the same reasons - but Java is less likely to use C libraries, and going from Java to C++ usually doesn't produce as much of a speedup as going from Python to C.

Re: Ask HN: I want to learn a low-level, compiled language. What should I chose?

#26

C because, a) every language we're currently using is a reaction to C (or a reaction to a reaction to C, etc.), and b) it is still going strong in areas such as Linux development, and is enjoying a huge resurgence in areas such as Arduino.

You're saying people are moving away from C++ to C for the Arduino? What's your guess for reason of the resurgence?

Re: Ask HN: I want to learn a low-level, compiled language. What should I chose?

#28
Given your background, I think you'll enjoy C. The standard Python interpreter is written in C, and the Sun JVM runtime is C. So if you learn C, you'll start to understand the building blocks that came together to make those higher-level languages.

After you get the fundamentals down, take a look at the source code behind those runtimes, and it'll make you a much stronger programmer in all the languages you know.

Post reply on HN