When comparing Assembly vs Zig, the Slant community recommends Zig 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?” Zig is ranked 24th while Assembly is ranked 56th. The most important reason people chose Zig is:
It's safer than C, at least.
Ranked in these QuestionsQuestion Ranking
Pro Low Level - it's how the computer works
One of the best ways to learn how a computer actually works is to work your way up from lower level abstractions. Assembly, being only a level above machine code, is low enough level to make it clear how the computer is actually performing a computation, including code flow and loops, but high enough level to not be excessively tedious for the type of small projects that a student would do at the beginning of their first programming class. Use of an assembler with macros can stretch this even a bit further.
Pro You must look into it if you really want to understand what computers do.
There is no other way to understand a processor, so dig in.
Pro Naturally creates fast and small programs
Because of its natural syntax and low-level nature, assembly language programs are typically really small and fast.
Unlike other programming languages, in assembly language it is really hard to create a slow and over-bloated program.
Pro Useful for embedded systems
A curriculum that involves an embedded component, such as an Arduino or a Raspberry Pi, can encourage students by allowing them to immediately connect their work with 'real systems'. Assembly is the ideal language for getting started with and understanding these devices, and since Assembly can be called from C, the code will still be useful if students move on to C later in the program.
Pro Uniform syntax
Assembly language syntax is relatively uniform, and so there's less room for a student to get confused by obscure characters, or miss some meaning implied by structure, such as with scoping rules, or call-by-name/value/reference semantics. While there may be a lot of mnemonics to look up, most work involves only a very small subset of them.
Pro Some safety
It's safer than C, at least.
Zig is pretty fast, in some cases even faster than C.
Pro C Interop
Zig programs can import C libraries and export header files to be used in C programs.
Pro Control flow is simple and obvious
No operator overloading, property methods, runtime dispatch, macros, etc.
Pro Compile-time execution
Zig can execute code at compile-time, allowing for more performant and readable programs.
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.
Con Difficult learning curve
Starting off as a beginner with assembly language could prove very daunting. I suggest learning a high level language first (e.g. C) to get a good grasp of programming - especially dealing with bits, bytes, numbers, accessing memory with pointers (which is why I suggest C).
Then once that person is comfortable writing C (or whatever high level language) programs, they would find moving to assembler a little less of a "What the hell?!!!" experience.
Con Rarely a requirement or used in professional employment
(except for experts, which will outperform you in assembly language and execution speed on any day of the week, simply because they have full control of the processor.)
Con Not very portable
The instruction set may change depending on what CPU architecture is being used. Also, there will be some differences in implementations due to different assemblers being used, such as with changes in OS.