Live data from Hacker News

The seven programming ur-languages (2022)

madhadron.com

151–160 of 161 posts

Re: The seven programming ur-languages (2022)

#151

I’ve very slowly been trying to do the “99 problems” list in each of these languages groups. It’s been a fun experience seeing the differences. Though I think I would need a larger, less algorithmic, project to really see each group’s strengths. Especially for the OOP group. One thing the article didn’t touch on was SmallTalk’s live visual environment. It’s not a normal source code / text language.

> It’s not a normal source code / text language.

Do you think source code cannot be compiled and run from the command-line?

https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

Re: The seven programming ur-languages (2022)

#152
post #150

I recently revisited a language comparison project, a specific benchmark tallying the cycle decompositions in parallel of the 3,715,891,200 signed permutations on 10 letters. I kept a dozen languages as finalists, different philosophies but all choices I could imagine making for my research programming. Rather than "ur" I was looking for best modern realizations of various paradigms. And while I measured performance…

None of the other comments are about program benchmarks.

The common theme is diverse notions of a language. When I order from a menu, I don't order based on price, but I prefer to see the prices.

Lean 4 is the most interesting language on my list. I didn't reject it on price.

Re: The seven programming ur-languages (2022)

#153

I recently revisited a language comparison project, a specific benchmark tallying the cycle decompositions in parallel of the 3,715,891,200 signed permutations on 10 letters. I kept a dozen languages as finalists, different philosophies but all choices I could imagine making for my research programming. Rather than "ur" I was looking for best modern realizations of various paradigms. And while I measured performance…

Naively this is quite surprising, but the devil is in the details. With the exception of Lean I'd point out they're all fairly close: Chez being 2.5x slower than C++ is not ignorable but it's also quite good for a dynamically-typed JITted language[1]. And I'm not surprised that F# does so well at this particular task. Without looking into it more closely, this seems to be a story about F# on .NET Core having the most…

Yes, Chez improved a bit, at the expensive of readability.

Re: The seven programming ur-languages (2022)

#154
post #151

I’ve very slowly been trying to do the “99 problems” list in each of these languages groups. It’s been a fun experience seeing the differences. Though I think I would need a larger, less algorithmic, project to really see each group’s strengths. Especially for the OOP group. One thing the article didn’t touch on was SmallTalk’s live visual environment. It’s not a normal source code / text language.

> It’s not a normal source code / text language. Do you think source code cannot be compiled and run from the command-line? https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

I’ve never worked with SmallTalk professionally, so I could be mistaken. I know you can write/compile SmallTalk source code. But my understanding is that this wasn’t the way it’s intended to be used. I am under the impression that the live images were how the language designers intended it to be used. And that the live images are a better representation of the OOP/message passing paradigm.

Re: The seven programming ur-languages (2022)

#155

Earlier quoted context omitted.

Behold, future children, this is the ur-comment that started the cognitive revolution in how we teach programming languages in the 32nd century. The text and its important idea were almost lost in the tides of history, but it reached us thanks to a few eccentric ur-linguists digging through the ruins of post-WWIV civilizational collapse.

you have not discovered the ur-comment, you have discovered the ruins of the pedagogy that was Ur. "look on my works, ye mighty, and despair"

I know where the gold coin is.

Re: The seven programming ur-languages (2022)

#156
post #54

I always enjoy these summaries. I took my bachelor of computer science in the early 1990s. It covered a language in most of these categories. We didn't learn APL (Who is teaching the use of those custom keyboards to 100s of young students for one semester?) The processing power of systems at the time made it clear which language classes were practically useful and usable for the time and which were not. Prolog ran li…

Virginia Tech at least used to - the school of Architecture had a programming in APL class.

That's amazing. I used to live under an architecture student (our building). His command of design history was great. His command of maths? Well, not so much.

Re: The seven programming ur-languages (2022)

#157
post #137

Earlier quoted context omitted.

> Aren't camels a Perl thing? That's a deep cut. :-) For anyone reading this, O'Reilly was once legendary for their cover-art mascots.

Kids those days. There's always one explaining the joke to others.

They're just doing their bit for today's lucky 10,000. Which, if you're unaware, is a reference to this XKCD comic: https://xkcd.com/1053/

Re: The seven programming ur-languages (2022)

#158

Earlier quoted context omitted.

Naively this is quite surprising, but the devil is in the details. With the exception of Lean I'd point out they're all fairly close: Chez being 2.5x slower than C++ is not ignorable but it's also quite good for a dynamically-typed JITted language[1]. And I'm not surprised that F# does so well at this particular task. Without looking into it more closely, this seems to be a story about F# on .NET Core having the most…

Yes, Chez improved a bit, at the expensive of readability.

Yeah :/ For a larger program you can pay the readability toll once, via a syntactic form that expands the general vector/arithmetic operations to the fixnum versions, e.g. used something like

  (define (heap-permute! perm j callback)
    (with-context 'fixnum ;; same trick works with 'flonum for 64-bit floats
      (let ([n (length perm)]) ;; actually fxvector-length
       (let generate ([k (- n 1)]) ;; actually fx-
         (if (= i k)) ;; fx>=
                (if (even? (- j k)) ;; fxeven?, fx-
                (swap perm j k)
                (swap perm i k))
                (generate (- k 1)))))))) ;; fx-
Sorry if I borked the indentation. I have been working on stuff like this, and more general macros around dependency injection and inversion of control (e.g. you could write this macro to take the type as a parameter and generate code optimized for 'bigint or 'rational). Maybe check back after the summer :)

And BTW I misspoke earlier, of course Chez is AOT rather than JIT. From one approach it's sort of a hybrid: really fast on-the-fly AOT kinda looks like JIT, tongue-in-cheek you could say "NoT compilation" (nick-of-time). But proper JIT of course has huge advantages. If you reeaaaallly wanted to sabotage readability, Chez makes it easy to invoke the compiler at runtime, so along with the C FFI I think you could hack together some sort of JIT. But wow, what a mess that would be! You'd better be getting a PhD thesis out of it :) And if the performance is that critical you'd be much better off with F#.

Re: The seven programming ur-languages (2022)

#159
post #55

I wrote something similar here: https://fmjlang.co.uk/blog/GroundBreakingLanguages.html We agree on Algol, Lisp, Forth, APL, and Prolog. For ground-breaking functional language, I have SASL (St Andrews Static Language), which (just) predates ML, and for object oriented language, I have Smalltalk (which predates Self). I also include Fortran, COBOL, SNOBOL (string processing), and Prograph (visual dataflow), which wer…

I don’t understand why self is placed in the list instead of smalltalk. Smalltalk came first, and Alan Key was the one who invented the “OOP” name. Also ML is seen as a child of Lisp.

Although it didn't call it that, Simula-67 was basically object-oriented and both preceded and inspired Smalltalk. But syntactically it looks much like other Algol-inspired langages so it doesn't look that interesting at first glance.

Re: The seven programming ur-languages (2022)

#160
post #151

Earlier quoted context omitted.

> It’s not a normal source code / text language. Do you think source code cannot be compiled and run from the command-line? https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

I’ve never worked with SmallTalk professionally, so I could be mistaken. I know you can write/compile SmallTalk source code. But my understanding is that this wasn’t the way it’s intended to be used. I am under the impression that the live images were how the language designers intended it to be used. And that the live images are a better representation of the OOP/message passing paradigm.

Wasn't the way it's intended to be used to do what ?

"Within each project, a set of changes you make to class descriptions is maintained. … Using a browser view of this set of changes, you can find out what you have been doing. Also, you can use the set of changes to create an external file containing descriptions of the modifications you have made to the system so that you can share your work with other users."

1984 "Smalltalk-80 The Interactive Programming Environment" page 46

    ~
"At the outset of a project involving two or more programmers: Do assign a member of the team to be the version manager. … The responsibilities of the version manager consist of collecting and cataloging code files submitted by all members of the team, periodically building a new system image incorporating all submitted code files, and releasing the image for use by the team. The version manager stores the current release and all code files for that release in a central place, allowing team members read access, and disallowing write access for anyone except the version manager."

1984 "Smalltalk-80 The Interactive Programming Environment" page 500

Post reply on HN