|
![](/i/fill.gif) |
Warp wrote:
> "The argument is that, using a very small number of rules for forming
> expressions and with a minimal syntax it is possible to support all
> possible programming paradigms. For instance, if the language has
> support for higher-order functions, closures and dynamic typing, we
> can implement object oriented programming without special language
> level syntactic support. Tail-call optimization elude the need for
> special looping constructs."
>
> sounds like you could argue in favor of languages like brainfuck which
> have a minimal set of instructions, yet are still Turing-complete.
>
> Eg. just because tail recursion is enough to perform any kind of
> looping construct doesn't necessarily mean that special looping constructs
> wouldn't be a useful tool.
If a language is "powerful enough", you can create the abstractions you
need from within the language and use that. If the language is not
powerful enough, the things you need must be hard-coded into the
language, which is less flexible.
On the other hand, a compiler can take advantage of the specific
features of a specific language, but can't easily take advantage of the
properties of some custom abstraction that you designed yourself.
(Although some languages allow the programmer to specify compile-time
transformations that go some of the way.)
Post a reply to this message
|
![](/i/fill.gif) |