8 ms·
I wonder sometimes how the world would look like if lisp won and the unit of deployment was a lisp machine image, if that makes sense. How would a kubernetes op
by baq 2mo ago
I wonder sometimes how the world would look like if lisp won and the unit of deployment was a lisp machine image, if that makes sense. How would a kubernetes optimized for lisp look like? How would AWS EC2 look like? etc.
- tyromaniac 2mo agoWe wouldn't have need such barbaric things in a lisp world. :p Personally I think/hope they would have earlier discoveries / more broad usage of the deterministic systems like nix etc, which are built upon functional principles of immutability etc. Maybe the world would be guix/Hurd!
- neutronicus 2mo ago> Personally I think/hope they would have earlier discoveries / more broad usage of the deterministic systems like nix etc, which are built upon functional principles of immutability etc. Yeah, that, uh, doesn't sound like Lisp
- tyromaniac 2mo agohttps://guix.gnu.org/ https://guix.gnu.org/
- neutronicus 2mo agoYeah, I mean, I know it exists, but the mythology of Lisp is built around "I can drop into a REPL and execute arbitrary code on a production system and that is a good thing"
- tyromaniac 2mo agoAs opposed to our wonderful world where everyone does the same with unchecked binaries or obfuscated/minified JS? To me the mythology of lisp (from my mostly outsider perspective) is more like "make everything a interoperable DSL" (although if this is what you were describing with your sentence then thats fair enough)
- anthk 2mo agoYou can with Guix, just save your config in a new deployment for a new boot.
- blubber 2mo agoCommon lisp isn't functional in that sense.
- tyromaniac 2mo agoSure the language might not be immutable but the lisp machine alt universe's "overton window" would I imagine be more functional then today's (JVM? maybe that's the qnalog?) reality.
- zellyn 2mo agoWhen I learned (Common) Lisp at Georgia Tech in the summer of 1995, we were encouraged to make as many functions as possible purely functional, and if mutation was needed, to try to hide it within the bounds of a function. So while Lisp may not be purely functional, the culture hewed that way.
- rprospero 2mo agoThat's interesting, because I had the opposite experience. I started getting into Lisp around 2004, but bounced off of the community because the culture I was experiencing hewed heavily toward imperative code and global variables in the name of efficiency. I specifically remember the breaking point being third-party library where none of the functions had any parameters. Instead, everything was controlled by using dynamic binding to adjust the variables within the functions. Various forum members kept praising its beauty and elegance, but I found it needlessly confusing. I have a soft spot for the Lisp family of languages. I've been using Emacs for almost thirty years and have used both Scheme and Clojure in production. However, my experiences back in 2006 have left me with a permanent bias against Common Lisp.
- dismalaf 2mo agoCommon Lisp is pretty much the opposite of what people think of as functional nowadays. You're constantly changing the image and everything is mutable.
- tyromaniac 2mo agoI would presume there was a lot of mixing of imperative/functional in the 80s where this alt universe starts. I think the same type of world in which lisp machines would have become king would also be similar
- pfdietz 2mo agoImage saving isn't something that's done very often, in practice.
- Scarblac 2mo agoWhat is done in practice, for daily development use? Building the image in memory from source files at startup?
- johnlorentzson 2mo agoTypically, for development, one will start a clean image in the morning and load it up with a combination of newly compiled code and automatically cached previously compiled code. This is mostly invisible to the user unless something goes wrong with the cache and it has to be cleared. The unaware user could think they're recompiling everything every time.
- pfdietz 2mo agoYes, that's quite fast. The files are kept in a version control system so you update from that first as well. The use cases for images would be: delivery of applications to users, or (internally) delivery of some fixed set of underlying code that is used as a substrate for development but that wouldn't normally be changed by developers. Normally, the developer has an image running all day, and does development and testing in it, but (unless needed for additional testing) doesn't save that image as a new binary that others can run.
- blubber 2mo agoVariable AWS is unbound.
- epolanski 2mo agoLisp's been around for 70 years at this point and hordes of developers tried it and said: lovely, but I ain't using it at work. I'm strongly convinced, having used Scheme, CL, Racket, Clojure that Lisp is doomed to be (mostly) a hobby language. The very power of Lisp, macros, dynamic programming, reflection lead to a mess of an ecosystem where every single developer reinvents the wheel and nobody can understand yet another DSL invented by the next developer next to them. Racket's theme of being a "programming language for building programming languages" is just the poster child of this naivety: I don't want even more friction. What scales and works is simple and boring. That's by the way why also Haskell has struggled forever. Beyond its dreadful DX, poor tooling and unacceptable compilation times, the language is just plagued by compiler extensions and every single developer reinventing its own abstractions. There was the simple haskell movement to just standardize around a set of extensions and conventions, but nope, these languages unavoidably attract people that want to stay in the ivory tower. Really, I love both lisps and haskell, but I would take a dreadful php over them every single day at work. No contest.
- rjsw 2mo agoI use Common Lisp at work.
- oumua_don17 2mo ago>> said: lovely, but I ain't using it at work. Says who, you? Wrong. I use Common Lisp at work. edit: and not just use as in a side toy, design and writing software in CL is my primary responsibility. FWIW, at a FAANG!
- WillAdams 2mo agoThat (deployment is via a customized image) is the thing I find most awkward. Somewhere, I have a copy of a commercial LISP for Windows which would compile to an executable --- apparently this sort of thing is still possible, but it's not widely known/used, and sadly Jean-Marie Hullot's "SOS Interface" for the Mac was co-opted to NeXTstep: https://denninginstitute.com/itcore/userinterface/GUIHistory4.html https://denninginstitute.com/itcore/userinterface/GUIHistory... I'd dearly love to see a RAD (Rapid Application Development) tool using LISP w/ a nifty UI for working up a GUI which would compile to something easily deployed (maybe HTML5 Canvas and JavaScript) as a stand-alone/single-file web application?
- brabel 2mo agoYou probably want Clog: https://github.com/rabbibotton/clog https://github.com/rabbibotton/clog
- mark_l_watson 2mo agoClog is very cool. As an alternative, I have recently been building Common Lisp UIs with webview (I have two example webview apps as recent additions to my Common Lisp book). re: heap based delivery: not a good idea. But, I sometimes do heap based development when I have a ton of data I want loaded every dev session, then I save a SBCL image, and restart my Lisp environment using my custom image.
- actionfromafar 2mo agoDocker deploys is a bit like that I think. Overall, I think many languages and programming systems pick up pieces from each other nowadays. PHP almost by accident can be quite stateless. Yet it's looking more like Java. Many things which could be deployed as an executable, are deployed as VM images. I'm sure we can come up with more things...
- fiddlerwoaroof 2mo agosbcl can compile to a single executable (the image is embedded in the binary). From a deployment standpoint, the only real issue is if you depend on a dynamically linked C library like OpenSSL.
- Shorel 2mo agoNot that different. AWS already has lots of AMI and docker are essentially image based. We would version whole images in something like git, and that's all.
- groundzeros2015 2mo agoUhm. I can think of more differences
- quotemstr 2mo agoIt'd look like Graal, which is a real thing you can use today.
- joshmarlow 2mo agoI've often thought that s-expression diff-viewers would be very nice tooling. I've also often wondered how easy it would be to just sling s-expressions across the wire to execute in another environment. What would modern infrastructure look like if you could just have lambdas running lambdas?
- g9550684 2mo agoin at least Common Lisp world slinging s-expressions is considered to be a hack, at best something you do in a development environment, like swank/slime wire protocol. one of the reasons is that a readtable is both powerful, user extendable, and has all kinds of default ways in which a malicious input would be detrimental. you can remove all kinds of reader macros like #.(xyzzy), but to make a truly bulletproof s-expression reader you'd have to build a json like subset from first principles. even things like colons in symbol name package:symbol will trip you up. it's been understood since long time ago, that common internet standards, like RFCs, are the preferred method. in which case the fact that it's an s-expression versus a json is pretty much irrelevant. it's a kind of reader/writer anyway.
- groundzeros2015 2mo agoYou can configure (read) to be safe for this purpose. It’s not a hack.
- pfdietz 2mo agoYes, there's a specific standard special variable controlling it, *read-eval*.
- groundzeros2015 2mo agoYou can also configure a read table to disable any other data structure features you want. inb4 DoS attack. That is a universal parsing problem and should be solved by configuring OS limits for your process.
- iLemming 2mo ago> How would a kubernetes We have a few services built in Clojure and we expose nrepl port on our pods in our SDEs, it's enormously helpful to test and debug things on the fly, without having to redeploy or restart anything. Without having to deal with state, caching, etc.
- reddit_clone 2mo agoNot In production yes? Also not sure what is SDE.
- iLemming 2mo agoNo, of course not in prod. SDE stands for "Software Developer Environment" - ephemeral VMs we spin up for testing before stuff hits staging/prod clusters.
- lenkite 2mo agoFor non-LISP languages on k8s, you have Tilt (https://tilt.dev/ https://tilt.dev/) or Skaffold (https://skaffold.dev/ https://skaffold.dev/) nowadays to support continuous development.
- coldtea 2mo agoSame as the regular, but configurable in lisp?
- attila-lendvai 2mo agoif you are pondering about that, then i think you'll like this: https://ngnghm.github.io/ https://ngnghm.github.io/
- whyenot 2mo agoThe worst thing that ever happened to Common Lisp was its ANSI standardization, which for many years killed almost all language innovation and improvement.
- BoingBoomTschak 2mo agoThe worst and best thing.
- guenthert 2mo agoNobody stopped anyone to come up with variants, just from calling those ANSI Common Lisp compliant. There are after all many, most of which are long dead already.
- pfdietz 2mo agoOn the other hand, standardization enabled Common Lisp implementations to actually be tested, so programs became much more portable across time and between different implementations. What stopped further development of the standard was the collapse of the market for Common Lisp. I should note that many of the things that need changes to the language definition in other languages are just libraries in Common Lisp.
- dmux 2mo agoBut _worse is better_.
- galaxyLogic 2mo agoThat would be a bad idea. In Smalltalk the "image" was the main thing and I think that was one thing that led to the commercail demise of Smalltalk. You can not combine two (or more) images. You can not build new things by using "images" as components. Instead as we know source-code modules with well-defined interfaces between them is what keeps productivity hhigh. At least before AI.
- goatlover 2mo agoImages can be saved out as files, so I don't see why not. Also, I recall it was the expensive commercial licensing along with the rise of cheap PCs as competition to Lisp and ST machines. That and Java being free with a focus on networking and the web was the final nail in squashing Lisp or ST popularity.
- igouy 2mo agoMarch 7, 1988 — "Smalltalk/V 286 is available now and costs $199.95, the company said. Registered users of Digitalk's Smalltalk/V can upgrade for $75 until June 1." https://books.google.com/books?id=CD8EAAAAMBAJ&lpg=PA25&dq=digitalk%20v%2F286&pg=PA25#v=onepage&q=digitalk%20v%2F286&f=false https://books.google.com/books?id=CD8EAAAAMBAJ&lpg=PA25&dq=d... September 1991 — "Smalltalk/V code is portable between the Windows and the OS/2 versions. And the resulting application carries no runtime charges. All for just $499.95." (Advert on the last page of "The Smalltalk Report") https://rmod-files.lille.inria.fr/Archives/TheSmalltalkReport/PDFS/ST/91_95/SMAL0101.PDF https://rmod-files.lille.inria.fr/Archives/TheSmalltalkRepor...
- galaxyLogic 2mo agoGood pointers. But Claude Code is even more expensive.
- igouy 2mo agoBack in the day those were not unusual costs for programming tools. (Beer wasn't free.)
- sph 2mo ago> How would a kubernetes optimized for lisp look like I imagine it would look a bit like Erlang's BEAM. No need to stop and start the application, but write a script to do hot updates of a live image.
- amno 2mo agoWe would skip attrocity of JavaScript, JSON and XML.