My favorite subject when studying CompSci (TU Delft) was called "Concepts of programming languages". We learned C, Scala (for functional) and Javascript (prototypes). It made learning Elixir years later much easier. We also had a course that basically summed up to programming agents to play Unreal Tournament in a language called GOAL which was based on Prolog. For years I've wanted to use Prolog but could not figure…
This GOAL? https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
The seven programming ur-languages (2022)
111–120 of 161 posts
Re: The seven programming ur-languages (2022)
#112I might add another class of languages: those intended to express proofs, via the Curry-Howard correspondence. Lean is a primary example here. This could be considered a subclass of functional languages but it might be different enough to warrant a separate class. In particular, the purpose of these programs is to be checked; execution is only secondary.
Incidentally, this is pretty much what Algol 60 was designed for and why to this day many academic papers use it or a closely related pseudocode.
Re: The seven programming ur-languages (2022)
#113Earlier quoted context omitted.
Theorem proving and complex types are like extensions on an otherwise ordinary language: - Agda, Idris, etc. are functional languages extended with complex types - Isabelle, Lean, etc. are functional languages extended with complex types and unreadable interactive proofs - Dafny etc. are imperative languages extended with theorems and hints - ACL2 is a LISP with theorems and hints Related, typeclasses are effectively…
> Agda, Idris, etc. are functional languages extended with complex types I think they are not. No amount of type level extensions can turn a regular functional language like Haskell into something suitable for theorem proving. Adding dependent types to Haskell, for example, doesn't suffice. To build a theorem prover you need to take away some capability (namely, the ability to do general recursion - the base language…
Despite what the fanatical constructivists (as opposed to the ones who simply think it's pragmatically nice) seem to want us to think, it turns out that you can prove interesting things with LEM (AKA call/cc) and classical logic.
Re: The seven programming ur-languages (2022)
#114My favorite subject when studying CompSci (TU Delft) was called "Concepts of programming languages". We learned C, Scala (for functional) and Javascript (prototypes). It made learning Elixir years later much easier. We also had a course that basically summed up to programming agents to play Unreal Tournament in a language called GOAL which was based on Prolog. For years I've wanted to use Prolog but could not figure…
I was there, too. o/ The Unreal Tournament was the coolest thing I've ever seen. I think they shut it down the year after mine. (Now they have boring old regular AI like everyone else!) I haven't found a good use for Prolog, though I haven't put much effort into it. I admit I was much more impressed by GOAL though, and I didn't realize until recently that you can replicate the whole thing in a more "ordinary" languag…
We almost won the tournament, we lost cause we overestimated the enemy.
We programmed our agents to assume that if they have our flag they're bringing it to their base, thus we sent all agents there to await their arrival.
And so they waited while our opponents ran in circles with our flag at the center or the map.
I tried many things in Prolog but ordinary languages often proved to be more suitable.
I recently vibe coded spellcheck.boneiru.online which is fully based on Prolog.
I realized a spellchecker is a perfect use case, since I basically need to check ortography which is a set of facts.
In terms of GOAL the text input would be the perception, and I then resolved whether the goal (correct text) is achievable.
The facts are all valid words in the language and the rules I got from an ortography book.
Re: The seven programming ur-languages (2022)
#115Reminds me a bit of Bruce Tate’s approach in 7 languages in 7 weeks, which is where I first encountered Erlang. I think from a historical perspective, describing COBOL and Fortran as part of the ALGOL family is a stretch, but I suppose it’s a good reminder that all history is reductive.
Re: The seven programming ur-languages (2022)
#116My favorite subject when studying CompSci (TU Delft) was called "Concepts of programming languages". We learned C, Scala (for functional) and Javascript (prototypes). It made learning Elixir years later much easier. We also had a course that basically summed up to programming agents to play Unreal Tournament in a language called GOAL which was based on Prolog. For years I've wanted to use Prolog but could not figure…
I took a similar class in college, and I'm also glad I did, even though the professor was kinda rubbish. Even having the thinnest surface level understanding of the other ur-languages is so useful (and even more-so with assembly). I can't do anything useful with them, but it helps keep you from the "when all you have is a hammer, every problem looks like a nail" trap if you're at least aware of the existence of screw…
And regarding the screwdriver, I fully agree. Especially with AI I can use the right tool for any job, despite me not being able to use it directly.
Re: The seven programming ur-languages (2022)
#117One correction I'd make to the article's taxonomy: Ruby is an object oriented language not an Algol. Its inspiration is Smalltalk, and much of the standard library naming comes from that route (eg collect rather than map). Ruby is object oriented from the ground up. Everything (and I do mean everything) is an object, and method call is conceived as passing messages to objects. While Ruby is most often compared to Pyt…
Re: The seven programming ur-languages (2022)
#118there's a few more semantic families: verilog, petri nets and variants, Kahn process networks and dataflow machines, process calculi, reactive, term rewriting, constraint solvers/theorem provers (not the same with Prolog), probabilistic programming, plus up and coming (actual production-ready) languages that don't fit perfectly in the 7 categories: unison, darklang, temporal dataflow, DBSP It may feel like a little b…
> was meaning for a while to do an article with 'all ways we know how to compute (beyond von Neumann)'. Would be very glad to read this. In the meantime, I reproduce a part of an article by Steve Yegge: --- What Computers Really Are Another realization I had while reading the book is that just about every course I took in my CS degree was either invented by Johnny von Neumann, or it's building on his work in mostly u…
Re: The seven programming ur-languages (2022)
#119One correction I'd make to the article's taxonomy: Ruby is an object oriented language not an Algol. Its inspiration is Smalltalk, and much of the standard library naming comes from that route (eg collect rather than map). Ruby is object oriented from the ground up. Everything (and I do mean everything) is an object, and method call is conceived as passing messages to objects. While Ruby is most often compared to Pyt…
Since Python introduced new style classes, it also became a pure OOP language, even though it might not look like it at "Hello World" level, all primitive types have become objects as well. I love to point this out to OOP haters, >>> type(42) >>> dir(42) ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floo…
CL-USER> (class-of 42)
#Re: The seven programming ur-languages (2022)
#120Earlier quoted context omitted.
I think the choice to identify a specific ur-language as "Object oriented" throws people off since OO is just a style of programming in the same way that procedural is. I don't think it's useful to say that Python and C++ are both the same kind of language because they both have multiple inheritance, rather that's just an observable commonality, like noticing that both Delhi and Vegas are too hot. Yeah, but I don't t…
Yeah, but the thing about Vegas is that it's really more of a dry heat