aboutsummaryrefslogtreecommitdiff
path: root/content/blog
diff options
context:
space:
mode:
Diffstat (limited to 'content/blog')
-rw-r--r--content/blog/zig/learning-zig.md33
1 files changed, 33 insertions, 0 deletions
diff --git a/content/blog/zig/learning-zig.md b/content/blog/zig/learning-zig.md
new file mode 100644
index 0000000..68dfb74
--- /dev/null
+++ b/content/blog/zig/learning-zig.md
@@ -0,0 +1,33 @@
+---
+title: "Learning the zig programming language"
+description: "a general-purpose programming language and toolchain for maintaining robust, optimal and reusable software"
+date: 2022-08-22
+---
+
+## Introduction
+
+Since learning nim last years I had a renewed interest for learning yet another language. I liked nim but I wanted to try something else, a simpler language. I had my eye on [zig](https://ziglang.org/) and spend the last five or six months learning it.
+
+## Getting started
+
+Learning zig is relatively easy, there are well written materials starting from [these great tutorials](https://ziglearn.org/). The language is pleasant and simple to think about, it shows that there was a lot of thinking involved to keep it simple but powerful. The tooling is fantastic and well thought out, zig build is so smartly done! Testing is a breeze, debugging straightforward.
+
+What i found not so simple to learn is the idioms regarding the usage of `anytype`. I encountered this when trying to feed a reader or a writer as argument when instantiating an object. Once I understood it was quite logical, but the lack of resources made me stumble a little.
+
+## Projects I wrote in zig
+
+I took a lot of satisfaction writing code in zig. The language is really great, compilation is on the slow side compared to nim and go but faster than c or c++ (and should improve a lot in the next release), debugging with gdb is so simple... You can iterate on your code very quickly and it is such a breeze.
+
+Having wrote a Funge-98 interpreter in go then in nim recently, I did the logical thing and wrote one in zig to have an objective comparison of the three languages : https://git.adyxax.org/adyxax/zigfunge98. The code ends up shorter and executes faster than its go and nim counterparts. IT is a little less expressive than nim, but being a simpler language I find it all more elegant and easier to find my way again in the code in a few years.
+
+I have also tested the C integration which is absolutely stellar. I wrote a little tool around the libssh for a non trivial test and was very impressed. I might pick this up and start writing the configuration management tool I have been dreaming about for the last decade : https://git.adyxax.org/adyxax/zigod/
+
+Next I wanted to write something I had not attempted before and settle on a little game. It is a game played in the terminal with ascii graphics, a pong like thing that could remind you of volleyball : https://git.adyxax.org/adyxax/grenade-brothers/
+
+I have not dabble yet into a web project but it is next on my todo list.
+
+## Conclusion
+
+I recommend learning zig, it is a very refreshing language and you will quickly be productive with it. The tooling is great and I find this language is a jewel waiting to be discovered by more developers.
+
+It shows that it does not have a big corporation behind it like go with google or rust with mozilla, if it did it would already be one of the top languages of the decade.