A couple of years ago I was modifying a little the GNU/gcc compiler cause I was so bored. I was adding the inverted statements to the c++ language grammar. Something like the perlish: “sub-block-statements if(some-condition)” with success too. It seems a stupid addition but it’s far more smart than it seems. But I don’t want to discuss about this thing. When I tried to describe to a friend of mine how good this addition was and why the c++0x draft really had to add this entry the guy freezes me with this pearl of wisdom:
seen a programming language seen all other.
Well I shared the same idea until a marvelous days of october 2007. I have nearly abandoned every “modern” and “full of features” text editor at least if we speak of straight english document, simple perl, shell scripts or TeX code.
Right now I’ve become a true fellow of the emacs church. When you began to use extensively the emacs editor you start quickly to be involved with the lisp language. My wise friend was an stupid ignorant and I was a stupid ignorant too. Lisp and its most widely used dialect common-lisp are one of the top representation of abstract and clean approach to computer programming.
If you are not used to lambda programming mechanisms you cannot clearly understand lisp. Lisp is a programmable programming language. Lisp can rewrite itself and modify its own structures in order to accommodate its future behavior. Things like polymorphism, generic programming, functors and other paradigms and “design patterns” disappear when compared to lambda programming.
Imagine a language that has its limitations. Let’s take for example, make me think a couple of seconds, java. You write lines of code trying to build something that do not suffer from these limitations. Lisp instead evolve together with your program. You create the program and the language at the same time. It’s marvelous how the bottom-up design, at the base of all lisp philosophy, work well with very different types of programs.
Shit it’s the only language that make my head spin at the first approach. All the modern languages (c, c++, perl, java, python) are close together. You can explain what a snippet does if you are a newbie of at last one of the listed languages. But lisp is another world. Check /use/share/emacs/$VERSION/lisp/*.el and learn that a language born 50 years ago has much more functionalities of the so called “modern” languages (not mentioning all the shit described in “E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns”).
English
Italiano
0 responses ↓
The are no comments yet. You can be the first.
Leave a Comment