Email or username:

Password:

Forgot your password?
Top-level
Ramin Honary

@rml
If you were only interested in computers as a brute-force calculating tool, or interested only in the business side of #software, you aren't interested in #Lisp because it lost out to languages like Python, JavaScript, C/C++. So I think any Lisp will only attract people who are interested in lambda calculus and/or programming language theory, and/or maybe people interested in dependent typing, like anyone who has run across the work of Dan P. Friedman.

I assume it is not just me that the reason Scheme is appealing is because it is a well-designed minimal Lisp. And just being able to understand, from a pure computer science perspective, the deep philosophical implications of what a "well-designed, minimal Lisp" even means has already narrowed down the pool of potential converts to a tiny minority of people.

But the fragmentation is still the biggest problem. The absolute first question I had when I wanted to get started with #Scheme was, "which implementation should I use?" And immediately it becomes clear that once you have picked one, it isn't easy to just switch your code over to some other implementation in the case that later on you feel like the one you picked first is wrong. So there is soooo much pressure to pick the right implementation on your first try. That alone I think scares too many people away. I didn't run away because I was already committed to the idea mastering a "well-designed, minimal Lisp."

8 comments
akater
@ramin_hal9001 @rml

> Lisp will only attract people who are interested in lambda calculus and/or programming language theory, and/or maybe people interested in dependent typing

I use Lisp because it offers me computing freedom unlike anything else. I don't care about lambda calculus or programming theory. It'd be nice to have better support for dependent types but it's not crucial.

26% of my system packages are Lisp (mostly Emacs Lisp), and I wish it was 100%. This 0.26 number will certainly increase.
@ramin_hal9001 @rml

> Lisp will only attract people who are interested in lambda calculus and/or programming language theory, and/or maybe people interested in dependent typing
Ramin Honary

@akater @rml

> I use Lisp because it offers me computing freedom unlike anything else. I don't care about lambda calculus or programming theory.
26% of my system packages are Lisp (mostly Emacs Lisp), and I wish it was 100%.

I'll admit I was maybe over-generalizing and I didn't mean to exclude you or anyone who honestly appreciate the aesthetics or the pragmatic features of Lisp. But it does make me curious, when you say "computing freedom," what features of Lisp make it more liberating for you personally than some other more popular high-level language such as Python or JavaScript?

I suppose you use #Guix OS with Shepherd? That is a good way to use Guile Scheme for a large portion of your operating system, in particular the package management and the init system. Then use Emacs on top of that and you have most of your day-to-day computing tasks covered by Lisp. You could probably also use the Nyxt browser, although the core of it is still WebKit, which is not Lisp.

@akater @rml

> I use Lisp because it offers me computing freedom unlike anything else. I don't care about lambda calculus or programming theory.
26% of my system packages are Lisp (mostly Emacs Lisp), and I wish it was 100%.

I'll admit I was maybe over-generalizing and I didn't mean to exclude you or anyone who honestly appreciate the aesthetics or the pragmatic features of Lisp. But it does make me curious, when you say "computing freedom," what features of Lisp make it more liberating for you personally...
akater
@ramin_hal9001 @rml
> what features of Lisp make it more liberating for you personally than some other more popular high-level language such as Python or JavaScript?

Lisp offers “Freedom 1” (“the freedom to study how the program works, and change it”) in its fullest. Any function definition is a single M-. away to study, and it can be changed at any time, instantly. OODA loop is as short as it gets. I'm sure Emacs users read and change the code of the program they are running more than any other social group in the world.

Patch the object system, alter the thing that defines local functions, extend the syntax that defines code transformers — all with immediate effects, of course — all that would probably beyond my hopes, had I settled with more popular languages. (And I had to do all the things I mentioned, due to bugs or missing features.) How about something less fancy, such as redefining a class? Looks like Python has problems even with that. This is extremely limiting.

> I suppose you use #Guix OS with Shepherd?

No; Gentoo.

> Then […] have most of your day-to-day computing tasks covered by Lisp.

Smartphone use aside, that's the case already. I have to run some daemons written in C, and the system depends somewhat heavily on Python and Perl but that's it. I just never leave Emacs, except when it crashes.
@ramin_hal9001 @rml
> what features of Lisp make it more liberating for you personally than some other more popular high-level language such as Python or JavaScript?

blake shaw 🇵🇸

@akater @ramin_hal9001 out of curiosity, if youre trying to increasethe percentage of your lisp based software, and are a free software advocate, why not guix? Its like the emacs of Linux distros, and its one of the most interesting codebases I've ever been in.

Ramin Honary

@rml @akater
Yes, I also recommend you try Guix OS, and it's "Shepherd" init system. But it definitely takes time to learn how to use it if you have never used Nix or Guix before.

@akater

> Lisp offers “Freedom 1” (“the freedom to study how the program works, and change it”) in its fullest.

I would say this is a feature of Emacs, and Emacs Lisp, but not Lisp in general. It is possible to write a fully proprietary system in Chez Scheme or a Common Lisp such as SBCL, even though the compilers are open source. And there are fully closed-source proprietary Common Lisp compilers such as Allegro Common Lisp.

I think when you say Lisp gives you "the freedom to study how the program works, and change it," you might be referring to Lisp's "image based programming" model. This is where Lisp basically freezes itself when an exception is thrown, then you can make changes to the code and resume execution. The stack trace shows you every part of the program, and you can modify any part of the program in memory as it runs. You can also dump the entire program and it's state to an "image" file and load it up later.

By the way, you might be interested to learn that languages like Erlang and Prolog can do this too. Erlang rather famously provides a micro-threading feature with asynchronous message passing built-in, which encourages you to structure your program as countless communicating microthreads. Not only that, but you can actually freeze any one single thread and fix a bug in it's code (as you would in Lisp) while the all the other threads in the system keeps running. It is used in telecommunication, and has a reputation for creating programs that never need to be halted (100% uptime) since you can fix bugs on live systems without shutting them down.

@rml @akater
Yes, I also recommend you try Guix OS, and it's "Shepherd" init system. But it definitely takes time to learn how to use it if you have never used Nix or Guix before.

@akater

> Lisp offers “Freedom 1” (“the freedom to study how the program works, and change it”) in its fullest.

I would say this is a feature of Emacs, and Emacs Lisp, but not Lisp in general. It is possible to write a fully proprietary system in Chez Scheme or a Common Lisp such as SBCL, even though the compilers are open...
akater
@ramin_hal9001 @rml
> you might be referring to Lisp's "image based programming" model. This is where Lisp basically freezes itself when an exception is thrown, then you can make changes to the code and resume execution

Image-based, yes. Condition system has nothing to do with this. Functions can be recompiled without dealing with it.

Erlang is famous, yes. One active member of our local Emacs community uses Elixir and seems to enjoy it, and claims they even use macros fairly often. Maybe it would be possible and beneficial to have such concurrency in a Common Lisp implementation (or in Emacs) but I have enough life goals already. 🙂
@ramin_hal9001 @rml
> you might be referring to Lisp's "image based programming" model. This is where Lisp basically freezes itself when an exception is thrown, then you can make changes to the code and resume execution
Go Up