Super-dee-duper D features

Johan Granberg lijat.meREM at OVE.gmail.com
Tue Feb 13 05:01:38 PST 2007


X Bunny wrote:

> Bill Baxter wrote:
>>> Besides, many people naturally think recursively,
>> 
>> The statement was about why LISP is never going to be wildly popular.
>> There may very well be "many" people who naturally think recursively,
>> but if they're not a majority then that's a hurdle to LISP becoming
>> popular.
>> 
>>> and many problems (e.g. parsing) can be easiest thought of that way.
>> 
>> Sure.  However, you can write recursive algorithms in most any
>> procedural language to handle those naturally recursive tasks when they
>> come up.   With Lisp or <my-favorite-functional-language> you're pretty
>> much /forced/ to look at everything recursively.  And I think that makes
>> joe coder nervous, thus presenting a major hurdle to any functional
>> language ever becoming truly popular.
> 
> You havent qualified what you mean by Lisp, assuming that means Common
> Lisp (CL) then you are uniformed, CL offers a number of iteration
> constructs (they are implemented as macros as a great deal of the
> language is). dolist is very simple, loop is almost a language within
> itself. A common package used is called iterate which is a popular
> alternative to loop.
> Also CL is not just a functional language, Like D CL is multiparadigm.
> With CL you can easily write procedural code with side effects like C++
> or D or you can use object orientated, aspect orientated, functional,
> logic, pattern matching and many other programming concepts. Whats more
> you can add other programming concepts easily should you like.
> 
>> 
>> My point is just that I don't think syntax is the *only* thing that's
>> prevented lisp from becoming wildly popular.  If that were the case then
>> the answer would be to simply create a different syntax for Lisp.
>> (Actually, according to someone's comment here
>> http://discuss.fogcreek.com/newyork/default.asp?cmd=show&ixPost=1998
>> it's been done and it's called Dylan, another not-wildly popular
>> language).  So I think the problem is more fundamental.
>> 
> 
> People often try to modify Lisp to have a syntax more familiar to C
> language programmers, Dylan aside, it seems its often people who are new
> to Lisp who do this, after they learn more of Lisp they then can see why
> it is the way it is and although initially alien its design makes the
> language easier to use. Im not actually convinced that you can make a
> language with the features of CL without its syntax. There is an infix
> package also which allows you to use infix for things like math formulas
> and the like.
> 
> My personal feelings as to why Lisp isnt as popular as it could be are
> some of these misconceptions:
> 
> 1) Its all functional code and recursion
> 2) The syntax is weird and mindbending
> 3) Lisp is interpreted and therefore slow.
> 4) Its hard to interface Lisp with non Lisp libraries and operating
> system services.
> 5) Lisp is old and hasnt changed since the 50's
> 6) The features are really clever but they wouldnt be useful in a 'real'
> program
> 7) Its for AI or 'weird' programs
> 8) You have to be really clever to program in Lisp
> 9) Lisp is poorly documented and hard for a beginner to understand
> 10) Its irrelevant because we have Java/C++/something else now
> 
> Its interesting to contrast these with D which tends to present an image
> which is the opposite of many of these notions.
> 
> Regarding the syntax issue; is this suggestion: (from an earlier post)
> 
> AddExpressionTemplate!(
>     MultExpressionTemplate!(
>        SubExpressionTemplate!(Vector,Vector),
>        Vector),
>     Vector)
> 
> anymore more readable than this?
> 
> (defmacro mymacro (a b c d)
>    (+ (* (- a b) c) d))
> 
> Bunny

>From my attempt to learn lisp some months ago i think that at least 4 and 9
is true (please correct me if I'm wrong). A big part of that issue is that
it looks like the different implementations does things slightly
differently and that creates a fragmentation of the community and causes
libraries to require specific implementations (I'm mainly talking of the C
interface here as that is what I looked at). Regarding 9 if you know a good
lisp tutorial please post a link. (especially how to build code and the
quote special syntax)



More information about the Digitalmars-d mailing list