What is Expressiveness in a Computer Language

Raffael Cavallaro raffaelcavallaro at pas-d'espam-s'il-vous-plait-mac.com
Sat Jun 17 09:08:59 EDT 2006


On 2006-06-17 07:03:19 -0400, Joachim Durchholz <jo at durchholz.org> said:

> I don't see static checking and explorative programming as opposites.
> Of course, in practice, environments that combine these don't seem to 
> exist (except maybe in experimental or little-known state).

Right. Unfortunately the philosophical leanings of those who design 
these two types of languages tend to show themselves as different 
tastes in development style - for example, static type advocates don't 
often want a very dynamic development environment that would allow a 
program to run for testing even when parts of it arent defined yet, and 
dynamic type advocates don't want a compiler preventing them from doing 
so because the program can't yet be proven statically correct. Dynamic 
typing advocates don't generally want a compiler error for ambiguous 
typing - for example, adding a float and an int - but static typing 
advocates generally do. Of course there's little reason one couldn't 
have a language that allowed the full range to be switchable so that 
programmers could tighten up compiler warnings and errors as the 
program becomes more fully formed. Unfortunately we're not quite there 
yet. For my tastes something like sbcl*, with its type inference and 
very detailed warnings and notes is as good as it gets for now. I can 
basically ignore warnings and notes early on, but use them to allow the 
compiler to improve the code it generates once the program is doing 
what I want correctly.

[*] I don't mean to exclude other common lisp implementations that do 
type inference here - I just happen to use sbcl.




More information about the Python-list mailing list