How does language design affect various programmer metrics? - Categorizing programming languages

While a lot of Knight of the Rope's comments about Lisps and especially Scheme are correct, this is only partly true for Scheme, there's even a Gambit-C based mobile app platform that's getting a fair amount of use. Aside from a few special case oddballs you might say, I get the impression that only a few programing language academics and of course Scheme lovers are still using it, for ABET level Computer Science instruction it's been replaced by Java which is not even wrong for CS, and Python. Not sure Common Lisp is at all a language for academics anymore, but I don't follow that community.

Clojure is very much the opposite, is intended to be a very practical language thus it being hosted on other language runtimes including the JVM which I assume you're trying to get away from. But when Clojure is "Java with a human face" i.e. when it's used to wrap existing Java libraries or you do string manipulation you have a big advantage over myself since I never went further than "Hello, World." with plain Java and never learned the ecosystem.

I don't recommend it as a first Lisp unless you really want to focus on functional programming or maybe lazy evaluation, or gain experience in something you can get paid to do. For GUIs I don't think it has a good story for the reasons you outline about the Java ecosystem, but there's always the JavaScript hosted version for the tar pit of browser front end development.

Your particular intentions for spending a little time with one or more Lisps are spot on, I'd only add learning Lisp macros to the list, and taking a gander at the Common Lisp metaobject protocol, for which the book might be entirely sufficient (since you didn't mention REPL based development I assume you've already done that with one of the currently more popular languages that have that). Depends on how much you still may like object oriented programming, I've decided it's a mistake for all but a few domains where simulation is a major factor, which does includes GUIs.
I wouldn't get as much from a Lisp as others because my background in math is awful and likely to remain so, which is fine with me.

As with all languages, if I want to get started with a Lisp I need to know what text editor can deal with its syntax (don't say emacs lmao, I'm not learning that shit). Automatic indentation schemes and syntax/brace highlighting is very important for smooth-brains like me.

I see that many of them compile to C code as an intermediary, so that covers binary packaging and distribution. That leaves creating GUI applications - how do these things interface with various GUI libraries like Qt, and where do I start to understand the licensing bullshit to deal with that stuff? Do any of them have libraries for GUI building or bit-fiddling?

I can't think of a single reason to ever use OOP. Tt seems like abstraction for the sake of abstraction, yet somehow it tries to abstract something towards a human-oriented thought pattern rather than (or along with) something more useful like a generalization of different types of streams based on their commonalities. The latter seems worthwhile, the former seems retarded.

I will never force my users to use a webshit framework to modify games. I'd rather use spreadsheets or plain text files and python scripts than that.

It seems that the problem with Java originates in the desire of its creators to have The One True Way To Do [thing], and then that not being the way that anyone wanted to use. They then had to go back and make More Ways To Do [things] - always in the style of being a One True Way - until they bloated themselves up and accrued technical debts. The idea way IMO is to provide tools that people need to do their own thing in a sort of marketplace of ideas and implementations, and either curate the best results or provide tools to rank and easily select implementations. Distributed modularity, I guess.



Some of the conversation thus far about Lisps and Lispers reminds me of a conversation I had about how to structure modules in a JRPG engine.

One guy wanted a basic engine with a powerful scripting language you could use to make your own modules, but the issue there was that everyone would have their own ideas about how to build a menu or something... each person's scripts would be non-modular and incapable of interoperating with anyone else's scripts unless someone made a "base script" for like a menu or turn based battles or something. Even then, keeping up with updates to it could be painful if you modify it. This is the Lisp way.

Another guy wanted an engine with very strongly defined/bounded and powerful modules for different things, each with very limited scripting languages to do things that you'd expect a JRPG to do and nothing more. Such things being field and battle events, basically, plus minor modification of the array of data that is saved - character data, party data, and event bits/bytes. You have nowhere near the same power unless you go deep in the guts of the game engine to add new functionality for minigame modules, but it's very easy to update each module and work on them as a team.

The Lisp way gives the individual coder much more power, but it accrues social-technology debts. How does one develop a standard interface for extending and modifying someone's Lisp code in such a way that any number of people can also build on both the original engine and your modules or scripts developed for that engine? How to you structure your code when coding Lisps such that you can work on the same code base with other people, or so that I can add something to it 30 years later with a bunch of other modules installed without worrying about interoperation issues?
 
Last edited:
Java has a negative effect on programmer penis size.
If you mean that because the average Java programmer puts in an 8-hour day at his $200k+/yr job before dragging his tired bones home to his loving family, tucking his children into bed for the evening and steeling his weary soul right before his young, hot and frisky wife pounces on him again and whittles him down to a nub, then yes I agree.
 
Forth is the only proper high-level programming language. You connect a new module to your space shuttle? Just write the hardware driver directly and interactively in a concise manner! You don't have a space shuttle? Tell NASA you're fluent in Forth and they'll give you one.
 
Back