Any good introductions to datascience/NLP/ML or AI using LISP?
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp http://norvig.com/paip.html
Lispers
41–50 of 110 posts
Re: Lispers
#42The home page looks like a tombstone of Common Lisp with a bunch of epitaphs on it. On the other hand, the spirit of Lisp has successfully taken over the world. The modern Lisp is called JavaScript. I am perfectly aware of all the differences between Lisp and JavaScript and of the other languages that have influenced JavaScript (Self, Perl, Lua), but think of this: what made Lisp so great in the past? - automatic mem…
Replacing them with a semicolon and curly brace riddled abomination; see CoffeScript and various syntax extensions that come with latest JS standards.
Also note how many years it took for JS to get even very basic features, like `() => {}` lambda notationor multiline strings. In a language with a macro system you can implement both easily.
> Macros are harmful to programming in the large.
This is not true. Macros are mainly used to implement DSLs, and well designed DSL can shorten the code by an order of magnitude. Of course, when to create one is hard to say, but not harder than when to write a metaclass in Python. Would you advocate removing metaclasses from Python?
When not for DSLs, macros are used as compile-time functions. You can easily write such macros in any language, provided you split your program in two parts: preprocessor (which parses and transform the code) and the code proper. That's a lot of work, which disappears with the introduction of a macro system. I don't think this has any impact on "programming in the large".
Many "modern" and "systems" programming language feature macro systems. Haxe, Nim, Rust, Julia spring to mind immediately, followed by OCaml, Haskell, Elixir, Erlang and quite a few more.
In other words: if you want to say that "macros are harmful" in some way you're going to need to provide some kind of argument and evidence.
> creates a Babel tower of incompatible object systems instead of a common language.
Three of the most popular Lisps - Racket, Clojure and Common Lisp - have an object system in the language. EDIT: Emacs Lisp might also qualify, but I don't remember if EIEIO is included by default in Emacs.
> JavaScript got rid of linked lists (that are awkward and impractical for everyday use)
Many languages outside of Lisps seem to disagree: Elixir and Erlang, Haskell, OCaml and Prolog, for instance. And btw: I disagree with this too.
Linked lists are a very convenient and surprisingly universal data structure, but they really shine wherever you have a recursive algorithm. Which is, in the languages mentioned, almost all the time.
> and introduced hash-tables into the language.
Clojure, Common Lisp, Racket, Emacs Lisp and probably others provide a rich set of data structures, including vectors, bitsets, hashes, queues, sequences and more.
Re: Lispers
#43Oh I like this one (emphasis mine) :)
Re: Lispers
#44Re: Lispers
#45Earlier quoted context omitted.
> in most cases Haskell takes a lot more time for development than other languages - and takes negligible maintenance/refactoring time compared to Lisp/Python/C++. Maintenance timesink might easily outweigh the gain in development time. That's the promise of strong type systems: preventing bugs from happening before you have to debug them in production and it does not come absolutely free.
In Lisp you can change the programs while they are running, in ways not possible in Haskell. The time Haskell needs to recompile the code to machine code, I have fixed the Lisp bug already.
I actually had heard something similar about how JPL used Lisp and they could just debug the satellite remotely from the earth.
Re: Lispers
#46Re: Lispers
#47Earlier quoted context omitted.
Those amazing Lisp machines were far ahead of their time. Unfortunately the hardware was very expensive, and it lacked power. Today we have the right cheap hardware. Actually, there is a Lisp revival going on in the OSS community. Consider McClim [1] for instance which attempts to port the amazing GUI of the Lisp Machines to PCs. It already works. [1] https://common-lisp.net/project/mcclim/
McClim existed for decades and it's still struggling to become production-ready, a poor example of the "revival".
McClim is not a business case. It is just a project to revive the most sophisticated GUI for Lisp. The graphical shell [1] for instance which already works gives a remarkable impression.
[1] https://common-lisp.net/project/mcclim/static/media/screensh...
Re: Lispers
#48Earlier quoted context omitted.
> Many of the quotes makes me question the authors experience Do you have enough experience that you dare to judge him? > Compared to modern languages (say, Haskell), not so much. I disagree. I was in a lot of languages, in all different programming styles. Lisp still is the language with a maximum of freedom of programming, probably also regarding productivity. Only Nim comes close. Haskell may look elegant at the s…
> in most cases Haskell takes a lot more time for development than other languages - and takes negligible maintenance/refactoring time compared to Lisp/Python/C++. Maintenance timesink might easily outweigh the gain in development time. That's the promise of strong type systems: preventing bugs from happening before you have to debug them in production and it does not come absolutely free.
That is correct. However, in Haskell you need a lot of discipline to guide a big project in the right direction. Maintenance can quickly became a nightmare due to very dense code.
If maintenance is the main issue I would choose Ada than Haskell. I have no problem to understand my own Ada code written 10 years ago, even without documentation. In Haskell however I had problems to understand my own code which was just some weeks old :-)
Re: Lispers
#49The home page looks like a tombstone of Common Lisp with a bunch of epitaphs on it. On the other hand, the spirit of Lisp has successfully taken over the world. The modern Lisp is called JavaScript. I am perfectly aware of all the differences between Lisp and JavaScript and of the other languages that have influenced JavaScript (Self, Perl, Lua), but think of this: what made Lisp so great in the past? - automatic mem…
Re: Lispers
#50The home page looks like a tombstone of Common Lisp with a bunch of epitaphs on it. On the other hand, the spirit of Lisp has successfully taken over the world. The modern Lisp is called JavaScript. I am perfectly aware of all the differences between Lisp and JavaScript and of the other languages that have influenced JavaScript (Self, Perl, Lua), but think of this: what made Lisp so great in the past? - automatic mem…
It's just that Javasript will need to catch up with core language tools for another decade. Just compare your typical Javascript compiler and the language it provides with something like SBCL. Generally I agree that Javascript is similar, in many ways. But worse. Worse can be better, but we know that already. ;-)