Domain: lisp.org
Stories and comments across the archive that link to lisp.org.
Comments · 68
-
Extensibility, e.g., Lisp or SchemeIt always amuses me that so many languages love to tout their object-orientedness that allows for language extensions. Lisp is inherently extensible, and by its very nature enables the programmer to design the language to fit the application. As far as debugging facilities go, Lisp is the gold standard. And WRT portability, I think Scheme runs just about everywhere.
People always think about AI when they think of Lisp, but don't forget that some everyday applications are written in Lisp, such as Yahoo! Store.
-
Re:Big deal
Lisp does not favor recursion over iteration, and Lispers do not think that use of variables is a bad habit. You're thinking of Scheme, which is a different language entirely. (But even Schemers don't think variables are bad!) For some information on software written in Lisp, see www.lisp.org and Franz success stories.
-
Don't rely on human nature, then!
... slowly and methodically picking through all of your code to make sure that no buffers can overflow is just uninteresting and unglamorous.
But it doesn't have to be done manually! A simple Google search turned up lots of tools that eat raw C and C++ code and detect potential buffer overflows. Use of tools like these ought to be a mandatory quality control step for any organization that really cares about secure and reliable applications.
And of course, all of this completely ignores the possibility of using other languages where buffer overflows and stack smashes are implementation problems rather than application programmer errors.
In my opinion, shipping code written in unsafe languages without at least an automatic static check for potential security problems should make the shipper liable for damages. -
Re:Learning Lisp/Scheme?
Anyone have any good docs/books they used to learn lisp/scheme quickly and easily (more than just an amazon/google search)?
Check out the Association of Lisp Users web site for references. I believe Dave Touretzky has made his very good introductory book available online and Dave Lamkins has also written a long web-based tutorial.
Also, the introductory course at MIT uses the fabled 'Structure and Interpretation of Computer Programs' which I believe is also available online. It covers Scheme, not Common Lisp, though. -
Re:It's about the API
As some of the other posters note Lisp has all the support you need for rapid development of large (or small) general purpose applications and with Common Lisp it's had the support for years.
Check out The Association of Lisp Users for lists of companies using lisp commercially.
Mark -
Re:Having done some things in lisp
re: no bit twiddling. You can. See the log* functions in Common Lisp.
re: pointer arithmetic. You don't need this. Why on earth do you think you do? Automatic memory management, and the rest of the language make this unnecessary.
re: being impolite and snobbish. You'll run into people that have those "qualities" in all programming camps. Why do you think they are singularly attributes of lisp programmers? Perhaps lisp programmers are a bit defensive about all the FUD non-lisp programmers spew. Ever thought of that?
re: free win32-based lisp. There are lots. See www.lisp.org. -
Re:It's about the API
It has a massively restricted API.
Oh my god. Please. Get CMUCL or CLISP. These are Common Lisp implementations (not Scheme). I am simply amazed at the library features available that even C does not have. And they do have a FFI (foreign function interface) which allows you to call C functions (albeit, not portably).
Do yourself a favor and learn about Common Lisp. Not all members of the LISP family are equal. You are most likely thinking of Scheme. Scheme is a reduced API (on purpose) used mostly for academic purposes. It is most likely what you are taught in CS at the University. Common Lisp is the API heavy LISP with everything (probably the kitchen sink too! though I haven't found it yet).
Great place to start
The Common Lisp HyperSpec (The ANSI CL standard reference) -- view this for the API features
Java's great strength is that it has a huge set of APIs, all in a unified form, making programming a less repetitive and painful experience. Java is for people who understand that recoding the same search tree three hundred times is not going to make them richer, cooler or a better programmer. LISP is for people with time to waste.
You obviously do not know or understand LISP (the entire family). Learn it (CL would be your best bet). Do not just trash it without understand what it is all about. -
Re:Writeability vs. Readability of LISP/JAVA
Yep, it enables easily-written self-modifying code.
If you can't see the futility of this in most non-AI environments, god help you.
Huh?? I've never written a single AI program in my life. Program and data being the same are good for far more than self-modifying programs. To name some uses: program analysis, program configuration (read and eval the data), and macros. The latter is probably the single most important thing in lisp. Unlike pattern substitution in most other languages, macros in lisp are really powerful. See this for more info on macros.
-
i have BFA in computer Art!but i had to fight to get it.
the school didn't have a formal major so through the help of two professors, i created my own major and worked on hacking up cool interactive pieces for the last two years of school!
i would program sound synthesis in a program called CSOUND and in Common LISP that interacted with realtime video signals...
it was wacky for sure but it 'twas Art!
fugg those small minded fools, move away from the stix, head for NY or LA where they love that type of shit. -
Computer Science is NOT about the language used!First of all, most Slashdot kiddies are confusing Computer Science with programming.
Computer Science is not about the language being used. Computer Science is about the problems being solved. Yes, sometimes solving the problem involves writing a new language. As much as I dislike Java and C++ as languages, they can still be used to teach basic CS concepts without incident.
Computer Science is not about being as close to the machine as possible. That's largely branched off into Electrical and Computer Engineering. You can learn about the theoretic basis of CS using assembly, but it won't really get you anything over other languages other than a headache and a better understanding of ECE. It's still CS, but not magically "more" CS because you're working closer to machine level.
I learned the basics of Computer Science (not just "programming") in college using C and C++. I really don't like to actually have to use C, even though I think it's a nice language theoretically. I abhor C++. Java is annoying as hell, but I'd much rather do app-level coding in it any day over C++.
You can learn linked lists, hash tables, recursion, and everything else is almost any language. It makes a lot more sense and can be easier to teach CS concepts in some languages, but you can do OO, procedural or functional programming in most any language, it just may be a lot more work.
-
Re:Any karma whores out there...
who can post a few links to good Lisp reference sites?
- Association of LISP users : Best place to start browsing
- CMU Common LISP : Best LISP implementation available on Linux
- Common LISP the Language : The language reference for the most commonly used LISP variant
- The Common LISP Hypermedia Server : a big LISP open-source application which is a great thing to download, examine, and learn from
-
Links to Learn Lisp
Here is an excellent online introduction to Scheme, a lisp dialect.
http://www.cs.utexas.edu/users/wilson/schintro/sch intro_toc.html
And here are many links to Books, Online tutorials, etc for learning Lisp
http://www.lisp.org/table/learn.htm
-
Re:Any karma whores out there...The sorta portal site for lisp: www.lisp.org
Here is a list of online books and references which I found useful:
- Common Lisp: A Gentle Introduction to Symbolic Computation -- David S. Touretzky
- Successful Lisp: How to Understand and Use Common Lisp -- David B. Lamkins
- CLtL2: Common Lisp the Language, 2nd Edition -- Guy L. Steele
- HyperSpec: The ANSI Standard for Common Lisp -- Kent M. Pitman
- CLOS: Common Lisp Object System -- Daniel G. Bobrow et al
- MOP: The Meta Object Protocol
- CLIM2: Common Lisp Interface Manager 2.0
The CLIM perspective, user's guide, and specification.
-
Re:Any karma whores out there...The sorta portal site for lisp: www.lisp.org
Here is a list of online books and references which I found useful:
- Common Lisp: A Gentle Introduction to Symbolic Computation -- David S. Touretzky
- Successful Lisp: How to Understand and Use Common Lisp -- David B. Lamkins
- CLtL2: Common Lisp the Language, 2nd Edition -- Guy L. Steele
- HyperSpec: The ANSI Standard for Common Lisp -- Kent M. Pitman
- CLOS: Common Lisp Object System -- Daniel G. Bobrow et al
- MOP: The Meta Object Protocol
- CLIM2: Common Lisp Interface Manager 2.0
The CLIM perspective, user's guide, and specification.
-
Re:Don't use it.[LISP]While these languages are interesting, they do not have the same advantages as Python. Some examples would be a clean readable language, a cohesive standard library, a simple syntax, and a strong OO heritage pulling from background such as smalltalk.
Oh boy, you've really said it now. Better start wearing that asbestos suit you've lying around. While Lisp's readability is certainly something to get used to it has about the simplest syntax of any programming language and it's OO support ranks up there with the best (CLOS).
Anyway, since you obviously had no idea what you were talking about you might as well do the research for yourself ( http://www.lisp.org/table/contents.htm ), instead of me doing it for you. Perhaps other posters will give you a much deserved roasting.
Cheers!
-
We ALL Know
that the best programming language is Common Lisp.
Eat flaming death, Perl bigots! -
Programming Environments: Then And NowThis might be a bit off-topic, but I thought it would be worth elaborating on Dr. Pollack's comments about APL and LISP--and how they relate to things today.
APL and LISP are Very High Level "applicative/functional" programming languages. They are too high level to be translated into machine language (with current technology). For this reason, they are interpreted--as is done with Java; hence they tend to execute relatively slowly.
Whether or not the world would be a better place with more extensive use of languages such as APL and LISP is moot. The point that should be made (I believe) is that (i) there is a lot to be learned from the experiences with APL and LISP and (ii) those experiences seem to be overlooked nowadays.
I could give many examples to illustrate this point. Most such, though, have already been stated many times in the academic literature. For example, J. Backus (referred to by Dr. Pollack), in his 1977 Turing Award lecture, outlined the advantages of applicative languages. And K. E. Iverson (inventor APL), in his 1979 Turing Award lecture, outlined how high level languages can be a "tool of thought", i.e. an aid to programmers' thinking. (Turing Award lectures are published annually in the Communications of the ACM.)
In fact, though, APL and LISP are not just programming languages. Each is a programming environment (which includes a language). Users of LISP, for example, have what appears to be a LISP machine--i.e. a virtual LISP computer. This machine does everything. From the users' perspective, there isn't a separate operating system. This means that the user only needs to learn about one thing: LISP.
The contrast with more common programming environments is large. For example, a C (or C++) programmer also typically learns some Unix. C and Unix, though, are entirely separate things. And they don't really mix (e.g. a C program that executes Unix commands). Which is why Perl was created. Which adds a third layer of complexity to the programming environment. Which raises the skill level required for programmers and the complexity of software.
I think that this is wrong--that the correct approach is to (re)design things so that the programming environment is "monolingual". Java might be considered as something in this direction.
Although APL and LISP have been around for decades, the recognition of the benefits provided by monolingual programming environments generally seems to be more recent. Some early work is by J. Heering & P. Klint, "Towards Monolingual Programming Environments", ACM TOPLAS, 7: 183-213 [1985].
I found it interesting that someone researching what might be tomorrow's most important and advanced technology appears almost a bit nostaligic for old largely-forgotten programming environments. Maybe he had a reason.
-
Re:I needed that Kitchen SinkAs a long time C programmer I jumped with joy when I encountered Perl.
...
I have found Perl to be an excellent tool in my toolbox and have found many occasions where it was an excellent choice for the problem at hand.With these experiences and your mindset you would be wise to investigate more programming languages. Languages from another family than the Algol family. Your Perl programming, actually your programming in general but Perl has borrowed some ideas from the other families, will improve a lot.
Since you seem to appreciate languages with a lot of functionality already built in you might appreciate Common Lisp.