11 ms·
Interesting Programming Languages
- g_delgado14 7y ago> Imba is a programming language for the web that compiles to performant and readable JavaScript. It has language level support for defining, extending, subclassing, instantiating and rendering dom nodes. I found it odd to see this language up on the list, and not Elm.
- panopticon 7y agoI think “interesting” is “novel” in this context. Given that pretext, I think Imba is a better fit for this list than Elm.
- parentheses 7y agoThis is fantastic!
- simonebrunozzi 7y agoI'm reading a lot about WebAssembly (which, I know, it's not a programming language per se), and more recently Dark (https://darklang.com https://darklang.com). My open question is whether in the coming 2-3 years there will be a significant paradigm shift in programming languages, or not. My bet is that a combination of new, purpose-specific languages, together with "real" AI, will have a chance to have a big impact.
- digaozao 7y agoWhere can u read about dark? The site has no docs on it.
- yawaramin 7y agoPaul Biggar blogs about it on their Medium blog.
- simonebrunozzi 7y agoExactly - that's where I've read about it.
- pbiggar 7y agoLink for the lazy: https://medium.com/darklang https://medium.com/darklang
- keithnz 7y agowhat's the paradign shift you are thinking might happen?
- vizzier 7y agonot OP. Not this specifically but this generally these types of changes. https://dotnet.microsoft.com/apps/aspnet/web-apps/client https://dotnet.microsoft.com/apps/aspnet/web-apps/client where we can run abitrary desktop languages in the browser is going to be huge.
- js8 7y agoThe list seems rather arbitrary. To add to the list, I would consider also: CLIPS, Coq, Dhall, Factor, Inform, Stan.
- coldtea 7y ago>The list seems rather arbitrary As opposed to what list? An exhaustive one? The quality he asks of the languages in the list is "interesting", which is by definition rather arbitrary itself.
- reallydude 7y agoElixir is Ruby like wrapper to a prolog based syntax to do actor based programming. It's more of a mess trying to move Erlang's syntax forward than interesting, but ok. Ponylang is listed as "--" instead of "concurrency as a primitive type". I'm not sure I can trust anything on the list, so it doesn't motivate me to investigate further. YMMV
- coldtea 7y agoI don't really care if it's a "list I trust". I do care for a set of links to languages I've not seen yet, where I can click and check their websites -- and this provides it.
- nixpulvis 7y agoA more interesting list might be an <ol> with the first few languages to learn to cover the most good concepts. But such a list would be a lot more decisive.
- yakshaving_jgt 7y agoThis is essentially the premise of the book Seven Languages in Seven Weeks.
- imglorp 7y agoAnd if it was an objective measure, there would never be a least interesting language, because if there were, then it would be interesting for that reason.
- 6thaccount2 7y agoNotably missing: APL (Dyalog), J, Prolog, Rebol (Red is on the list), PicoLisp, Racket, Factor, 8th (Reva was mentioned and that was the creator's prior project), and Haskell. Maybe most of the above are too mainstream for the list.
- tyingq 7y agoKotlin and Dart also. Maybe the same reason? There isn't a preamble with the reasoning...they just jump right into the list.
- amimetic 7y agoDart is designed to be uninteresting! But certainly Kotlin deserves a mention if Elixir makes it onto the list.
- dleslie 7y agoCarp, Scheme, Elm
- yakshaving_jgt 7y agoI was actually rather pleased that Haskell is omitted. It suggests that Haskell is now mainstream.
- II2II 7y ago> Maybe most of the above are too mainstream for the list. While an interesting language may be obscure, an obscure language is not necessarily interesting. In many cases, being relatively well known is a benefit simply because it offers more exposure to new ideas. I have found languages such as Forth, Racket, and Smalltalk far more valuable primarily because they are sufficiently accessible to be practical learning tools.
- btbytes 7y agoI'm the author. You are right. I think the above are all "mainstream" enough for me. At the least, I've installed and played with them all at one time.
- deleted 7y ago[deleted]
- inetsee 7y agoI was looking for Planner (which never got past a subset implementation called Micro-Planner, used by Terry Winograd to implement his natural language understanding program SHRDLU), and Conniver.
- Syzygies 7y ago> Boomerang is a language for writing lenses — well-behaved bidirectional transformations I love this unabashed reference to the original use of the term "lens". I love Haskell, but I'm embarrassed by its later, different use of the term "lens".
- lgas 7y agoWhat is the difference you're referring to? As I understand it they are the same.
- yawaramin 7y ago> bidirectional transformations Isn't that called an isomorphism?
- makapuf 7y agoBidirectional implies bijections, for isomorphism you'll need a morphism, a function that preserves/transposes some kind of structure or internal composition law (addition, multiplication,...)
- mycl 7y agoInterestingly, from the point of view of category theory, an isomorphism in a category is just a morphism with a two-sided inverse. A bijection is then just an isomorphism in the category of sets.
- 8bitsrule 7y agoCOMAL was interesting ... "one of the few structured programming languages that was available for and comfortably usable on 8-bit home computers." Might still be used in UK education. Too many details: https://web.archive.org/web/20180405152943/https://computerarchive.org/files/computer/newsletters/comal-today/COMAL_Today_Issue_25.pdf https://web.archive.org/web/20180405152943/https://computera...
- gigatexal 7y agoAnyone using Ballerina in production?
- dom96 7y agoI was curious and disappointed to find that there is no blurb about Nim. Not had a chance to give it a go yet?
- btbytes 7y agoI have a whole page on nim here - https://www.btbytes.com/nim.html https://www.btbytes.com/nim.html Edit:typo
- qwerty456127 7y agoThank you very much. I wanted such a list for more than a year. As people suggest below, it can be improved by adding more languages.
- knome 7y agoWhile I've vaguely known it was around for a while, I recently had the pleasure of using `jq`. It has a genuinely different and extremely useful set of semantics. It allows you to easily define transformations over json object streams, and it's completely brilliant in how it goes about doing it.
- ausbah 7y agoHas anyone actually used these in production or a feasible side project?
- namibj 7y agoLooking forward to implement sparse voxel octree code with iterative mesh refinement with Chapel. I forgot about it, because it was unusable for GPUs back when I first had contact. And now it seems good enough for non-GPU code and maybe even GPU code in comparison to C++. I expect a few 10s of TB ram to be required for a specific dataset, which practically rules out any shared-memory approach. Clusters should be better above a few hundred GB anyway, maybe less depending on network bandwidth vs. RAM needs.
- RhodesianHunter 7y agoI have not used it personally, but Elixir is certainly in use in quite a few production environments.
- Izkata 7y agoI use Rebol for almost all my side projects; it's the first language I learned back around 2000, and the direct ancestor of Red, which is on the list.
- daurnimator 7y agoCurrently doing one in Zig.... we'll see how it goes.
- neilv 7y agoEven if not used in production, Self is one of the influential ones on the list. Self did JIT before Java, did prototype object model before JS, and did visual morph objects that I'd guess influenced Squeak and others.
- thanatropism 7y agoOf note: Hy.
- bctnry 7y agoAs another lisp dialect Hy might not be interesting enough.
- thanatropism 7y agoIt’s rather nonstandard, since it has to follow Python closely. Has no cons or let. OTOH: has defmacro.
- virtualwhys 7y agoUrWeb deserves a mention as well: https://github.com/urweb/urweb https://github.com/urweb/urweb
- _bxg1 7y agoI was hoping these would be more unusual. My favorite thing is an impractically novel - maybe even intentionally useless - programming language. A way to describe a space of things that's truly alien; not even necessarily identifiable as a "programming language" aside from being interpretable by machines.
- ajxs 7y agoVery cool list! Maybe Ragel deserves a mention: http://www.colm.net/open-source/ragel/ http://www.colm.net/open-source/ragel/
- cryptonector 7y agoMissing: Icon. I think Icon is a fascinating language in spite of being dynamically-typed. I've not used it in many years though. What makes Icon interesting is that its functions ("procedures" in Icon terminology) are essentially generators in that they can "fail" (prune, produce no [further] results), or "suspend" results as many times as desired. "Failure" drives backtracking. So it's Prolog-like, but with Algol-family syntax. Not surprising then that I find jq interesting too: it has pervasive generators and backtracking, just like Icon, though with a fundamentally different syntax, and very limited type system.
- pasabagi 7y agoDo you like writing jq? I really tried to like it, appreciated the ideas, but found even simple programs extremely hard to write in it. (Obviously, this is possibly just an artifact of me being thrown into a functional deep-end with an extremely terse syntax).
- cryptonector 7y agoIt took some getting used to... I "like" it the same way that I "like" writing XSLs: I thank my lucky stars that jq and XSLT/XPath exist, but if I didn't have to deal with JSON/XML I wouldn't use jq/XSLT. That reasoning seems circular, but at least jq is significantly more general than XSLT. Though to be fair I like jq a lot better than I like XSLT. All functional languages tend to take some getting used to, at least for me. Now that I have a mental model of jq, I do actually enjoy using it. The terse syntax is a double-edged sword.
- minxomat 7y agoThink of jq more like bash instead of a generic functional language. Blocks work on data and you pipe data along blocks. You can name blocks. That 99% of what you need to get to do jq. Here's a small example of a smaller ETL script a wrote a while ago for stats collection over scm repos: https://gist.github.com/turbo/36e87947a56cfaacec9d0356b3e521ba https://gist.github.com/turbo/36e87947a56cfaacec9d0356b3e521... As you can see it loads data from vars, fed by other jq scripts. Don't try to put everything in one script. Each script should basically just reduce and normalize.
- pietrasagh 7y agoThis list is far from being complete. Brainfuck is missing ;-)
- phonebucket 7y agoFuthark definitely caught my attention from that list. I had never come across it before. Are there any other languages which compile to OpenCL/CUDA? There are so many libraries built on them, but I haven't seen so many languages compiling to them.
- vinceguidry 7y agoThere's no way to do this kind of list without infecting it with author bias. I'm a Rubyist, I like pure-OO, so what's interesting to me is language interop, so that I can get all the benefits of pure OO along with speed, and tooling so that you can get through the mass of context that is understanding the standard library and available libs so you don't have to build literally everything from scratch or spend 90% of your time in Google. So I went looking for Pharo, which brings fascinating introspective tooling to Smalltalk, only to find that the author is biased towards 'any' high level features interoperating with C-like languages. And my list of interesting languages would look the same way, nobody would be able to see why I didn't put 'their' language on there. Which is why I got excited for the awesome list thing. One person can't curate everything. You need a community of people invested in differentiating software offerings to the point where anybody can look at it and see what makes it interesting.
- dragonwriter 7y ago> There's no way to do this kind of list without infecting it with author bias Well, “interesting” is subjective so it always is going to incorporate someone's opinion, but it doesn't have to be the author’s bias, e.g., if it was based, say, on surveying a wide and representative pool of developers.
- vinceguidry 7y agoI think about the concept of rationality a lot, and you touch upon a frequent topic of rumination. Does interestingness always have to be subjective? I don't think so, I think we can reduce it down to the contextual, and identify an ideal middle ground between the two. In that, we can make objective judgments that, given some context, a particular item sticks out and is therefore interesting. And that any interested curator could look at any new entrant and discover almost immediately what makes it interesting. I think many machine language workloads boil down to searching for signal amongst noise. A human can then go look at the anomalies. I wouldn't want a survey of a bunch of coders barely interested in curation. I want the guys who have been dealing with these things their entire careers and really care about the differences. Not quite fully-automated discovery, but with a minimum of human fuss and a maximum of deliverable rational information.
- rgacote 7y agoSNOBOL: Was the first language that opened my eyes that there was more to computing then numbers. Up to that point, college was all FORTRAN, Cobol, and a bit of CDC 6600 assembly.
- mikelbring 7y agoAnyone tried Crystal yet?
- irq-1 7y agoKit looks interesting. Anyone have any experience or comments? > Kit is a “Compiles-to-C” language. It is strong, and statically typed with many modern language features like type inference, algebraic data types, pattern matching, generics, implicits, while still having low level features like raw pointers, and manual memory management. Kit is written in Haskell. notes. https://www.kitlang.org/ https://www.kitlang.org/
- ghaberek 7y agoThanks for including Euphoria in this! Nice to see our language still getting some love.