From: Francis Cianfrocca Date: 2006-08-09T03:00:51+09:00 Subject: Re: Language chatter Chad Perrin wrote: > It's not restriction that does this for you -- it's well-designed > default abstractions. With some languages and for some tasks, those > defaults must exist in your head, and with others they exist in the > toolset (the language interpreter, the framework, et cetera). In either > case, they need not be restrictions, per se. Restrictions are > inviolable defaults, and Python's inviolable defaults are reasonably > well-designed, but they're still limiting when one must do something > that is best accomplished in a manner incompatible with those defaults. That's all perfectly fine. Every language gives you a set of metaphors with which you can model the real-world domains you care about, and that's why we use languages in the first place. Because you get leverage from their conventions and restrictions. And of course this applies to level-3 languages like English and French, as well as level-1 languages. What I was reaching for was some insight into why full-powered (Turing-complete) computer languages are so difficult to write automated tools and workbenches for. The challenge is not how humans can reason about programs (undecidability is not a big hurdle for us), but how programs can reason about programs. And my (unproved) intuition is that mathematically restricted DSLs (whether they are Lisp programs, Ruby programs, graphical widgets, physical constructions, or any other such equivalent thing) may be so much easier to tool that they can give a vast productivity improvement. Low-grade example: I've been working on a component-based web-development framework in Ruby, and most of it is DSL-driven. So far, it's been remarkably easy to build graphical tools for it. -- Posted via http://www.ruby-forum.com/.