Re:Slashdot discovers Lisp
by mahmud on Monday May 25, 2009 @03:50PM
(#625803)
Common Lisp is sometimes frighteningly more bare-metal than C. I spent all last night moving stuff from kernel-space, into user space, messing with them in Lisp and sending them back up stream to the networking stack. By hand :-)
In C, even though you work with low-level memory regions and system primitives, you're not interacting with them. By the time you see side-effects the process has long exited. In Lisp you can have open descriptors floating around in your shell where you can echo and read stuff to them; you can share a working buffer with a unix system call or signal, and see it get filled, changed and emptied! To realize that you can layer higher-level conceptual tools over these primitives, including the entire CLOS metaobject protocol, is something that's utterly gorgeous.
See what iolib does to Unix, specially see the multiplexing framework; that's right, first class CLOS classes as wrappers for poll, select, epoll and kselect; your choice. Writing specializing methods for system calls is something no C programmer could ever imagine, much less enjoy ;-)
In C, even though you work with low-level memory regions and system primitives, you're not interacting with them. By the time you see side-effects the process has long exited. In Lisp you can have open descriptors floating around in your shell where you can echo and read stuff to them; you can share a working buffer with a unix system call or signal, and see it get filled, changed and emptied! To realize that you can layer higher-level conceptual tools over these primitives, including the entire CLOS metaobject protocol, is something that's utterly gorgeous.
See what iolib does to Unix, specially see the multiplexing framework; that's right, first class CLOS classes as wrappers for poll, select, epoll and kselect; your choice. Writing specializing methods for system calls is something no C programmer could ever imagine, much less enjoy ;-)