Re: [dylan] The Future of Dylan: Why are we here?
Bruce Hoult <[email protected]> Mon, 1 Sep 2014 20:32:35 +1200
| Newsgroups | gmane.comp.lang.dylan.gwydion.devel |
|---|---|
| Message-ID | <CAMU+EkwgddMzuCVFbOxcppqBNM7C3MJW5y__HkOXGv9pZdEHTQ@mail.gmail.com> |
--===============1890861870== Content-Type: multipart/alternative; boundary=089e013c6eca478c200501fcd83d --089e013c6eca478c200501fcd83d Content-Type: text/plain; charset=UTF-8 On Mon, Sep 1, 2014 at 7:22 PM, Bruce Mitchener <[email protected]> wrote: > Some like the macros. Some like the condition system. Others appreciate > the sliding scale between static and dynamic behaviors. Some appreciate > that it can generate efficient, native executables and shared libraries. > Still others find the syntax to be nice while, admittedly, others hate the > syntax. Yet others appreciate the coherent and consistent design behind > Dylan, where a set of core features mesh well to provide a clean and clear > language. Perhaps some value that we have an actual language specification > via the DRM. > > What brings you here? > Yes, all of that. The #1 meta thing is that the features in Dylan are simple, powerful and ORTHOGONAL and combine the way you'd expect, without a bunch of exceptions and restrictions. I like to be able to program in a high level way, but be able to make those small parts of the program that determine the overall speed run at the speed of the metal (within a very small epsilon of C/C++ .. 20%, not 2x). I like my programming language to be portable, my myself in a few days, to any conceivable OS or CPU I might be using. Gwydion is fabulous for that. which is probably the prime reason I still use it today and have never learned how to use Open Dylan. LLVM support for Open Dylan could change that. Heck, it might already be changed if the C backend and Boehm are now fully first class citizens in the Open Dylan world. If the Open Dylan IDE and debugger ran on machines I owned (Mac and *nix) then I'd probably have switched years ago. I'd hate to see that not part of the system in future. I presume that needs LLVM to be portable (for JIT and debugging). I love the syntax and macro system. I love that most of the built in syntax is macros from a library, and malleable by importing a different library. It has its warts. I'd like to see compile-time code execution, but I'm not willing to go to S-exprs to get that. Code generation and multi-step makefiles get you 90% of the benefits. Note that the macros would not work *nearly* as well without the other features: the ability to in a single macro expansion define new types, global init code, inject new methods into existing GFs... The ugly stuff and what is missing: - a type system for function values. Glad to see it's being worked on. - namespace clashes between local bindings and slot accessors i.e. "let foo = x.foo;" and now you can't access the slot. This hits beginners ALL the time, and me too. But I think full multiple namespaces ala Common Lisp is overkill. Suggestion: x.foo means foo-getter(x). - better support for functional classes. Functional programming and OO are (contrary to popular opinion with C++/Java programmers) NOT mutually exclusive. Inheritance and polymorphic dispatch are just as useful in a functional program. But you need ways to say "make a new object, just like those one except for these changes..." - modern string and array processing. --089e013c6eca478c200501fcd83d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On M= on, Sep 1, 2014 at 7:22 PM, Bruce Mitchener <span dir=3D"ltr"><<a href= =3D"mailto:[email protected]" target=3D"_blank">bruce.mitchener@gma= il.com</a>></span> wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div><div>Some like the mac= ros. Some like the condition system. Others appreciate the sliding scale be= tween static and dynamic behaviors. Some appreciate that it can generate ef= ficient, native executables and shared libraries. Still others find the syn= tax to be nice while, admittedly, others hate the syntax. Yet others apprec= iate the coherent and consistent design behind Dylan, where a set of core f= eatures mesh well to provide a clean and clear language. Perhaps some value= that we have an actual language specification via the DRM.</div> <div><br></div><div>What brings you here?</div></div></div></blockquote><di= v><br></div><div>Yes, all of that.</div><div><br></div><div>The #1 meta thi= ng is that the features in Dylan are simple, powerful and ORTHOGONAL and co= mbine the way you'd expect, without a bunch of exceptions and restricti= ons.</div> <div><br></div><div>I like to be able to program in a high level way, but b= e able to make those small parts of the program that determine the overall = speed run at the speed of the metal (within a very small epsilon of C/C++ .= . 20%, not 2x).</div> <div><br></div><div>I like my programming language to be portable, my mysel= f in a few days, to any conceivable OS or CPU I might be using. Gwydion is = fabulous for that. which is probably the prime reason I still use it today = and have never learned how to use Open Dylan. LLVM support for Open Dylan c= ould change that. Heck, it might already be changed if the C backend and Bo= ehm are now fully first class citizens in the Open Dylan world.</div> <div><br></div><div>If the Open Dylan IDE and debugger ran on machines I ow= ned (Mac and *nix) then I'd probably have switched years ago. I'd h= ate to see that not part of the system in future. I presume that needs LLVM= to be portable (for JIT and debugging).</div> <div><br></div><div>I love the syntax and macro system. I love that most of= the built in syntax is macros from a library, and malleable by importing a= different library. It has its warts. I'd like to see compile-time code= execution, but I'm not willing to go to S-exprs to get that. Code gene= ration and multi-step makefiles get you 90% of the benefits.</div> <div><br></div><div>Note that the macros would not work *nearly* as well wi= thout the other features: the ability to in a single macro expansion define= new types, global init code, inject new methods into existing GFs...</div> <div><br></div><div><br></div><div>The ugly stuff and what is missing:</div= ><div><br></div><div>- a type system for function values. Glad to see it= 9;s being worked on.</div><div><br></div><div>- namespace clashes between l= ocal bindings and slot accessors i.e. "let foo =3D x.foo;" and no= w you can't access the slot. This hits beginners ALL the time, and me t= oo. But I think full multiple namespaces ala Common Lisp is overkill. Sugge= stion: x.foo means foo-getter(x).</div> <div><br></div><div>- better support for functional classes. Functional pro= gramming and OO are (contrary to popular opinion with C++/Java programmers)= NOT mutually exclusive. Inheritance and polymorphic dispatch are just as u= seful in a functional program. But you need ways to say "make a new ob= ject, just like those one except for these changes..."</div> <div><br></div><div>- modern string and array processing.</div><div><br></d= iv></div></div></div> --089e013c6eca478c200501fcd83d-- --===============1890861870== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ hackers mailing list [email protected] https://lists.opendylan.org/mailman/listinfo/hackers --===============1890861870==--