I think reactive/synchronous languages [1] deserve a category of their own. They share little/no overlap with any of the others. My background in electrical engineering biases me to Verilog, VHDL, and LabVIEW as exemplars, but there are many others. The distinguishing characteristic of the category is that programs are effectively declarative functions of time and can be composed as such, much like electronic circuit…
The seven programming ur-languages (2021)
171–180 of 326 posts
Re: The seven programming ur-languages (2021)
#172Pretty excellent summary, this is roughly the taxonomy I have in my head. I would maybe add SQL as an ur-language as well. It's not quite general purpose like most of these, but it should have a place in this list, I think. It has some kinship with Prolog and the declarative style, but it's really it's own thing. You could also maybe argue for something like LabView. Many programmers look down on purely graphical pro…
SQL might be in its own category or not, but it shares a trait that languages in other categories ended up with: "I know, we'll make it kind of like writing English so that people who aren't experts can program!". This is one of those things that seems to keep coming back - recently in the Ruby world with Cucumber.
Re: The seven programming ur-languages (2021)
#173Earlier quoted context omitted.
The reader shouldn't have to reverse engineer a document! https://en.wiktionary.org/wiki/ur- Jesus! I thought these navel gazing low effort language posts went out of favor in 2012. I know all of these languages and Forth isn't foundational for anything we currently use, maybe the JVM because it has a stack if you really try and torture the definition. It is just a collection of languages so the author can look smart…
Looking up words you don't know =/= Reverse engineering
The prefix isn't even used properly.
Re: The seven programming ur-languages (2021)
#174Earlier quoted context omitted.
> I suspect that's a pretty non-standard/rarely-used feature though. If you learn SQL you likely won't encounter this Recursive common table expressions are part of the SQL standard (since 1999) and are quite frequently used to traverse hierarchical data (aka "adjacency list"). It is part of basically all (good) SQL tutorials - at least in the "advanced" part.
I don't remember using recursion in a real project, but I built a HN clone on top of Postgres, with the following query: WITH RECURSIVE thread(id, parent_id, user_id, post_id, timestamp, text, depth) AS ( SELECT id, parent_id, user_id, post_id, timestamp, text, 0 FROM comments WHERE user_id = 1 AND parent_id IS NULL UNION ALL SELECT c.id, c.parent_id, c.user_id, c.post_id, c.timestamp, c.text, t.depth + 1 FROM commen…
They do come up!
Re: The seven programming ur-languages (2021)
#175Earlier quoted context omitted.
The distinction in ALGOL, Pascal etc. is useless. But if you change your definitions such that expressions always evaluate to a single value and do not have any side effects while statements produce some kind of side effect (and may or may not yield a value), the distinction becomes important. Especially if you believe side-effects need special handling (i.e. you are a functional programmer).
The only popular language I can think of that requires side effects to be declared is Haskell. Which doesn't have a distinction between statements and expressions. Are there any good examples of languages that have it, where it isn't "useless"?
But I think the argument being advanced is that the distinction between statements and expressions is fundamentally unnecessary. I don’t really know of any good argument in favour of them: I tend to think lisps have the perfect and simplest possible syntax.
Re: The seven programming ur-languages (2021)
#176Also maybe command / shell languages deserve a mention?
Re: The seven programming ur-languages (2021)
#177Agree on the families, but I would pick a different representative for many of the categories. Algol -> C. Mostly because you can actually do things with C, and yet it remains a fairly small language that's a relatively pure exemplar of the Algol tradition. Lisp -> Scheme. Also because it's a tiny language that tries to push the fundamentals of the Lisp family (code-as-data, recursion, functional programming, macros)…
I'm not sure if it's common knowledge that "ur-" means "original".
Re: The seven programming ur-languages (2021)
#178Re: The seven programming ur-languages (2021)
#179Earlier quoted context omitted.
Looking up words you don't know =/= Reverse engineering
It is prefix from German, given with zero explanation. The article had no thesis other than, "languages people should know about", sorta. The prefix isn't even used properly.
Re: The seven programming ur-languages (2021)
#180Objective C is a good example of a Smalltalk derived language that was in heavy use for a while. Even though it's technically a superset of C, in actual use it's more like a message passing language.