5 ms·
There are more clean, consistent and interesting models of programming besides the C and Lisp models. The Ml/Haskell family of languages. Logic languages (thou
by Peaker 15y ago
There are more clean, consistent and interesting models of programming besides the C and Lisp models.
The Ml/Haskell family of languages. Logic languages (though these are somewhat subsumed by the former). Dependent-type languages.
- 0x12 15y agoTILs such as forth. Smalltalk. What family does APL belong to?
- gruseom 15y agoCertainly its own family, along with its successors J and K.
- Peaker 15y agoYou could argue those languages are not very clean, at least syntactic-wise.
- silentbicycle 15y agoDon't confuse having lots of operators with being unclean. They're syntactically more internally consistent than Common Lisp, for example.
- gtani 15y agohttp://www.info.ucl.ac.be/~pvr/paradigmsDIAGRAMeng101.pdf http://www.info.ucl.ac.be/~pvr/paradigmsDIAGRAMeng101.pdf http://news.ycombinator.com/item?id=3150277 http://news.ycombinator.com/item?id=3150277
- swannodette 15y agoThe Lisp system is a meta model. Thus you can implement a Lisp that works like ML/Haskell/Prolog if you like. ML/Haskell don't seem to provide that kind of meta power as cleanly or consistently IME. Prolog has a good meta model, but it doesn't seem to subsume other models as cleanly, consistently, or efficiently as Lisp.
- Peaker 15y agoImplementing a Lisp that works like ML/Haskell will be as much work as implementing a compiler/interpreter of these languages outside of Lisp. The macro system is not a great compiler toolkit for languages with semantics radically different from Lisp. Lisp thus does not really subsume these languages.
- swannodette 15y ago> The macro system is not a great compiler toolkit for languages with semantics radically different from Lisp. I take it you're not familiar with all the evidence that has Racket against that statement. In anycase, that's not my real point. Lisp has a simple yet powerful meta system. ML/Haskell do not. But their models weren't designed to provide that kind of simple consistent power.
- jerf 15y agoLisp and Haskell to my mind form the two leading languages of two fundamentally contradictory families. Lisp works by empowering programmers and building on that power, and Haskell works by limiting the programmer and building on those limitations. Despite what the leading word "limitation" may lead you to believe, both philosophies can lead to great results. For example, for the same basic reasons you can't even build an STM in C#, it's probably even more impossible to build an STM in Lisp, whereas in Haskell it's pretty easy, because of the limitations. You can not just macro your way in a (conventional) Lisp over to Haskell, because Haskell is fundamentally built on limitations being not merely suggestions, but things you can then further build on. If you do, with something like Clojure and its data model, you've got something that isn't the same language any more, and you need all-new libraries to make it work.
- jules 15y agoYou can build an STM in pretty much any language. There have been STMs in at least C++, Java, C#, Common Lisp, Clojure and OCaml. Haskell may be one of the rare exceptions. Haskell's STM was not implemented in Haskell, and AFAIK cannot be implemented in type safe Haskell due to limitations of its type system unless you add specific extensions required for things like STM. So to say that STM is enabled by the limitations in Haskell is exactly backwards.
- charlieok 15y agoHere on hacker news, we can (and do) argue all day about how to categorize and rank programming languages. I'll readily confess that I do not have enough depth or breadth in the field to be any kind of authority when it comes to that. The point I wanted to make was, if you are willing to give some benefit of the doubt to Paul Graham's statement in the article (which I quoted) singling out C and Lisp, then the last couple weeks are very significant indeed in terms of the loss to the field of computing.
- jhuni 15y agoEveryone using functional languages (ML/Haskell) or logic languages (Prolog) should respect the considerable contributions McCarthy made to these areas throughout his entire life.
- rayiner 15y agoYou can describe the execution semantics of a "C" machine or a "Lisp" machine in a paragraph. Can't really do the same for a Spineless Tagless G-Machine...
- andolanra 15y agoThe semantics for System F could be explained in roughly a paragraph. Lisp is, more or less, simply typed lambda calculus + code-as-nested-lists + compile-time computation mechanisms; Haskell and ML are System F + various type mechanisms (e.g. typeclasses or modules.) On the other hand, I suspect an abstract machine for executing Lisp—one that accounted for reader macros and the like—would be of roughly the same complexity as the STG machine.
- skew 15y agoApples and oranges. Can you explain implicit continuation representation in a paragraph? The simple description of lazy evaluation is graph reduction. ML doesn't even use lazy evalution.