Live data from Hacker News

Ooh Ooh My Turn Why Lisp? (2008)

smuglispweeny.blogspot.com

111–120 of 160 posts

Re: Ooh Ooh My Turn Why Lisp? (2008)

#111

Earlier quoted context omitted.

You've probably played a Naughty Dog game. They use Scheme as the scripting language, but their PS1 games were written entirely in a Lisp. …except it didn't have garbage collection. Lisp weenies are all GC weenies too, right? Is that acceptable?

Nah, GC weenies would probably be the Java guys ;). GC is an important and helpful part of a working Lisp system, but it's not the core of the magic.

It is actually. Without GC it's almost impossible to have a productive "image-based model" that accelerate development so much.

Re: Ooh Ooh My Turn Why Lisp? (2008)

#112

I'm of the opinion that there is only one lisp right now with some serious potential to dominate in the future, and that is Racket. Why? For one very simple reason: unlike all other lisps, there is serious, ongoing, and lengthy research into correctly bringing a static type-checking process to the language. Clojure's core.typed doesn't count here, as it is full of significant holes that invalidate its entire point --…

It might be good to point out to you that the general industry cares very little about things like this. Racket could have literally the most advanced and robust type system out of all programming languages in existence, and still be used by the same amount of people as today and have a hard time convincing anyone else to use it. What makes a language popular from what I have seen are libraries, frameworks, and commu…

The tide is turning. Naughty Dog video game company (Uncharted, Crash Bandicoot, Jak and Daxter) uses Racket as its scripting language now.

Re: Ooh Ooh My Turn Why Lisp? (2008)

#113

Earlier quoted context omitted.

It might be good to point out to you that the general industry cares very little about things like this. Racket could have literally the most advanced and robust type system out of all programming languages in existence, and still be used by the same amount of people as today and have a hard time convincing anyone else to use it. What makes a language popular from what I have seen are libraries, frameworks, and commu…

The tide is turning. Naughty Dog video game company (Uncharted, Crash Bandicoot, Jak and Daxter) uses Racket as its scripting language now.

do you have a source for that? it's not that i don't believe you. it's that i am interested. :)

i have seen that one powerpoint from a while back where they used their own scheme dialect to script things. but i thought i had read that when they moved to the ps4 they left that behind and used c++ tooling for the same needs.

Re: Ooh Ooh My Turn Why Lisp? (2008)

#114
post #64

Earlier quoted context omitted.

There are some Lisp-related things which provide developers with new tools and new ways to think, maybe making them better: a) code as data b) interactive software development c) user-defined language extensions where the developer is part-time language designer, syntactic abstraction d) dynamic object-oriented programming e) meta-object programming

Could you expand on d)? What specifically is different between what you get with Lisp here and OO in the C++/Java sense?

Common Lisp allows us to develop object oriented software while it is running. Interactively. It changes classes and other objects, based on programmer changes. We can also add behavior to OOP mechanisms, like instance creation, slot allocation, slot access, class redefinition. One can add/change/delete methods at runtime. You can even change the class of an instance.

This enables you to have large OO applications running and change them while they are running. This enables interactive incremental development.

Interaction with LispWorks:

Define a class with a slot.

    CL-USER 61 > (defclass person () ((name :initarg :name)))
    #
Create an instance of that class.

    CL-USER 62 > (defparameter *p1* (make-instance 'person :name "Drumpf"))
    *P1*
What is it?

    CL-USER 63 > (describe *p1*)

    # is a PERSON
    NAME      "Drumpf"
Hmm, let's make a politician class, with person as superclass and a slot TYPE.

    CL-USER 64 > (defclass politician (person) ((type :initarg :type)))
    #
We change our object to the new class and add information about the new slot content:

    CL-USER 65 > (change-class *p1* 'politician :type 'populist)
    #
What is it now?

    CL-USER 66 > (describe *p1*)

    # is a POLITICIAN
    TYPE      POPULIST
    NAME      "Drumpf"
Class of the instance has changed, the new slot has been added, and the old slot is still there.

Re: Ooh Ooh My Turn Why Lisp? (2008)

#115
post #66

Earlier quoted context omitted.

As the other comment says, that doesn't really make sense. However, I have had to debug a codebase where lisps unhygienic macros led to extremely weird errors. The second time that happened in a big project I decided that schemes hygienic macros are superior. The extra cruft writing them is worth it. I have literally spent weeks debugging weird macro errors introduced years after the macro was first written.

You're not wrong: simple macros can be written poorly. Macros which don't properly use GENSYM should be rejected in review. Also, it's entirely possible to write a hygienic macro implementation with DEFMACRO: nothing stops a team from doing that (or using one off-the-shelf). But sometimes you do need the full power of DEFMACRO, and it's not possible to write DEFMACRO with DEFINE-SYNTAX. So one tool enables you to do…

Let's agree to agree then :) I much prefer Racket's macros. Their version of syntax-case is a bit simplified compared to the one shipped with other schemes like guile and chez.

If you want to see where you can go by (ab)using racket macros, watch this: https://www.youtube.com/watch?v=WQGh_NemRy4

Re: Ooh Ooh My Turn Why Lisp? (2008)

#116
post #60
post #46

Earlier quoted context omitted.

Well, no, I'm not confusing powerful and popular. I'm asking why, for all lisp's power, there's almost no examples of that power actually doing anyone any good. Is it because most projects don't need something powerful? The benefits of that power aren't actually that great compared to the rest of the lisp baggage? We have this trope of the smug lisp weenie and there's definitely a whiff of high wizardry around lisp,…

> doing anyone any good There's a difference between doing and talking about. Compare an amount of noise from Rust crowd to anything useful being done in Rust. Let's look at only one product implemented in Lisp, by only one vendor, and it's users in only one industry - http://allegrograph.com/healthcare/ . Pfizer, Mayo Clinic, GSK, Novartis - should we stop with that 'doing anyone any good' mantra?

The thing is, I'm trying to ask, if lisp is super-powerful and a secret weapon (the general sense of the claims) why isn't the real world littered with examples of companies who seriously out-competed using Lisp?

So far all people can do is say "no, SOMEONE is using Lisp!"

Well, great, but that's not the claim from the Lisp community.

The claim is that Lisp is powerful, so powerful that it's a secret weapon. Why is there so little evidence of that power being meaningful in actual competition?

Re: Ooh Ooh My Turn Why Lisp? (2008)

#117
post #44

I want to see people's list of reasons for why not lisp. Edit: Ok, this is not trolling. I quite liked Lisp and actually had implemented a version of common lisp from scratch based the Guy Steele's CL reference back in the undergrad time. I just found that beyond academic and a few Emacs packages, I didn't use Lisp at all, for one reason or the other. I just want to hear people's reason for not picking Lisp for their…

I've tried on a few occasions to really like Lisp. I love it's simplicity and recursiveness. The "code as data, data as code" thing is really cool. But I love static typing. Not only for "safety-net" reasons, where the compiler lets you know that you've broken stuff, but also for documentation reasons (I don't have to guess at the shape of each "c" in "cs" in "(mapcar some-fun cs)", I can just look at its type and kn…

That's a very good point. Type information certainly help reading. That might explain why Lisp is easy to write but hard to read. I did find myself having to go into a function's code to figure out what it does and what the parameters are. Hard to read code make sharing difficult and hinder widespread language adoption.

Re: Ooh Ooh My Turn Why Lisp? (2008)

#118
post #46
post #37

Earlier quoted context omitted.

You confuse powerful with popular. Many startups don't need powerful tools, other than a CRUD framework and JQuery. Also, existence and abundance of libraries is a factor, and Lisp didn't get much love from the OSS web folks til recently.

Well, no, I'm not confusing powerful and popular. I'm asking why, for all lisp's power, there's almost no examples of that power actually doing anyone any good. Is it because most projects don't need something powerful? The benefits of that power aren't actually that great compared to the rest of the lisp baggage? We have this trope of the smug lisp weenie and there's definitely a whiff of high wizardry around lisp,…

http://franz.com/success/

http://www.lispworks.com/success-stories/index.html

http://cognitect.com/clojure#successstories

There are plenty more.

Re: Ooh Ooh My Turn Why Lisp? (2008)

#119

Earlier quoted context omitted.

The tide is turning. Naughty Dog video game company (Uncharted, Crash Bandicoot, Jak and Daxter) uses Racket as its scripting language now.

do you have a source for that? it's not that i don't believe you. it's that i am interested. :) i have seen that one powerpoint from a while back where they used their own scheme dialect to script things. but i thought i had read that when they moved to the ps4 they left that behind and used c++ tooling for the same needs.

The scheme they have been using was PLT Scheme, which was renamed Racket.

Re: Ooh Ooh My Turn Why Lisp? (2008)

#120
post #114

Earlier quoted context omitted.

Could you expand on d)? What specifically is different between what you get with Lisp here and OO in the C++/Java sense?

Common Lisp allows us to develop object oriented software while it is running. Interactively. It changes classes and other objects, based on programmer changes. We can also add behavior to OOP mechanisms, like instance creation, slot allocation, slot access, class redefinition. One can add/change/delete methods at runtime. You can even change the class of an instance. This enables you to have large OO applications ru…

If you try this at home, don't forget to clean your environment afterward:

    (mkunbound '*p1*)
Post reply on HN