4 ms·
If I wanted, as a complete novice, to learn a lower level language, where would be the best place to start. I always get confused by all these new languages. I
by account-5 6y ago
If I wanted, as a complete novice, to learn a lower level language, where would be the best place to start.
I always get confused by all these new languages. Ive heard of: nim, rust, D, V, and now Zig. Where do I start? Should I start with C or C++? Or pick one of these? But which one?
Im currently looking at Lisp because I read it was good for alot of things. I'm also aware of Go and Swift but not looked into them at all.
- tigerlily 6y agoDepends what you want to do. Starting with C is good, because then you get to learn the pitfalls, and hence understand the problems the other languages solve, and their advantages and disadvantages.
- kilburn 6y agoWhat's your goal? Why do you want to learn a "lower level" language? Do you have experience in "higher level" languages? I would say that a better approach in your case is to start by saying "I want to write programs to solve problems like XXXX", or "I want to learn a language that lands me a job doing YYYY". For example, if you want to: - build network services -> golang - fiddle with OS level stuff (schedulers, memory management, etc.) -> C - write high performance calculation/simulation programs -> julia - get a nice solid base that can cover most of the above and has a promising future -> rust Nim, D, V, Zig are very niche and I wouldn't recommend as a first "lower level" language (because you'll have a harder time finding answers, and they won't give you clear benefits over the other options in any problem space). C++ is... huge. Modern C++ is a fine language, but you'll have to learn a lot to be able to handle it.
- account-5 6y agoIm not what I consider a programmer though I can program. Ive most experience with Python, on Linux I use shell scripts but am no expert. On windows I use AutoHotKey, though I know most wont consider it a proper language. My main aim is really to learn about it. I wouldnt mind having a broad general experience in high level and low level before I decide to focus on anything in particular. I've started looking a compilers and how they work im working through a book about building a compiler. Im really just interested in whats going on in the background. I always find myself wondering about the implementations of the languages I'm using.
- pron 6y agoDefinitely start with C. Also, unlike the other languages you mentioned, Go and Swift aren't low-level languages. Low-level languages are those that give you very precise control over the machine instructions, almost as much as Assembly. Low-level programming is not as widely important as it used to be, because these days the cost of an instruction does not depend so much on what the instruction itself is but on the current micro-architecture state of the computer (e.g. which data is in which level of the cache; which branches are predicted and how) so even machine code is pretty high-level these days, but in some domains, especially memory-constrained environments, it is still irreplaceable.
- skohan 6y agoSwift actually does effectively let you get fairly low level in the unsafe API, but for sure it's not the intended use-case for the language.
- TazeTSchnitzel 6y ago> Low-level languages are those that give you very precise control over the machine instructions, almost as much as Assembly By this definition I would say C is not “low-level”
- heldrida 6y agoZig is great as a first! Visit ziglearn.com, will get you started!
- kettro 6y agoI agree with pron, C is the best starter here. It is simple enough to get your head around rather quickly, and has very defined concepts. The one place that gets people is pointers, but it’s a very important part of software to understand. C is not “low level”, in the assembly sense. It is absolutely a high level language. But it is the simplest, and the one with the most fine control.