On 01/08/2026 6:46 AM, Lawrence DrCOOliveiro wrote:
On Fri, 31 Jul 2026 12:21:51 -0300, Anton Antimo wrote:
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:What a dumb idea. Common Lisp is full of legacy baggage to cater to
The tragedy is not using Common Lisp for everything.
I loved this bit and I have a feeling you're correct.
proprietary pre-POSIX OSes which are now extinct.
As always, you start off by mouthing your own ignorance.
* OpenVMS is both sold and ported to the x86. https://vmssoftware.com/
* OS/2 is being sold and supported, under a new brand name.
https://www.arcanoae.com/
Flecks of foam and blood land on the keyboard. No birds sing; what once
was grass is now dust and ash.
Still he types, faster and faster now, singing and chanting.
From the computer in the shack a cable runs. The camera follows it, to its end: copper cores poking through charred insulation.
Fade.
On 01/08/2026 11:59 AM, steve g wrote:
Anton Antimo <anton@safunu.org> writes:
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:Wait until you read LISP:Lisp In Small Pieces. it's published in france.
[...]
Sadly we've also ended up with programmers who think the machines
they program for are giant PDP-11s, and as a result machines which >>>>>> spend a huge amount of effort pretending to be giant PDP-11s.
It's all a tragedy.
The tragedy is not using Common Lisp for everything.
I loved this bit and I have a feeling you're correct. My little
experience with Common Lisp is that it allows me to write the equivalent >>> fast code that I'd write in C, where speed matters. In other words, I
seem to gain nothing (other than more work) by writing typical
applications in C.
I read the French edition. /Principes d'Implantation de Scheme et
Lisp/, and it's now available as ebook on Amazon. I recommend it,
it's a really fun book. I believe it's the /second edition/, and
may have a little bit different content than the English one, which
I haven't read.
Do you read French?
On Tue, 04 Aug 2026 22:47:33 -0400, steve g wrote:
Lawrence DrCOOliveiro <ldo@nz.invalid> writes:
There is no OS kernel you have access to, that uses garbage
collection for internal memory management. Just admit it instead of
trying to bullshit.
well thanks. as Microsoft's Singularity apparently uses a GC.
Try using past tense. ItrCOs a dead project. Wonder why?
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
On 01/08/2026 11:59 AM, steve g wrote:
Anton Antimo <anton@safunu.org> writes:
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:Wait until you read LISP:Lisp In Small Pieces. it's published in france. >>>
[...]
Sadly we've also ended up with programmers who think the machines >>>>>>> they program for are giant PDP-11s, and as a result machines which >>>>>>> spend a huge amount of effort pretending to be giant PDP-11s.
It's all a tragedy.
The tragedy is not using Common Lisp for everything.
I loved this bit and I have a feeling you're correct. My little
experience with Common Lisp is that it allows me to write the equivalent >>>> fast code that I'd write in C, where speed matters. In other words, I >>>> seem to gain nothing (other than more work) by writing typical
applications in C.
I read the French edition. /Principes d'Implantation de Scheme et
Lisp/, and it's now available as ebook on Amazon. I recommend it,
it's a really fun book. I believe it's the /second edition/, and
may have a little bit different content than the English one, which
I haven't read.
Do you read French?
No I do not read french; just the algorithms. It is a fantastic book. I
can also apparently read german algorithms but the comments and the docstrings can be difficult.
On 31/07/2026 11:21 PM, Anton Antimo wrote:
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
[...]
Sadly we've also ended up with programmers who think the machines
they program for are giant PDP-11s, and as a result machines which
spend a huge amount of effort pretending to be giant PDP-11s.
It's all a tragedy.
The tragedy is not using Common Lisp for everything.
I loved this bit and I have a feeling you're correct. My little
experience with Common Lisp is that it allows me to write the equivalent
fast code that I'd write in C, where speed matters. In other words, I
seem to gain nothing (other than more work) by writing typical
applications in C.
The fun is in writing atypical applications, and then finding yourself looking at the disassembly in SBCL.
Personally, I love writing in C, even though it's more verbose.
That said, and to be mildly on-topic in comp.lang.lisp, have
* /The Common Lisp Condition System/, and
* /Programming Algorithms in Lisp/
been mentioned before as resources for learning common lisp?
These two books look lovely in my programming shelf, next to
* /Common Lisp Recipes/, and
* /Practical Common Lisp/,
which must have been mentioned. They're interspersed with
* /Low Level Programming/,
* /String Algorithms in C/, and
* /The Joys of Hashing/,
which come in handy when you want to implement your own Common
Lisp system.
Enjoy!
On 05/08/2026 10:54 AM, Lawrence DrCOOliveiro wrote:
On Tue, 04 Aug 2026 22:47:33 -0400, steve g wrote:
Lawrence DrCOOliveiro <ldo@nz.invalid> writes:
There is no OS kernel you have access to, that uses garbage
collection for internal memory management. Just admit it instead of
trying to bullshit.
well thanks. as Microsoft's Singularity apparently uses a GC.
Try using past tense. ItrCOs a dead project. Wonder why?
Now, now, Lawrence, you're totally misunderstanding the situation.-a As always.-a Garbage collection is /not bad/.
To be fair, a big part of my struggle is the thick layer of Racket
on top of POSIX. For instance, try to locate the equivalent
select-call on it. It's so hard to recognize exactly how your Racket
maps to the lower level. I understand that may a strong point of
Racket's design, but it certainly hits my weakness.
Let Over Lambda
Doug Hoyte, 2008
ISBN 978-1-4357-1275-1
This book is about macros, that is programs that write programs.
Macros are what make lisp the greatest programming language in the
world. When used properly, macros enable amazing feats of
abstraction, programmer productivity, and code efficiency and
security that are unheard of elsewhere. Macros let you do things
you simply cannot do in other languages.
On Wed, 05 Aug 2026 13:13:42 -0300, Anton Antimo wrote:
Given this is posted to comp.lang.c, itrCOs always worth mentioning
these are not macros in the style of #define, but they work at the AST
level. Which is really the only sensible way to implement a workable
macro system.
And no longer unique to Lisp.
Now is there some particular book you feel is worth my time in German?
For either studying some C or Lisp arcana? Preferably not some basics,
as those are already covered in English.
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
Now is there some particular book you feel is worth my time in German?
For either studying some C or Lisp arcana? Preferably not some basics,
as those are already covered in English.
my answer would be using ITU (international morse code) and looking at American (or military) CW (continious wave). Many people claim they have learned both from just listening to it on the radio.
Unfortunately radio is all but dead. This is a good thing; less "traffic police".
As to english books I do have an excellent book one of my teachers gave
me. it contains all the funky rules of american enhlish. I am not at
"home" right now so I look it up and I can't remeber the name. She said
just read and re-scim this book before writing papers in college. This
is bothering me now...
I personally think that you need to practice the language to understand
it.
On Wed, 05 Aug 2026 13:13:42 -0300, Anton Antimo wrote:
To be fair, a big part of my struggle is the thick layer of Racket
on top of POSIX. For instance, try to locate the equivalent
select-call on it. It's so hard to recognize exactly how your Racket
maps to the lower level. I understand that may a strong point of
Racket's design, but it certainly hits my weakness.
Sounds very Java-like. Though perhaps not as irritating as Java.
Compare Python <https://docs.python.org/3/library/select.html> --
thatrCOs less than 10 pages (i.e. number of times I have to hit
Page-Down in the browser) of docs.
Let Over Lambda
Doug Hoyte, 2008
ISBN 978-1-4357-1275-1
This book is about macros, that is programs that write programs.
Macros are what make lisp the greatest programming language in the
world. When used properly, macros enable amazing feats of
abstraction, programmer productivity, and code efficiency and
security that are unheard of elsewhere. Macros let you do things
you simply cannot do in other languages.
Given this is posted to comp.lang.c, itrCOs always worth mentioning
these are not macros in the style of #define, but they work at the AST
level. Which is really the only sensible way to implement a workable
macro system.
And no longer unique to Lisp.
I try to keep in shape by reading books in languages I'm not using. Or converse with people about programming languages I don't use anymore,
such as Pascal.
I've managed to keep my French more or less intact, but could use a
brush up on Danish, and of course German as I said. I'm sure I'll
find something to inspire me to keep practicing German. After all,
I'm struggling to read Asterisk and Obelisk in Latin.
Best wishes, and happy language studies in comp.lang.lisp!
I admit I'm not sure why the select system call seems to be missing from
this selection of networking functions, so I'm impelled to ask, what is
is that you use select for, in Python?
On 07/08/2026 7:36 AM, steve g wrote:
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
Now is there some particular book you feel is worth my time in German?
For either studying some C or Lisp arcana?-a Preferably not some basics, >>> as those are already covered in English.
my answer would be using ITU (international morse code) and looking at
American (or military) CW (continious wave). Many people claim they have
learned both from just listening to it on the radio.
Unfortunately radio is all but dead. This is a good thing; less "traffic
police".
As to english books I do have an excellent book one of my teachers gave
me. it contains all the funky rules of american enhlish. I am not at
"home" right now so I look it up and I can't remeber the name. She said
just read and re-scim this book before writing papers in college. This
is bothering me now...
I personally think that you need to practice the language to understand
it.
I try to keep in shape by reading books in languages I'm not using.-a Or converse with people about programming languages I don't use anymore,
such as Pascal.
I've managed to keep my French more or less intact, but could use a
brush up on Danish, and of course German as I said.-a I'm sure I'll
find something to inspire me to keep practicing German.-a After all,
I'm struggling to read Asterisk and Obelisk in Latin.
Best wishes, and happy language studies in comp.lang.lisp!
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
I admit I'm not sure why the select system call seems to be missing from
this selection of networking functions, so I'm impelled to ask, what is
is that you use select for, in Python?
Select is used to listening to a bunch of file descriptors
simultaneously and unblocking as soon as data becomes available on one
or more of the fd's. These days it's somewhat superseded by epoll or io_uring or a few other alternatives.
I actually don't see any of these in the sbcl manual, though maybe I
didn't look hard enough. I'd expect to see it in the streams or
concurrency modules. You could use threads and mailboxes instead, but
that's often overkill, especially with posix threads.
I see a mention of:
*Recursive Event Loop*: SBCL provides a recursive event loop
(serve-event) for doing non-blocking IO on multiple streams without
using threads.
But I don't see anything more about that in the manual. There's a
reddit thread saying it's poorly supported:
https://old.reddit.com/r/Common_Lisp/comments/kdk6mq/how_to_use_serveevent_from_sbcl/
Anyway that is basically what select is for.
On 06/08/2026 5:48 AM, Lawrence DrCOOliveiro wrote:
On Wed, 05 Aug 2026 13:13:42 -0300, Anton Antimo wrote:
To be fair, a big part of my struggle is the thick layer of RacketSounds very Java-like. Though perhaps not as irritating as Java.
on top of POSIX. For instance, try to locate the equivalent
select-call on it. It's so hard to recognize exactly how your Racket
maps to the lower level. I understand that may a strong point of
Racket's design, but it certainly hits my weakness.
Compare Python <https://docs.python.org/3/library/select.html> --
thatrCOs less than 10 pages (i.e. number of times I have to hit
Page-Down in the browser) of docs.
I admit I'm not sure why the select system call seems to be missing from
this selection of networking functions, [...]
For select (called unix-fast-select in SBCL), see sb-unix.
On Mon, 10 Aug 2026 17:41:30 -0300, Anton Antimo wrote:
For select (called unix-fast-select in SBCL), see sb-unix.
select(2) is considered an archaic way of doing things these days,
because of its ABI limitations. The modern way is poll() ><https://manpages.debian.org/poll(2)> (POSIX) or even epoll() ><https://manpages.debian.org/epoll(7)> (Linux-specific).
On Mon, 10 Aug 2026 17:41:30 -0300, Anton Antimo wrote:
For select (called unix-fast-select in SBCL), see sb-unix.
select(2) is considered an archaic way of doing things these days,
because of its ABI limitations. The modern way is poll() <https://manpages.debian.org/poll(2)> (POSIX) or even epoll() <https://manpages.debian.org/epoll(7)> (Linux-specific).
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
On 06/08/2026 5:48 AM, Lawrence DrCOOliveiro wrote:
On Wed, 05 Aug 2026 13:13:42 -0300, Anton Antimo wrote:
To be fair, a big part of my struggle is the thick layer of RacketSounds very Java-like. Though perhaps not as irritating as Java.
on top of POSIX. For instance, try to locate the equivalent
select-call on it. It's so hard to recognize exactly how your Racket
maps to the lower level. I understand that may a strong point of
Racket's design, but it certainly hits my weakness.
Compare Python <https://docs.python.org/3/library/select.html> --
thatrCOs less than 10 pages (i.e. number of times I have to hit
Page-Down in the browser) of docs.
I admit I'm not sure why the select system call seems to be missing from
this selection of networking functions, [...]
It would be like writing C in Lisp notation. For select (called unix-fast-select in SBCL), see sb-unix.
(defun wait-for-stdin-select ()
(sb-alien:with-alien ((read-fds (sb-alien:struct sb-unix:fd-set)))
(sb-unix:fd-zero read-fds)
(sb-unix:fd-set 0 read-fds)
(format t "Waiting up to 5 seconds for input on stdin... Type something!~%")
(force-output)
(multiple-value-bind (count err)
(sb-unix:unix-fast-select 1 (sb-alien:addr read-fds) nil nil 5 0)
(cond
((null count)
(format t "Select failed with errno: ~A~%" err))
((zerop count)
(format t "Timeout! No input received.~%"))
((sb-unix:fd-isset 0 read-fds)
(format t "Data is ready to be read from stdin!~%"))
(t
(format t "Something else woke up select!~%"))))))
;; run it
(wait-for-stdin-select)
https://man.freebsd.org/cgi/man.cgi?kqueue
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
https://man.freebsd.org/cgi/man.cgi?kqueue
Is this something like io_uring? Is it just for i/o on open fd's or can
you also use it for stuff like opening files?
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> wrote:
I've found the Common Lisp macro system annoying enough that I rarely
use it. I'm OK with functions most of the time, and CLOS the rest of
the time. And only resort to macros when I can't do anything else in
the situation.
It is so weird that people use a language whose defining feature is the incremental construction of languages and then say they don't use that feature. I mean, I'm aware people do that, but it's just so fucking weird.
On 12/08/2026 11:59 AM, Paul Rubin wrote:
Is this something like io_uring? Is it just for i/o on open fd's or canThe kqueue() is for open file descriptors, created as sockets or open
you also use it for stuff like opening files?
files, or anything else the FreeBSD kernel decides is a file. I'm not
aware of any interface to create one and open a file with the same func-
tion call.
I _think_ what Paul was asking was is it possible to get notified
when a specific file in the file system is opened. If that's what
he's asking, then the answer is: yes kqueue/kevent can do that. You
open the file in question using O_PATH, and then create a kevent
using that descriptor with filter EVFILT_VNODE and event NOTE_OPEN.
On 09/08/2026 4:52 PM, tfb wrote:
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> wrote:No the subject of /weird/, I've also found it highly bizarre, if not
outright disturbing, that people don't use do ... while(); in C. It's
an eminently useful structured programming pattern.
On the subject of Common Lisp, I find it more than disturbing when a
codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
I _think_ what Paul was asking was is it possible to get notified when a specific file in the file system is opened.
On 11/08/2026 4:41 AM, Anton Antimo wrote:
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
On 06/08/2026 5:48 AM, Lawrence DrCOOliveiro wrote:
On Wed, 05 Aug 2026 13:13:42 -0300, Anton Antimo wrote:
To be fair, a big part of my struggle is the thick layer of RacketSounds very Java-like. Though perhaps not as irritating as Java.
on top of POSIX. For instance, try to locate the equivalent
select-call on it. It's so hard to recognize exactly how your Racket >>>>> maps to the lower level. I understand that may a strong point of
Racket's design, but it certainly hits my weakness.
Compare Python <https://docs.python.org/3/library/select.html> --
thatrCOs less than 10 pages (i.e. number of times I have to hit
Page-Down in the browser) of docs.
I admit I'm not sure why the select system call seems to be missing from >>> this selection of networking functions, [...]
It would be like writing C in Lisp notation. For select (called
unix-fast-select in SBCL), see sb-unix.
(defun wait-for-stdin-select ()
(sb-alien:with-alien ((read-fds (sb-alien:struct sb-unix:fd-set)))
(sb-unix:fd-zero read-fds)
(sb-unix:fd-set 0 read-fds)
(format t "Waiting up to 5 seconds for input on stdin... Type something!~%")
(force-output)
(multiple-value-bind (count err)
(sb-unix:unix-fast-select 1 (sb-alien:addr read-fds) nil nil 5 0) >> (cond
((null count)
(format t "Select failed with errno: ~A~%" err))
((zerop count)
(format t "Timeout! No input received.~%"))
((sb-unix:fd-isset 0 read-fds)
(format t "Data is ready to be read from stdin!~%"))
(t
(format t "Something else woke up select!~%"))))))
;; run it
(wait-for-stdin-select)
Thank you. This is indeed helpful.
Unhelpfully, Lawrence is always talking about some sort of select in
Python, and then talks about polling in Linux, when he knows we don't
care about the Linux kernel here in comp.lang.lisp, because the Steel
Banks Common Lisp encapsulates the kernel for us.
And no, I don't know why Lawrence is always pretending to be a Python influencer here in comp.lang.lisp. I hope he's getting paid for it.
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
https://man.freebsd.org/cgi/man.cgi?kqueue
Is this something like io_uring? Is it just for i/o on open fd's or can
you also use it for stuff like opening files?
Alan Bawden <alan@csail.mit.edu> writes:
I _think_ what Paul was asking was is it possible to get notified when a
specific file in the file system is opened.
No in linux that's called inotify. io_uring is basically an alternative system call interface that's relatively new, and maybe not complete.
You send off a request to do the system call, and get back a queued
response when the call is completed, unlike traditional syscalls that
appear to be synchronous.
On the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the place.
:)
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
On the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the place.
:)
Perl was a major advance on, I would say, two counts: it popularized
regular expressions, and it popularized hash tables.
Putting those two
features together made for an extremely useful high-level language,
which is what I think finally killed BASIC.
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
On the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the place.
:)
Perl was a major advance on, I would say, two counts: it popularized
regular expressions, and it popularized hash tables. Putting those two features together made for an extremely useful high-level language,
which is what I think finally killed BASIC.
On Wed, 12 Aug 2026 03:23:45 -0400, Alan Bawden wrote:
I _think_ what Paul was asking was is it possible to get notified
when a specific file in the file system is opened. If that's what
he's asking, then the answer is: yes kqueue/kevent can do that. You
open the file in question using O_PATH, and then create a kevent
using that descriptor with filter EVFILT_VNODE and event NOTE_OPEN.
There is no POSIX API for this. Linux has inotify(7) for watching
particular files, and certain kinds of directory operations, and
fanotify(7) for more general watching of entire
directories/filesystems.
<https://manpages.debian.org/inotify(7)> <https://manpages.debian.org/fanotify(7)>
Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> writes:
On 12/08/2026 11:59 AM, Paul Rubin wrote:
Is this something like io_uring? Is it just for i/o on open fd's or can >>> you also use it for stuff like opening files?The kqueue() is for open file descriptors, created as sockets or open
files, or anything else the FreeBSD kernel decides is a file. I'm not
aware of any interface to create one and open a file with the same func-
tion call.
I _think_ what Paul was asking was is it possible to get notified when a specific file in the file system is opened. If that's what he's asking,
then the answer is: yes kqueue/kevent can do that. You open the file in question using O_PATH, and then create a kevent using that descriptor
with filter EVFILT_VNODE and event NOTE_OPEN.
On 2026-08-13 04:18, Lawrence DrCOOliveiro wrote:
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
On the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
-a-a https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the place.
:)
Perl was a major advance on, I would say, two counts: it popularized
regular expressions, and it popularized hash tables.
Regexps were popular from many Unix tools before Perl came up.
And hash tables were popular from Awk, which influenced Perl
as well.
Putting those two
features together made for an extremely useful high-level language,
which is what I think finally killed BASIC.
I don't see how you could come to that conclusion. Some folks
abandoned BASIC as early as possible, i.e. with any language
that is in any respect "better" (and there were many), and I
know other folks that still use a MS BASIC variant these days
for scripting. - Is it dead, is it alive? - Who cares...
On 2026-08-13 04:18, Lawrence DrCOOliveiro wrote:
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
Perl was a major advance on, I would say, two counts: it popularizedOn the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the place.
:)
regular expressions, and it popularized hash tables.
Regexps were popular from many Unix tools before Perl came up.
And hash tables were popular from Awk, which influenced Perl as well.
Janis Papanagnou <janis_papanagnou+ng@hotmail.com> writes:
On 2026-08-13 04:18, Lawrence DrCOOliveiro wrote:
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
Perl was a major advance on, I would say, two counts: it popularizedOn the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the place. >>>> :)
regular expressions, and it popularized hash tables.
Regexps were popular from many Unix tools before Perl came up.
It was Ken Thompson who first put them in such practical use. And I
would guess it was in ed. And from ed, grep sprung as an executable.
And hash tables were popular from Awk, which influenced Perl as well.
And the reason I don't use Perl myself: if the program gets larger, I
choose Common Lisp. The rich syntax of Perl has never been too kind on
me, but I always wrote Perl happy (unlike Java, which always had the
same fate of Basic [to me]).
On 2026-08-13 17:25, Anton Antimo wrote:
Janis Papanagnou <janis_papanagnou+ng@hotmail.com> writes:
On 2026-08-13 04:18, Lawrence DrCOOliveiro wrote:
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
Perl was a major advance on, I would say, two counts: it popularizedOn the subject of Common Lisp, I find it more than disturbing when >>>>>> a codebase lacks the basic usage of hash tables.
-a-a-a https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the place. >>>>> :)
regular expressions, and it popularized hash tables.
Regexps were popular from many Unix tools before Perl came up.
It was Ken Thompson who first put them in such practical use.-a And I
would guess it was in ed.-a And from ed, grep sprung as an executable.
Yes, and add all the grep variants, then sed, awk, pager programs,
ex/vi, expr, and more (tcl, m4, lex may be amongst them but I'm not
sure they had regexps from the beginning).
And there was a C-library available, so one could easily add regexp
functions to own tools!
And hash tables were popular from Awk, which influenced Perl as well.
And the reason I don't use Perl myself: if the program gets larger, I
choose Common Lisp.-a The rich syntax of Perl has never been too kind on
me, but I always wrote Perl happy (unlike Java, which always had the
same fate of Basic [to me]).
Oh, I've never seen Java and Basic mentioned in one sentence before.
At least we have got some nice abbreviated forms for regex elements
from Perl; mostly syntactic sugar, maybe, but very useful, IMO. Good
that they spread also into other regexp supporting tools so that you
don't have to buy Perl just for the accommodating regexp formulations.
Janis
Janis Papanagnou <janis_papanagnou+ng@hotmail.com> writes:
On 2026-08-13 04:18, Lawrence DrCOOliveiro wrote:
Perl was a major advance on, I would say, two counts: it
popularized regular expressions, and it popularized hash tables.
Regexps were popular from many Unix tools before Perl came up.
It was Ken Thompson who first put them in such practical use. And I
would guess it was in ed. And from ed, grep sprung as an executable.
And hash tables were popular from Awk, which influenced Perl as
well.
The rich syntax of Perl has never been too kind on me, but I always
wrote Perl happy (unlike Java, which always had the same fate of
Basic [to me]).
And the reason I don't use Perl myself: if the program gets larger,
I choose Common Lisp.
On Mon, 10 Aug 2026 17:41:30 -0300, Anton Antimo wrote:
For select (called unix-fast-select in SBCL), see sb-unix.
select(2) is considered an archaic way of doing things these days,
because of its ABI limitations. The modern way is poll() <https://manpages.debian.org/poll(2)> (POSIX) or even epoll() <https://manpages.debian.org/epoll(7)> (Linux-specific).
On 2026-08-13 17:25, Anton Antimo wrote:
Janis Papanagnou <janis_papanagnou+ng@hotmail.com> writes:
On 2026-08-13 04:18, Lawrence DrCOOliveiro wrote:It was Ken Thompson who first put them in such practical use. And I
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
Perl was a major advance on, I would say, two counts: it popularizedOn the subject of Common Lisp, I find it more than disturbing when >>>>>> a codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the place. >>>>> :)
regular expressions, and it popularized hash tables.
Regexps were popular from many Unix tools before Perl came up.
would guess it was in ed. And from ed, grep sprung as an executable.
Yes, and add all the grep variants, then sed, awk, pager programs,
ex/vi, expr, and more (tcl, m4, lex may be amongst them but I'm not
sure they had regexps from the beginning).
And there was a C-library available, so one could easily add regexp
functions to own tools!
And hash tables were popular from Awk, which influenced Perl as well.And the reason I don't use Perl myself: if the program gets larger,
I
choose Common Lisp. The rich syntax of Perl has never been too kind on
me, but I always wrote Perl happy (unlike Java, which always had the
same fate of Basic [to me]).
Oh, I've never seen Java and Basic mentioned in one sentence before.
At least we have got some nice abbreviated forms for regex elements
from Perl; mostly syntactic sugar, maybe, but very useful, IMO. Good
that they spread also into other regexp supporting tools so that you
don't have to buy Perl just for the accommodating regexp formulations.
On 2026-08-13 04:18, Lawrence DrCOOliveiro wrote:
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
On the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the place.
:)
Perl was a major advance on, I would say, two counts: it popularized
regular expressions, and it popularized hash tables.
Regexps were popular from many Unix tools before Perl came up.
And hash tables were popular from Awk, which influenced Perl
as well.
On 2026-08-13 04:18, Lawrence DrCOOliveiro wrote:
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
Perl was a major advance on, I would say, two counts: it popularizedOn the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the place. >>>> :)
regular expressions, and it popularized hash tables.
Regexps were popular from many Unix tools before Perl came up.
It was Ken Thompson who first put them in such practical use. And I
would guess it was in ed. And from ed, grep sprung as an executable.
And hash tables were popular from Awk, which influenced Perl as well.
And the reason I don't use Perl myself: if the program gets larger, I
choose Common Lisp. The rich syntax of Perl has never been too kind on
me, but I always wrote Perl happy (unlike Java, which always had the
same fate of Basic [to me]).
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:I would not call popularizing regular expression an advance.
On the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the
place. :)
Perl was a major advance on, I would say, two counts: it popularized
regular expressions, and it popularized hash tables. Putting those two features together made for an extremely useful high-level language,
which is what I think finally killed BASIC.
In article <115jbp0$189sr$1@dont-email.me>,
Janis Papanagnou <janis_papanagnou+ng@hotmail.com> wrote:
On 2026-08-13 04:18, Lawrence DrCOOliveiro wrote:
Perl was a major advance on, I would say, two counts: it popularized
regular expressions, and it popularized hash tables.
Regexps were popular from many Unix tools before Perl came up.
And hash tables were popular from Awk, which influenced Perl
as well.
Hash tables for fast lookups had been known for decades before
awk was written, and regular expressions applied to text
processing predate Unix by some years. Thompson's paper
described a technique (what has come to be known as "Thompson's Construction") used on the IBM 7090 computer, predating Multics.
[...]
On Thu, 13 Aug 2026 02:18:14 -0000 (UTC)
Lawrence DrCOOliveiro <ldo@nz.invalid> wrote:
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
On the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the
place. :)
Perl was a major advance on, I would say, two counts: it popularized
regular expressions, and it popularized hash tables. Putting those two
features together made for an extremely useful high-level language,
which is what I think finally killed BASIC.
I would not call popularizing regular expression an advance.
IMHO, their popularity is rather unfortunate fact of computing life.
They are major attractor of mistakes and major source of surprize.
On 2026-08-14 14:30, Michael S wrote:
On Thu, 13 Aug 2026 02:18:14 -0000 (UTC)
Lawrence DrCOOliveiro <ldo@nz.invalid> wrote:
On Wed, 12 Aug 2026 10:16:25 +0200, bixbox wrote:
On the subject of Common Lisp, I find it more than disturbing when
a codebase lacks the basic usage of hash tables.
-a-a https://www.sbcl.org/manual/#hash-table-extensions
unless you find some code base that use hash table all over the
place. :)
Perl was a major advance on, I would say, two counts: it popularized
regular expressions, and it popularized hash tables. Putting those two
features together made for an extremely useful high-level language,
which is what I think finally killed BASIC.
I would not call popularizing regular expression an advance.
Thanks for your opinion.
IMHO, their popularity is rather unfortunate fact of computing life.
They are major attractor of mistakes and major source of surprize.
Yes mistakes can happen everywhere, even when writing of posts
("surprize"). :-)-a And surprises appear where ignorance rules.
Regexps, OTOH, while appearing cryptic to the uninitiated, allow
in a compact way powerful search and match expression. Emulating
them by code is IME much more error-prone, though. They actually
help to reduce programming errors; this is my experience. (YMMV.)
Personally I used and appreciated them from the beginning. And
whenever I came in system contexts where they were not available
(back then typically in MS contexts) I cursed these systems for
their outdated primitive concepts that just made ones live hard.
You may be too old to learn or master them now but for the younger
folks around I strongly suggest to learn the concept of Regular
Expressions and identify where they can advantageously be used. It
certainly pays!
Janis
[...]
While I think it is reasonable to learn the ideas of regular
expressions, and a little of the simplest and most common types, I don't think it is practical for anyone to learn to "master" regexs.
For one thing, there are a dozen different variations.
And while a lot of
people find them useful on occasion, few need them regularly enough to
be confident in writing them (or reading them, which can often be harder).
Fortunately, there is no good reason for mastering them unless you
really do have a lot of use of them.
There are countless online
"generator" sites for them, as well as for testing them or interpreting existing ones (when you are faced with the "fun" of debugging someone
else's regex).
Like most things, they can be a useful tool, but some people get overly smart about them and produce monstrosities that no one understands and
are impossible to debug or maintain.-a Keep them reasonable, and they are fine.
While I think it is reasonable to learn the ideas of regular[...]
expressions, and a little of the simplest and most common types, I
don't think it is practical for anyone to learn to "master" regexs.
For one thing, there are a dozen different variations. And while a
lot of people find them useful on occasion, few need them regularly
enough to be confident in writing them (or reading them, which can
often be harder).
I've never really used Basic and while I tried dove into Java with a
lot of enthusiasm (as I did with C++ after feeling I was very good
with C), I really couldn't continue---too much bureaucracy, I felt.
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 74 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 47:45:06 |
| Calls: | 1,100 |
| Files: | 1,339 |
| Messages: | 275,630 |