While weak typing and dynamic scoping are great for some things, it really trips up a lot of beginner programmers.
It's more accurate to speak of dynamic or latent typing than weak typing. Languages in the lisp family are strongly typed (in the sense that type errors are always trapped, unless you've told the compiler that you care more about execution speed than safety); they differ from statically typed programming languages (such as Java and ML) in that type errors are trapped at runtime rather than compile time. However, you may get a warning at compile time if your compiler notices that you're trying to do something like add a fixnum to a character.
As for the dynamic scoping: most modern Lisps use lexical scoping (though dynamic scoping is also available with Common Lisp's special variables). The most notable exception nowadays is Emacs Lisp (a fairly crufty
dialect), and it may be changed in the future.
I guess this means Lisp is a power tool for those who have learned how to use it. But it is difficult to learn, and unfortunately, a widely-used and widely-understood (more or less) language needs to appeal more to the lowest common denominator rather than only to those that get it.
if everyone followed this reasoning, their only form of locomotion would be crawling, because learning to walk (let alone to drive) would be a huge effort. Luckily, I think there still is a use for programmers who are willing to invest time to learn a language that can greatly improve their efficiency, and the pleasure they gain from their work.
Besides, historical baggage and huge complexity don't seem to prevent widespread use of C++:-)
There has also been research work into the privacy protection issue, and that of resistance to malicious intruders and insiders, in particular work on fragmentation, redundancy and scattering.
The idea is that information is scattered between a number of sites, and protected using cryptographic techniques. In order to decode the information, contributions from a quorum of sites must be agglomerated (each site has a portion of the key). Furthermore, redundancy provides protection against the failure of a limited number of the sites (no single point of failure).
These techniques have been used for storing medical records, and for implementing high-security (confidentiality + integrity) distributed storage systems.
See for example http://www.newcastle.research.ec.org/pdcs/trs/abst racts/143.html
As for the dynamic scoping: most modern Lisps use lexical scoping (though dynamic scoping is also available with Common Lisp's special variables). The most notable exception nowadays is Emacs Lisp (a fairly crufty dialect), and it may be changed in the future.
if everyone followed this reasoning, their only form of locomotion would be crawling, because learning to walk (let alone to drive) would be a huge effort. Luckily, I think there still is a use for programmers who are willing to invest time to learn a language that can greatly improve their efficiency, and the pleasure they gain from their work.Besides, historical baggage and huge complexity don't seem to prevent widespread use of C++ :-)
There has also been research work into the privacy protection issue, and that of resistance to malicious intruders and insiders, in particular work on fragmentation, redundancy and scattering.
t racts/143.html
The idea is that information is scattered between a number of sites, and protected using cryptographic techniques. In order to decode the information, contributions from a quorum of sites must be agglomerated (each site has a portion of the key). Furthermore, redundancy provides protection against the failure of a limited number of the sites (no single point of failure).
These techniques have been used for storing medical records, and for implementing high-security (confidentiality + integrity) distributed storage systems.
See for example http://www.newcastle.research.ec.org/pdcs/trs/abs