freenode/lisp - IRC Chatlog
Search
17:49:17
stylewarning
mokulus: I wrote a draft article I hope to publish at some point that talks about what I think about lisp, “taking a step back”, and forgoing all the fluff of the 90s
17:49:46
fwoaroof[m]
Yeah: also, my impression is that the community today is a lot friendlier than it was 20 years ago
17:50:24
philweb
back in the 90's and earlier, other languages and environments had virtually none of the advantages of dynamic languages like lisp/smalltalk. so the contrast between them was very stark. over the last 20 years, many languages have picked off a lot of the features that used to be exclusive to dynamic languages (granted, they often have to be
17:50:50
stylewarning
mokulus: there are lots of articles written in the 90s-00s, and an ethos more generally, that lisp is this maximal state of enlightenment and everybody else who doesn’t use lisp must be an idiot or lowlife
17:51:55
stylewarning
mokulus: explaining why some people thought that (they *did* think that for a variety of reasons) is another topic, but that thinking has poisoned the well for many newcomers
17:53:33
stylewarning
phoe: it’s really truly a draft with lots of work to do http://watrophy.com/files/language.html
17:54:47
philweb
and if you go back to the 80's, lisp/smalltalk were positively magical vs the competition. the problem was the compute/memory requirements greatly exceeded what most of us had available (even working in most businesses)
17:54:58
stylewarning
Whenever it’s done it probably will be published as an ordinary blog posts not some kooky pdf
17:57:54
stylewarning
mokulus: scheme is really more of an idea and less of a language. There *is* a scheme standard, but it’s so barebones that every implementation of scheme is mutually incompatible
17:58:59
stylewarning
mokulus: scheme systems are super opinionated about things that matter when writing big programs: how modules work, how macros work, how you make a program efficient, etc. and everybody decides these things differently
17:59:32
stylewarning
mokulus: so at the end you don’t really have a thriving scheme ecosystem, you more have a handful of “self-sufficient” scheme tribes and dialects
18:00:14
stylewarning
Common Lisp has one and only one standard, and everybody agrees on it, and the standard is large enough to build useful applications, from tiny utilities to multi-million dollar pieces of enterprise software
18:02:29
stylewarning
(There is a subset of Common Lisp and the subset of Scheme that provide the same functionality, and arguably Scheme is much more elegant and prettier. But there’s also just a million things Scheme can’t do at all.)
18:05:05
stylewarning
Maybe a bit of a poor comparison: scheme is like a nice, razor sharp, clean chef’s knife with no patina; Common Lisp is more like a multitool with some scratches, that happens to include a reasonably sharp knife
18:05:26
aeth
In particular, the problem with portable Scheme was the lack of a portable library system. It's still there with popular Schemes, of course, but now quite a few support R7RS libraries.
18:05:47
aeth
Even ASDF systems among CLs was a hard problem, leading to UIOP. With Scheme it's harder.
18:07:44
aeth
As for capabilities, Scheme (well, *a* Scheme) should be able to do everything that Common Lisp does pretty soon.
18:13:45
contrapunctus
Hence the quotes around 'pretty soon', because it rather sounded like the project is some time away from production ready 🙂
18:17:14
aeth
I won't make it 1.0 before R7RS-large because any R7RS-large SRFIs being withdrawn and replaced (one or two already afaik) will break the public API... and that has been in progress since 2010. So if 1.0 is production ready, then it won't be for a long time, but that's not up to me.
18:19:20
VincentVega
Hi all! If I make class B inheriting from A, is there a way to easily initialize a A's slot with some different initial value or do I have to write initialize after for B and setf the value there?
18:23:40
VincentVega
Xach: I am trying (defclass b (a) () (:default-initargs . (var 2))) but it gives me invalid initialization argument error...
18:35:42
fwoaroof[m]
VincentVega: if you go the :initform route, make sure THE-SLOT is a symbol in the right package
18:57:08
contrapunctus
Ever since I started writing my first CL program I've been keeping a list of projects I want to improve the documentation for.
19:15:41
fwoaroof[m]
contrapunctus: it's an unpopular opinion, but I prefer to read code every time :)
19:16:33
fwoaroof[m]
High-level documentation is occasionally useful, but I'd usually rather see sample code
19:17:57
fwoaroof[m]
(even when there's documentation: unless you have some way to automatically make sure your documentation is correct, I find that most documentation lies about 6 months after it was written)
19:18:31
jmercouris
the only documentation I give the benefit of the doubt to is docstrings, and mostly only in our codebase
19:20:49
fwoaroof[m]
Yeah, I've been trying to figure out a nice way to specify docstrings in an executable format that can be stringified to something useful
19:21:10
fwoaroof[m]
doctests for sample invocations are one way to go, but I'd prefer to avoid parsing code out of docstrings
19:25:12
jmercouris
source for the function is embedded within a object that represents the documentation
19:31:37
contrapunctus
fwoaroof[m]: maybe it's because I'm not a professional programmer, but if I come back to my own code a few months later, on a program as small as 2k SLOC, I've often forgotten why certain design decisions were taken, or how a certain functionality works (which is why I write explanation docs), or that I've already written the function I'm writing (...reference docs). Many programs have reference docs b
19:31:37
contrapunctus
ut no how-tos, which is a total pain when you just want to get task X done _now._ (...so I write how-to docs).
19:31:43
fwoaroof[m]
I'd like a more structured way to express docstrings: something like #.(stringify '(:function (FOO ARG1 ARG2)) :returns ... :params ...))
19:33:59
contrapunctus
I also find reference docs invaluable in helping me improve API design (names, signatures, return values...)
19:35:08
pve
fwoaroof[m]: could you programmatically append stuff like function signature to the docstrings?
19:35:41
fwoaroof[m]
If you shadowed DEFUN, you could make the docstring portion much more structured
19:36:45
jmercouris
I don't shadow defun, instaed introduce a new constract that emits a defun and a corresponding object relating to its structure
19:36:58
pve
or a separate "signature" macro could both declaim ftype and add something to the docstring
21:47:08
drmeister
Hey folks. Over in #clasp we are developing a new Common Lisp implementation called 'clasp' and an extended version for computational chemistry called 'cando'.
21:48:08
drmeister
We are also developing a web based user interface based on common-lisp-jupyter. Tarn Burton, the developer of common-lisp-jupyter has been adding autocompletion of symbols, auto-indenting, and contextual help.
21:48:09
drmeister
https://www.dropbox.com/s/zwpbuq5qewz3m62/Screen%20Recording%202020-08-10%20at%205.39.20%20PM.mov?dl=0
21:50:51
drmeister
The jupyterlab kernel is getting me really excited - with the autoindenting (put the cursor on a parenthesis and hit tab) you can actually start to write code in the thing.
21:54:47
bjorkintosh
drmeister, is there a 101 intro to computational chemistry around? I know zero about the topic.
22:03:56
fwoaroof[m]
drmeister: cool, I've tried to build clasp locally several times and always get build errors
22:06:27
drmeister
New news - we have clasp working with the Memory Pool System copying garbage collector.
22:08:16
drmeister
bjorkintosh: It's a really big subject. https://www.acs.org/content/acs/en/careers/college-to-career/chemistry-careers/computational-chemistry.html
22:08:40
drmeister
Using computers to simulate the stuff that we are made out of. What could be more noble and fundamental than that?
22:10:10
drmeister
fwoaroof[m]: https://github.com/clasp-developers/clasp/wiki/Road-to-clasp-with-lvm@9
22:10:34
bjorkintosh
However, computational chemistry was not generally thought of as its own distinct field of study until 1998, when Walter Kohn and John Pople won the Chemistry Nobel for their work on density functional theory and computational methods in quantum chemistry.
22:12:47
drmeister
Because there is a lot of C++, C and Fortran code out there that you want to be able to work with.
22:15:54
drmeister
There are challenges as well. Many in my field have invested heavily in Python for scripting.
22:17:46
drmeister
So we are building an entire software stack with a very small team. We are doing everything from low level compiler optimizations to web-based graphical user interfaces.
22:18:46
drmeister
And we are developing applications within it. There are several demos in our docker image: thirdlaw/cando
22:24:55
fwoaroof[m]
drmeister: I've experimented with the opposite approach: using https://github.com/froggey/Iota to compile LLVM bitcode to Lisp
22:26:15
drmeister
I dunno about performant - the devil is in the details and there are a lot of details in a full Common Lisp implementation.
22:26:36
drmeister
But because we use the LLVM C++ API we can keep up with LLVM changes better than anyone.
22:28:13
drmeister
Because the code breaks when they (llvm developers) make changes and they make a lot of changes - and then it behoves me to update our code to keep up to date. I've kept with them from version 3.6 to 9 and I'm anxiously waiting for new changes coming in llvm12 (cross-fingers) that will make it easier to support Common Lisp.
22:30:58
drmeister
It's still very much a C/C++ oriented backend. But new changes that are coming will enable reloading of code in a way that will make it better for a more dynamic language like Common Lisp.
23:39:09
dim
drmeister: do you have a time frame in mind, or a target version number I could check, for clasp image save/load feature? I mean I could then maybe try and compile pgloader with clasp and see if your new GC beats the SBCL one...
23:40:08
dim
(we keep having issues with SBCL GC where we exhaust the heap with pgloader, and I don't know if pgloader is putting too much pressure because of bad code or just because of what we do: data processing) (also Clozure has no trouble with pgloader, as a data point)
23:54:22
drmeister
dim: No time frame but it's a high priority. I would say weeks maybe? Not months.
23:55:14
drmeister
Cando takes 25 seconds to start up on my macbook pro and I despise that that is every persons first impression of the system.
23:59:29
drmeister
The image save/load is to shorten the startup time for cando. Cando is a version of clasp that adds lots of C++ chemistry code and a whole lot of quicklisp systems.
0:02:00
fwoaroof[m]
(I had some significant performance/stability improvements switching to Shenandoah in a JVM application I work on)
0:02:00
drmeister
Do you mean low pause times? Ravenbrook has done work to guarantee that any pause time is less than a user defined time limit.
0:03:31
drmeister
No - I don't think it's that. I don't have a lot of experience running it. I have a great deal of experience programming with it and debugging it.
0:09:54
drmeister
We just added type inference and we are making progress in improving performance - but sbcl still beats us.
0:11:34
drmeister
What I mean is that sbcl has an extremely impressive compiler - it's fast and generates fast code. But we all know that.
1:40:33
edgar-rft
p_l: I'm not entirely sure but I think the GPL says that the devil gets your sould for free.
2:29:04
p_l
edgar-rft: at least you don't need to sell your soul to the devil to make a clean from source compile of SBCL