contents/articles/10-more-programming-languages.md
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
----- id: 10-more-programming-languages title: "10 more programming languages worth checking out" subtitle: "Another look at 10 non-mainstream programming languages, 10 years later" content-type: article timestamp: 1545358888 ----- It has been exactly 10 years today since I published my [10 programming languages worth checking out](/articles/10-programming-languages) article on this web site. I thought about writing another similar article for a long time, but at first I couldn't think of additional non-mainstream languages worth checking out and then well, I simply forgot until I checked the date on the original article a few months ago, and that's when I decided that, after exactly 10 years, it was time. The following 10 sections are devoted to 10 different programming languages. They are not numbered and they are presented in alphabetical order, because there's no winner in this list. Also, the number of people actively using these languages varies quite a lot, but none of these can be considered, at the time of writing, a _mainstream_ programming language like JavaScript, C, C++, Python or Ruby. <hr /> ### Elixir Elixir came about in 2011, as an effort to bring more extensibility, metaprogramming and a more [Ruby](https://www.ruby-lang.org/en/)-esque syntax to the [Erlang](https://www.erlang.org/) world. If you are already in love Ruby, but you'd like a little bit more oomph, you'll love Elixir: it runs on top of the Erlang virtual machine but it looks and feels like Ruby. Over the years Elixir steadily grew in popularity, reached a version 1.0, and it now provides really comprehensive documentation, a friendly community and a rich ecosystem of packages. Also, if you are looking for a Rails/Django/Express equivalent, the [Phoenix](https://phoenixframework.org/) framework has been used successfully in [many projects](https://medium.com/aviabird/10-amazing-open-source-elixir-phoenix-apps-e2c52ee25053). #### To get you started... * [Official Web Site](https://elixir-lang.org/) * [Official learning material](https://elixir-lang.org/learning.html) * [Official Forum](https://elixirforum.com/) * [Toptal Getting Started with Elixir article](https://www.toptal.com/elixir/getting-started-elixir-programming-language) * [The hex package manager](https://hex.pm/) ### Go One of the most significant trends in the last 10 years is big companies creating and sponsoring their own programming languages. In 2009, Google created Go as a more modern substitute to C and C++. It provides [structural typing](https://en.wikipedia.org/wiki/Structural_type_system), memory safety, multi-paradigm support, high performance and concurrency, but also a friendlier syntax. One example of a successful application written in Go? [Docker](https://www.docker.com/) of course, and [Kubernetes](https://kubernetes.io/) as well. But over the years Go has been used successfully to build almost anything, from web frameworks like [Revel](http://revel.github.io/), data stores like [InfluxDb](https://github.com/influxdata/influxdb) and static site generators like [Hugo](https://gohugo.io/). #### To get you started... * [Official Web Site](https://golang.org/) * [Packages](https://golang.org/pkg/) * [Go By Example](https://gobyexample.com/) * [Awesome Go](https://awesome-go.com/) ### Julia #### To get you started... ### Kotlin #### To get you started... ### Luna I rediscovered a bookmark to the web site of the Luna programming language in my [-proglangs](https://pinboard.in/u:h3rald/t:-proglangs) Pinboard tag recently, and after reading more about it I decided to include it in this list because, unlike any other languages listed here, it provides _both_ a textual and a visual representation, and each can be used interchangeably to create Luna programs. Having multiple representations for the _model_ of a programming language is a very powerful concept, but it is not applied very often (and to such an extent) in mainstream programming languages. It is quite a cool concept nonetheless. I highly recommend giving Luna a try but downloading an installer for your operating system from Luna's home page. It will install Luna Studio, an [Atom](https://atom.io/)-based editor that can be used to create and run Luna programs. #### To get you started... * [Official Web Site](https://www.luna-lang.org/) * [Reference Documentation](http://docs.luna-lang.org/) * [Official Blog](https://medium.com/@luna_language) ### Nim Nim is the only language in this list that is also present in the [original article](/articles/10-programming-languages), but under the name _Nimrod_. The language indeed changed name over the years to _Nim_ because apparently _Nimrod_ in the US means _idiot_ or something... Anyhow, after 10 years, the Nim programming language hasn't reached version 1.0 yet, but according to the core team we are apparently _very close_. Although currently at version 0.19.0, Nim is quite stable and can be used in production as quite an efficient system programming language that compiles to C. You may want to watch out for deprecations between one release and the other, but I've been using it for the last... _10 years_ and it has been a remarkable experience. I use Nim in my spare time in quite a few pet projects, such as: * [LiteStore](/litestore/) — A lightweight, self-contained, searchable document store. * [min](/min/) — A small concatenative programming language that sneakily found its way into this article after all... * [HastyScribe](/hastyscribe/) — An advanced markdown compiler able to generate self-contained HTML files. * [HastySite](/hastysite/) — The static site generator powered by HastyScribe and min that currently powers this web site. * [Nifty](/nifty/) — A pseudo-package manager and script runner used to build nearly all the other projects. * [NimHTTPD](/nimhttpd/) — A simple web server for serving static files. #### To get you started... * [Official Web Site](https://nim-lang.org) ### Rust #### To get you started... ### Swift Swift is Apple's answer to the prayers of many iOS app developers complaining that Objective C was too hard to program with. #### To get you started... * [Official Web Site](https://swift.org/) * [Apple Developer page on Swift](https://developer.apple.com/swift/) ### Wren #### To get you started... ### Zig #### To get you started... |