8 ms·
I tried out Lisp sometime around 2009 or so and immediately realized it was a toy language. Interesting for it's unique approach to structuring code, but ultim
by soup10 12y ago
I tried out Lisp sometime around 2009 or so and immediately realized it was a toy language. Interesting for it's unique approach to structuring code, but ultimately designed for a certain kind of mathematical elegance over practical functionality. It grew especially popular with ai researchers, because they were searching for beautiful answers to the messy problem of intelligence, and didn't think performance was as critical as ideas. And it grew fans here and there for certain low-performance applications because it was one of the first languages with productivity enhancing features like garbage collection.
Lisp may have been "mind blowing" before untyped scripting languages were a dime a dozen, but these days the only thing mind-blowing about it is that people still use it when there are much better alternatives.
- NhanH 12y agoMay I ask which kind of performance bottleneck did you see in Lisp? And do you mind expanding on which characteristics make you immediately think Lisp is a toy language?
- stolio 12y agoIt sounds like Racket. The IDE feels a little toy-like and it's a very academic language, though in a good way. The stock IDE does not communicate a feeling of raw power. (edit: I stand corrected, it was Common Lisp)
- bmh100 12y agoWhich Lisp did you use? Common Lisp / SBCL?
- soup10 12y agoCommon Lisp, just seemed like any other programming language except that I was restricted to a functional style, and library support was super spotty. Admittedly though I didn't use it for very long.
- gumby 12y ago> Common Lisp, just seemed like any other programming language except that I was restricted to a functional style Lisp is often referred to as a "functional" language but that has always seemed odd to me. Side effects are first class, and some dialects (like scheme and common lisp) are quite procedural. In fact the "ultimate" papers cite Algol as an inspiration. It is in no way a functional language in the sense that that term is used with, say, Haskell, Erlang or Prolog. I do find Lisp the most expressive language I have ever used (and I wrote a LOT of code in it in the 1980s, 100s of KLoC over the years) but there are other languages I do use from time to time when their own particular strengths. For instance, string handling can be a bit roundabout in most Lisps. shrug.
- lispm 12y agoThis is dubious, given that Common Lisp was the first standardized object-oriented language. See the Common Lisp Object System. Whatever you have used, it can't be Common Lisp, since Common Lisp is a multi-paradigm language with imperative, object-oriented and functional elements blended together. Consider this code snippet: (defparameter *persons* '((john 15) (maria 12) (agnes 20))) (defparameter *number-of-persons* 0) (defun count-persons (persons) (dolist (person persons) (incf *number-of-persons*)) (format t "~%The number of persons is ~a." *number-of-persons*)) What do we see: * mutable variables * procedures with side effects * imperative loop with DOTIMES * imperative setting of varibles * sequences of imperative statements Doesn't look like one is limited to 'functional style' in Common Lisp...
- dragonwriter 12y ago> I tried out Lisp sometime around 2009 or so and immediately realized it was a toy language. There are definitely toy languages in the Lisp family (after all, there's quite a lot of lisps), but it pretty ridiculous to call Lisp a toy language. > Interesting for it's unique approach to structuring code, but ultimately designed for a certain kind of mathematical elegance over practical functionality. Most that I've read on the history of Lisp seems to show more of a preference for pragmatism than theoretical elegance. > It grew especially popular with ai researchers, because they were searching for beautiful answers to the messy problem of intelligence It grew especially popular with AI researchers because it was designed specifically to address needs in AI research. > And it grew fans here and there for certain low-performance applications because it was one of the first languages with productivity enhancing features like garbage collection. Lisps breadth and depth of production use has been considerably more than "here and there" and "certain low-performance applications". > Lisp may have been "mind blowing" before untyped scripting languages were a dime a dozen Being an untyped scripting language isn't the thing that is generally considered "mind blowing" about lisp, its the flexibility that comes from the combination of its minimal syntax, the macro system, and its homoiconic nature making code and data isomorphic.
- soup10 12y agoYea, I guess it's inflammatory to call any language that people use seriously(even if only for research), a toy. Sorry about that. One disagreement I have is Lisp is definitely not designed for high performance. Any competent C programmer would find the suggestion laughable. There's a write up for Orbitz somewhere that details many of the problems they had with basic stuff. Second, less syntax just means messier code. Parentheses everywhere doesn't make a language good. Just harder to read. The "macro system" which refers to the ability to perform arbitrary functions on arbitrary data, is not unique to lisp. And in general, usually obfuscates code and makes debugging harder. Code is data and data is code everywhere(it's all just bits and bytes after all). I would classify "its homoiconic nature making code and data isomorphic" to mean there's less syntax. Everything that you can do with macro's and Lisps's homogeneous syntax is achievable with similar constructs in other languages. The fact that the syntax is "homiconic and data isomorphic" is elegant, but in practice just confusing imo. Programming languages where data and functions are delineated by design have clearer structure and organization. Additionally they allow the compiler or interpreter to optimize by design. In the rare case it's useful to have a function become a data argument, there are usually accommodations in the language to do so. These are just my opinions though man. You keep on using whatever programming language makes you happy.