Both are mentioned in the thread, but lately I have been thinking that Zig and Scheme feel like the Yin and Yang of programming languages. Learning both of these languages won't teach you everything there is to know about programming, but it will teach you a complimentary set of foundational information that will make it easy to pick up any other programming language.
You will learn
- programming with manual and automatic memory management
- static typing and dynamic typing
- compile time execution and runtime compilation
- imperative programming and functional programming (neither language enforces imperative or functional programming, but their ecosystems strongly encourage one style or the other)
- errors as values and errors as exceptions
- SIMD programming and programming with the numeric tower
- various concurrency primitives
- what interfaces fundamentally are
- textual code editing vs structural code editing
Probably lots of other complimentary concepts too. But what's also interesting, is that it's completely reasonable for any person to learn the whole language for both of these. I've read both all of the R7RS small paper (which includes the entire definition of the language and the standard library), as well as the entire Zig language reference (which does not include the standard library, but I have also read a large portion of the Zig standard library, sans a lot of the std.os.* syscall wrappers).
It's really hard to think of high level languages that you can't easily pick up after learning these two. Prolog? You can learn logic programming in Scheme before switching over. Fortran? C? You learn most of the interesting concepts required to program in these languages from learning Zig. Erlang? Go? You can learn their concurrency models in Scheme and Zig.
1) Not all programming languages are imperative.
2) If you want a clean language to use as an entry point into the current state of Fortran, you want Fortran 90, not Zig.
1) You missed half of my post
2) Zig will provide foundational knowledge that makes languages like Fortran easy to pick up (which is the other half of my post)
Both are mentioned in the thread, but lately I have been thinking that Zig and Scheme feel like the Yin and Yang of programming languages. Learning both of these languages won't teach you everything there is to know about programming, but it will teach you a complimentary set of foundational information that will make it easy to pick up any other programming language.
You will learn
- programming with manual and automatic memory management
- static typing and dynamic typing
- compile time execution and runtime compilation
- imperative programming and functional programming (neither language enforces imperative or functional programming, but their ecosystems strongly encourage one style or the other)
- errors as values and errors as exceptions
- SIMD programming and programming with the numeric tower
- various concurrency primitives
- what interfaces fundamentally are
- textual code editing vs structural code editing
Probably lots of other complimentary concepts too. But what's also interesting, is that it's completely reasonable for any person to learn the whole language for both of these. I've read both all of the R7RS small paper (which includes the entire definition of the language and the standard library), as well as the entire Zig language reference (which does not include the standard library, but I have also read a large portion of the Zig standard library, sans a lot of the std.os.* syscall wrappers).
It's really hard to think of high level languages that you can't easily pick up after learning these two. Prolog? You can learn logic programming in Scheme before switching over. Fortran? C? You learn most of the interesting concepts required to program in these languages from learning Zig. Erlang? Go? You can learn their concurrency models in Scheme and Zig.
1) Not all programming languages are imperative.
2) If you want a clean language to use as an entry point into the current state of Fortran, you want Fortran 90, not Zig.
1) You missed half of my post
2) Zig will provide foundational knowledge that makes languages like Fortran easy to pick up (which is the other half of my post)