When comparing Scheme vs Zig, the Slant community recommends Scheme for most people. In the question“What are the best (productivity-enhancing, well-designed, and concise, rather than just popular or time-tested) programming languages?” Scheme is ranked 11th while Zig is ranked 18th. The most important reason people chose Scheme is:
Scheme syntax is extremely regular and easy to pick up. A *formal* specification of the syntax fits onto just a few pages; it can be introduced informally in a paragraph or two. Students are not distracted by remembering how to write if statements or loops or even operator precedence because every syntactic follows the same pattern. Ultimately, everything looks something like this: (func a b c) This includes not only user-defined functions but even control flow: (if cond then-clause else-clause) or even primitive operations like `define` and `set`: (define foo 10) (set! foo 11) This means that nothing really has special syntactic treatment in the language. There are essentially no weird edge-cases to memorize, and different concepts are given a more equal weight in the language. (Unlike Algol-like languages which tend to given undue weight to loops and assignment statements, for example.)
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Simple syntax
Scheme syntax is extremely regular and easy to pick up. A formal specification of the syntax fits onto just a few pages; it can be introduced informally in a paragraph or two. Students are not distracted by remembering how to write if statements or loops or even operator precedence because every syntactic follows the same pattern.
Ultimately, everything looks something like this:
(func a b c)
This includes not only user-defined functions but even control flow:
(if cond then-clause else-clause)
or even primitive operations like define
and set
:
(define foo 10)
(set! foo 11)
This means that nothing really has special syntactic treatment in the language. There are essentially no weird edge-cases to memorize, and different concepts are given a more equal weight in the language. (Unlike Algol-like languages which tend to given undue weight to loops and assignment statements, for example.)
Pro No magic - it's clear how everything works
Scheme has far less built into the language itself, helping students see that things like OOP are not magical: they are just patterns for organizing code. Everything in Scheme is built up from a very small set of primitives which compose in a natural and intuitive fashion.
Having a language that does not accord many things special status helps keep students open minded. This will help students later go between different languages and paradigms from procedural to object-oriented to functional.
Pro Great at teaching fundamental programming ideas
Scheme teaches the important, fundamental ideas immediately without the distraction of unnecessary syntax or language features.
Pro Multi platform
GNU/Linux, OS X, and Windows versions available.
Pro Great, well known textbooks
There is a set of very strong textbooks introducing CS and programming using Scheme. These books are available for free online.
The most famous example--and one of the most famous CS books full stop--is Structure and Interpretation of Computer Programs usually known as SICP. This book introduces fundamental ideas in computer science and covers an incredible amount of material quickly and clearly without requiring any prior knowledge.
However, some people find SICP a bit challenging as a first text. Happily, there are other more introductory texts as well. Simply Scheme is a book designed to be read before SICP, easing beginners into the language as well as CS and programming in general. How to Design Programs is another text used in introductory college courses.
Pro Encourages creativity
Pro Robust metaprogramming
The quotation functionality of Lisp allow for extremely powerful, yet syntactically straightforward metaprogramming via macros. This is more powerful than the C preprocessor while being less involved than something like Template Haskell or F# quotations.
Using macros to properly decompose a problem domain teaches new developers good habits, improving composibility and reliability when tackling large programs. Scheme metaprogramming also serves as a gentle introduction to domain specific languages.
Pro Multiparadigm
Unlike most languages, Scheme actually accords both functional programming and imperative programming roughly equal status. Many other languages like Python and Java are staunchly imperative while SML and Haskell are primarily functional; Scheme is a nice middle ground.
Additionally, since Scheme syntax is extremely flexible, it can easily be re-purposed for teaching non-deterministic and logic programming. There is no need to learn a new language like Prolog when the same ideas can easily be expressed with Scheme syntax.
This gives students a good perspective on different ways to think about and organize programs, which makes it much easier to move forward to other languages and technologies.
Pro Some safety
It's safer than C, at least.
Pro C Interop
Zig programs can import C libraries and export header files to be used in C programs.
Pro Performance
Zig is pretty fast, in some cases even faster than C.
Pro Control flow is simple and obvious
No operator overloading, property methods, runtime dispatch, macros, etc.
Pro Cross-compilation is easy
The Zig compiler can build artifacts for any Tier 3 Supported platform without additional downloads.
Pro Small binary
Produces binary smaller than C.
Pro Compile-time execution
Zig can execute code at compile-time, allowing for more performant and readable programs.
Pro No Hidden Control flow
Zig will not do anything on your back that might slow down your program & make you loose your control over your program.
Cons
Con Little job market
There are little to none jobs searching for a Scheme programmer. The ones that exist are more related to Research in Maths or Artificial Intelligence.
Con A language that is purely academic
If someone said "I am starting a project in Scheme" then they are either talking about their homework or they are starting a joke.
Con Fragmented ecosystem
Scheme is an IEEE standard, not an implementation. Unfortunately, the standard is too minimal and practical implementations have diverged--they had to expand on the standard to get anything done, but did so in incompatible ways.
The later de facto standard R6RS tried to correct this, but lost Scheme's minimalist elegance in the process. The newer R7RS standard takes the best of both worlds with an elegant minimalist core and a practical standard library.
Con Very different semantics from mainstream programming languages
LISP-like languages are very different from mainstream languages (such as C/C++/Java/JavaScript/Python/you-name-it) - both in semantics and syntax. This, in turn, severely limits uses of whatever-learned-with-Scheme, for real-world use.
Con Convoluted syntax
Claims to be an improvement over C, but in this area, not really.
Con No lambdas
Missing many key and useful features other languages have.
Con Deceptively gives impression it's near being production ready
No plans to hit 1.0 until 2025 (3 years later), according to Zig Roadmap speech. Impression is given that (0.9.1) language was close to ready, when it's not.
Con Creator admits to not knowing what he's doing
Creator admits his shortcomings during Zig Roadmap speech. Very disturbing. Not a language to invest in or take seriously, outside personal experimentation.
Con No closures
Does not have closures.
Con Almost no community
Lacking in libraries and users.
Con No interfaces/traits
Features that are useful are missing, where you can find them in other languages.
Con Fundraising looks suspicious
Why do we keep seeing an overhyped unfinished alpha level language showing up everywhere? That answer looks like a financial incentive to promote the language, the Zig Software Foundation, that is making hundreds of thousands of dollars a year from donations. To aggressively maintain cash flow, it appears any opinions that goes against their narrative is suppressed, attacked, or eliminated. All while the hype machine runs rampant. That isn't a language for the people, that looks to be a cash grab for the few that will result in nothing useful. Save yourself the headache and games, better to just use C or other languages with C-like syntax, can interface with C, and are actually useful. Better to not waste your valuable time on crap like Zig, false media hype, or getting scammed.
”If it sounds too good to be true, it probably is.”
This blog has published 2 excellent articles on how Zig's claims do not live up to reality after more than 6 years of development.
Con Poor compiler errors
Several years into development, language still a mess, and no hope of fixing itself for yet more years later.
Con No standard package manager
Several years into development, and still no standard package manager is ridiculous.
Con Exhibits cult-like behavior and animosity towards other programming languages
Strange culture that bashes other languages and are not open to criticism about the faults of their language. Very close-minded, sometimes scary.