5 ms·
> The most powerful programming language is Lisp. If you don't know Lisp (or its variant, Scheme), you don't know what it means for a programming language to be
by gamache 10y ago
> The most powerful programming language is Lisp. If you don't know Lisp (or its variant, Scheme), you don't know what it means for a programming language to be powerful and elegant. Once you learn Lisp, you will see what is lacking in most other languages.
Then:
> My favorite programming languages are Lisp and C. However, since around 1992 I have worked mainly on free software activism, which means I am too busy to do much programming. Around 2008 I stopped doing programming projects. As a result, I have not had time or occasion to learn newer languages such as Perl, Python, PHP or Ruby.
- sdegutis 10y ago...or Java or C# or Scala or Haskell or Rust or OCaml or... There's a whole lot to the programming world than disproportionately popular dynamic languages. What is so great about Lisp that other languages don't have? Macros? Simple syntax? I mean, that's basically it, right? This is just fanboyism for a language he has nostalgia for. Nothing else.
- outworlder 10y agoIt's powerful and elegant, as he puts it. I happen to agree. It does not mean that other programming languages do not have merits though. Also, is it really "nostalgia" if the language is still in use? Some dialects, even more so.
- nickpsecurity 10y agoIt's a combination of code/data equivalence, syntax that makes that useful in development flow, ability to do DSL's, and conceptual simplicity of the core features. I mean, basic LISP interpreter takes a page or two to write in the language with that interpreter able to bootstrap features of about any other. Combining that with a professional LISP can have a profound, combined effect on people that irritates them when they use tools with less power. Edit for nice example of ot making hard things easier: https://news.ycombinator.com/item?id=9699065 https://news.ycombinator.com/item?id=9699065
- jwdunne 10y agoIt's not about what other languages don't have. It's that they can't have something that Lisps can't have.
- mschaef 10y agoIt's hard (if not impossible) to pick a single attribute of 'Lisp' that's shared by all the languages that are part of the Lisp family of languages. There are Lisps without macros, there are Lisps without the simple syntax, there are Lisps without dynamic typing, or lexical scope, or any of a dozen other features that are present in at least on Lisp.... so I think reducing Lisp to a handful of features and calling that 'basically it' is a good way to miss the point. (Not to belabor the obvious One of my favorite points about Lisp was made by Kent Pitman back in 1995: http://www.nhplace.com/kent/PS/Lambda.html http://www.nhplace.com/kent/PS/Lambda.html In it, he describes through a though experiment what it means for a language to be defined by its community and how that impacts its development and use. It isn't as much about the specific features as it is the approach that led the language to get to have those features in the first place. Just to illustrate, the simple syntax is a good example. It's not immediately obvious why simple syntax is a good thing... in fact, given the fact people prefer infix and a big part of the backlash against Lisp is due to the syntax, you might argue that it'd be better for Lisp to drop the syntax entirely. (As was tried in Dylan and Logo) That, you'd lose a lot that's not necessarily obvious. There's a real value in having a concrete syntax for your language's core data types and then defining the language in terms of those data types. The simple syntax isn't the point as much as what it enables you do accomplish.
- wvenable 10y agoThe thing about Lisp is it operates at a lower-level than most programming languages. Not the terms of machine level (like assembly language) but in terms of compiler level (parse trees). There is a simple elegance to it but I also think it pushes a lot of complexity into other places. My opinion is that the trade off in where the complexity is doesn't benefit most programmers/projects -- Lisp users would obviously disagree.
- qwertyuiop924 10y agoAs a lisp user, I would argue that infix syntax, while it appears simpler, puts a lot of cognitive load on the reader that lispers don't have to worry about. In an infix syntax, you have to worry about getting the syntax right, avoiding syntactic ambiguity, and making sure your precedence order is correct. In languages like C++ or Haskell, this can get very complicated. Think of it this way: infix syntax is just another form of DWIM. The computer is trying to act like it thinks the way you do. However, it doesn't, and because it's pretending to, bugs happen. Lisp doesn't pretend, and this helps to avoid bugs.
- wvenable 10y agoI'd argue the differences in syntax in other languages actually make reading the code easier. The consistency of Lisp makes it harder for humans to read. Infix is such a small percentage of what I do, it hardly matters. And where it's extremely critical, I have to share with non-programmer humans so consistency there helps.
- qwertyuiop924 10y agoIMO, it makes it harder for humans to learn, but not to read once they have. >I have to share with non-programmer humans Non-programmers read your code?
- wvenable 10y ago> IMO, it makes it harder for humans to learn, but not to read once they have. Why would it be harder to learn yet easier to read? If anything it's syntax is easier to learn (because there is so little syntax) but harder to read (also because their is so little syntax) and harder to understand (because the syntax doesn't reveal as much semantics).
- qwertyuiop924 10y agoIt's elegant, conceptually simple, and it's just fun to hack. It has a regular syntax, which means that once you learn the syntax you never have to worry about it again. There's no operator precedence, so you don't have to worry about messing that up. It's relatively easy to read (although I've created my share of monstrosities, so it's possible to do so), and you also get the power of macros, which can help to repeat yourself less, and give you a lot of power, should you ever need it (I have hardly ever written a macro, and it's not the main draw, but it's there). It has the ability to add your own syntax, to an extent: You need raw strings, string interpolation, external representations of data, or a more concise syntax for functions? You're covered.
- jomamaxx 10y agoWait, Python, Perl and PHP are 'new' programming languages? Ha ...