tag:blogger.com,1999:blog-27488238.post115605575211510083..comments2024-03-22T11:34:45.165+01:00Comments on taw's blog: Programming in Blubtawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-27488238.post-21701504516847176312007-09-27T06:09:00.000+02:002007-09-27T06:09:00.000+02:00Yes. The fact that so many people try to program i...Yes. The fact that so many people try to program in languages like Lisp that lack proper pattern matching never ceases to amaze me.<BR/><BR/>The only thing I find more surprising is the never ending supply of Lispers who believe they can lash together ad-hoc reimplementations of part of OCaml or Haskell in Lisp, like the pattern matchers.Jon Harrophttps://www.blogger.com/profile/11059316496121100950noreply@blogger.comtag:blogger.com,1999:blog-27488238.post-1160996618150433522006-10-16T13:03:00.000+02:002006-10-16T13:03:00.000+02:00Leo: Concept of computer language "power" is impre...Leo: Concept of computer language "power" is imprecise and hard to define, because it really belongs to the human side of programming, not machine side. I find it very intuitive, but people have different intuitions of course.<BR/><BR/>"Power" is certainly not about what can be done, because even in language with very low "power" like assembly, you can write an interpretter or a compiler for a more powerful language, and then write what you originally wanted.<BR/><BR/>It is more about feasibility of making various kinds of programs. If you can practically solve more problems in one language than in another, this language is more powerful. "More problems" is imprecise again, because different languages are suited to different problems.<BR/>But certainly you can do more in Ruby than you could in assembler.<BR/><BR/>Other similar concept is <A HREF="http://en.wikipedia.org/wiki/Expressive_power" REL="nofollow">expressiveness</A>. There are various styles and "idioms" in programming. Some languages support more such styles and "idioms" than others. This isn't about having many features. A small number of core features like functions, closures, objects, reflection, callcc etc. means you can emulate majority of idioms in a few pages of code. Lisp programmers really love proving how completely different features can be implemented in a few lines of code, using such basic features.<BR/><BR/>Conceptual gonciseness is also part of "power". An example - Ruby/Smalltalk blocks are very concise - they do not contain any information that isn't relevant. Java <A HREF="http://www.whysmalltalk.com/articles/pages/javavssmalltalkblocks.htm" REL="nofollow">anonymous inner classes</A> have similar function, but using them requires a lot of conceptual overhead.<BR/><BR/>Textual conciseness is sometimes mentioned, but only because most languages have similar number of characters per concept and can actually be measured.<BR/><BR/>"Power" is something between these concepts. At least the way I understand it.tawhttps://www.blogger.com/profile/16972845140253292628noreply@blogger.comtag:blogger.com,1999:blog-27488238.post-1160991718407803692006-10-16T11:41:00.000+02:002006-10-16T11:41:00.000+02:00I find it discomforting that you use the term "pow...I find it discomforting that you use the term "power" as a synonym for "feature-richness". Graham in your linked article [3] does the same. (See there for equality of power in the sense of Turing equivalence.) He is very vague and imprecise about these terms. <BR/>Doing so means confusing _what_ can be done with _how_ it can be done. Attributing values to programming languages based on such confusion seems like a major fallacy to me.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-27488238.post-1160988280450618742006-10-16T10:44:00.000+02:002006-10-16T10:44:00.000+02:00Leo: The word "power" used in this context means s...Leo: <A HREF="http://www.paulgraham.com/avg.html" REL="nofollow">The word "power" used in this context</A> means something completely unrelated to Turing-completeness.<BR/><BR/>I'm puzzled. Who started using word "power" to mean "is it Turing-complete or not". Computational complexity theory definitely doesn't use it in this sense.tawhttps://www.blogger.com/profile/16972845140253292628noreply@blogger.comtag:blogger.com,1999:blog-27488238.post-1160984181843787882006-10-16T09:36:00.000+02:002006-10-16T09:36:00.000+02:00"Languages vary in power."Do they? As far as I kno..."Languages vary in power."<BR/><BR/>Do they? As far as I know, the powers of languages are equivalent if they are turing-complete.<BR/><BR/>A feature more or less is not an indication of more or less power. An analogy is cars.<BR/><BR/>Languages vary in convenience, nothing else.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-27488238.post-1160927340494318742006-10-15T17:49:00.000+02:002006-10-15T17:49:00.000+02:00Anonymous: First, please do not confuse Lisp with ...Anonymous: First, please do not confuse Lisp with CL. CL is <A HREF="http://www.dreamsongs.com/Files/clcrit.pdf" REL="nofollow">a crime against programming</A> that tried to steal the name of "<A HREF="http://en.wikipedia.org/wiki/Scheme_%28programming_language%29" REL="nofollow">Lisp</A>" and isn't even fully <A HREF="http://en.wikipedia.org/wiki/Call-with-current-continuation" REL="nofollow">Lisp</A>.<BR/>Actually if they didn't use deceptive name, CL would quickly be forgotten and everyone would be coding in real Lisp by now. <A HREF="http://www.randomhacks.net/articles/2005/12/03/why-ruby-is-an-acceptable-lisp" REL="nofollow">Or maybe they do anyway</A>.<BR/><BR/>But back to the point.<BR/>CLOS is not object oriented. CLOS is a system for defining generic functions, nothing more than that. Generic functions can emulate a small part of object-oriented programming, but this small part is totally insufficient. <A HREF="http://steve-yegge.blogspot.com/2006/04/lisp-is-not-acceptable-lisp.html" REL="nofollow">Steve Yegge wrote more about it</A>.tawhttps://www.blogger.com/profile/16972845140253292628noreply@blogger.comtag:blogger.com,1999:blog-27488238.post-1160906540690170982006-10-15T12:02:00.000+02:002006-10-15T12:02:00.000+02:00I think you're missing the point- but you're inadv...I think you're missing the point- but you're inadvertantly illustrating it..<BR/><BR/>clos is lisp's object system, but the idea of multiple dispatch is not found in most OO systems -(clos has it though)<BR/>so the function he's given emulates the multiple dispatch feature<BR/>which <BR/>it might've been be a good idea to explain it first.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-27488238.post-1160890895860493142006-10-15T07:41:00.000+02:002006-10-15T07:41:00.000+02:00I may be misreading you, but if you are in fact sa...I may be misreading you, but if you are in fact saying that Lisp doesn't have object-orientation, you are mistaken. It's called CLOS in Common Lisp and it's part of the CL ANSI standard. Of course, Lisp isn't totally OO, because you can in fact ignore the whole CLOS system as you please, but it is there.Anonymousnoreply@blogger.com