21 ms·
Response to 'Reasons why Lisp games suffer'
- ncmncm 8y agoThis was, hands-down, the single best article I have ever read about Lisp, after three decades of reading all kinds of stuff. It so far outclasses anything Paul Graham ever wrote on the subject that he (Paul) would best never mention Lisp ever again. If only it were not ("just") a reply to a shitpost, I would print it out (yes, some of us old-timers still do that) and hang it on the wall, so I can point to it when somebody mentions Lisp and say "read that first -- if you disagree, then take it up with him, and don't mention Lisp to me ever again". My Hat Is Off To You, sir.
- deleted 8y ago[deleted]
- 21 8y agoLisp lost it's last bastion, the hipster, "I'm smarter than you", "the infinite is possible", to Haskell. Enough said.
- DubiousPusher 8y agoWhat? I don't think the majority of people interested in lisp are going into work looking down their noses at people. They're probably mostly people who like to try different tools and learn new things. I don't use lisp but I loved reading through PG's ANSI Common Lisp book because it really challenged me to think about programming and problem solving in a way I never had before. I think I write better code because I did learn lisp. https://www.amazon.com/exec/obidos/ASIN/0133708756 https://www.amazon.com/exec/obidos/ASIN/0133708756
- CJefferson 8y agoGo and read http://wiki.c2.com/?BlubParadox http://wiki.c2.com/?BlubParadox . I've heard many lisp people reference this, which basically says lisp is so great that it is the best language which could possibly exist, and people who don't think that just think that because the languages they like are too stupid to let them appreciate lisp.
- peterashford 8y agoYup. I love Lisp - very glad I learned it, but I find PG's Blub Paradox essay enormously offensive.
- gnulinux 8y agoThis sort of "lispers are hipsters", "haskellers are hipsters" comments are very destructive to our community yet I see them in every single lisp thread. Very unfortunate. I only wish this will stop one day.
- 21 8y agoI have a very-very good Haskell programming friend, and quite a few times I caught him start speaking in technobabble to impress a couple of blubers. I also have a few Scala friends, and I can see the obvious Haskell envy they have, they feel the need to become good at it to prove their alphaness.
- gnulinux 8y agoSo what? My whole point is that discussing these sort of social "issues" in lisp/haskell community adds nothing to the discussion at hand. It doesn't have any implication to lisp or haskell, we learn nothing from these sort of comments. They're just visual noise, almost put as a bait to trigger an ad hominem comment chain.
- nineteen999 8y agoIn the meantime while they argue, the neanderthals in the games industry are building their products in C++ and making millions of dollars. Heathens!
- gnulinux 8y agoDoes this comment imply the only (reliable) way to make million dollars is using C++? My company uses (mostly) python and we're making millions of dollars too. It's almost as if for every different task there might be a better tool solving the problem.
- nineteen999 8y agoNo it doesn't, I think you may be reading way too much into my comment.
- dang 8y agoPlease don't post unsubstantive comments here. We particularly don't need programming language flamewars.
- FigBug 8y ago> When you speak of non lisps are ‘blub’ you disregard the actual characteristic of those languages and how they fit to the task. What does 'blub' mean?
- DubiousPusher 8y agohttp://wiki.c2.com/?BlubParadox http://wiki.c2.com/?BlubParadox
- namelosw 8y agoIt refers to Paul Graham's article about Lisp http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html Blub basically means average mainstream languages. > I don't want to hurt anyone's feelings, so to explain this point I'm going to use a hypothetical language called Blub. > As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. > But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages.
- bunderbunder 8y agoThat whole "Blub" section reads to me as a snowglobe version of the Lisp community's long-standing failure to communicate with everyone else. Graham starts with his "shockingly controversial statement" that "programming languages vary in power", which, I don't know that that is controversial, but OK. I'm with him that far. But he immediately loses me, because all of his exposition on this idea consists of beating around the bush, talking about characteristics of programming languages that are most definitely not the same thing as power, before moving on to this rather arrogant-sounding parable that makes it sound like he thinks of this "power" idea in remarkably similar terms to how colonial-era Europeans thought about "civilization" when it came to understanding why not everyone did things the way they did. I would argue, on the contrary, that, when we're talking about programming languages, "power" is a characteristic that no reasonably well-traveled programmer should feel comfortable thinking of as an objective characteristic, let alone something that can be crammed into a linear continuum. Lisp has some powerful features, yes. So does C. And the differences that a Lisp fan might say make Lisp more powerful than C correspond remarkably closely to the things that a C fan might say make C more powerful than Lisp. They're both right, too. Because any flat statement that "X is a powerful language" is incomplete. There's an unstated major premise, there - what problem are you trying to solve? That will be a big factor in determining what powers you need and don't need. Which is why, around the time that Graham was writing this essay, I was implementing my first really big solo programming project in a mix of Scheme and C. tl;dr: Yeah, what TFA's author said.
- xupybd 8y agoDoes anyone have any background on the author of this article? Sounds like they make niche games I'd love to try some out. Any recommendations?
- etiam 8y agoDocumentation for his library CEPL has full name and email. http://quickdocs.org/cepl/ http://quickdocs.org/cepl/ I'm not up to date on actual games from him. He's pretty active writing public source code https://github.com/cbaggers https://github.com/cbaggers Sometimes publishes cool video tutorials live coding 3D graphics. https://www.youtube.com/playlist?list=PL2VAYZE_4wRKKr5pJzfYD1w4tKCXARs5y https://www.youtube.com/playlist?list=PL2VAYZE_4wRKKr5pJzfYD...
- petermcneeley 8y agoLisp has been used in AAA games for scripting. https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
- monocasa 8y agoGOAL wasn't just scripting, it was the main language for the engine. In the one example I've ever seen of GOAL code, you can clearly see inline ASM for instance. Interestingly Halo used Lisp for scripting, and that rarely comes up.
- SomeCallMeTim 8y ago> GOAL encourages an imperative programming style: programs tend to consist of a sequence of events to be executed rather than the functional programming style of functions to be evaluated recursively. That alone is a pretty hard condemnation of LISP/functional for games. It's not really LISP/Scheme at that point, but a LISP-ish syntax for an imperative language. Some tasks are more innately imperative. Games (and game scripting) are in that category. Trying to force game programming to work in FP is like trying to build a computer in Minecraft: It's cool to see that it can be done, but it doesn't say anything about whether it should be done. Proving Turing Completeness doesn't mean you would want to actually write code in a Turing Machine.
- zeveb 8y agoLisp isn't a functional language (in the sense that you appear to mean; it has functions as a first-class type, of course, but that's different). This code is imperative: (tagbody start (decf x) (format t "~a~%" x) (when (plusp x) (go start))) Lisp works just fine in imperative contexts.
- wk_end 8y agoIn what sense is Lisp not an imperative language?
- 8y ago
- all2 8y agoI came in here hoping for more information on developing games in Lisp/Scheme. I liked the recommendation for implementing old games. I might take a swing at the original StarCraft (just for kicks). I've been poking around trying to sort out how to bind Chicken Scheme [0] to the Godot [1] C API. The idea is to work in Godot using C files compiled by Chicken. This should work, in theory. The engine can handle the important timing stuff (mentioned in the article), and Scheme can be used for actual game-logic and algorithms. I know a Scheme binding for Godot exists, but it hasn't been updated in quite a while. [0] https://www.call-cc.org/ https://www.call-cc.org/ [1] https://godotengine.org/ https://godotengine.org/
- Semiapies 8y agoI think we see more posts about Lisp community drama than we see posts about people actually doing things with Lisp.
- alyssaphacker 8y agoYES! I created an account after a year of lurking just to affirm your post.
- bjoli 8y agoThe lisp community has a nice history about not being a very welcoming place, with a lot of people looking up to the nice attitude of people like Erik Naggum. Things have gotten a lot better though.
- lispm 8y agoErik Naggum was not 'the Lisp community', though there were some people worshipping him on comp.lang.lisp - both from inside Lisp and outside. comp.lang.lisp was a popular forum, but not THE Lisp community. I always thought that his online behavior was kind of an ugly personality disorder.
- bjoli 8y agoI know. I should ha en put it more eloquently. But as you said, there were some people that idolised him. I found that for a long time people trying to learn lisp were confronted with really bad attitude from a loud minority. It really didn't really make people feel welcome. I am but a visitor in lisp land (I work in CL a couple of times a year), and things have become noticeably nicer since 2010.
- MrEldritch 8y agoI think that's because there's just actually more new Lisp community drama than there is actual Lisp programming.
- fulafel 8y agoExcept for the the Clojure branch of the family tree. Eg: there was this vaguely clojurey statically typed non-GC language, being targeted for games, presented at a recent Clojure conf: https://github.com/carp-lang/Carp https://github.com/carp-lang/Carp
- magicmouse 8y agoInstead of using a vague term like "power", perhaps the LISP fans should promote the concept "leverage", whereby you can talk about getting a task done with the fewest words of code. Small LISP programs can be incredibly clever, and transformation languages like LISP and FORTH are well known to win every program-shortness contest. However Assembler has always been more powerful in the sense that you can do things in Assembler that you can't do in higher level languages, because there is no direct mapping from a higher level language to many of the special instructions that exist on modern chips. So using "power" is a lamentable word choice. LISP does have problems though, many consider it a "write-only" language which transfers very poorly to other programmers. You can measure transferability of a codebase by assigning a new person to it, giving them a task, and seeing how long it takes, and how much is broken in the process. LISP is avoided by most large companies for this reason alone. Leverage and other factors are heavily outweighed in overall cost to the organization by the difficulty of transferring a code base among people.
- nradov 8y agoI thought APL (and its successor J) was the "winner" for doing the most with the fewest words of code. (~R∊R∘.×R)/R←1↓ιR
- Volt 8y agoYes, there are degrees. But everybody wants their language to be a winner, I guess.
- warbaker 8y agoI like "power." It's evocative, and it maps to the feeling you get with a good language - when your intent is made manifest with little effort, you feel powerful (and _are_ powerful).
- paulddraper 8y agoIs Assembly powerful?
- 8y ago
- sethrin 8y agoI haven't programmed in Lisp yet, but I love the idea: it seems very directly inspired by lambda calculus. However, I tend to think of it as the opposite pole of expressiveness from ASM. Lisp excels at abstraction, but is not good at bit-twiddling, or (from my limited perspective) interacting with anything that isn't Lisp. That said, I know that my perspective is incomplete at best, so I would listen very attentively to anyone who might disagree with it.
- kazinator 8y agoI made a Lisp dialect called TXR Lisp. I gave it a nice, ergonomic FFI. I took the MSDN "Your First Windows Program" which is a C sample, and translated it expression for expression: https://rosettacode.org/wiki/Window_creation#Win32.2FWin64 https://rosettacode.org/wiki/Window_creation#Win32.2FWin64 The C original is here: https://docs.microsoft.com/en-us/windows/desktop/learnwin32/your-first-windows-program https://docs.microsoft.com/en-us/windows/desktop/learnwin32/... The Lisp program recreates all of the needed C structure definitions, and binds to the needed functions from user32.dll and other libraries. Here is another TXR Lisp program which parses TCP/IP packets right out of the "pcap" style output from tcpdump: https://unix.stackexchange.com/a/379759/16369 https://unix.stackexchange.com/a/379759/16369 Lisp dialects tend to be close-to-the-metal languages whose workings can be explained using bits and bytes (even if such an explanation is not always accurate due to issues of optimization and whatnot). When I'm debugging Lisp, I think of word-sized arguments on a stack, and pointers and all those same kinds of things like when debugging a C program. Historic Lisp implementations were bootstrapped from assembly code. Lisp primitives were written as a library of machine language routines. With that, plus I/O and memory management, you just need an eval routine for interesting things to start happening. The car and cdr terms are inspired by machine instructions, and they help keep us grounded in reality.
- sethrin 8y agoThank you for the response. The article at hand suggests: > Performance (beyond the efficiency gained from appropriate algorithms) is going to be dictated from your ability to control what is being processed and when. Maybe I can’t afford a GC in the middle of my frame, maybe to get the entity count I need I really have to maintain data locality. > ANSI CL doesn’t have many provisions to allow for this kind of control. Certain implementations do have some and you can do a lot with CFFI, but at what point do the restrictions you impose on yourself making another language a better candidate? This to me suggests that while certain operations may be "close to the metal" as you say, this is not necessarily descriptive of the whole, or perhaps that "close to the metal" may mean a number of different things. Other languages seem to offer more control, perhaps at the expense of abstract expressive power. Also, while I believe your description of history is accurate as far as it goes, I had rather thought that the Lisp Machines were invented to run Lisp instructions in hardware. I'm not sure if that might argue against your point, nor if those were actually significant in the development of Lisp. Thank you once again for helping to rectify my ignorance.
- failrate 8y agoI wrote a 2d shooter in Scheme. It was decent. Ran fast as the dickens on Windows.