This is a post I've been meaning to write for a while now: one anecdotally
comparing programming languages in the Lisp family. I consider myself to be a
Lisp hacker. Perhaps that much was obvious from the letter λ adorning my
website's header, a reference to the λ-calculus which inspired John McCarthy to
design the first LISP [1]. Yet, "Lisp hacker" likely means little unless you,
too, consider yourself to be a Lisp hacker. Calling yourself one seems carry
some level of unstated meaning. Indeed, some identify with more specific groups.
"Schemer," or "Guiler," or "Racketeer," or "Clojurist." But "Lisp Hackers" ⊇
"Schemers". There is commonality shared among all, or at least most, of these
programming languages, and the Lisp hackers recognize and appreciate that
commonality – the characteristics that make a programming language a Lisp.
Homoiconic syntax, powerful metaprogramming facilities, and editor support that,
in my opinion, is unparalleled. (Yes, I am alluding to GNU Emacs.) This article,
however, is concerned with the differences. In it, I will be considering the
specifics of each dialect, and whether or not those specifics make for a
language I would want to use to develop a new piece of software.
read more →
It's been over a year since I last wrote about contenders for the throne that C
currently sits upon, so I'll spare you the prosy introduction and cut to the
chase. I'd like to share some thoughts on my recent foray into a little
programming language I came across while browsing lobste.rs some years ago:
Myrddin, the pet project of Ori Bernstein. From the language specification,
"Myrddin is designed to be a simple programming language. It is designed to
provide the programmer with predictable behavior and a pragmatic set of
semantics, providing the benefits of strong type checking, generics, type
inference, and modern features with a high cost-benefit ratio. Myrddin is not a
language designed to explore the forefront of type theory or compiler
technology. Its focus is on being a practical, small, well defined, and easy to
understand language for work that needs to be close to the hardware. Myrddin is
influenced strongly by C and ML, with ideas from too many other places to name."
The front page of the website specifically states that "[i]t aims to fit into a
similar niche as C, but with fewer bullets in your feet." I see these
descriptions and the cat-v-inspired stylesheets as a warning to those who don't
appreciate a spartan attitude towards software development. Fortunately,
I'm not one of those people.
read more →
In the introduction of the previous post I wrote for this series, First
Impressions of the Rust Programming Language, I alluded to the presence of
arguments that programming language safety should be achieved by moving to
languages such as Java which run on a virtual machine. While "safety" may no
longer be the first thing that comes to mind in discussion of these languages,
especially with the hundreds of vulnerabilities in various implementations
of the Java virtual machine, it would be unfair to deny that the principle of
running programs in a sandboxed virtual machine is safer than running machine
code directly. This post won't be making any claims about safety, though, as I'm
more interested in writing about my impressions from a language design
perspective. So, how does Java fare in this regard?
read more →
C is almost 50 years old, and C++ is almost 40 years old. While age is usually
indicative of mature implementations with decades of optimization under their
belts, it also means that the language's feature set is mostly devoid of modern
advancements in programming language design. For that reason, you see a great
deal of encouragement nowadays to move to newer languages - they're designed
with contemporary platforms in mind, rather than working within the limitations
of platforms like the PDP-11. Among said "new languages" are Zig, Myrddin, Go,
Nim, D, Rust… even languages like Java and Elixir that run on a virtual
machine are occasionally suggested as alternatives to the AOT-compiled C and
C++.
read more →
It seems that the general consensus on "distro hopping," the act of constantly
switching between distributions of GNU/Linux, is that it's a bad habit that
should be consciously avoided. If you do a search for the term, you'll get
articles with titles along the lines of "How I Stopped Distro Hopping." But it's
also a term that gets thrown around loosely, and I think that that "distro
hopping" is an acceptable practice in a lot of the contexts where the phrase is
used. Needless to say, I've "hopped" distributions in the past month, and this
blog post is going to describe the highs and lows of that experience.
read more →