5 ms·
I feel the opposite. Strong compile-time checks make it easier to modify a system, and especially make it easier for people unfamiliar with a codebase to contri
by edflsafoiewq 8y ago
I feel the opposite. Strong compile-time checks make it easier to modify a system, and especially make it easier for people unfamiliar with a codebase to contribute. Being explicit what the static properties of a system are makes them easier, not harder, to modify.
Types serve as explicit documentation for facts about the system that would otherwise have to be reconstructed by every reader. Type checking ensures that any change to one part of a system still interfaces consistently with all the other parts.
Writing in a dynamic language can be faster, since you can skip writing down information that you would have to be explicit about in a static language, but once that information has been purged from your mental cache, IMO that's when the system acquires the immutability of marble.
(The other nice thing about dynamic languages is certain patterns are often syntactically much cleaner.)
- sanxiyn 8y agoHot reloading is the critical feature, and dynamic languages usually have better support for it. (Lisp is a good example.)
- adamnemecek 8y agoHot reloading doesn’t provide safety guarantees.
- sanxiyn 8y agoMaybe, but hot reloading is very very useful. It is mostly a development time only feature anyway.
- loup-vaillant 8y agoI believe we have seen Casey Muratory doing hot code reloading in C++, in his Handmade Hero stream. Compile the dll, reload & test the dll, without exiting the game runtime he's developing. The Yi editor, written in Haskel, I believe does hot code reloading as well. The XMonad window manager can be recompiled and reload while keeping your windows up (the configuration file is actually Haskell code). --- Yes, hot code reloading is bloody useful. It is also perfectly compatible with static typing. I see no good reason for statically typed languages to have worse support for it.
- estebank 8y agoIt's only incompatible with Link Time Optimization and changes to static dispatch or structure, but anything that could have exposed as a COM object could be used.
- blattimwind 8y agoUnloading/reloading modules is perfectly possible, though in my perception relatively less common on Unix/Linux, while slightly more common in Windows land (e.g. DLL plugins, resource/translation containers etc.)