9 ms·
Ask HN: Which systems programming language(s) is/are beginner friendly?
- lolski 5y agoThe first two things that come to mind are Python and Go.
- karmakaze 5y agoPython is not a systems language. I would also recommend Go but it depends on what is meant by 'systems' as it doesn't interface well with threads or memory allocation.
- tbrownaw 5y agoExcel formulas probably have more beginner-level users than anything else.
- m33k44 5y agoIs Excel a systems programming language :)
- markus_zhang 5y agohttps://www.callapple.org/software/assembly-language-in-excel/ https://www.callapple.org/software/assembly-language-in-exce...
- tbrownaw 5y agoSure, it's where you write the high-level orchestration code for things that haven't been made sufficiently repeatable yet. :) Personally I tend to use it for light one-off database metaprogramming. Get a lit of objects that need to be maintenanced, generate the appropriate commands with a column of identical formulas, and then paste that back into the sql utility. (For more complex or long-lived things I'll use a more traditional language of course.) (Why yes, I am going to pretend I didn't accidentally a word.)
- PaulHoule 5y agoI've seen other people do that. I think it's better to use a language like Python, but I have seen people do SQL scripts and many other kinds of code gen with Excel.
- PaulHoule 5y agoDepends a lot on what you call "system": do you want to program embedded systems? write device drivers? write a database server? compilers?
- m33k44 5y agoWhat if a programmer wants to lean a language and not a domain? Devoid of domain, which systems programming language is easy for beginners? It will be quite an ask of a beginner to either work on embedded systems, write device driver, DB driver or compiler. So for beginners, forcing a domain from the start would be counter productive I think.
- PaulHoule 5y agoBeginners tend to overestimate the differences between programming languages and pay attention to superficial things as opposed to things that matter. A good chunk of computer science is a branch of math which is eternal: if there are aliens who live under some the ice on some moon and they have computers they are going to know about the results of Turing and Gödel. A language like Java or C# is perfectly fine for "systems" tasks such as compilers, database engines, etc. You don't need to interact with memory on a low level and you can afford to pay the cost of automated memory management for some guarantee that you don't get use-after-free and similar problems. For that matter if performance doesn't matter you can do a lot in Python, Javascript, and other languages that people think of as "applications" languages. For some other "systems" tasks, such as embedded, you are going to have a choice between C/C--, Assembly and maybe Ada or a Pascal variant if you're adventurous. In that case you need absolute control over memory layout. C has the particular advantage of portability. I think it's an atrocious language to program the AVR-8 arduino but your code is portable to a more powerful board and your skills are portable. Rust has the "borrowing" model that is potentially more efficient than the garbage collection model of languages like Java and gives you some control over the layout. You might like it or you might learn to hate fighting with the borrow checker. What domain you are in absolutely determines what languages you can use.
- qq4 5y agoPlain old C is pretty beginner friendly. Programming an Arduino is a good introduction (similar to C, forgive me I'm a bit ignorant here). A good systems project would be writing a simple shell.
- markus_zhang 5y agoDisclaimer: Never did any sys programming I think C is pretty friendly as long as you can get through the basics of arrays and pointers. It's friendly in the sense that there is not a lot of grammar to learn. But each field of system programming requires a deep understanding of something other than the language itself so overall I'd say it's difficult to get in.
- jtchang 5y agoC is not friendly but it sets you off on the right path. Adding a bit of C to your tool belt will give you success wherever you go. The concepts it teaches are invaluable in understanding why things are built the way they are today. Everything from memory management, to trying to solve all these vulnerabilities, to why new languages have these crazy constructs.
- ruben81adelaide 5y agoThere are 3 types of programming languages you can learn: Modular programming, Object oriented, and Functional programming Python- it has a very simple syntax and it’s easy to learn. It can be used for modular programming and object oriented and it is forgiving if you don’t strictly follow the best practices. Therefore it can help to make thing working while you’re learning
- flamboyant_ride 5y agoNever done any professional systems programming. C is what comes to mind. But don't let the simplicity fool you. It's pretty easy to shoot yourself in the foot with C. Recently I've been coming across ML family of languages. I see compiler books in OCaml. Atleast in the academic discussions I see the need to get away from C in terms of building reliable computer systems. Maybe it's a bit of a stretch to call it a systems programming language but maybe something to consider.
- open-source-ux 5y agoMaybe Nim. It is not a small language, but the syntax is more beginner-friendly than Rust. Unlike Rust, Nim has far fewer learning resources (tutorials, books, courses) which may or not be important to you.
- enduku 5y agoNum and C are very beginner friendly. Red may soon get there eventually.