[HN Gopher] Why we need Lisp machines
___________________________________________________________________
 
Why we need Lisp machines
 
Author : otacust
Score  : 166 points
Date   : 2022-03-26 13:24 UTC (9 hours ago)
 
web link (fultonsramblings.substack.com)
w3m dump (fultonsramblings.substack.com)
 
| DonHopkins wrote:
| Reposting this from the 2014 HN discussion of "Ergonomics of the
| Symbolics Lisp Machine":
| 
| https://news.ycombinator.com/item?id=7878679
| 
| http://lispm.de/symbolics-lisp-machine-ergonomics
| 
| https://news.ycombinator.com/item?id=7879364
| 
| eudox on June 11, 2014
| 
| Related: A huge collections of images showing Symbolics UI and
| the software written for it: http://lispm.de/symbolics-ui-
| examples/symbolics-ui-examples....
| 
| agumonkey on June 11, 2014
| 
| Nice, but I wouldn't confuse static images with the underlying
| semantic graph of live objects that's not visible in pictures.
| 
| DonHopkins on June 14, 2014
| 
| Precisely! When Lisp Machine programmer look at a screen dump,
| they see a lot more going on behind the scenes than meets the
| eye.
| 
| I'll attempt to explain the deep implications of what the article
| said about "Everything on the screen is an object, mouse-
| sensitive and reusable":
| 
| There's a legendary story about Gyro hacking away on a Lisp
| Machine, when he accidentally trashed the function cell of an
| important primitive like AREF (or something like that -- I can't
| remember the details -- do you, Scott? Or does Devon just make
| this stuff up? ;), and that totally crashed the operating system.
| 
| It dumped him into a "cold load stream" where he could poke
| around at the memory image, so he clamored around the display
| list, a graph of live objects (currently in suspended animation)
| behind the windows on the screen, and found an instance where the
| original value of the function pointer had been printed out in
| hex (which of course was a numeric object that let you click up a
| menu to change its presentation, etc).
| 
| He grabbed the value of the function pointer out of that numeric
| object, poked it back into the function cell where it belonged,
| pressed the "Please proceed, Governor" button, and was
| immediately back up and running where he left off before the
| crash, like nothing had ever happened!
| 
| Here's another example of someone pulling themselves back up by
| their bootstraps without actually cold rebooting, thanks to the
| real time help of the networked Lisp Machine user community:
| 
| ftp://ftp.ai.sri.com/pub/mailing-lists/slug/900531/msg00339.html
| 
| Also eudox posted this link:
| 
| Related: A huge collections of images showing Symbolics UI and
| the software written for it:
| 
| http://lispm.de/symbolics-ui-examples/symbolics-ui-examples....
 
| ogogmad wrote:
| I've started using Mathematica recently. I quite like it: I've
| used Sympy before, which was good, but nowhere near as "good" as
| Mathematica. How does it compare to the Lisp Machine operating
| systems? There's some vague resemblance to Lisp in treating
| symbols as a basic type of object. In the Mathematica use-case,
| these symbolic values are used to stand for algebraic variables
| or unknowns. Undeclared variables by default have symbolic type,
| with their own names being their values. (I know that other CASes
| do similar things here). Also, algebraic manipulations produce
| expressions which double as Mathematica code, which resembles the
| meta-programming features of Lisp. There's even glimpses of
| reactive programming in the way you construct interactive plots.
| 
| I know this is "uncouth" because it's commercial software, but
| Mathematica is one of the most interesting programs I've ever
| used. [edit] Might something like this be the future?
 
| PaulHoule wrote:
| What ramblings.
| 
| Optane is the best performing SSD but the worst performing RAM
| you ever had. It is too expensive at any speed, even if Intel is
| losing money on it. HP memristors are vaporware.
| 
| LISP machines, Java machines, and similar architectures
| specialized for complex language runtimes are a notorious dead
| end. They just can't keep up with performance-optimized RISC,
| pipelined, superscalar, SIMD, etc. architectures paired with
| compilers and runtimes that implement efficient abstractions
| (e.g. garbage collection, hotspot compilers) on top of those very
| fast primitives.
 
  | zozbot234 wrote:
  | The RISC-V folks are working on additions for special support
  | of "complex language runtimes". Pipelined, SIMD and superscalar
  | are all well and good, but what kills pure software-side
  | support is always heavy branching and dispatching. These
  | operations are genuinely much faster and more power-efficient
  | when implemented in hardware.
 
  | lispm wrote:
  | Before Lisp Machines were killed in the market it was clear
  | that new architectures were needed and a few were under
  | development, even RISC like CPUs. They weren't released.
  | 
  | But Lisp at that time was already fast enough on standard RISC
  | chips (MIPS, SPARC, ALPHA, POWER, ...). Later the 64bit RISC
  | chips also provided enough memory space. SPARC also had some
  | tricks for Lisp implementors.
  | 
  | Currently the assembler coded Ivory emulator is 80 times faster
  | on Apple's M1 than the last Ivory hardware (the Ivory
  | Microprocessor from Symbolics was released end 80s).
 
  | DonHopkins wrote:
  | How is the ARM not a "JavaScript Machine"?
  | 
  | https://stackoverflow.com/questions/50966676/why-do-arm-chip...
  | 
  | >Why do ARM chips have an instruction with Javascript in the
  | name (FJCVTZS)?
  | 
  | https://community.arm.com/arm-community-blogs/b/architecture...
 
    | PaulHoule wrote:
    | That instruction is a very small hack that uses just a few
    | transistors to speed up a bit of data conversion that JS
    | runtimes do frequently. That's a far cry from a specialized
    | chip.
 
  | imglorp wrote:
  | Speed is relevant for some use cases, sure, but not at all for
  | a ton of others. Memory, disk and CPU are almost free in this
  | new world, so why are we computing like it's 1990 still? It's
  | time for some different abstractions than file -> process ->
  | file.
  | 
  | The vast productivity gains of Smalltalk and Lisp were because
  | they discarded those abstractions and programmers were free for
  | others.
  | 
  | Presumably OP posted this after noticing Phantom came up a few
  | days ago. https://news.ycombinator.com/item?id=30807668
 
    | bigbillheck wrote:
    | > Memory, disk and CPU are almost free in this new world, so
    | why are we computing like it's 1990 still?
    | 
    | Elsewhere on this very site you'll find no ends of complaints
    | about, say, Electron apps.
 
    | [deleted]
 
| VLM wrote:
| The problem with language wars is the people whom cannot be
| trusted with pointers, also cannot be trusted with lambdas or
| recursion.
| 
| The name of the game has always been to avoid directly insulting
| the bad programmers by making fun of the languages they use. Bad
| programmers have clustered in several languages over the course
| of my long career. Mostly they are the easiest most expressive
| languages, which would superficially seem to be an advantage,
| however they make it easy to express amazingly bad ideas. The
| harder to express languages require more work to express a bad
| idea thus somewhat filtering them out of that language's pool.
| 
| People whom don't understand the game think the game will be won
| if the bad programmers would have access to better languages for
| the first time in history. Despite the idea being decades old its
| always presented as a new idea.
| 
| There's an authoritarian streak where if only we could remove
| access to the inferior languages then they'd have to use the
| better languages and we'd have better code. However you can't
| force people to not use inferior tools and you can't force them
| to learn to use better tools.
| 
| The graph of easy to write and code goodness is interesting and
| nonlinear. You can express very complicated ideas in lisp easier
| than in vb6 or perl or interpreted basic or spaghetti fortran.
| However, you can express very bad ideas easier in a "bad"
| language, so it accumulates interesting authors. There is always
| a crossover point where an intermediate complexity idea is
| equally hard to express in a simple language or a complex
| language. Frankly most of IT needs are and always will be below
| that point. So its counterproductive to demand difficult language
| for simple tasks, everyone laughs at "Enterprise Java Hello
| World" that is 100K lines of enterprise patterns.
| 
| Expressing ideas in computer languages is much like expressing
| ideas in everyday language. Some esoteric philosophy texts
| require a VERY large precise complicated hard to use and hard to
| learn vocabulary. Road signs do not. For in between jobs, trying
| to use a minimum number of language vocabulary words and lexical
| complexity would be wise. It would be a fools errand to try to
| cut half the vocab words from street signs to "make driving
| safer", or an equally bad idea to force all road signs to be
| expressed as Shakespearean sonnets. The real world counterpart of
| "Enterprise Java Hello World" would be forcing the "No U Turn"
| street sign to be in the form of a Shakespearean sonnet.
| 
| The difficulty of tasks is usually under a power law, so its nice
| that we have lisp, but usually a bad idea to use lisp.
 
| snek_case wrote:
| You could do some powerful things with LISP machines but I think
| the underlying assumption is that everything is written in LISP,
| or compiles to LISP (or its underlying bytecode). That places
| restrictions on what you can do. For example, does it do high-
| performance multithreading and SIMD right?
| 
| Also not sure LISP machines solved security as well as modern-day
| Linux does. I think it was just less of a concern back then,
| because you knew most of the people who were on the network.
 
  | pjmlp wrote:
  | The answer for that question lies with Connection Machine and
  | Star-Lisp.
  | 
  | https://en.m.wikipedia.org/wiki/Connection_Machine
 
    | mark_l_watson wrote:
    | I used to start writing Star-Lisp code for my company's
    | Connection Machine (version 1, the SIMD one) by using Coral
    | Common Lisp on my little Macintosh. Then I would get on an
    | airplane and fly to the city where out CM was installed.
 
| h2odragon wrote:
| Part of the hype and hope of the "OLPC" laptops was that it would
| generate a "Python machine" userland, if not entire OS.
 
| mumblemumble wrote:
| > With lisp machines, we can cut out the complicated multi-
| language, multi library mess from the stack
| 
| This seems like the kind of goal that's only palatable to a very
| few people nowadays. Specifically, the people who want to use
| that language, toolchain, and libraries, _and nothing else._
| 
| These days, I don't think that that's ever going to allow for
| enough of a community to support more than a relatively self-
| contained hobbyist scene. Which there's absolutely nothing wrong
| with that; personally I wish there were more compelling
| tinkering-oriented platforms; I'm a little meh on Unix too. But
| the article seems to be advocating rather loftier ambitions.
 
| peter303 wrote:
| Hardware LISP machines didnt survive the 1980s because you could
| emulate LISP on a general purpose CPU faster than a special
| machine. That is because faster new general purpose CPUs cane out
| every year or so, while it took 3-5 years for the next special
| purpose CPU.
 
| throw10920 wrote:
| I think that, while the idea is solid (Unix is poorly-designed
| and we should have better) some of the specific ideas mentioned
| are lacking:
| 
| > Everything worked in a single address space, programs could
| talk to each other in ways operating systems of today couldn't
| dream of.
| 
| No! Bad! We have enough problems securing software on _separate
| VMs running on the same metal_ , single address spaces are
| completely out of the question until someone manages to build a
| feasible trusted compiler system.
| 
| > Then we add a gazillion programming languages, VMs, Containers,
| and a million other things, UNIX is a bloated mess of workaround
| for its own problems.
| 
| A lot of these problems could happen with a Lisp machine - you
| could have a billion different Lisps, for instance (although, to
| be fair, with better (i.e. non-Unix) OS design you wouldn't need
| containers).
| 
| > With lisp machines, we can cut out the complicated multi-
| language, multi library mess from the stack, eliminate memory
| leaks and questions of type safety, binary exploits, and millions
| of lines of sheer complexity that clog up modern computers.
| 
| This is partially true, but a _lot_ of the complexity in modern
| software doesn 't come from Unix, but just...bad design
| decisions. Webtech doesn't really care whether it's running on
| Windows or Unix, after all.
| 
| Also, high-level CPUs are a bad idea: http://yosefk.com/blog/the-
| high-level-cpu-challenge.html
| 
| I think the good in this post is along the lines of: text bad,
| typed IPC good, runtime-aware OS good, standardized VMs good,
| interactive systems (Lispy stuff, Jupyter) > batch-processing
| systems (Unix, C).
 
| mark_l_watson wrote:
| I don't really agree. I had a Xerox 1108 Lisp Machine in the
| 1980s and loved it, but special purpose Lisp hardware seems like
| a waste of effort. I set up an emulator for the 1108 last
| weekend, and yes, I really did enjoy the memories, and things ran
| an order of magnitude faster than on the 1108 in the 1980s.
| 
| Then, I appreciated my M1 MacBook Pro running SBCL, LispWorks,
| Haskell, Clojure, and various Scheme languages - all with nice
| Emacs based dev setups. Life is really good on modern hardware.
 
  | mst wrote:
  | I feel like a lot of posts like this are pining for the
  | complete lisp machine -user environment- and overestimating how
  | necessary/important the hardware architecture would be to
  | getting back to that today.
  | 
  | I can manage to context switch between different lisps fine but
  | I do sometimes wonder in e.g. a slime+SBCL setup how much that
  | context switching is costing me.
 
  | lispm wrote:
  | The 1108 wasn't really special purpose Lisp hardware. One could
  | run other operating systems on it. What made it special purpose
  | was the loaded microcode for the CPU.
  | 
  | > Life is really good on modern hardware.
  | 
  | Agreed: On modern CPUs.
  | 
  | More support for the additional hardware features like GPUs,
  | media processing engines and the neural network engines (see
  | the M1 Pro/Max/Ultra) would be welcome.
 
    | mark_l_watson wrote:
    | The best bet for getting GPU deep learning support, I use
    | Anaconda/conda, using the Apple M1 channel. That said, I
    | usually use my Linux GPU rig or Colab for deep learning.
 
| maydup-nem wrote:
| > genera
| 
| eh, if it's gui is anything like clim which was based off of it,
| no thank you big time
 
| amelius wrote:
| The main problem with Unix right now is security / permission
| control. Unix was built from the perspective that users
| potentially don't trust each other, but users all magically trust
| the applications that are run. In the age of the internet, this
| doesn't hold anymore, and we need strong permission control.
 
| shaunxcode wrote:
| The JVM is my lisp machine.
 
| rst wrote:
| Some of this needs checking -- you could not run Unix on
| Symbolics hardware. LMI did have machines that ran both OSes --
| but Unix was running on a separate 68000 processor; see, e.g.
| http://www.bitsavers.org/pdf/lmi/LMI_lambdaOverview_1982.pdf
| 
| (3600-series Symbolics machines also had a 68k "front end
| processor", but no Unix port was provided for it; they also
| ultimately had a C compiler that could generate code for the
| "Lisp processor", but the code it generated was intended to run
| in the Lisp environment.)
| 
| It's also worth noting that systems-level code for Symbolics
| machines (and, I presume, LMI as well) made frequent use of
| "unsafe subprimitives", misuse of which could easily crash the
| machine. And, unfortunately, if you needed to, say, get anything
| close to hardware bandwidth out of the disk drives, some of this
| became well-nigh unavoidable, due to poor performance of the OS-
| level file system (LMFS).
 
  | lispm wrote:
  | What one could do was running hardware Lisp Machines from
  | Symbolics on VME boards inside a SUN: the UX400 and UX1200.
  | 
  | Later Open Genera was sold as a Virtual Lisp Machine running on
  | a DEC Alpha / UNIX system.
 
| pbohun wrote:
| If were talking about wild dreams, I would like to see a modern
| Plan9-like operating system written in lisp.
| 
| While the Plan9 mouse chording is cool (and could be kept), I
| would have everything also accessible via keyboard commands. 3
| button mouse chording on a laptop trackpad is not fun.
 
  | pjmlp wrote:
  | It used Limbo and was called Inferno.
 
  | mananaysiempre wrote:
  | Executable-images-and-bytestreams (Research Unix, Plan 9) and
  | everything-is-in-$LANGUAGE (Lisp machines, Emacs, Smalltalk,
  | Oberon, Forth) environments seem largely contradictory to me,
  | because much of the flexibility in Unix seems to come from the
  | freedom to ignore as much structure in the data as you want to,
  | while programming-language environments seem to derive their
  | advantages from expressing the structure in as detailed a way
  | as possible. (In particular, they really want to invent their
  | own storage formats for everything.) I don't have much of an
  | idea about Inferno, but my superficial impression is it also
  | mostly ends up as a single-language island.
  | 
  | Which is annoying, because both of these approaches produce
  | some really attractive results, so I'd very much like to learn
  | about any attempts to reconcile them.
 
    | zozbot234 wrote:
    | "Expressing structure" is just a higher layer on simple
    | bytestreams. Some historical operating systems only supported
    | special-cased "file types" with hard-coded structure, but the
    | *IX folks found out that the simple bytestream is enough.
 
| mportela wrote:
| For a somewhat complete history of LISP machines, I recommend
| reading "Hackers: Heroes of the Computer Revolution" [1].
| 
| [1] https://www.goodreads.com/book/show/8260364-hackers
 
  | scruple wrote:
  | Thanks for the recommendation.
  | 
  | I've been learning/using CL, on the side, for about a year, in
  | fits and starts, and I'm also picking up a lot of it's history
  | and evolution along the way.
  | 
  | I find the history of the thing is as fascinating as the
  | language/tools.
  | 
  | There's so much written on this but it's hard to aggregate and
  | put together. Links lead to other links that lead to other
  | links and oftentimes a lot of them are dead.
  | 
  | So I'm glad that there are books like this that can preserve
  | some pieces of the story.
 
| mikewarot wrote:
| The key thing about those type of systems was the ability to
| reach down into the system and edit the code of the system
| currently in operation.
| 
| Here's a demonstration of Symbolics Open Genera (TM) 2.0,
| demonstrated running in a virtual machine. It is noted by the
| author of the video in the first minute or so that even in
| emulation, it is much faster than the original machines. -
| https://www.youtube.com/watch?v=o4-YnLpLgtk
| 
| Oberon also had a similar attribute, in that they kept the names
| of functions to operate on objects visible.
| 
| The same was true of the Canon Cat, Hypercard, Ted Nelson's
| Xanadu project, Smalltalk, and a number of other early computing
| systems.
| 
| The main feature common to all of these systems is that they all
| _preserve context_. In Genera, Oberon, Canon Cat, Hypercard, and
| SmallTalk the source was always available. (as far as I know). In
| Xanadu, the main functionality of the web was present, but it
| wouldn 't allow the broken links (and lost context) that now
| plague the web.
| 
| I think a future platform could take code in a number of
| languages, compile it to an abstract syntax tree, but preserve
| the context required to recreate the source. In fact, it's
| reasonable that you could import a routine in a language you
| aren't familiar with, and reverse the compilation to get it
| expressed in an equivalent (but less elegant) form in your
| language of choice, along with the original comments.
| 
| There's nothing stopping an open source project from taking
| elements of these existing systems and moving forward from that
| basis. It might be profitable to include ideas such as Coloring
| of the Source text to label intent, such as in ColorForth.
| 
| Also, consider "Literate Programming" - Literate programs are
| written as an uninterrupted exposition of logic in an ordinary
| human language, much like the text of an essay, in which macros
| are included to hide abstractions and traditional source code.
| 
| You could also add the ability to store graphics and other data
| along with the source code.
| 
| Of course, if you are required to run code you didn't write and
| don't trust, your operating system _must provide_ means to run it
| only against the files or folders you wish to let it operate on.
| The principle of least privilege needs to be supported at a
| fundamental level. This is one of the big shortcomings of the
| Unix model.
| 
| Sorry it was a bit of a ramble, but this seemed to be a call for
| ideas, so I ran with it.
| 
| PS: In the past, getting your vision of Computing required
| building a machine, and then getting it manufactured. Now it just
| requires that you make it work in a VM, Raspberry Pi, or web
| browser window.
| 
| It is MUCH easier to try out and/or create alterative systems now
| that it has ever been in the past.
 
  | jodrellblank wrote:
  | Why would you reach down into the system and edit the code of
  | the system currently in operation? Because it doesn't already
  | do what you want. Isn't it a bit pathalogical to start by
  | building a system which _doesn 't do what you want_, then
  | building in the tools to let you fix it, so you can use those
  | make it do what you want? Why not skip all the middlemen and
  | make what you want in the first place?
  | 
  | If you arrive at "we can't do that because everyone wants
  | different things", you're in this weird place where you can't
  | build one system to suit everybody so as a fix for that you
  | will ... make one dev system to suit everybody? Why is that
  | going to work out any better? If people are going to have to
  | build the system they want anyway, why not skip all the
  | middlemen and leave people to build the system they want from
  | scratch their own way?
  | 
  | "Well we can't do that, having to build everything from scratch
  | is hard, people don't want that. And we don't know what people
  | want (and can't be bothered to ask) and won't try to build it
  | for them, but we can give everyone Our Blessed System and Our
  | Blessed Tooling which we presume they will want to use, while
  | we abandon them to have to build what they actually want using
  | it". It's patriarchal and preachy and still unhelpful. The kind
  | of person willing to put up with your system and language and
  | its edge-cases and limitations instead of making their own, is
  | quite likely the same person who would have put up with your
  | spreadsheet and its edge-cases and limitations if only you'd
  | built it.
  | 
  | It's the "all progress depends on the unreasonable person"
  | meme; you need the person who can't tolerate a system which
  | isn't perfect and demands to be able to tune it to their
  | perfection, but is simultaneously fine with a customizable-
  | system built by someone else for someone else's ideas. Then you
  | say "ah but they can rebuild as much of the system as they
  | want!" they're now having to build it themselves from scratch
  | but based on what you built, which is even more work for them,
  | not less.
  | 
  | And the whole thing says little about working with other
  | people/organizations; everyone building their own thing isn't
  | great for that. One could argue that Microsoft did a lot of
  | good for the world by strongarming companies into .doc and .xls
  | formats for interchange, in a similar way that HTTP/HTML did
  | (but more tyrannically). Microsoft-Word-documents-over-email
  | should probably go down in history as one of the big enablers
  | of distributed human organization, like the telephone. Moreso
  | than SMTP alone or TCP/IP alone which enabled computers to
  | connect, not people. More than HTTP/HTML which ordinary people
  | can't use without setting up a webserver and publishing first.
  | 
  | > " _I think a future platform could take code in a number of
  | languages, compile it to an abstract syntax tree, but preserve
  | the context required to recreate the source. In fact, it 's
  | reasonable that you could import a routine in a language you
  | aren't familiar with, and reverse the compilation to get it
  | expressed in an equivalent (but less elegant) form in your
  | language of choice, along with the original comments._"
  | 
  | Would that even work? What about "code is primarily for people
  | to read"; loss of indentation, of alignment, of variable names
  | if you're changing language with different variable naming
  | rules, loss of separate files/folder/module-context of how it
  | was built in the first place, and loss of idiomatic patterns
  | from changing one language to another, or to languages with
  | different scoping behaviour. Look at the image in The Article
  | for the square root code[1], can you decompile the syntax tree
  | for a language which doesn't have a complex number type? What
  | about one which doesn't have a short-float for the result, or
  | has different floating point precision assumptions? What does
  | "F and I2 need to be regular-heap-consed to avoid the extra-pdl
  | lossage" mean for JavaScript or Python or Clojure? What's the
  | magic 0.4826004 for, without any comments next to it?
  | 
  | And that square root function alone is a screenful of code, the
  | very idea of being able to rebuild the system to your desires
  | falls out the window if it's going to take you a lifetime to do
  | that, and if not then we're back to my original paragraph where
  | you're building a massive programmable system so someone can
  | tweak one or two tiny things occasionally, which seems hella
  | overkill.
  | 
  | > " _Of course, if you are required to run code you didn 't
  | write and don't trust, your operating system must provide means
  | to run it only against the files or folders you wish to let it
  | operate on. The principle of least privilege needs to be
  | supported at a fundamental level. This is one of the big
  | shortcomings of the Unix model._"
  | 
  | The XKCD comment that malicious code can ransomware all my
  | documents and upload them to the cloud, but at least it can't
  | add a new printer. One of the big shortcomings of the principle
  | of least privilege is the effort of carefully and precisely
  | describing the privileges needed - see the complexity and
  | quantity of SELinux rules for a whole system. Even then you get
  | immediately to the point where "my editor can edit all my text
  | files" and that's now a large blast radius.
  | 
  | [1]
  | https://cdn.substack.com/image/fetch/w_1456,c_limit,f_auto,q...
 
    | mikewarot wrote:
    | >One of the big shortcomings of the principle of least
    | privilege is the effort of carefully and precisely describing
    | the privileges needed - see the complexity and quantity of
    | SELinux rules for a whole system.
    | 
    | SELinux was a terrible thing to inflict upon the world.
    | Capabilities are more like cash in your wallet.... you pick
    | what you want to use in a transaction, and hand it over...
    | never worrying that the rest of your money would somehow get
    | siphoned off later.
    | 
    | Static rules aren't what capabilities are about. Run this
    | program, oh.. it wants a file? Here... it can have this. The
    | default access would be nothing (or in a more modern context,
    | it's config file) The program wouldn't directly access files,
    | but would use dialog boxes to do I/O, or you could drop them
    | in via batch, etc.
 
  | pjmlp wrote:
  | You can get a bit of that Oberon experience on Windows via
  | PowerShell, .NET and COM.
  | 
  | Now if Windows team would get over their COM worship, it would
  | be even better.
 
| abecedarius wrote:
| If I'd like to try the emulated Lisp Machine linked to
| (https://tumbleweed.nu/lm-3/), is there a straightforward
| getting-started doc? The page lists multiple links for each of
| the simulator, the bootstrap, the documentation, and umbrella
| projects ("to make it easier setting up", though for this one
| it's only a binary choice). This is not counting the multiple
| system sources, since only one is recommended right now.
| 
| This suggests it's too much work for now if you're just curious,
| but it'd be great to be wrong.
 
| fferen wrote:
| I have had the same thoughts before and come to a similar
| conclusion. I believe it's not about the language. It's about the
| features: runtime code editing, single address space, program
| interoperability. Lisp could be replaced with C or anything else.
| Unfortunately this is the hard part. No one is about to design
| completely new hardware or architecture for this, as it makes no
| economic sense. So we just get a shiny new language every few
| years, and nothing really changes.
 
| klodolph wrote:
| I agree that we need more operating systems, but...
| 
| > These machines used specialized hardware and microcode to
| optimize for the lisp environments (Because of microcode you
| could run UNIX and the Lisp OS at the same time).
| 
| This is a dead end in the history of CPU design.
| 
| Processors are all vaguely similar these days. Your CPU is built
| around ALUs which typically take one or two inputs, produce one
| output. Around that, you build some logic for shuttling these
| inputs and outputs to and from registers, or in some cases, to
| and from memory.
| 
| The core here, the ALUs, have gotten more and more sophisticated
| over the years, but the wiring on the outside has remained fairly
| modest relative to its excesses back in the day. I'd say that the
| lesson here is simple: rather than add complicated operations to
| make your high-level language faster, do the complicated stuff in
| software... which gives you a lot more flexibility, and the
| combined hardware-software stack ends up being faster and cheaper
| anyway.
| 
| > With lisp machines, we can cut out the complicated multi-
| language, multi library mess from the stack, eliminate memory
| leaks and questions of type safety, binary exploits, and millions
| of lines of sheer complexity that clog up modern computers.
| 
| I can understand where this notion is coming from... but
| practically speaking, switching to Lisp doesn't eliminate memory
| leaks or questions of type safety or binary exploits. Even with
| an idealized version of Lisp, I don't think these problems could
| possibly go away. Neither garbage collection nor systems like
| Rust really "solve" memory leaks, they just provide strategies to
| make memory leaks less common.
| 
| The same thing applies to type safety. You'd have to define "type
| safety" very narrowly to say that Lisp solves all type safety
| problems. Again, I can understand where the author comes from--
| it's kind of an intuitive notion of type safety, that you don't
| end up operating on an incorrectly typed pointer, or something
| like that. But the notion of type safety is much more broad than
| that these days.
| 
| And the C/Unix strategy is actually pretty good, too, when it
| works--contain memory leaks within a process, then terminate the
| process.
 
| mportela wrote:
| This post would benefit from further expanding some of these
| statements.
| 
| > UNIX isn't good enough anymore and it's getting worse
| 
| Why exactly?
| 
| > A new operating system means we can explore new ideas in new
| ways.
| 
| LISP machines were not only OSes but also hardware. Is the author
| also proposing running this OS on optimized hardware or simply
| using our x86-64/AMD/M1 CPUs?
| 
| > With lisp machines, we can cut out the complicated multi-
| language, multi library mess from the stack, eliminate memory
| leaks and questions of type safety, binary exploits, and millions
| of lines of sheer complexity that clog up modern computers.
| 
| Sure, but it also requires rewriting a lot of these things,
| introducing and fixing new bugs... It feels like the good ol'
| "let's rewrite this program" that quite frequently doesn't live
| up to the expectations [1].
| 
| [1] https://vibratingmelon.com/2011/06/10/why-you-should-
| almost-...
 
  | traverseda wrote:
  | >> UNIX isn't good enough anymore and it's getting worse
  | 
  | >Why exactly?
  | 
  | Personally? We're in a bit of a transition point, and a lot of
  | the technologies aren't working together like they used to.
  | 
  | An example, on my laptop I want to run android apps. The way to
  | do this that actually works well (waydroid) only supports
  | wayland. Unfortunately I use x2x to control another display
  | remotely, and x2x doesn't work properly under wayland, and
  | never will due to wayland's security choices.
  | 
  | So like, what am I supposed to do here? Not run android apps?
  | Not use tools like barrier/synergy/x2x?
  | 
  | This is one of many many frustrations I've had from this new
  | generation of wayland/systemd/etc. Hopefully it gets better
  | eventually but it does feel a lot like the rug is constantly
  | being pulled out from under me for no good reason...
  | 
  | Now I don't think a lisp machine is going to fix that mind you,
  | but it is a concern.
 
    | sseagull wrote:
    | I am finding that everything is just becoming more and more
    | fragmented. Programming languages, ecosystems, frameworks,
    | blah.
    | 
    | I have had ideas for some applications, but can't do them
    | because the libraries I need are written in different
    | languages, which don't interoperate well (and one I am not
    | familiar in).
    | 
    | Every post here looking for recommendations has many
    | responses with different packages/ecosystems doing the same
    | thing.
    | 
    | Sometimes I feel like there are too many developers and not
    | enough of them really interested in the actual hard problems.
    | So they just make another python package manager or webapp
    | framework.
 
      | pjmlp wrote:
      | It isn't nice? Back to the 8 and 16 bit home computers,
      | when we had plenty of choice and real fights on the school
      | playground about which were better.
 
      | eternityforest wrote:
      | I think they are too invested im hard problems, but not
      | invested enough in tedious problems.
      | 
      | I don't want a new language, or a new preprocesser, or a
      | new way of thinking about programs... I just want a one
      | click way to take a folder of HTML that looks like a static
      | site, and package it up into cross platform apps with all
      | the proper API access.
      | 
      | I don't care about cryptocurrency and global decentralized
      | databases, I just want to be able to run a site by buying a
      | NAS appliances, putting files on it, and sharing the QR
      | code on it without any signups and cloud accounts.
      | 
      | The hard problems are mostly solved. There's probably some
      | long dead random github repo that does anything you want.
      | They're just not packaged for all platforms and maintained
      | professionally.
      | 
      | I don't need a phone without any binary blobs at all... I
      | just want a mesh network feature and a fair trade stamp.
      | 
      | Because... it sucks to maintain something novel even if
      | it's all just pieced together from npm. It sucks to be the
      | one responding to issues. It sucks to actually run a
      | project and keep track of devops stuff.
      | 
      | All the tech has been invented dozens of times over, but
      | never polished, and always ruined with some unnecessary
      | immutable log feature or performance destroying random
      | access low latency routing thing like IPFS has.
 
        | TheOtherHobbes wrote:
        | There's a gap between developer culture and the giant
        | corporate bureaucracies.
        | 
        | The former is focussed on tinkering, nostalgia, tool-
        | building, wheel reinventions, and half-finished build-
        | and-forget spare time projects.
        | 
        | The latter has successfully applied high-friction
        | chokeholds around startup culture which makes the cost of
        | entry for new business ideas far higher than it really
        | needs to be.
        | 
        | There is almost no blue sky development equivalent to the
        | original Internet, the Mother of All Demos, and the
        | desktop computing model - and associated projects -
        | created at PARC in the 70s and early 80s.
        | 
        | It's all very "mature", incremental, slow, and me-too.
        | 
        | And so expensive, both financially and in terms of
        | developer time.
        | 
        | I'd love to see a renewed interest in attacking this from
        | both ends - a movement to really push the imaginative
        | limits of what's possible, while also being implacably
        | humane and user-oriented and indifferent to ad tech,
        | tinker tech, and pre-commercialised cloud tech.
 
        | eternityforest wrote:
        | The giant bureaucracies are doing some pretty amazing
        | innovation. Look at Google's web platform features,
        | Bluetooth LE, etc.
        | 
        | There's just certain things they can't do because their
        | incentive is stuff you constantly pay for all the time.
        | 
        | I'd love to be part of something like old 90s
        | revolutionary software.
        | 
        | But I've noticed close to zero interest from the dev
        | community in anything like that.
        | 
        | Everyone mostly just wants to play with sorting
        | algorithms or write their own small language, unless
        | they're getting paid a whole lot. It's become a sport
        | more than an engineering discipline.
        | 
        | It's hard to imagine Excel or BitTorrent being written
        | now.
        | 
        | Heck, it's hard to even imagine web browsers with
        | JavaScript being written now.
        | 
        | What kind of projects would you like to see/work on?
 
        | pnathan wrote:
        | a revolutionary project moving forward would be a quality
        | gopher browser with a gopher extension for forms, along
        | with a gopherd.
        | 
        | the basic problem is fragmentation and assembling a
        | community of interest.
 
        | eternityforest wrote:
        | Wouldn't gopher just be more fragmentation? What can it
        | do that can't already be done on top of web? It's still
        | pretty much just client/server.
 
        | zozbot234 wrote:
        | "New business ideas" are really easy. VC-style
        | hypergrowth towards unicorn status is what's hard, but
        | make no mistake it's _always_ been very hard. Unicorns
        | are rare, by definition.
 
        | tacitusarc wrote:
        | This is why I like Golang. I think it's the first time in
        | my professional experience where if I see a package that
        | hasn't been updated in 3 years, that doesn't mean it's
        | abandoned, it means it's stable.
 
        | christophilus wrote:
        | Clojure is like that. I love it.
 
        | pnathan wrote:
        | common lisp is like that.
 
      | PaulDavisThe1st wrote:
      | So a perfect use-case for the obligatory XKCD post about
      | "too many standards, invent one more to try to solve the
      | issue => too many standards plus one".
 
        | onlyrealcuzzo wrote:
        | I don't think standards are the problem.
        | 
        | I think a wave of new standards causes issues like the
        | above, and eventually this gets worked out.
        | 
        | Not all "standards" in practice become standard. We learn
        | a lot of "standards" were bad ideas, and they eventually
        | get tossed out and most people forget anyone was ever
        | trying to make that a thing.
 
        | PaulDavisThe1st wrote:
        | "Standards" in this case just means "things that I/we
        | developed that we think should be adopted by lots of
        | other people because it's awesome-sauce"
 
      | tacitusarc wrote:
      | I'm curious what you would classify as a hard problem.
      | Personally, I think writing a good, easy to use Python
      | package manager that both gains adoption and addresses the
      | myriad of corner cases is a hard problem.
 
        | sseagull wrote:
        | I work in scientific software. I tend to view really hard
        | problems as problems where you don't know the solution,
        | and don't even have a blueprint for how could be solved.
        | 
        | Writing a package manager is hard in some sense, but you
        | have an idea of what it needs to do, what features it
        | should have, and what success ultimately looks like.
        | 
        | But there are problems, large and small, which require
        | new thinking and leaps of faith. There are people working
        | on these, of course, but sometimes I feel they are being
        | neglected.
        | 
        | (and people working on those problems probably make
        | 10-25% of what many FANG developers make...)
 
    | zozbot234 wrote:
    | You can actually start a Wayland compositor/session in a X
    | window. That plus existing solutions for Wayland network
    | transparency should be enough.
 
      | traverseda wrote:
      | That's what I'm doing now, but it's a pretty bad user
      | experience and definitely isn't seamless. Also completely
      | breaks any integration with my app menu meaning I have to
      | rewrite all the desktop files to launch the app in cage. I
      | imagine someone will eventually make a seamless wayland
      | compositor for x though.
      | 
      | >That plus existing solutions for Wayland network
      | transparency should be enough.
      | 
      | If you're saying it will fix my x2x use case, well it
      | won't. Wayland's security model fundamentally prevents this
      | use case. Maybe someone will add extensions to it
      | eventually but right now the way compositors handle mouse
      | capture seriously prevents this use case, and I'm skeptical
      | that all the different compositors will agree on a solution
      | any time in the next 10 years...
      | 
      | So I'm stuck using X on both displays for the foreseeable
      | future if I want to use x2x/synergy like functionality, and
      | I'm certain that it's going to become harder and harder to
      | keep using X over time...
 
        | 20after4 wrote:
        | Wow and here I was hopeful that Wayland would actually
        | make this kind of thing easier. I'm a big fan of synergy
        | and all it's descendant. Apple just released a similar
        | feature for iOS and OSX. Really surprised this is getting
        | more difficult on Linux instead of easier.
 
  | DonHopkins wrote:
  | There's a old book all about just that, which included and
  | popularized Richard P. Gabriel's paper, "The Rise of Worse Is
  | Better":
  | 
  | https://en.wikipedia.org/wiki/The_UNIX-HATERS_Handbook
  | 
  | https://web.mit.edu/~simsong/www/ugh.pdf
  | 
  | >The year was 1987, and Michael Travers, a graduate student at
  | the MIT Media Laboratory, was taking his first steps into the
  | future. For years Travers had written large and beautiful
  | programs at the console of his Symbolics Lisp Machine
  | (affectionately known as a LispM), one of two stateof-the-art
  | AI workstations at the Lab. But it was all coming to an end. In
  | the interest of cost and efficiency, the Media Lab had decided
  | to purge its LispMs. If Travers wanted to continue doing
  | research at MIT, he discovered, he would have to use the Lab's
  | VAX mainframe.
  | 
  | >The VAX ran Unix.
  | 
  | >MIT has a long tradition of mailing lists devoted to
  | particular operating systems. These are lists for systems
  | hackers, such as ITS-LOVERS, which was organized for
  | programmers and users of the MIT Artificial Intelligence
  | Laboratory's Incompatible Timesharing System. These lists are
  | for experts, for people who can--and have--written their own
  | operating systems. Michael Travers decided to create a new
  | list. He called it UNIXHATERS:                   Date: Thu, 1
  | Oct 87 13:13:41 EDT         From: Michael Travers 
  | To: UNIX-HATERS         Subject: Welcome to UNIX-HATERS
  | In the tradition of TWENEX-HATERS, a mailing list for surly
  | folk         who have difficulty accepting the latest in
  | operating system technology.         If you are not in fact a
  | Unix hater, let me know and I'll remove you.         Please add
  | other people you think need emotional outlets for their
  | frustration.
  | 
  | https://www.amazon.com/UNIX-Haters-Handbook-UNIX-Haters-line...
  | 
  | https://www.goodreads.com/en/book/show/174904.The_UNIX_Hater...
  | 
  | https://wiki.c2.com/?TheUnixHatersHandbook
  | 
  | >I'm a UnixLover, but I love this book because I thought it was
  | hysterically funny. Many of the war stories are similar to
  | experiences I've had myself, even if they're often flawed as a
  | critique of Unix itself for one reason or another. But other
  | UnixLovers I've loaned the book to found it annoying rather
  | than funny, so YMMV.
  | 
  | >BTW the core group of contributors to this book were more
  | Symbolics Lisp Machine fans than ITS or Windows fans. ITS had
  | certain technical features superior to Unix, such as PCLSRing
  | as mentioned in WorseIsBetter, but having used it a bit myself,
  | I can't see that ITS was superior to Unix across the board. The
  | Lisp Machine on the other hand, although I never used it, was
  | by all accounts a very sophisticated environment for
  | programmers. -- DougMerritt
  | 
  | https://news.ycombinator.com/item?id=13781815
  | 
  | https://news.ycombinator.com/item?id=19416485
  | 
  | >mtraven on March 18, 2019 | next [-]
  | 
  | >I founded the mailing list the book was based on. These days I
  | say, Unix went from being the worst operating system available,
  | to being the best operating system available, without getting
  | appreciably better. (which may not be entirely accurate, but
  | don't flame me).
  | 
  | >And still miss my Lisp Machine. It's not that Unix is really
  | that bad, it's that it has a certain model of computer use
  | which has crowded out the more ambitious visions which were
  | still alive in the 70s and 80s.
  | 
  | >Much as the web (the Unix of hypertext) crowded out the more
  | ambitious visions of what computational media for intellectual
  | work could be (see the work of Doug Engelbart and Ted Nelson).
  | That's a bigger tragedy IMO. Unix, eh, it's good enough, but
  | the shittiness of the web makes humanity stupider than we
  | should be, at a time when we can ill afford it.
  | 
  | https://medium.com/@donhopkins/the-x-windows-disaster-128d39...
 
  | kkfx wrote:
  | >> UNIX isn't good enough anymore and it's getting worse
  | 
  | > Why exactly?
  | 
  | Beside the defects well stated in the Unix Hater's Handbook,
  | unix violate it's own principles since many years. Original
  | unix idea was: desktops like Xerox SmallTalk workstations are
  | too expensive and complex for most needs, so instead of a real
  | revolution of an extraordinary outcome we decide to limit
  | ourselves to most common needs in exchange of far less costs.
  | No GUIs, no touchscreen, no videoconferencing and screen
  | sharing [1] just a good enough CLI with a "user language"
  | (shell scripts) for small potatoes automation and a bit of IPCs
  | for more... Well... For more there is a "system language" (C)
  | that's easy enough for most really complex task.
  | 
  | That was a success because no one really like revolutions and
  | long terms goals especially if they demand big money while many
  | like quick & done improvements at little price.
  | 
  | However in few years unix start to feel the need of something
  | more than a CLI and some GUIs start to appear, unfortunately
  | differently than original Xerox&co desktops those UIs were not
  | "part of the system, fully integrated in it" but just hackish
  | additions with so interoperability, just single apps who have
  | at maximum cut&paste ability.
  | 
  | > Sure, but it also requires rewriting a lot of these things,
  | introducing and fixing new bugs... It feels like the good ol'
  | "let's rewrite this program" that quite frequently doesn't live
  | up to the expectations
  | 
  | We need desktops again, witch means not just "endpoints" or
  | "modern dumb terminals of modern mainframes named cloud", but
  | desktop computing, since desktop development is essentially
  | abandoned since many years and even back then was in a bad
  | shape we need to restart from the classic desktops. LispM was
  | ancient, hackish, but are still the best desktop we have had in
  | human history so a good starting point. We have some kind of
  | LispM OS/OE here: Emacs, still alive and kicking so there is
  | something to work with, that's is. Emacs is already a WM (EXWM)
  | have countless features and it's already "plugged" in modern
  | bootloader OSes to have hw, driver and services. It just need
  | to evolve.
  | 
  | [1] yes, you are reading correctly and no, I'm not wrong, I'm
  | talking about the famous NLS "Mother of all the Demos" from
  | 1968 https://youtu.be/yJDv-zdhzMY
 
  | tytrdev wrote:
  | I agree, especially with the statement that Unix isn't good
  | enough and getting worse.
  | 
  | I feel like that was one of the core assumptions and point of
  | the article, but it didn't have any explanation beyond
  | "multiple programming languages." Feels a bit flat to me.
 
  | pmoriarty wrote:
  | > > UNIX isn't good enough anymore and it's getting worse
  | 
  | > Why exactly?
  | 
  | Two reasons:
  | 
  | 1 - systemd (which is moving linux towards becoming a systemd
  | OS)
  | 
  | 2 - developers and companies moving ever more towards web apps
  | (which will eventually make the underlying OS irrelevant, as
  | the browser becomes the OS) (incidentally, web assembly seems
  | to herald the end of the open/transparent web too, as we're
  | eventually all be running opaque binary blobs on our web
  | browsers)
 
    | amelius wrote:
    | > 1 - systemd (which is moving linux towards becoming a
    | systemd OS)
    | 
    | Or, a microservices OS.
 
  | pjmlp wrote:
  | Xerox PARC workstations could run Interlisp-D, Smalltalk,
  | Mesa/XDE, Mesa/Cedar, thanks to this little thing RISC failed
  | to kill, microcoded CPUs.
 
| ogogmad wrote:
| When the author talks about too many languages and libraries, I
| personally think he means the proliferation of Unix DSLs (some of
| which are Posix and some are not) like Make, Awk, Sed, BC, DC,
| shell-script dialects, Gnuplot (I know it's not Posix but it was
| widely used once), xargs, Vimscript, ELisp. Each of these has its
| own quirks and random limitations. Each of these makes Unix
| unnecessarily complicated and difficult to learn, and they don't
| even accomplish much that's impressive. I also think they make
| the editing experience worse, because they prevent the use of
| IDEs or highly featured REPLs like the ones general-purpose
| languages have.
| 
| I imagine that a lot of this can be replaced with libraries for a
| general-purpose language like Python. In the case of Awk, BC and
| DC, Python's standard library does everything these do without
| their strange quirks. Gnuplot can be replaced with umpteen
| plotting libraries like Matplotlib. Shell-scripting can be done
| in a Python dialect like Xonsh. I don't know of a Python
| alternative to Make, but Make is a fairly perverse and ad-hoc
| language that looks ripe for being replaced by a library.
| 
| I don't think a new operating system (however you define that) is
| necessary. I think you just swap out a lot of the crazy DSLs with
| one consistent general-purpose language. People will switch over
| when they want to accomplish things more easily (like me!). This
| is especially likely if you're not a SWE but you want to do file
| system automation anyway. The DSL-heavy approach is too Byzantine
| for such people (like me!). And it's mostly possible today.
 
  | eternityforest wrote:
  | I wouldn't even say any of those make UNIX difficult to learn.
  | 99% of people can be users and developers just fine without
  | learning awk or sed or even make, if they don't do low level
  | work.
  | 
  | It can all be incrementally replaced over time, without
  | starting over, just like how systemd and pipewire didn't need
  | to totally start over.
  | 
  | Make will probably need something more than just a library
  | though, because it's gotta stay declarative. But the fact that
  | make exists at all is kind of an issue. I think build and
  | package management should be done in the language itself like
  | non-C languages do.
  | 
  | The other use of make is almost as a pseudo UI, just a standard
  | place to put a list of actions you can do.
  | 
  | Something like Ansible could replace that, in theory, or we
  | could have some new "project control center" file with menus
  | and inputs and settings.
 
    | [deleted]
 
| eternityforest wrote:
| UNIX is fine. UNIX philosophy is an issue, along with C, and the
| fact that everything now is mobile and web based and the tools
| aren't well suited to offline/nonSaaS stuff yet.
| 
| Linux is slowly becoming a standardized, integrated platform. I
| don't see why it can't be evolved to have all the main advantages
| of a LISP machine.
| 
| I also don't see how that solves dependency management. No matter
| what, if you build against something and it changes, stuff
| breaks. That's the main issue with Linux.
| 
| It also doesn't solve microservices being kinda hard and needing
| manual configuration specifically for the setup, rather than the
| one size fits all style of monolithic desktop software. That's an
| application architecture challenge.
| 
| Nor does it solve cross-platform.
| 
| Linux does have problems and could learn from LISP
| machines(Although I'd rather we have TypeScript machines or
| Python or something, LISP is pretty far from what I want a
| language to be, and is meant for creativity and expressiveness
| rather than Ada-like safety and boring hacker-repelling Java-like
| standardization).
| 
| But a lot of issues go away if you pretend everything other than
| Debian and Red Hat don't exist.
 
  | agumonkey wrote:
  | From a semi shallow position, what annoys me with linux is the
  | lack of genericity above the "file" abstraction (which is not
  | even real enough).
  | 
  | I remember seeing GNU ls code, 30% argparse, 30% formatting..,
  | all of this seems brittle and redundant.
  | 
  | Bazaar is fine to allow freeform innovative evolution but it's
  | also too messy.
 
    | eternityforest wrote:
    | Linux has a lot going on above the file level, it's just not
    | in the kernel.
    | 
    | Most people using Linux also have DBus and Pulse/Pipewire
    | going, and a ton of other stuff.
    | 
    | Network devices are technically files, but in practice they
    | are names. I have no idea what them being a file even means
    | at the byte level. They're just names that you deal with
    | through NetworkManager's DBus API, if you're not targeting
    | any of the minimal or embedded distros.
 
    | taeric wrote:
    | This feels like an odd critique. I would expect that more
    | programs should devote more code to the parts that interact
    | with a user. That is, the size alone isn't much of a signal.
    | Is it?
 
      | agumonkey wrote:
      | The formatting is redundant and should be able
      | externalized. The argparse also deals with the output
      | formatting, hence redundant. Only file spec selection is
      | core to LS.
 
        | taeric wrote:
        | Redundancy isn't, by itself, a problem. In the case of
        | core utilities, it affords them a level of stability that
        | is just not even attempted in many areas.
 
      | jodrellblank wrote:
      | In the sense of the PowerShell engine doing the argument
      | parsing and display formatting for all cmdlets, which is
      | something I think the designers took from VMS shell. That
      | makes for "Don't Repeat Yourself" (one place for all the
      | argument parsing code) and from the user experience side
      | all commands which subscribe to this take parameters in the
      | same way, arguments handled in the same way, with the same
      | common parameters, and support parameter introspection and
      | tab completion, etc. so it can be a more uniform
      | experience.
      | 
      | (Not always great though; I don't know VMS shell but
      | PowerShell cmdlets can still have similar tools taking
      | different parameter names for the same concept, or not
      | working implementing what to do with common parameters, or
      | taking DSLs in strings like WMI Query Language, or taking
      | rather opaque and unique hashtable blobs).
 
        | agumonkey wrote:
        | I didn't mention it but powershell was in my mind.
        | powershell format-table in particular. Also there's some
        | guys who are patching linux user space to embed json as
        | output (and the jc wrapper to be able to leverage jq
        | later down the pipe)
 
  | pjmlp wrote:
  | UNIX and UNIX philosophy are one and the same, there is no way
  | around it with some kind of word games.
  | 
  | C was created to make UNIX, originally written in straight
  | Assembly, portable. A process finalized by UNIX V6 release.
  | 
  | UNIX philosophy grew out of Bell Labs into all universities and
  | business that took those source tapes, and took it from there.
  | 
  | Hardly possible to be selective of what UNIX is all about.
 
    | eternityforest wrote:
    | Modern Linux is so far from old school UNIX though. They are
    | even talking about using Rust!
    | 
    | It's evolved so much, and the remaining unixy bits get more
    | and more supressed and hidden.
    | 
    | BSD still has more of it, but Linux seems to be moving on and
    | is very far from the days of everyone piecing together
    | software from small parts.
 
      | pjmlp wrote:
      | Linux became a kernel for the GNU project, whose founders
      | were raised in ITS and MIT AI Laboratory, and the original
      | planned kernel for the project doesn't have anything
      | related to UNIX.
      | 
      | Most projects using the Linux kernel nowadays care more
      | about having a free beer kernel than anything UNIX related.
      | 
      | BSD has always been a proper UNIX, hence AT&T lawsuit when
      | they were finally allowed to monetize on UNIX.
 
| reikonomusha wrote:
| I'm as big of a Lisp fan as can be. I'm a proud owner of
| Symbolics and TI hardware: a MicroExplorer, a MacIvory, two 3650,
| and two 3620. Not to mention an AlphaServer running OpenGenera.
| 
| Today, we have computers that run Lisp orders of magnitude faster
| than any of those Lisp machines. And we have about 3-4 orders of
| magnitude more memory with 64-bits of integer and floating point
| goodness. And Lisp is touted to have remained one of the most
| powerful programming languages (I think it's true, but don't read
| into it too much).
| 
| Yet, it appears the median and mean Lisp programmer is producing
| Yet Another (TM) test framework, anaphoric macro library, utility
| library, syntactic quirk, or half-baked binding library to
| scratch an itch. Our Lisp programming environments are less than
| what they were in the 80s because everybody feels the current
| situation with SLIME and Emacs is good enough.
| 
| We don't "need" Lisp machines. We "need" Lisp software. What made
| a Lisp machines extraordinary wasn't the hardware, it was the
| software. Nothing today is impeding one from writing such
| software, except time, energy, interest, willpower, and/or money.
| 
| Don't get me wrong, there are some Lisp programmers today
| developing superlative libraries and applications [1], but the
| Lisp population is thin on them. I'd guess that the number of
| publicly known, interesting (by some metric), and _maintained_
| applications or libraries that have sprung up in the past decade
| probably fits on one side of a 3 "x5" index card. [2]
| 
| Though I won't accuse the article's author of such, sometimes, I
| find, in a strange way, that pining for the Lisp machines of yore
| is actually a sort of mental gymnastic to absolve one for not
| having written anything interesting in Lisp, and to excuse one
| from ever being able to do so.
| 
| [1] Just to cherry-pick a recent example, _Kandria_ is a neat
| platformer developed entirely in Common Lisp by an indie game
| studio, with a demo shipping on Steam:
| https://store.steampowered.com/app/1261430/Kandria/
| 
| [2] This doesn't mean there aren't enough foundational libraries,
| or "batteries", in Lisp. Though imperfect, this is by and large
| not an issue in 2022.
 
  | zozbot234 wrote:
  | > We don't "need" Lisp machines. We "need" Lisp software. What
  | made a Lisp machines extraordinary wasn't the hardware, it was
  | the software. Nothing today is impeding one from writing such
  | software, except time, energy, willpower, and/or money.
  | 
  | Discussed here https://news.ycombinator.com/item?id=30800520
  | The main issue is that Lisp, for all its inherent "power", has
  | very limited tools for enforcing modularity boundaries in code
  | and "programming in the large". So everything ends up being a
  | bespoke solo-programmer project, there is no real shared
  | development. You can see the modern GC-based/"managed"
  | languages, perhaps most notably with Java, as Lisps that
  | avoided this significant pitfall. This might explain much of
  | their ongoing success.
 
    | throw10920 wrote:
    | > The main issue is that Lisp, for all its inherent "power",
    | has very limited tools for enforcing modularity boundaries in
    | code and "programming in the large"
    | 
    | I don't see any mention of "modular" or "boundaries" in the
    | post you linked, so I'm assuming that it doesn't add extra
    | context to your point.
    | 
    | You say "very limited tools for _enforcing_ modularity
    | boundaries ", which I'm going to assume means that you
    | believe that Lisps have constructs for _creating_ modularity
    | boundaries (e.g. unexported symbols in Common Lisp), and just
    | don 't enforce them (e.g. I can still use an unexported
    | symbol in CL by writing foo::bar), in which case - I don't
    | think that this is actually an issue.
    | 
    | Programmers are capable of doing all _kinds_ of bad things
    | with their code, and shooting themselves in the foot, yet I
    | 've never seen an indication that the ability to shoot
    | yourself in the foot with a language noticeably contributes
    | to its popularity (see: C, C++, Perl, Ruby).
    | 
    | Moreover, specializing to Common Lisp, it's not like CL
    | allows you to _accidentally_ access an unexported symbol in a
    | package - you have to either deliberately use :: (which is
    | bad style, and takes more effort than typing :) or you get a
    | hard crash. This is opposed to the above listed languages,
    | which allow you to shoot yourself in the foot in a large
    | number of extremely diverse and interesting manners, often
    | without giving you advance warning - and yet are still far
    | more successful.
    | 
    | ------------
    | 
    | I don't believe that the lack of success of Lisps are due to
    | technical deficiencies.
 
      | johnny22 wrote:
      | What do you think it is?
 
    | syngrog66 wrote:
    | agreed, and well said
    | 
    | in broadstrokes, imo, Lisp's endless plasticity of infinitely
    | nested parentheses is both its greatest strength and... its
    | greatest weakness
    | 
    | I love it at Write time. hate it at Read/Maintain time. why
    | I've avoided it for serious work. Python, Java, Go Rust etc
    | are all easier for my brain & eyes to quickly parse on the
    | screen
    | 
    | which is unfortunate. because I still drool at Lisp's
    | linguistic power
 
      | reikonomusha wrote:
      | Lisp at "read/maintain" time in a good environment is
      | probably the most enjoyable time for me working with Lisp,
      | assuming it's on a code base that followed some sort of
      | coding standards. Introspection, debugging, and navigation
      | in a Lisp environment are incredible.
 
        | lanstin wrote:
        | Still the average function written by a smart lisp
        | programmer is going to make me sigh, take three deep
        | breathes, and set aside some time to focus, while the
        | average function by a smart Go programmer, I can just
        | read.
        | 
        | This readability loss does counteract the ability to
        | reload forms into a running core. Especially now when i
        | am trying so hard to make everything running be immutable
        | and derived from various git repos.
 
    | lispm wrote:
    | Already in the 80s the Lisp Machine OS had > 1 MLOC code
    | lines with support for programming in the large. The
    | development environment was networked from the start. A
    | server keeps the definition of things on the network:
    | machines, users, file systems, networks, gateways, printers,
    | databases, mailers, ... The source code and documentation is
    | usually shared in the team and versioned via a common file
    | server.
    | 
    | Nowadays, there are large applications written by
    | groups/teams, which are worked on for three or more decades.
    | For example the ACL2 theorem prover has its roots in the 70s
    | and is used/maintained until today for users in the chip
    | industry.
    | 
    | Common Lisp was especially designed for the development and
    | production use of complex programs. The military at that time
    | wanted to have a single Lisp dialect for those - often
    | applications came with their own Lisp, which made deployment
    | difficult. A standard language for projects was then
    | required.
    | 
    | These were usually developed by teams in the range of 5 - 100
    | people. Larger teams are rare.
 
      | zozbot234 wrote:
      | "Designed for complex programs in the 1980s" is not really
      | up to current standards. Moore's law means that complexity
      | of overall systems can grow by multiple orders of magnitude
      | in the 01980 -to- 02022 timeframe.
 
        | lispm wrote:
        | That was not the point. Lisp applications were already a
        | team sport back then. That all or even most Lisp software
        | is written by single person teams is just wrong.
 
        | zozbot234 wrote:
        | Modern agile development is far more complex than even
        | that: you need entire loosely-coupled _teams_ of
        | developers to be able to seamlessly cooperate with one
        | another, so there are multiple scales of cooperation.
        | Tightening the semantics of interface boundaries is a
        | necessary support for that kind of development and is
        | what 's largely meant today by programming "in the
        | large". Highly dynamic "scripting" languages get in the
        | way of this, and that's essentially what Lisp is too.
 
        | lispm wrote:
        | Lisp isn't essentially a scripting language. Common Lisp
        | was designed as an application language, in rare case
        | it's also a systems language. On a Lisp Machine, for
        | example the whole networking stack was written in it.
 
    | reikonomusha wrote:
    | I think many people have conjectures, such as this one, but I
    | don't think it's a tech problem, or a "Lisp is too powerful
    | for its own good" problem. It's a "people aren't writing
    | software" problem. History has demonstrated umpteen times
    | that developing large, sophisticated, maintained, and
    | maintainable projects in Lisp is entirely and demonstrably
    | possible. Modern Common Lisp coding practices gravitate
    | toward modular, reusable libraries through proper modules via
    | ASDF packages ("systems") and Common Lisp namespaces
    | ("packages").
 
      | SulphurCrested wrote:
      | The obvious answer as to why people aren't writing software
      | is that almost all of the people able to write good
      | software don't like the language and are writing software
      | in some other language or for some other platform.
      | 
      | I know Lisp enough to have written programs of a few
      | thousand lines in it. I'm not even slightly fazed by
      | functional programming and (tail-)recursion instead of
      | loops. I've read Steele's Common Lisp book from cover to
      | cover. Someone even tried to get me to interview for a job
      | writing Lisp (I politely told them I thought their system
      | could not practically be implemented in Lisp and was,
      | several years and tens of millions of dollars later,
      | eventually proven right).
      | 
      | And I don't think the language has any redeeming features
      | other than garbage collection and documentation, neither of
      | which is notable in 2022. I'm someone familiar with the
      | language who could quickly become productive in any decent
      | Lisp, and that's what I think of Lisp. Can you imagine what
      | a person new to the forest of parentheses, weird
      | identifiers and rejection of 500 years of operator
      | precedence notation thinks?
 
        | drekipus wrote:
        | > I politely told them I thought their system could not
        | practically be implemented in Lisp.
        | 
        | I'm curious to what that was, it sounds like a challenge
        | more than anything.
        | 
        | I'm off a younger generation of programmers, and I've
        | recently found lisp after coming from python. I still
        | adore python and I can understand python's success, but I
        | also adore lisp and its syntax, and I feel like I get the
        | "powerful" argument for it.
        | 
        | For me, for what it's worth, I think the difficulties for
        | lisp to join mainstream is really the thousands of little
        | differences and gotchas that there's no single standard
        | body looking after the users of the language. Princ
        | instead of print, mapcars everywhere, etc. Trivial
        | examples sure, but there's a lot that prevented me from
        | making a few programs without doing through a book.
        | 
        | I'm not saying it's wrong, or it should be such and such
        | a way. I am just simply comparing it to python and
        | pointing to the first big elephant I come across.
        | 
        | Fwiw I also think that clojure is a lang that is capable
        | of capturing more love because it's capable of tying in
        | with Java ecosystem.. but it java is old and slow*; jobs
        | in Java are slowing down, and clojure isn't filling in
        | the gap, kotlin might be.
        | 
        | I take common lisp with me to holidays, because I like to
        | learn it and all the funny words for things, but by far
        | the lisp I use the most in day to day stuff is fennel,
        | which is a lisp that compiles to Lua, and allows me to
        | write plugins for neovim as well as a few other things
        | that uses Lua.
        | 
        | TLDR: yes lisp needs software to be popular but it's not
        | just a case of "make more applications" nor is the
        | problem parents or operator precedence. People like
        | sensibly named keywords.
        | 
        | I personally think things would be a little better if
        | there was a CL to JavaScript transpilier, then you'd
        | start to get some of the js crowd, same with python.
 
      | coryrc wrote:
      | > people aren't writing software
      | 
      | Maybe not OSS, but somebody is keeping Lispworks and Franz
      | in business.
 
        | copperx wrote:
        | I'd love to know who. The example apps in Lispworks site
        | aren't commercial successes, as far as I know.
 
    | [deleted]
 
  | metroholografix wrote:
  | The greatness of Lisp -at least when it comes to end-user
  | empowerment- and (I think) the only differentiating factor that
  | most other languages have still not caught up to, is the
  | cybernetic philosophy with its roots in Licklider (man-computer
  | symbiosis) and Engelbart.
  | 
  | Building an environment that strongly and uncompromisingly
  | expresses this philosophy at its core is a serious undertaking
  | in terms of time investment. Emacs has been in continuous
  | development for 37 years and while it is still not as good as
  | Genera, it's certainly "good enough" for lots of people and
  | definitely captures the spark of this philosophy.
  | 
  | In the Common Lisp world, we've had plenty of tries (MCL,
  | Hemlock, McCLIM) but they've all failed to get people to
  | coalesce and generate progresss.
  | 
  | Maybe the fact that Emacs exists is a curse in that people
  | realize the barrier they'll have to clear to make something
  | substantially better and decide to devote their energies into
  | more easily realizable efforts.
 
  | lonjil wrote:
  | > Yet, it appears the median and mean Lisp programmer is
  | producing Yet Another (TM) test framework, anaphoric macro
  | library, utility library, syntactic quirk, or half-baked
  | binding library to scratch an itch. Our Lisp programming
  | environments are less than what they were in the 80s because
  | everybody feels the current situation with SLIME and Emacs is
  | good enough.
  | 
  | I don't think this is true. Not anywhere close. Most such
  | examples are small, and probably only took a small number of
  | hours to produce. While "superlative" stuff takes very many man
  | hours to create. So just by seeing that there are many
  | throwaway testing frameworks or whatever, you cannot tell where
  | most of the work hours actually go. A half baked binding
  | library takes 20 minutes to make, while a proper high quality
  | rendering engine takes hundreds if not thousands of hours.
  | 
  | The Lisp population is thin on people making cool shit because
  | the Lisp population in general is thin.
 
  | 13415 wrote:
  | Personally, I think the problem is that CommonLisp is just
  | another programming language, whereas Lisp really shines when
  | it provides a full-fledged programming environment. Nowadays,
  | it would seem best to create such an environment on top of
  | commodity hardware as a "virtual machine" that abstracts away
  | from the hardware in a general, portable way. However, a good
  | environment (1) needs a purpose, and (2) somebody needs to
  | write it. Lisp currently fails on both points. The purpose used
  | to be symbolic AI and NLP among other things. Nowadays it could
  | be the same, or a web framework with integrated distributed
  | computing and database, or scientific computing, or a server
  | for certain business services, etc. There are many application
  | domains for which a virtual "Lisp machine" would be beneficial
  | but it needs to be developed for one of those real world
  | applications, not just as a toy like existing attempts of
  | building Lisp machines. And in my opinion the problem really is
  | (2), developer power / size of the community. If you exclude
  | super-expensive legacy Lisps, the current Lisp community
  | doesn't even have a fully supported Lisp-native editor
  | (portable Hemlock is not good enough) and also doesn't have
  | good enough object persistence / native Lisp-based databases.
  | Both are the foundations of any integrated Lisp machine.
  | 
  | People sometimes claim CL+Emacs+Slime provides the full
  | interactive experience. I just can't agree with that at all. I
  | have tried, and the experience was not substantially different
  | from Go development and development in any other fast-compiling
  | language with Emacs. In some respects, it's even worse than
  | with various modern languages, even though most of those
  | languages are strictly inferior to CL from a pure language
  | perspective. If editing files in Emacs is all there is to the
  | allegedly great Lisp experience, and developers at the same
  | time have to deal with all those idiosyncrasies of CL such as
  | CL's filesystem path handling, ASDF, and tons of poorly
  | documented libraries, then I can't really see the advantages of
  | CL. The language is powerful, don't get me wrong, but a truly
  | interactive experience is totally different. Smalltalk managed
  | to keep this experience but for some reason the Lisp community
  | seems too have lost this vision. I guess the developer
  | community is just not large enough.
  | 
  | Anyway, before someone tries to build another "close to metal"
  | Lisp machine or tries to revive any old Lisp machine, I'd
  | rather wish the community would focus on creating truly
  | integrated development environments that abstract away from the
  | host system and are fully hackable and editable from the ground
  | up while maintaining security and multi-user access. A "virtual
  | Lisp" machine with virtual OS, so to say. If that's developed
  | for a certain purpose like building and deploying extremely
  | portable web applications, I believe it can have a great
  | future.
  | 
  | Sorry for the long rant. This is just my impression after
  | having programmed in various Lisp dialects for the past three
  | decades.
 
    | thorondor83 wrote:
    | To me development with SLIME is much better than with a fast-
    | compiling language.
    | 
    | - Debugger is always ON.
    | 
    | - I can inspect the data I'm working with.
    | 
    | - I can redefine things without starting everything all over,
    | avoid losing current context. Fast restart is not the same.
    | 
    | - I can evaluate pieces of code without the need of a REPL.
    | Point to an s-expression and evaluate that piece of code,
    | inspect the result.
    | 
    | I don't see how Smalltalk is much more interactive. It is
    | more powerful at graphics and tools integration, but SLIME
    | provides an interactive enough experience IMO, and it is
    | significantly better to any fast compiling + restart
    | language.
 
    | coryrc wrote:
    | > the experience was not substantially different from Go
    | 
    | I think the (a?) reason for that is a (otherwise good) shift
    | to production being immutable. When you aren't allowed to
    | interact and change code in a running system, you lose a
    | massive advantage of CL over simpler languages. When the
    | answer to every error is "send a 4xx or 5xx to the client"
    | then having a powerful error-handling system is similarly
    | pointless. When you only write CRUD programs like everyone
    | else, you're just plugging together other's libraries and not
    | creating novel techniques or fancy math. In this world all
    | CL's advantages are negated.
 
    | metroholografix wrote:
    | Common Lisp on Emacs via SLIME is not competitive with
    | Smalltalk, re: "interactive experience" since Emacs is not
    | the native substrate of CL, but essentially an out-of-process
    | experience. If you want to experience CL at its best, you
    | need to run Symbolics Genera.
    | 
    | Emacs with Emacs Lisp on the other hand offers a great
    | interactive experience that also manages to easily surpass
    | every modern Smalltalk incarnation in practicality and size
    | of development community. So if running Genera isn't easily
    | doable, this will give you a taste of what Lisp interactivity
    | is all about.
 
  | jodrellblank wrote:
  | > " _We don 't "need" Lisp machines. We "need" Lisp software._"
  | 
  | Nobody goes into Java because their self identity is "a Java
  | programmer" to gather a team of people to create a Java machine
  | running Java software to unleash the power of Java for the
  | masses by enabling them to do everything in Java for the sake
  | of doing everything in Java, By Java, With Java, For Java. And
  | if they do talk like that they would be a Sun Microsystems
  | marketing pamphlet from 1999, or a joking reference to
  | Zombo.com, or suspected of having zero interesting ideas and
  | defaulting to Ouroboros-naval-gazing.
  | 
  | Adobe Photoshop Lightroom is C++ and Lua. Blender is C++ and
  | Python. Excel is C++ and Visual Basic for Applications.
  | LibreOffice Calc is C++ and Python. These are large, popular,
  | programmable systems which exist today and are good enough;
  | good enough for people to spend lots of money on them, good
  | enough for people to spend years skilling up in them, good
  | enough that once they existed people wanted them to keep
  | existing and they haven't faded into the past.
  | 
  | The added allure of an imaginary rebuild of them like "if you
  | took the lid off Excel you'd see VBA inside so you could rework
  | the way it handles multiple sheets using only a skill you have
  | and software design skills and Excel-internals knowledge you
  | don't have" would get a hearty side-eye and slowly backing away
  | from most Excel users. "Everything inside looks the same" is as
  | attractive as "if you open your car trunk you'll see leather
  | seats and plastic dashboard components making it move" or "if
  | you sit in this car you're sitting on engine parts because the
  | top priority is that a welder in a scrapyard can build the
  | entire car without leaving their comfort zone". There are
  | certainly people who want that, but the way the world hasn't
  | developed that way suggests it isn't particularly desirable.
  | Even when such things have been built, people can today use a
  | Smalltalk, an APL, save their running work in a memory-dump and
  | reload it and rewrite parts of it in itself, people flocked to
  | Jupyter notebooks instead.
  | 
  | > " _[1] Kandria is a neat platformer developed entirely in
  | Common Lisp_ "
  | 
  | https://cdn.akamai.steamstatic.com/steam/apps/1261430/ss_a3f...
  | 
  | Without mocking a team who has built, developed, polished and
  | planned to release a project, because that is respectable, it
  | also looks like computer gaming of the early to mid 1990s Intel
  | 386/486 era; remeniscent of Prince of Persia, Gods, Lemmings,
  | Monkey Island. But it needs an Intel i5, 4GB RAM and 1GB
  | storage. It's not even released yet and has no reviews, but you
  | describe it as 'superlative' ("Of the highest order, quality,
  | or degree; surpassing or superior to all others") - are you
  | rating it so highly based on it being written in Lisp or what?
 
    | p_l wrote:
    | Regarding Kandria:
    | 
    | You might have heard of this thing called "Art", and that it
    | has styles, and that not only one of them is called "pixel
    | art" for celebrating that kind of limitations, Art as a whole
    | is often talked in terms of self-imposed limits used in
    | creation of a work.
    | 
    | That said, a game can deliberately target such style, and yet
    | hide considerable richness of implementation (consider:
    | Noita, Dwarf Fortress).
    | 
    | Another thing with Shinmera and his team is that they produce
    | both interesting stories, interesting games, but also code
    | I'd argue is art too.
 
    | reikonomusha wrote:
    | I don't know how to respond to the whole "Lisp programmer
    | identity" stuff; it doesn't seem relevant to anything I said.
    | I also didn't suggest anybody rewrite anything in it. The
    | success of Lisp doesn't depend on the existence of fancy
    | machines, it depends on people choosing to write software in
    | it. That's basically all I meant to say.
    | 
    | As for Kandria, did you play the demo, or did you just look
    | at screenshots and system requirements and make your brazen
    | judgment? I don't think Kandria is at all amateur or sloppy,
    | regardless of to which aesthetic era you think it belongs.
    | Many have claimed that it's not even possible to write a game
    | that doesn't blow because Lisp is dynamically typed and
    | garbage collected. Now the goalposts have moved to, "well, it
    | takes 1GB of memory and doesn't even look like it's from
    | 2022."
    | 
    | I commend anybody who ships.
 
  | agumonkey wrote:
  | I'd say it's both. It seems most lisping is done high on the
  | stack. Some are doing assembler level lisp (or scheme) but less
  | bare metal / OS / system oriented lisp.
  | 
  | I wonder what the lisp os guy are thinking about OS / UI these
  | days.
 
  | GregorMendel wrote:
  | Anyone interested in the computing holes that can be filled by
  | lisp machines should check out Urbit. There is an vibrant and
  | growing community of people building a network of personal
  | servers running a lisp-like functional OS. It uses an identity
  | system secured by the Ethereum blockchain and it has created a
  | bottom up economic incentive for developers to participate.
  | They are starting to solve unique problems that couldn't be
  | addressed on currently prevalent platforms. Urbit is an
  | affirmation; we can ditch the nihilism.
 
    | Gollapalli wrote:
    | And it's 4x more expensive than it was supposed to be to buy
    | a planet.
    | 
    | Ethereum was a mistake.
 
      | TacoT wrote:
      | It's $3. www.azimuth.shop
 
      | olah_1 wrote:
      | Since they moved to Layer 2 it has been amazing. No eth
      | fees anymore.
      | 
      | They should just move to their own chain entirely. Maybe
      | this is a baby step towards that. Each Galaxy/Star is
      | already basically a staker in a Proof of Stake network.
 
    | convolvatron wrote:
    | i associate lisp machines with power, simplicity, and a
    | delightfully shallow learning curve.
    | 
    | urbit to me is exactly the opposite
 
| scroot wrote:
| Leaving the specific idea of the Lisp Machine aside, today there
| we have a tremendous advantage over the past when it comes to
| creating the kind of full, self-consistent systems Lisp Machines
| -- and systems like Smalltalk or Oberon, etc -- represent. Today
| we have widely accepted communications and data format standards.
| This is something that really isolated system diversity in the
| past, where you were "stuck" in some given computing system and
| had little ways of interacting with other types of computing
| systems. We have figured all of that out.
| 
| We should hope to see a flourishing of new and diverse systems
| again, since now all one need to do to interact with everyone
| else is merely (and I know it's a slog) implement tried and true
| standards.
 
  | lispm wrote:
  | One can implement these standards. Problem: it's work.
  | 
  | They supported things like TCP/IP, UDP, SMTP, X11, RPC, NFS,
  | DNS, HTTP, ... The machines had C compilers, too.
 
    | scroot wrote:
    | Some of these new systems should definitely be lisp machines
    | of a kind, though not direct clones of Genera. We need
    | something more "of the times." In reality, there are only a
    | few things people expect of their computing systems, but
    | those things are huge: decent graphics and components for the
    | UI, and a web browser.
    | 
    | So, yeah, standards and protocols are there. And it would
    | take a s*t-ton of work to implement them in a bespoke
    | environment. But they are not "difficult" in the classic
    | sense. If we had a completely different type of economy it
    | might even be possible!
 
| karmakaze wrote:
| The trend seems to be toward statically-typed languages, with the
| exception of the adoption of Python being used for data. I also
| prefer having more problems being found before deploying and
| running on production data.
| 
| Dynamic typing is great for prototyping, early development, and
| for small teams. If your definition of success is greater than
| that I would choose differently, or port at a good time early on.
| 
| And if someone were to ask me to join a company using lisp, I
| would hope that it's Clojure, though arguably not a Lisp, is
| better it that it will vary less between usages. This gives it a
| better chance of a growing ecosystem.
 
| zozbot234 wrote:
| Just run Emacs as your Lisp Virtual Machine. All it really needs
| is a good editor, but evil-mode is kinda serviceable.
 
  | FPGAhacker wrote:
  | I have had this thought. Jokes about needing a good editor
  | aside, I wondered about making a unikernal that bootstraps
  | enough to start emacs.
  | 
  | The issue I see with the idea of lisp-all-the-way-down is that
  | most people don't want to write filesystems and device drivers.
  | I know I don't. I mean I find them fascinating, but I usually
  | have a specific app I want to write. I don't want to write
  | device drivers on my way there.
 
    | convolvatron wrote:
    | you could do this with nanos...but i dont know how that would
    | benefit you
 
| codr7 wrote:
| The future is already here, but unfortunately it's programmed in
| elisp and still lacks a decent editor.
 
  | codr7 wrote:
  | Oh, come on; I love Emacs, and I admire RMS a lot.
  | 
  | And I mean it, Emacs is as close to a Lisp Machine as you get
  | in today's world.
 
  | ByteJockey wrote:
  | Emacs has a great editor...
  | 
  | The evil package.
 
| nanochad wrote:
| > You could open up system functions in the editor, modify and
| compile them while the machine was running.
| 
| Why would you want to do that other than hot patching a system
| that can't go down? Testing new changes requires more time than
| rebooting. If you just want to test simple changes, most
| debuggers can do that.
| 
| > Everything worked in a single address space, programs could
| talk to each other in ways operating systems of today couldn't
| dream of.
| 
| And with a single address space you have win9x security.
| 
| > A modern UNIX system isn't self-contained. I have 4 UNIX
| systems on my desk (Desktop, laptop, iPhone, iPad) I'm
| contentiously using the cloud (iCloud for photos, GitHub for text
| files, Dropbox for everything else) to sync files between these
| machines. The cloud is just a workaround for UNIX's self-
| contained nature
| 
| This is just your use habbits. Nothing is stopping you from using
| NFS or SSHS. Someone who feels the need to use iCloud for
| whatever trivial convenience it provides is unlikely to benefit
| from a Lisp machine's ability to edit code on the live system.
| 
| > Then we add a gazillion programming languages, VMs, Containers,
| and a million other things, UNIX is a bloated mess of workaround
| for its own problems. We need a replacement, something that can
| be built for the modern world using technologies that are clean,
| secure, and extendable
| 
| The same thing will happen with any OS given enough time. Lisp is
| also not secure. It's prone to side channel and eval bugs.
| 
| > eliminate memory leaks and questions of type safety,
| 
| Lisp is not type safe.
 
  | reikonomusha wrote:
  | > Lisp is not type safe.
  | 
  | It is type safe. While Lisp is not statically typed, its typing
  | discipline is strong: operations performed on incompatible
  | types signal recoverable errors.
 
    | [deleted]
 
  | zozbot234 wrote:
  | > And with a single address space you have win9x security.
  | 
  | Address space != protection boundaries. These are nearly
  | orthogonal concerns. Where single address spaces _might_ become
  | less useful today is in dealing with Spectre vulnerabilities,
  | though formalizing more explicit requirements about information
  | domains (as in multilevel security, which is a well-established
  | field of OS research) might help address those.
 
  | maydup-nem wrote:
  | > Testing new changes requires more time than rebooting.
  | 
  | no it doesnt
  | 
  | > Lisp is not type safe.
  | 
  | yes it is
 
| xedrac wrote:
| > They were programmed in lisp the whole way down and could be
| run code interpreted for convenience or compiled to microcode for
| efficiency. You could open up system functions in the editor,
| modify and compile them while the machine was running. Everything
| worked in a single address space, programs could talk to each
| other in ways operating systems of today couldn't dream of.
| 
| So this is basically expanding Emacs to _actually_ be the
| operating system. There 's definitely some allure to it. Awhile
| back, I was hacking on the Lem editor for Common Lisp, using the
| Lem editor itself. It was great until I made a mistake in some
| code that restricted my ability to edit the code, sort of like
| performing brain surgery on my self and snipping a nerve that
| controlled my arms. It was amazing to have that immediate
| feedback loop, but in a world that is striving to find new ways
| to minimize human error, I'm just not sure it'd hold up.
 
  | mst wrote:
  | Pervasive rollback in a sufficiently compartmentalised bit of
  | the UI that it's really hard to break would seem like the ideal
  | theoretical solution but practically really quite tricky to
  | introduce to an environment retroactively.
  | 
  | (I've been pondering this problem recently for something I'm
  | working on an introducing it from the ground up is bending my
  | brain hard enough, others may be better at it though ;)
 
| chubot wrote:
| Meh the problem is "Which Lisp?" There are dozens of incompatible
| Lisps. Even this site is written in a Lisp dialect written by its
| author (Arc).
| 
| In fact I conjecture that this is the reason Unix is more popular
| than Lisp -- because Lisps don't interoperate well. They haven't
| built up a big ecosystem of reusable code.
| 
| Whereas Python, JavaScript, R, C, C++, and Rust programmers can
| reuse each others' code via Unix-style coarse-grained
| composition. (Not just pipes -- think about a web server running
| behind nginx, or git reusing SSH and HTTP as transports.)
| 
| You can also use link time composition. It takes some work but
| it's better than rewriting your Common Lisp code from scratch in
| Clojure.
| 
| -----
| 
| Honest question: how do you communicate between two Lisp
| processes on two different machines? I know Clojure has EDN
| (which is sort of like JSON : JavaScript), but I haven't heard of
| the solutions for other Lisps.
| 
| I wrote about this problem here: _A Sketch of the Biggest Idea in
| Software Architecture_
| http://www.oilshell.org/blog/2022/03/backlog-arch.html
| 
|  _> The lowest common denominator between a Common Lisp, Clojure,
| and Racket program is a Bourne shell script (and eventually an
| Oil script)._
| 
| I'll definitely update it if there's something I'm missing.
| 
| I would say the design of Unix is "rotting", but the answer is to
| IMPROVE Unix. Not dream of clean slate designs that will never be
| deployed. Plus this post doesn't actually propose anything. If
| you actually start trying to build your Lisp machine, I believe
| you will run into dozens of reasons why it's not a good idea.
 
  | zozbot234 wrote:
  | An unappreciated means of code reuse under *nix is the static
  | and dynamic library. This seems to be the go-to whenever you
  | need something more involved than simply reusing a full binary
  | via pipes.
 
    | scj wrote:
    | C's greatest feature is that it trivially maps onto .so
    | files. Linking to and creating .so files isn't just cheap,
    | it's effectively free.
    | 
    | Most higher level languages I've worked with seem to focus on
    | using .so files rather than producing them.
    | 
    | This means the lowest common denominator for the unix
    | ecosystem is what C can provide. Otherwise stated, unix is
    | marching forward at the pace of C.
 
      | pjmlp wrote:
      | No wonder, given that C was created to turn UNIX from an
      | originally Assembly written OS into a portable one, UNIX is
      | effectively a C Machine.
 
  | armitron wrote:
  | The canonical Lisps still widely used today are Common Lisp,
  | Scheme and Emacs Lisp. They all belong in the same family, and
  | syntax / semantics are close. Porting code from Scheme to
  | Common Lisp can be a lot easier than going from Python 2 to
  | Python 3.
  | 
  | Clojure is something else entirely which is why a lot of people
  | don't consider it a Lisp.
  | 
  | > Honest question: how do you communicate between two Lisp
  | processes on two different machines?
  | 
  | If you want to use built-in object serialization, there is
  | print and read.
 
  | throw10920 wrote:
  | > Meh the problem is "Which Lisp?"
  | 
  | Not a problem - you don't need (or _want_ ) a single Lisp. A
  | hypothetical Lisp OS would support a standard runtime and typed
  | IPC system that host programs can use (a la Windows and COM, or
  | dbus), and nothing prevents you from using your own custom
  | communication protocol over pipes/sockets instead.
  | 
  | I don't agree with your implicit assertion that there is a
  | _single_ reason why Unix is more popular than Lisp (machines) -
  | I think that there are a multitude of reasons. Certainly, the
  | most impactful one isn 't a lack of interoperability between
  | Lisps - it would be something like the bandwagon effect, or the
  | fact that Bell Labs gave away Unix to universities, or the
  | inefficient implementations of early Lisps.
  | 
  | I'm also fairly confident that the lack of a Lisp ecosystem is
  | not because of a particular lack of interoperability (after
  | all, Python has a massive ecosystem that is built almost
  | exclusively on (a) C FFI and (b) other Python code), but for
  | cultural reasons - Lispers just don't like collaborating
  | together, and enjoy reinventing the wheel. These tendencies
  | have been documented in [1] and many other places, and are
  | highly consistent with my own experience in the Common Lisp
  | community.
  | 
  | > Honest question: how do you communicate between two Lisp
  | processes on two different machines?
  | 
  | Use PRINT to serialize an object on one machine, ferry it over
  | to another one through whatever means you wish, and then READ
  | it on the other. Or: "in the same way that two processes in
  | most other languages on two different machines communicate".
  | Serialize, transport, deserialize. Yes, the ecosystem is far
  | less mature, and you'll have to do more legwork, but
  | fundamentally the process is the same as in, say, Python.
  | (Erlang might be an exception and have language-lever support
  | for this, I'm not sure)
  | 
  | This method works for different implementations of the same
  | Lisp, and even for different Lisps, under some constraints
  | (e.g. while a list with the integers 1, 2, and 3 is represented
  | as the s-expression (1 2 3) in almost every Lisp you can find,
  | CL represents "true" as T, while Scheme represents it as #true,
  | so you'll have to work around that). If you will, you can just
  | use JSON or XML as a serialization format instead - every non-
  | trivial Lisp has libraries for those formats, and some have
  | libraries for ASN.1, too.
  | 
  | >> The lowest common denominator between a Common Lisp,
  | Clojure, and Racket program is a Bourne shell script (and
  | eventually an Oil script).
  | 
  | All of those languages share basic s-expression syntax
  | described above, which is rather higher-level than a Bourne
  | shell script. Why do you say that the latter is the "lowest
  | common denominator"?
  | 
  | For that matter, why do you exclude the idea that JSON or XML
  | aren't "common denominators" between Lisp programs, or even
  | between Lisps, Python, and C++?
  | 
  | ----------------
  | 
  | Your article says "Text Is The Only Thing You Can Agree On",
  | but "text" isn't even a single thing. The set of bytes allowed
  | by ASCII vs UTF-8 vs UTF-16 aren't the same. Even if it was,
  | plain text is _purely sequential and flat_. Program
  | interoperability requires structure. If the structure isn 't
  | directly encoded in a given "substrate" (such as text), and you
  | need another layer on top, then that substrate isn't actually
  | the one providing the interoperability. You say "Text is the
  | most structured format they all agree on" but text isn't even
  | structured at all, and nobody completely agrees on it - "bytes"
  | is the only thing that fits into place here (which is
  | equivalent to saying that there's no structured communication
  | method that all programs agree on, which is true).
  | 
  | Put another way - programs do _not_ communicate using plain
  | text. They communicate with either an ad-hoc protocol built on
  | _top_ of text (that still has a set of constraints that make it
  | incompatible with other protocols built on top of text), or
  | they use a standardized format like JSON or XML, or even
  | something like ASN.1 that isn 't a subset of text.
  | 
  | Communication using text does _not_ make programs
  | interoperable. Bytes might be a  "narrow waist", but _text_ is
  | factually not - if it was, you wouldn 't need to use
  | sed/awk/perl one-liners to connect various Unix utilities to
  | each other, because the very fact that they were all using text
  | input/output would make them interoperable.
  | 
  | You say "Tables and documents are essential structures in
  | software, and expressing them in JSON is awkward." but you
  | _can_ express them in JSON. You _cannot_ express those
  | structures in  "plain text", because "plain text" is not
  | capable of expressing structure at all, and the best you can do
  | is build a protocol that is a subset of plain text that _can_
  | express structure (JSON, XML, CSV, etc.)
  | 
  | ------------
  | 
  | If anything, Lisps are _more_ interoperable than Unix, because
  | the  "lowest common denominator" of Unix utilities is "plain
  | text" (which by definition cannot encode structure), while the
  | lowest common denominator of Lisps is some common subset of
  | their s-expression formats, which can encode structure.
  | 
  | ------------
  | 
  | > I would say the design of Unix is "rotting", but the answer
  | is to IMPROVE Unix.
  | 
  | You say this, but you haven't given a reason for why that's the
  | answer.
  | 
  | Here's a reason why improving Unix is not the answer: because
  | "everything is text" is a fundamentally flawed paradigm that
  | introduces needless complexity and fragility into the whole
  | system design.
  | 
  | > Not dream of clean slate designs that will never be deployed.
  | 
  | You're mixing the normative and the positive - "Unix _should_
  | be improved " with "clean-slate designs _won 't_ be deployed".
  | Are you making an argument about what _should_ happen, or what
  | _will_ happen? (there 's no guarantee that any improvements to
  | Unix will be deployed, either)
  | 
  | > Plus this post doesn't actually propose anything. If you
  | actually start trying to build your Lisp machine, I believe you
  | will run into dozens of reasons why it's not a good idea.
  | 
  | Oh, yes, and I can start with a few: first, there's good reason
  | to believe that high-level CPUs are a bad idea (as suggested by
  | the fact that nobody has been able to make an effective
  | one[2]); second, the security-less design of older Lisp
  | machines is a _terrible_ idea (in a vacuum); third, that a
  | machine that _only_ runs Lisp is going to be unpopular _and_
  | there 's no single Lisp _and_ Lisps are not the final stage of
  | PL evolution.
  | 
  | ...but the arguments made by the article as to why Unix is
  | _inadequate_ are still solid, even if the author is suggesting
  | a suboptimal solution due to nostalgia.
  | 
  | [1] https://www.lambdassociates.org/blog/bipolar.htm [2]
  | http://yosefk.com/blog/the-high-level-cpu-challenge.html
 
    | chubot wrote:
    | This feels like a whole bunch of misunderstandings about what
    | I'm saying ... Almost everything here was directly addressed
    | in the article.
    | 
    |  _For that matter, why do you exclude the idea that JSON or
    | XML aren 't "common denominators" between Lisp programs, or
    | even between Lisps, Python, and C++?_
    | 
    | JSON is mentioned in the post as A narrow waist, not THE
    | narrow waist (of an operating system or of the Internet). I
    | also mention CSV and HTML as "on the same level".
    | 
    | Likewise, bytes and text have a similar hierarchical
    | relationship. I mention that in the post and also show some
    | diagrams in the previous post.
    | 
    |  _If anything, Lisps are more interoperable than Unix,
    | because the "lowest common denominator" of Unix utilities is
    | "plain text" (which by definition cannot encode structure),
    | while the lowest common denominator of Lisps is some common
    | subset of their s-expression formats, which can encode
    | structure._
    | 
    | JSON, CSV, and HTML are all built on top of plain text.
    | 
    | What I'm contrasting this with is people who say that we
    | should build s-expressions into the kernel -- i.e. passing
    | linked data structures directly, rather than bytes/text.
    | 
    | See the threads linked in the posts -- a variant of this same
    | arguument came up. This is very related to the idea of
    | building Lisp into hardware, which I view as a bad idea.
    | 
    |  _You say this, but you haven 't given a reason for why
    | that's the answer._
    | 
    | The article is analyzing why empirically Unix, the web, and
    | the Internet have worked in multiple respects --
    | interoperability, generality, scalability in multiple
    | dimensions and multiple orders of magnitude, extensibility
    | over decades, the polyglot nature, etc.
    | 
    | These are obviously successful systems, and I think it is
    | pretty crazy to have the opinion that because it makes you
    | parse things that a design that tries to eliminate parsing
    | much be better along many/all dimensions!
    | 
    | These kinds of (IMO naive) arguments are exactly why I wrote
    | the last 2 posts. They were popular and highly commented
    | upon, and most people got it, or at least appreciated the
    | tradeoffs I highlighted.
    | 
    | So I don't need to convince everybody -- as I said in the
    | intro to the post, the more important task is to build
    | something that embodies these ideas. I look forward to your
    | code and blog posts; I do think there is something to the top
    | criticism in the thread:
    | https://news.ycombinator.com/item?id=30812626
 
  | openfuture wrote:
  | It's all going to be datalisp, mark my word :)
  | 
  | Although you have no idea what I am talking about yet just wait
  | a bit more :))
 
  | foobarian wrote:
  | > In fact I conjecture that this is the reason Unix is more
  | popular than Lisp -- because Lisps don't interoperate well.
  | They haven't built up a big ecosystem of reusable code.
  | 
  | And why are there so many? IMO the language is too flexible for
  | its own good. It promotes this curious intellectual solo-
  | competition where you try to prove you are worth of the elite
  | who get all the fancy FP stuff and make all this bespoke
  | functionality.
  | 
  | It's almost impossible for Lisp to be popular. To be popular
  | means a lot of people use it, but that means it can't be
  | complicated much above the median. But because it lets
  | individual programmers push intellectual boundaries it self-
  | selects itself out of this pool. Any big collaborative project
  | will attract this type of developer and soon the lesser
  | developers (who don't dare object for fear of appearing dumb)
  | are not able to contribute.
  | 
  | Just my opinion, if a little dramatic.
 
  | bitwize wrote:
  | You are aware that Lisp machines understood several different
  | flavors of Lisp? The Symbolics ones understood Zetalisp and
  | Common Lisp at least. Were they on the market today they could
  | be convinced to run Clojure and Scheme as well. There are a few
  | old-timers developing Common Lisp applications to run on modern
  | hardware, using Symbolics hardware.
  | 
  | In fact, Symbolics shipped compilers for other non-Lisp
  | programming languages, including C and Ada. These interoperated
  | smoothly with Lisp code, much more so than they do under Unix.
  | In this demo, Kalman Reti compiles a JPEG decoder written in C,
  | and replaces the Lisp JPEG decoder that came with the system
  | with it, yielding a performance boost:
  | 
  | https://www.youtube.com/watch?v=o4-YnLpLgtk
 
    | chubot wrote:
    | OK interesting, I will check out the link.
    | 
    | I still think various Lisps don't interoperate enough today,
    | but I'm not very familiar with the Lisp machines of the past.
    | If it can interoperate with C and Ada that's interesting. But
    | I also wonder about interop with JavaScript :) i.e. not just
    | existing languages but FUTURE languages.
    | 
    | These are the M x N problems and extensibility problems I'm
    | talking about on the blog.
 
      | fiddlerwoaroof wrote:
      | If you're fine with ES3, there's
      | https://marijnhaverbeke.nl/cl-javascript/ (I've been
      | intending to use Babel to compile modern JS to ES3 and then
      | load it into CL, but no time)
      | 
      | Or parenscript: https://parenscript.common-lisp.dev/
      | 
      | Or CLOG: https://github.com/rabbibotton/clog
      | 
      | And, there's always the option of writing an HTTP or
      | websocket server and serving JSON.
      | 
      | I personally use the SLIME repl in emacs for a ton of
      | things I used to use bash one-liners for and you can push
      | it pretty far (this is an experiment, I've wrapped it up
      | more nicely into my .sbclrc since):
      | 
      | https://twitter.com/fwoaroof/status/1502881957012668417?s=2
      | 1...
 
  | convolvatron wrote:
  | > Honest question: how do you communicate between two Lisp
  | processes on two different machines?
  | 
  | using continuations with sexps is insanely powerful
  | 
  | send (+ 1 3 (lambda (x) `(handle-response, x)))
 
  | syrrim wrote:
  | pretty sure hn was ported away from arc at some point.
 
  | fiddlerwoaroof wrote:
  | > Honest question: how do you communicate between two Lisp
  | processes on two different machines?
  | 
  | Depends what level of integration you want: custom tcp/udp
  | protocols, HTTP and websockets are all pretty easy. But, you
  | can also use something like this over a trusted network/vpn:
  | https://github.com/brown/swank-client
 
  | Jtsummers wrote:
  | > Honest question: how do you communicate between two Lisp
  | processes on two different machines? I know Clojure has EDN
  | (which is sort of like JSON : JavaScript), but I haven't heard
  | of the solutions for other Lisps.
  | 
  | Probably TCP or UDP based protocols like essentially every
  | cross-network communication in every language today.
  | 
  | EDIT: Also, it should be noted that JSON does not, itself,
  | allow you to communicate across a network. It's just a
  | serialization format. You still have to select some protocol
  | for actually doing the communication. If your answer to the
  | question "How do you communicate between two JavaScript
  | processes on two different machines?" is "JSON", you've failed
  | at actually answering the question.
 
    | chubot wrote:
    | Right, so that is what I'm getting at. If you have two Lisp
    | programs on different machines, or two programs written in
    | different Lisp dialects, the way you compose them is
    | basically "Unix" -- serialize to some common format and send
    | over a pipe / socket.
 
| daniel-cussen wrote:
| So it's interesting to note modern hardware is only 60x faster
| than Lisp machines when it should be 1000x. Weirdness of Lisp,
| turns out hardware isn't some random thing. And harder to
| compromise than modern stuff, by a huge amount, real actual
| security improvement.
 
  | glmdev wrote:
  | Not saying you're wrong, but do you have a source for the
  | 60/1000x number? Curious to read more.
 
    | daniel-cussen wrote:
    | Yeah, where did I read it, I think John McCarthy checked it
    | out along with...who could it have been...definitely him.
 
      | lispm wrote:
      | Today one Lisp Machine CPU emulator written in assembler is
      | 80 times faster than the original Lisp hardware. This could
      | be made faster by a JIT compiler. Native code Lisp
      | compilers for x86-64 or Apple's M1 are roughly 800 times
      | faster than the original Lisp hardware (the third
      | generation Ivory processor).
 
        | daniel-cussen wrote:
        | Wow! Really?! So the M1 really is faster in a non-
        | gimmicky way? I could cut out this X86-64 assembly
        | bullshit, at 800x I could be happy just with Lisp.
        | Assembly all based on C by this point anyway...
 
___________________________________________________________________
(page generated 2022-03-26 23:00 UTC)