DEV Community

Cover image for New inspiring programming languages
stereobooster
stereobooster

Posted on

New inspiring programming languages

I want to tell you about new or relatively new not widely used languages which from my point of view present some breakthroughs. I wonder what else do I miss in this field?

Need to say that I will talk about relatively unpopular languages, so this disqualifies Rust or Julia, but feel free to drop a line about your favorite language and what innovative it does.

Ponylang

Ponylang combines a couple of ideas and a lot of research behind it.

It has an actor model, like in Erlang, but message passing is done with zero-copy (unlike Erlang).

It has "borrow checker", like in Rust, but it has more kinds of references, for example, an identity which you can't read or write, only compare.

Because of "borrow checker" it can have stronger guarantees about the scope of variables and because of actor model, it can have non-stop garbage collector for each actor. This is just, to sum up, what impresses me, it is better to watch talk of the author about his language.

Skip

Skip recently released to opensource by Facebook. This is the result of 3 years of research, they are not interested in actively developing anymore, but it has some interesting ideas.

It is a practical blend of functional and object-oriented styles, it encourages global immutability, but allows local mutations for convenience and has very interesting syntax for it which is a gradient from OOP-ish mutation to functional lenses (depending on where you put !).

It has a very interesting concept of built-in memoization and reactivity (without the need to worry about cache invalidation problem).

A bit chaotic explanation, I guess the author explains it better. (In the video the author talks about a language called Reflex, but I'm pretty sure this is one of the old names of Skip, and I didn't find better video for this language).

Zig

Zig is like a C on the level of abstraction but built with memory ~safety~ awareness up front.

It is possible to cross-compile one program to 3 platforms. It claims to produce more efficient code and compile-time suppose to be good.

What really draws my attention to this language is passion of the author and novice approach to memory allocation problem. Most of the different languages don't talk about what would happen if we run out memory. Memory-aware language combined with unikernel (which is also written in that language) seems to be a very powerful idea. Don't take it from me - listen to the author.

Photo by InΓͺs Pimentel on Unsplash

Top comments (5)

Collapse
 
nezteb profile image
Noah Betzen

There are so many cool languages to keep track of. I'm a huge fan of Elixir, Elm, and Kotlin.

Here are a few others: (in addition to Pony, Skip, and Zig)

Unfortunately I don't have the time to experiment with them all, but I check in on them every now and again.

Collapse
 
lyfolos profile image
Muhammed H. Alkan

I'm just becoming sad when people add Reason and don't add OCaml. OCaml has cleaner syntax, sometimes.

Collapse
 
jorjun profile image
jorjun

Wary of new languages that don't target C.

Can't C do everything? I think it may be foolishly heroic to target LLVM. It is surely easier to look at C output from a compiler. And what is the downside?

Collapse
 
chenge profile image
chenge

Great, I like new lang and idea. The Skip say can track cache invalidation.
I wonder how can it do.

If a cache depend a db, how can it update auto when db updated?

Collapse
 
stereobooster profile image
stereobooster

Well, I wasn't talking about DB, more about memorization, but memoization which aware of its underline memoization and it will recalculate only changed parts not everything.

Imagine compilation pipeline, for example, static website generator (like Gatsby), it needs to collect dependency graph, compile JS, minimize JS, minimize CSS, generate HTML, generate unique file names, compress images, generate data files. Now you need to change only one file, do you really need to start from scratch? It depends if you change one exact page than you need to recompile only this page, if you change website navigation you will need to recompile all pages etc. The idea is that in skip this kind of task is natural you don't need to write memoization/cache invalidation for it (At least this is how I understood it, watch video author explains it better than me)