freenode/#lisp - IRC Chatlog
Search
10:16:30
beach
Some people disagree though. For example, stassats doesn't think that requiring two tests instead of one, for each loop over a list, is a problem. And he doesn't think registers are that much faster than the stack.
10:18:15
ludston
DAE notice that around Christmas every year, there is a surge of lisp related articles on all the programming news sites?
10:18:25
frodef
btw CPUs are becoming quite clever at optimizing... for C-type runtimes. It's fun/sad to think what the state of CPUs might have been if dynamic run-times weren't weeded out in the 80s.
10:20:43
White_Flame
there's still barely any hardware GC support (and afaik what is in there isn't even used in major languages like Java), and still no support for tagged words
10:20:48
ludston
frodef: In a direct, explicitly dynamic way: Javascript, Python and all the byte-code langs like C# and Java
10:23:05
frodef
ludston: I might be outdated, but e.g. python is basically a huge interpreter written in C, no?
10:26:53
ludston
frodef: What language the interpreter is written in is not necessarily relevant to the assembler/bytecode it emits. Pypython used to be a python interpreter written in python, but I just searched for it and it doesn't look like it is anymore
10:29:46
frodef
ludston: is python typically ran as compiled machine code? Point is, iirc the "run-time" is basically a C program/state-machine driven by python text or bytecode.
10:30:16
ludston
You basically need c to bootstrap for any new CPU architecture these days regardless. i.e. step 1, someone writes a C compiler for the new architecture, step 2, compile common lisp interpreter written in C, step 3: compile sbcl using that interpreter
10:31:41
beach
ludston: But that's beside the point, no? Once you are done with that, you never use the C runtime again.
10:31:50
frodef
ludston: I don't think the CL compiler for the new CPU will magically appear just because you have a C compiler.
10:32:34
ludston
frodef: Not sure how python works these days to be honest. They may or may not have a byte-code
10:35:03
frodef
ludston: but do you need a CL runtime that is running on the (hypothetical) new CPU?
10:35:33
ludston
beach: That's my point. You can't argue languages with dynamic runtime are c-based once you don't need c
10:37:47
ludston
frodef: Yes, so either you have to write your own CL interpreter for the new CPU archictecture (a massive effort), or, just compile clisp and then use clisp to compile sbcl
10:39:18
ludston
At some stage you're going to need to tweak sbcl so that it will compile for the new architecture, but the point is that you only write lisp code
10:39:22
frodef
fwiw by "C-based" I meant similar to typical C code. For example C# run-time I suspect is heavily influenced by the performance model of CPUs as of 20 years ago, which again comes basically from C.
10:40:54
dim
well then make it 40/50 years ago maybe, about the CPU and memory model used in the C langauge
10:41:23
frodef
or to rephrase: If all the resources that have gone into developing the 8086 since 1970 rather had gone into developing e.g. the Symbolics CPUs, who know where we'd been.
10:48:11
ludston
frodef: I think that Intel/AMD are going to optimize for javascript, and CL will come along for the ride
10:53:42
frodef
Seems to me a bit ironic, Information Technology that isn't able to handle information about itself very well, or at all.
10:54:41
beach
It has got to be one of the least efficient domains. At least I hope the others are better.
10:57:47
beach
frodef: Are you currently employed in the software industry? If so, is your plan to transform it? Seems kind of hard, no?
10:58:23
frodef
btw. I find that quicklisp and cliki.net are great for finding and loading libraries, but is there nothing in the way of "canonical" or "preferred" lists of library code?
11:07:30
beach
Oh, but I don't see the crucial information that many people want, i.e., which of similar libraries is preferable and for what reason.
11:09:12
beach
For example, the other day we were told that CL-WHO is not recommended, because it is buggy and incomplete, and not being worked on.
11:43:44
flip214
hmmm, > In the trade-off between 90% convenience and 10% correctness Spinneret is on the side of convenience.
11:45:40
flip214
Gnuxie[m]: I guess that means that if you have a function bound on a keyword symbol (I've got a few, for debugging), you can't easily call it - (:h2 ) gives you a <h2>, after all.
12:12:01
flip214
hmmm, spinneret seems to take 2x as long as cl-who for generating a simple HTML document...
12:13:05
flip214
but it does so much more (indentation, counting header levels, quoting only when needed, etc) that it's no surprise
13:02:06
xificurC
ludston the canonical python implementation is CPython, which is written in C. Python code is either read from a .py file (source code) or from a .pyc file (bytecode). The interpreter automatically tucks away the generated .pyc files for later reuse and reloads the .py files if they are newer than the .pyc files
13:05:35
xificurC
the pypy toolchain is interesting, you write in a subset of python and the toolchain generates a tracing JIT for you
13:35:12
mfiano
As beach mentioned, cl-who is quite buggy, and the author no longer maintains it and is not sure how to fix some of the issues it has, and we're talking about a pretty smart guy who is well-known in the community. He also authored 'Common Lisp Recipes', a book that makes no mention of cl-who for the topic of HTML generation, for the aforementioned reason. If the author recommends other libraries over
13:36:21
mfiano
Hi Michael,Thanks for your feedback. I'm not maintaining CL-WHO or my otherlibraries anymore and I'm pretty sure there are better HTML generationlibraries out there nowadays (two of which I'm also mentioning in mybook). The problem you're referring to is unfortunately inherent tothe way CL-WHO is implemented and I'm not aware of an easy fix.Best regards,Edi.
13:40:26
beach
I think the crucial information that frodef was looking for is absent in awesome-cl. Perhaps in most cases it is not as clear as for CL-WHO ("don't use it..."). But people often look for relative advantages and disadvantages, like generality, run-time performance, compilation time, ease of use, active development, existing maintainer, etc.
13:44:09
mfiano
One thing I can say for certain after quite a few years doing web development in CL (though, admittedly, this was a few years ago), is there are about a dozen libraries fitting the purpose and they all fall flat. I think this is partially because of the mess that is the web itself, and partly because there is no concerted effort on such a library. One developer can do an 80% solution for their own
13:44:12
beach
So, ideally, a list like that should include such comparisons of similar libraries, and perhaps some absolute information when a library is fairly unique, like "embryonic", "needs work in ...", "performance could be better".
13:45:05
frodef
Seems to me that "canonical" libraries are an important aspect of a programming language. In some important sense, libraries for common functionality is really part of the common language itself.
13:45:54
frodef
having common libraries is important in the same sense it's important not to write your own macros for IF etc.
13:50:12
ralt
I made some extensions to it to support async/await a while ago but I'm not sure if I should contribute them back
13:51:11
ralt
it's also missing a tons of symbols (to make the symbol mangling work) of recent-ish additions (say, over the past 10 years), so that indicates to me that it's quite close to dead, but I never actually looked
13:55:02
mfiano
There seems to be recent activity on its issue tracker, and commits by the maintainer.
14:06:30
xificurC
I always browse the cliki recommended list of libraries, yet noone mentioned it here. Is it out of date?
14:07:40
xificurC
awesome-cl is nice but as beach points out there's when there's a list of libraries you have no idea which one is recommended
14:31:13
flip214
Well, as one(!) of the reasons I'm proposing CL is "speed" (as in "reduces number of required hardware boxes for given workload"), requiring twice the time to generate some HTML hurts quite a bit - that amounts to twice the hardware (compared to CL-WHO) and reduces the utility of my proposed solutions
14:47:10
xificurC
is iterate usable without `use-package`ing it? From a REPL session I can't get it to work. Something like `(iter:iter (for i from 1 to 10) (collect i))` spurts a number of undefined function/variable warnings
14:49:30
xificurC
this works and is very readable `(iter:iter (iter:for iter::i iter::from 1 iter::to 10) (iter:collect iter::i))`
14:59:41
_death
sbcl has iter::(iter (for i from 1 to 10) (collect i)) but it's unlikely that you want that
15:03:04
beach
xificurC: There should be no particular reason to put your own variables in the ITER package.
17:41:52
devon
Unhappy with M-x irc, mainly because not comint based & randomly trashes command history. Any suggestions?
17:46:38
markasoftware
can someone recommend a quicklisp library for finding the roots of a polynomial with the given coefficients?
18:45:27
frodef
slightly off-topic, but can anyone tell me when I am editing a file in emacs that is under git, how can I get a buffer with a previous revision of that file?
18:53:10
frodef
not even a diff, just the plain file version that I checked in some days ago.. seems to me the most basic of operations, but somehow it's not obvious how to do it.
18:56:13
frodef
or rather, I can do M-x vc-revision-other-window, but I don't know how to name an old revision. Probably I don't understand git.
18:58:01
ck_
"23rd" even -- how embarrassing! I'll now hide before someone "off-topic!"s me out of here
18:59:12
frodef
ck_: thanks! (I'm surprised/frustrated that I can't seem to find a menu over old revisions, though.)
19:01:04
frodef
ck_: ok. I just thought I could use vc pretty much like I used to do with CVS, but I guess not.
19:02:14
ck_
you probably can, I don't have experience with that though. Many things are probably just personal preference, but it's generally accepted that magit is very polished, and its menu system is (I think) easy to pick up
22:15:26
frodef
I fell silly for asking this, but what is the preferred idiom for taking the subset of a list by some predicate?