8 ms·
The Many Faces of an Undying Programming Language
- pjmlp 6y agoVery entertaining article, just a small remark when people count pages in Common Lisp or C++ standards, they tend to forget that standard library is also part of those pages. Something like Python. .NET, Java also isn't far from them, when language + standard library + vm reference (if any) land in dead tree form.
- imtringued 6y agoI've never understood why anyone uses the number of pages of the reference document as an argument. It feels like making fun of the hard work of people put into making the reference. The bulk of the reference probably consists of minor details that can be skipped but can also be extremely helpful when you actually need them. Should we make worse references just to appease some bean counting?
- shakow 6y ago> I've never understood why anyone uses the number of pages of the reference document as an argument I guess that, assuming that all refs have roughly the same information density, it gives a rough idea of the “size” of the language.
- jcelerier 6y agoThis assumption really doesn't hold though if you look at a couple different language standards
- rightbyte 6y agoIf you count the standard library in the size it is just an arbitrary number.
- wtetzner 6y agoUnless you're using the size of the standard as a rough measure of the complexity of creating a new implementation of the standard. If you need to provide an implementation of the standard library, then that contributes to the amount of effort required.
- KineticLensman 6y ago> the hard work of people put into making the reference In my 1990 edition of Steele's Common Lisp, The Language, even the index is a work of love. [Example spoiler] After the entry for Michelangelo (turtle), who is mentioned on page 440, the page numbers for Michelangelo (artist) are 1475-1564.
- einpoklum 6y agoAt least in C++ - after the initial spec, the language was literally _built_ on exploiting those minor details. A lot, if not most, of C++'s magic and its ugliness goes through those weird minor details.
- bhaak 6y ago> when language + standard library + vm reference (if any) land in dead tree form. I find that comment quite funny, considering that the Java specifications came out in dead tree form already for Java 1.0. :-)
- tsarfox 6y agoAuthor, here. The n ≈ 163 pages figure I give for R6RS includes the standard library and description of formal semantics. I'd like to clarify that I didn't mean to imply that larger standards are worse. Quite the opposite, actually. That's why I enjoy R6RS. As shakow pointed out, it's a means of giving a rough estimate of size. Common Lisp has much more than Scheme in terms of what's included.
- rcarmo 6y agoI went down this rabbit hole last year: https://taoofmac.com/space/blog/2019/06/20/2310 https://taoofmac.com/space/blog/2019/06/20/2310 I fared a bit better with Gerbil, enough to build multi-arch Docker images for it: https://github.com/insightfulsystems/ubuntu-gerbil https://github.com/insightfulsystems/ubuntu-gerbil These days I mess around with Janet a bit, and quite like Fennel, but lack the time to do substantial bits of code in either.
- Santosh83 6y ago> Clojure's license makes it a complete non starter for me, sorry. Live free or die. Can someone ELI5 this? Why is Clojure's license problematic?
- yomly 6y agoI am by no means an expert on things to do with licensing but Clojure is under Eclipse so IIRC if you distribute your code onto the user's machine they have a right to the source. This can make on-prem solutions for a product slightly hairy. Please feel free to correct me if this is inaccurate
- dkersten 6y ago> This can make on-prem solutions for a product slightly hairy. EPL has the restriction that if you distribute binaries, you have to make the source available (you must state in your license where to obtain it). It seems that listing your dependencies libraries and linking to their websites (which I think is good practice anyway even with less restrictive licenses) would be enough, as long as you didn’t modify them. EPL allows linked modules to be distributed under whatever license you want, so in a commercial product doesn’t apply to your closed source code or any libraries that choose not to be distributed under EPL. So for on prem distribution, you just need to include a license file that lists all of your EPL (or other licenses that require the license to be included like MIT) with a link to where to get the code. Your own code is unaffected. This isn’t GPL compatible, though, because GPL does “infect” linked modules too. However IANAL.
- macmac 6y agoThe problem with the EPL is that if your software is a derivative work of EPL licensed software, the EPL applies your software, including the obligation to provide access to the source of your software to the entities to which it is distributed. Determining if a work is a derivative work in software is far from straightforward. The EPL FAQ for instance points out that this might be an issue when using software that generates code.
- agambrahma 6y ago> Emacs Lisp, or Elisp, is generally hated That seems unnecessary; of all the options above, it might be the one seeing the /most/ active development, and (given that "Guile-macs" isn't happening anytime soon) will continue to be in active development for a long time to come.
- alpaca128 6y agoYes, it's not ideal because of its lack of tail call optimisation, but as a Vim user I'm kind of envious now and then when I try to write a custom function myself. Then again afaik Vim doesn't throw errors when you have a bracket imbalance in comments(!), so that's nice.
- minerjoe 6y ago> errors ... bracket imbalance in comments Not sure where this is coming from. Elisp doesn't error on anything in comments.
- alpaca128 6y agoI think it was due to org-mode, which has its share of bugs and glitches. Either way Emacs refused to evaluate a function because I had a commented out line with a closing parentheses in it, and would only accept it after I deleted that line.
- Jtsummers 6y agoIf you can reproduce it it would be worth submitting a bug report. Comments like: (defun foo () ;; old code) new code) Should just get discarded when parsing/running the lisp code. There was a lot of code like that in my old .emacs file back when I was learning how I wanted it to behave but didn't want to delete old configurations (before I got into the git everything habit, especially).
- alpaca128 6y ago
- ache7 6y agoAbout that "write-ppm" example. Using PPM type 3 will increase the size of pixel data by 2-4 times. Use type 6.
- cafard 6y agoI clicked just be sure that it wasn't COBOL....
- pjmlp 6y agoWell, modern COBOL supports RAII, collections, OOP, .NET/JVM backends in addition to AOT to native code, ....
- waffletower 6y ago"Clojure's license makes it a complete non starter for me, sorry. Live free or die." I don't think you understand what the word "free" means.
- timdeve 6y agoIf you are interested in game development and lisp, may I suggest having a look at https://github.com/carp-lang/Carp https://github.com/carp-lang/Carp ? It's "A statically typed lisp, without a GC, for real-time applications.", the Gitter is quite friendly as well.