For small programs, e.g., scripts, a untyped or weakly typed language is fine (Scheme, Perl, Python, Lua, Ruby, Javascript). For larger programs, one wants more and more static analysis and formal verification, for example, a stronger type system (e.g., object-oriented or Hindley-Milner) and annotations for theorem proving (and optimization).
We need extensible syntax. Also possibly tools for "porting" from an untyped initial implementation toward more annotations.
Lisp is probably best for extensible syntax, though it's evaluation model will need to be changed to get static analysis.
1 comment :
Are you familiar with the Typed Racket project?
Post a Comment