Live data from Hacker News

The seven programming ur-languages (2022)

madhadron.com

111–120 of 161 posts

Re: The seven programming ur-languages (2022)

#111
post #17

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

No this GOAL: https://en.wikipedia.org/wiki/GOAL_agent_programming_languag...

Re: The seven programming ur-languages (2022)

#112
post #13

I 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.

This is all of them, properly speaking.

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)

#113

Earlier 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…

> To build a theorem prover you need to take away some capability (namely, the ability to do general recursion - the base language must be total and can't be Turing complete), not add new capabilities. In Haskell everything can be "undefined" which means that you can prove everything (even things that are supposed to be false).

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)

#114
post #59
post #17

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…

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…

Hi there! Which year was that? I followed the course in 2012/2013. Bummer it's gone.

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)

#115
post #3

Reminds 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.

There's also (besides Tate's sequel of 7 more languages), Dimitry Zinoviev's 7 Obscure Languahes in Seven Weeks. I liked it a lot, even if it hurt my feelings a bit to have my beloved Forth be one of the obscure languages (the others were APL, SNOBOL, Occam, Simula, Starset, and M4) -- I'm old and nerdy, but hadn't even heard of Occam and Starset.

Re: The seven programming ur-languages (2022)

#116
post #84
post #17

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…

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…

Same, our professor was okay, but he introduced a new system for the course that year, Weblab. I see it still exists and I have no doubt it works flawless now but every exam except the last ones was a mess.

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)

#117

One 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…

Ruby keywords are not objects.

Re: The seven programming ur-languages (2022)

#118
post #66

there'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…

Von Neumann may possibly have been the smartest man to ever live, but giving him credit for all of this is too much, brushing aside many other inventors (oft independent, to his credit).

Re: The seven programming ur-languages (2022)

#119
post #56

One 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…

If that's enough to make a language pure OOP, then Common Lisp is also a pure OOP languge:

  CL-USER> (class-of 42)
  #

Re: The seven programming ur-languages (2022)

#120

Earlier 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

Compared to Delhi? Ok. But I've had a soaking uncomfortable shirt every time I've been to Vegas, while in Phoenix it evaporates quickly.
Post reply on HN