[HN Gopher] The German School of Lisp (2011)
___________________________________________________________________
The German School of Lisp (2011)
Author : tosh
Score : 132 points
Date : 2022-11-12 11:08 UTC (11 hours ago)
(HTM) web link (blog.fogus.me)
(TXT) w3m dump (blog.fogus.me)
| stevenally wrote:
| Ok. What's a good lisp like language without the embedded
| parentheses? I know it's subjective, but I just can't get past
| them.
| borodi wrote:
| Julia has many of the features one expects of a lisp. But it
| has a more "normal" syntax
| pjmlp wrote:
| Julia, following on the footsteps of Dylan.
| rscho wrote:
| There is no lisp without s-expressions. To understand why, you
| should try paredit.
| tejtm wrote:
| REBOL might scratch that itch, it is "not dead yet" kinda of
| like how Amiga is not dead yet
|
| I gave up on it with the switch to 64bit machines ... but it
| still holds a warm and fuzzy place in my memories as how I
| "got" lisp before I even knew what a lisp was.
|
| warning free but not even open source [http://www.rebol.com/]
| ducktective wrote:
| There is also red-lang, it's successor in geist:
| https://www.red-lang.org/
| ducktective wrote:
| I think homoiconicity and the resulting macro system
| necessitates s-expressions. I mean how could you devise a
| "programmable" programming language with ASCII-based syntax in
| other ways?
| kragen wrote:
| prolog
|
| forth
|
| camlp4
|
| postscript/joy
|
| pure/q (aardappel is worth looking at but could hardly be
| less ascii-based)
|
| raku
|
| smalltalk
| Jtsummers wrote:
| Dylan:
| https://en.wikipedia.org/wiki/Dylan_(programming_language)
| [deleted]
| lispm wrote:
| They often have other parentheses, just in different places and
| with a different purpose.
| solarkraft wrote:
| I still don't get Lisp. Why does there need to be an endless
| amount of dialects? Doesn't this completely needlessly fracture
| the ecosystem into hundreds of pieces making it impossible to
| effectively support?
|
| Isn't the point of Lisps to be endlessly customizable, making the
| invention of a new dialect _less_ necessary?
|
| The only Lisp I'd consider for a real project is probably Clojure
| and I'd even be hesitant about that. Sure, you can make a simple
| web project with Arc (HN), but it seems like you get 0 libraries,
| 0 interfaces with other systems and 0 tooling. Why would I bother
| with that?
| aidenn0 wrote:
| Why is there Fortran and Algol and B and BCPL and C and Algol
| and Pascal and Simula and Modula and objective C and C++ and
| Ada and...
| [deleted]
| nonrandomstring wrote:
| > Isn't the point of Lisps to be endlessly customizable, making
| the invention of a new dialect less necessary?
|
| A great question. Maybe everything should have been built on
| Scheme once . and . for . all But people and the world aren't
| like that. We are restless souls.
| JonChesterfield wrote:
| Scheme's macro system is way more complicated than it should
| be.
| sph wrote:
| When they sort out the spec issue (R7RS) we will reach
| programming nirvana and world peace. But I doubt humanity
| will live long enough to see that day.
| mtreis86 wrote:
| There is an endless amount of Lisps because the core to get one
| working is one page of code. So many people make one as a pet
| project. Aside from the small unused versions, the rest of the
| dialects have a lot of differences between them, some of which
| would be difficult to implement in an existing implementation.
| Common Lisp is a fairly complex specification to achieve, so
| few even approach it, and of those that do most aren't fully
| compliant.
| pfdietz wrote:
| For some definition of "getting one working".
|
| Getting a Lisp to run efficiently and effectively is more
| difficult than just writing an interpreter. I consider work
| on this problem to still be incomplete. For example, it
| should be possible to implement generic functions even more
| efficiently in Common Lisp implementations than is currently
| the case, in a way that preserves the ability to redefine the
| functions (and the classes they work with) dynamically.
| Robert Strandh has been working on general mechanisms
| supporting this and other improvements.
|
| http://metamodular.com/SICL/call-site-optimization.pdf
| javajosh wrote:
| It's another example of the ~800 volume work titled "Where the
| indirection go?" A solid 90% of the variation you see in the
| programming world is moving indirection higher or lower, inside
| or outside, like moving food around on a plate. When you
| compound these choices, you get a combinatorial explosion
| that's both intimidating and absurd. And the clearest
| indication yet that, despite our pretensions, software
| engineering is, in fact, software alchemy awaiting
| systemization. We need Lavoisier and Mendeleev for software,
| stat!
| billfruit wrote:
| May be Linneaus and Cuvier as well.
| h9n wrote:
| How about a taxonomy by associated sexual pathology?
|
| https://youtu.be/mZyvIHYn2zk
| kazinator wrote:
| > _Why does there need to be an endless amount of dialects?_
|
| Because any time someone makes an (operator arg1 arg2 ...)
| language, they either put Lisp in the name, or else state
| elsewhere that it's a Lisp dialect.
|
| Why does there need to be an endless progression of C-like
| dialects? They don't get called C, or rarely so.
|
| The semantic differences between things called Lisp can be as
| large as between C++, Java, Javascript and Awk.
|
| Many programming languages have been modeled on Algol; why are
| there so many Algols and why aren't they called that way? A lot
| of it is because of syntactic differences.
|
| In the Lisp world, there are some mainstream languages that
| have the most users; if that's important to someone, they can
| stick with those and pretend the rest don't exist.
| izhak wrote:
| You could change the "Lisp" in your comment to "Programming
| Language" to make the answer less unobvious.
| nnoitra wrote:
| No, you can't. How many dialects of C++ are there or of Java.
| skissane wrote:
| > How many dialects of C++ are there
|
| Dozens. The standard language has been through numerous
| revisions (C++ 2.0, 98, 03, 11, 14, 17, 23), with no doubt
| many more to come - each version is a dialect. And there
| have been dozens of compilers, all of which define
| extensions to the standard - some of those extensions are
| copied by other compilers (and may eventually end up in the
| standard), others are unique to that implementation - so
| each compiler (even each of its successive major releases)
| can be viewed as a dialect. And then there are dialects
| defined, not by the core language features, but by which
| features are used, by which external libraries are used,
| etc. One C++ programmer is addicted to esoteric template
| metaprogramming, another avoids templates and treats C++ as
| a slightly improved version of C. One C++ programmer uses
| every Boost library they possibly can, another refuses to
| use any third party dependencies. One uses exceptions and
| RTTI heavily, the other always turns them off. Aren't those
| all effectively different dialects, even if they are both
| using the exact same version of the same tools?
|
| And then there are entire languages defined as extensions
| of C++, such as Apple's Objective C++, or Microsoft's
| Managed Extensions for C++ and then C++/CLI and C++/CX -
| and also more modest extensions such as OpenMP
|
| Considering C++ is an object-oriented extension to C, it
| belongs alongside other such extensions - most notably
| Objective C and D (and even, to a lesser degree, Java and
| C#) - and there have been other attempts at that which
| weren't successful - aren't they all (in a sense) C
| dialects?
| ludston wrote:
| No, you can. It's like asking, "why make c# when Java
| already exists. Isn't it just another algol dialect with
| gc?"
|
| The answer is, "because somebody made it because they
| weren't happy with what already existed"
| Jtsummers wrote:
| A large factor in the push for C# was that MS was sued by
| Sun for their not-totally-compliant Java dialect, Visual
| J++, and had to drop it as part of a settlement.
|
| They also had Visual J# which ran on .NET, allowing
| Visual J++ and Java programs to target that platform.
| skissane wrote:
| There is also a non-Microsoft open source implementation
| of Java on top of .NET, IKVM.NET - I was sad to see it
| die when its original developer lost interest (although I
| just learnt it has since been revived by others)
| gus_massa wrote:
| Are Java and C# different languages, or just a trick with
| the name by Microsoft to avoid the requirements of Sun?
|
| (I think that the difference between Java and C# is similar
| to the difference between Common Lisp and Scheme.)
| tmtvl wrote:
| So once upon a time they were very similar but over the
| years they drifted apart until they were as different as
| whales and elephants?
| vasirian wrote:
| s/Lisp/Programming Language/g not `a programming language`.
| sph wrote:
| Why are there multiple programming languages?
|
| Why are there multiple dialects of real-world languages?
|
| LISP is pretty minimal and simple. It's less of a language than
| a set of constructs for computation. Computers are made of
| abstractions on top of abstractions, so it makes sense for
| Lisp-based languages to evolve continuously. No one is better
| than the other, each target to their own niche. Just like other
| prog. languages, or real-world dialects.
| vindarel wrote:
| For the same reason as there are many algol-like languages.
|
| The production-ready lisps are:
|
| - Common Lisp: this one is standardized and the ecosystem is
| NOT fractured. Many implementations exist and work in parallel:
| SBCL, CCL, LispWorks, ECL, ABCL...
|
| - Clojure (though there is also ABCL and I keep hearing good
| things about LispWork's Java interface)
|
| - Schemes: some coming from university, with a fractured
| ecosystem.
|
| Of course, nobody uses Arc for serious stuff (but we can have
| its syntax in CL and probably in Racket too).
| jonjacky wrote:
| _For the same reason as there are many algol-like languages._
|
| I remember in the 1980s someone remarked that C and Pascal
| were more similar than Maclisp and Interlisp.
| weatherlight wrote:
| There's also LFE which is rock solid and production ready.
|
| (Lisp Flavored Erlang)
|
| https://github.com/lfe/lfe
|
| https://en.wikipedia.org/wiki/LFE_(programming_language)
| mikelevins wrote:
| There are a lot of dialects because its core is one of the
| easiest programming languages to understand and implement, and
| once implemented, it's one of the easiest languages to extend.
| That's all there is to it, pretty much.
|
| Anyone who is interested in the design of programming languages
| will find it easy to make their own Lisp and try out any ideas
| that seem congenial to them. The natural and obvious
| consequence is a lot of Lisps.
|
| Creatives gotta create.
| kazinator wrote:
| I think there are lots of dialects because it's the easiest
| programming language to misunderstand.
|
| Somehow, someone who makes a scripting language with C syntax
| , like Awk or Javascript, instinctively knows that it isn't C
| and not to call it that.
|
| But any time slaps together some parentheses evaluator they
| think they have Lisp.
| nonrandomstring wrote:
| Beautiful, compact summary going to the heart of language
| philosophy, what we can and should build and for what purposes.
| To hardened pragmatists this probably looks like ideology and
| pointless tinkering at it's worst, but I think the slow, eventual
| path to sucklessness lies here in the vibrancy. Lisp will have
| its day again :)
| dang wrote:
| Discussed at the time:
|
| _The German School of Lisp ( "Fluchtpunkt Lisps")_ -
| https://news.ycombinator.com/item?id=2509696 - May 2011 (32
| comments)
| mark_l_watson wrote:
| Interesting that Michael wrote that 11 years ago and that it is
| still a relevant partitioning and categorization of Lisp
| languages.
|
| I love the Lisp ecosystem and my only real regret is that
| PicoLisp does not run on macOS because I think as a tiny Lisp
| that it is practical for some applications and there are several
| very interesting programs written in it.
| 7thaccount wrote:
| I've also only played around with picolisp, but thought it was
| pretty cool. The design ideas are kind of cool for sure, but I
| can't put my finger on why.
| Jtsummers wrote:
| https://picolisp.com/wiki/?alternativeMacOSRepository
|
| Only found it, haven't tried it. Apparently it can work on
| macOS now.
| mark_l_watson wrote:
| Thank you!!
| Qem wrote:
| Wonder where hylang would fit in this classification: exo-lisp,
| practical-lisp or fluchtpunkt-lisp? I intend to learn lisp, but
| keep delaying the time investment, waiting for hylang to get a
| better beginner-friendly tooling setup. So far it seems step 0 in
| learning hylang (and most lisps) is to learn emacs first, and how
| to configure it, what causes unecessary friction for would-be
| apprentices, as this recently asked stackoverflow question shows:
| https://stackoverflow.com/q/74409462
|
| One thing I enjoyed in the smalltalks is that they share a lot of
| lisp power, but the tooling is more self-contained and integral
| to most of them, what makes the first steps really easy to take.
| As Seymour Papert stated the ideal, "low threshold, no ceiling."
| mumblemumble wrote:
| I would call it an exolisp. Its very pointed use case is to
| enhance Python with better metaprogramming facilities.
|
| It's often compared to Clojure, but Hy's own documentation
| often uses Clojure as a contrasting example that reinforces
| this perspective. Clojure is built on top of Java, but the
| integration is somewhat loose in that Java semantics don't
| always map cleanly to Clojure semantics. Hy, on the other hand,
| deliberately stays very, very close to Python's semantics, even
| when that means making significant departures from how things
| are typically done in a lisp.
| vindarel wrote:
| FYI you can call Python from CL:
| https://github.com/bendudson/py4cl and CL from Python:
| https://github.com/marcoheisig/cl4py/
|
| If you don't know Emacs, see other editors:
| https://lispcookbook.github.io/cl-cookbook/editor-support.ht...
| If you want the more Smalltalk-like experience I'd go with the
| free LispWorks version: it has many GUI panes that allow to
| watch and discover the state of the program.
|
| I personally couldn't stay long with Hylang. You won't get CL
| niceties: more language features, performance, standalone
| binaries, interactive debugger (all the niceties of an image-
| based development)...
| Jtsummers wrote:
| No need for emacs, Vim and VS Code support many lisps well (or
| well enough). You can also use DrRacket for Racket and Scheme
| learning (https://racket-lang.org/).
| Qem wrote:
| It's my plan-B. But as I already use python at work, hylang
| would allow me to tap in the same ecosystem, making it
| immediately useful, at least in my particular circumstances.
| cjohansson wrote:
| Is there a Lisp that supports references and pointers, perhaps
| pointer aritmethics too?
| tmtvl wrote:
| Cakelisp? It's been discussed before:
| https://news.ycombinator.com/item?id=25491568
|
| Don't mind the "for games" thing, it just means "squeezing out
| performance".
| lispm wrote:
| The German aspects puzzles me, not sure if the implied German
| School exists.
|
| Other German Lisp (and related) implementations: CLISP (a Common
| Lisp written in C+Lisp by Haible/Stoll), CLICC (a CL to C
| compiler by Goerigk/Hoffmann/Knutzen), Eu2C (an EuLisp to C
| compiler, from a Fraunhofer Institute), Chicken Scheme
| (Winkelmann), ...
| smartmic wrote:
| My guess is that this has nothing to do with Lisps school
| located somewhere in Germany or having German authors/roots as
| you quoted.
|
| No, I was associating the listed properties (focus, spartan,
| controversial) of the "Fluchtpunkt" Lisps at the end with
| typical peculiarities or prejudices or stereotypes of the
| Germans themselves. The question then remains, how does "fun"
| fit into the picture here?
| dustingetz wrote:
| "Ur-Lisp" - what is the exact definition of this?
| [deleted]
| throwaway294566 wrote:
| "Ur" is a German prefix meaning "old", "original",
| "predecessor".
|
| So Ur-Lisp would be the old original Lisp that is predecessor
| to all other Lisps.
|
| Other examples include Urrind (Rind == Bovine) which would be
| the predecessor of all species of bovine. Urzeit (Zeit ==
| time), which is a generic very ancient time period before all
| humans (where the Urrind or even the dinosaurs might have
| lived). Ur-Computer might be one of the first computers, like
| the original Zuse or ENIAC.
| solarkraft wrote:
| Bonus example: _Ur_ grossvater -> great-grandfather. You can
| add as many Ur-s as you wish.
| scotteric wrote:
| My favorite example Ursuppe == primordial soup.
| Tomte wrote:
| Also a fantastic indie boardgame - also available in
| English.
| Turing_Machine wrote:
| Uradel -- people whose families have been noble for a very
| long time.
|
| Briefadel -- people whose families were ennobled in modern
| times.
|
| Edit: "modern times" in this context is "since the 14th
| century".
| xhevahir wrote:
| In addition to predecessor it could also mean "archetypal."
|
| Goethe believed he had seen the _Urpflanze_ , or plant-
| archetype, while traveling in Italy.
| kwk1 wrote:
| Another good example: the real-but-extinct animal aurochs =
| "ur-ox."
| gattilorenz wrote:
| Ur-Lisp means "original" Lisp, in the sense of "origin". "ur-"
| is sometimes used as a prefix (Ur-Fascism of Umberto Eco comes
| to mind). In this case I guess it refers to the first Lisp, or
| maybe just the first prototypical Lisp, the founding father of
| all modern Lisps, I haven't read the article yet.
| dustingetz wrote:
| Possibly reference to https://en.wikipedia.org/wiki/Ur, the
| first prehistoric city, in ancient Mesopotamia
| froh wrote:
| that's a popular urban myth, alas the origin is some
| predecessor language to German.
|
| https://de.wiktionary.org/wiki/ur-
| HerrMonnezza wrote:
| So Ur- comes from Urdeutsch? :-)
| yesenadam wrote:
| Apparently not:
|
| From Middle High German _ur-_ , from Old High German _ur-,
| ir-_ ("thoroughly"), from Proto-Germanic _*uz-_ ("out").
|
| https://en.wiktionary.org/wiki/ur-#German
| nnoitra wrote:
___________________________________________________________________
(page generated 2022-11-12 23:01 UTC)