4 ms·
No this completely misses the point! The point is the development model, not the language syntax. Static types assume a "static" phase: an edit-compile-run cyc
by ridiculous_fish 8y ago
No this completely misses the point! The point is the development model, not the language syntax.
Static types assume a "static" phase: an edit-compile-run cycle, with bright lines between each stage.
But as a Smalltalk programmer, you inhabit the system and build it inside-out, while it is running. For example, during development it is routine to query live objects. The lines between the edit-compile-run phases disappear.
Static types don't make sense in the Smalltalk model because there's no static phase.
- ddragon 8y agoI agree with that. The interesting aspect of dynamic languages is that it's a living program, you can interact with, it can interact with itself and you could even effectively make it an entire new program without ever closing it like the Ship of Theseus. Smalltalk, Lisp Machines and the Erlang Virtual Machine were pushing this idea. Which is why I feel that a dynamic language that doesn't focus on the interactivity, like having a great REPL based development cycle, hot swapping capabilities and strong code as data utilities kinda misses the point in the trade-off between static and dynamic, sacrificing safety for too little. Jupyter notebooks seem to have recently brought a little of the first to the mainstream at least.
- e12e 8y agoBut there's more to type systems than static types - gradual / dynamic typing is a thing. Eg: http://www.strongtalk.org/ http://www.strongtalk.org/
- momentoftop 8y agoStatic types assume no such cycle! Milner's MLs, which introduced the hugely influential simple type theory to functional programming in the late 70s, of which Ocaml and Haskell are derived, supported global type inference, and were very "lispy". They were first used for interactive theorem proving, where you spent all your time spinning around MLs REPL, updating your global environment where your global bindings have a nice static type, and when you had finished for the day, you saved your image (you save-lisp-and-die'd). This is still a way to use Ocaml today, and Poly/ML, which is the standard ML used for the Isabelle theorem prover, makes heavy use of an image based model.