5 ms·
Ask HN: Which systems programming language is beginner/student friendly?
- radomdude 6y agoFrom a self-taught programer coming from a law background: you should try python as a first language. The community is huge, you can do tons of fun automation with small code (automatically send emails, manipulate files, keep track of your favorite websites...), all of which hopefully get you hooked. Then you can transition to web/frontend with html/css/javascript if it interests you. Or you can go deeper on backend / databases / networking with C#, Java, C++ and so on.
- tomcam 6y agoWith respect, Python's not really a systems language. Its type system takes it out of the running for that purpose. I think systems languages would be more along the lines of C, C++, C#, Rust, and maybe Java and Go.
- garmaine 6y agoRust. The documentation is incredible.
- davidkunz 6y agoThe documentation is great but the learning curve is steep. I'd propose Nim instead.
- garmaine 6y agoIt's far easier to start off learning a big language where a google search will solve any problem you're likely to have.
- beforeolives 6y agoI don't do any systems programming, I only have a vague idea of the landscape of these languages and I have a question. What motivates people to invest the time and effort to learn them and keep developing in them? There is a class of languages (Nim, Zig, D) for which I naively think "Well, they might have some good ideas but ultimately Rust is what will replace C and C++ over time". How do the creators stay motivated to put so much effort into building and maintaining these languages? Don't these languages feel like dead ends on the tech development tree or second-class at best in the sense that they will likely never get mass adoption? What am I missing?
- _448 6y ago> How do the creators stay motivated to put so much effort into building and maintaining these languages? Here[0] is Simon Peyton Jones going through the history of Haskell. Somewhere after 10:30mins into the video he answers your question. [0] https://www.youtube.com/watch?v=06x8Wf2r2Mc https://www.youtube.com/watch?v=06x8Wf2r2Mc
- garmaine 6y agoI feel that Haskell is a bit of a different case though. Like Lisp and Forth, people use Haskell because they are attracted to something at the core of the language itself which no mainstream language has. It’s like the same reason people learn Lojban as a spoken language. For languages that are trying to be actual deployable systems programming compilers in widespread use, that intrinsic motivation doesn’t seem to be there I think.
- rStar 6y agobecause they enjoy it, but also because they see opportunity in whatever set of features they themselves believe are important. Evolution(in this case survival of the fittest regarding developer mindshare) eventually decides.
- planetis 6y agoAs a Nim user, I keep being motivated because it keeps evolving (like getting a new async implementation based on CPS, incremental compilation, destructors based stdlib), its easy to start using but can accommodate a multitude of use cases with many features. Last year its usage, in my experience, took off and its only getting more widespread organically, without advertisement and support by big companies.
- rStar 6y agoRust. It appears to be on it’s way to kernel inclusion, which means it’s about to be a lifetime language, like C, a tool you’ll never need to put down.
- cb321 6y agoNim, D, or possibly Python with Cython/Pythran/Nuitka/etc. acceleration (maaaaybe Go). These all have shallow learning curves and easy FFIs to C. That allows you can do easy things first and worry about hard things later/gradually. Of course, you really need to be more precise than "systems prog.lang" as I would say there isn't great agreement on what that means. Giving a set of task categories would be better. E.g., if you want to write kernel modules for OS? then you should learn whatever language OS? is written in.
- tomcam 6y agoYour best bet would be C# because of Microsoft's documentation. I personally find C89 and onward to be beginner/student friendly for the serious student but YMMV. Both of these choices are high-performance languages with excellent systems support, and of course C is the best embedded systems language as well. Others here recommend Rust or D. They're very strong languages on their own merits and would be incredible learning vehicles. My only caution is that if you also want to get a job, the C/C# families would probably be better. I am omitting C++ from the list because you specified beginner/student friendly.
- goodpoint 6y agoNim!