|
Re: Programming in the Mid-Future
|
Posted: Mar 15, 2010 2:27 PM
|
|
> > > I have a hard time thinking of one > > > > Carson, how about the very browser you've posted this > > comment with? :-) > > > > I mean browser scripting. Is there a scarier nightmare > > than doing this kind of stuff in a strictly typed, > > compiled language? > > Mike, you keep missing the point. > > We're not debating whether it's easy or hard but whether > it's possible. > > Actually, we're not even debating any more: the initial > claim ("can't solve") is clearly incorrect.
Here's a problem that I regularly want to solve and that works perfectly well in a fully run-time-checked language and don't work in any statically typed language I've come across (and more or less by definition can't work): Start executing a program with missing methods and invalid "types."
I don't want the overhead of having to fill in all virtual methods and making sure that all @Override specs are correct etc. I just want the part of the program that I've written to start running, so I can go on debugging and see how that single test I'm focused on in the moment is faring.
I suspect that this isn't as important to you - because you've had about 15 years of working (according to your CV) exclusively with the C++/Java family of languages - which I presume means that you've only worked a little bit with the dynamic languages. Your working habits and mind are almost certainly optimized for this environment, making the most of the functionality you get there, and unconsciously working around the deficiencies, just like mine are optimized for the dynamic language space and I work around the deficiencies in that. And neither of us fully exploit the benefits available in the opposite environment - I probably don't mentally rely on types enough when doing Java programming, and say you look for types when you start trying to read dynamic code.
When I switched from static to dynamic programming, it took me probably at least five years to learn to properly exploit the benefits of the dynamic environment, to get rid of my static ways of thinking, and to change my habits of design to work well with the dynamic languages - both avoiding constructs that would have been fine in static languages, and using constructs that would have been impossible in static languages.
As for the popularity argument: If I replaced your statement > Maybe you mean that certain problems can be solved more > elegantly with DTL than statically typed languages, but > even such a statement is extremely subjective and I find > no evidence to support it in the current trends, where > the most active and popular languages (Java, C# and C++) > are all statically typed and DTL continue to occupy a > niche, despite being in existence for several decades...
with > Maybe you mean that certain problems can be solved more > elegantly with Unix than Windows, but even such a > statement is extremely subjective and I find > no evidence to support it in the current trends, where > the most active and popular operating systems (Windows > XP, Windows Vista and Windows 7) are all variants of > Windows and Unix continue to occupy a niche, despite > being in existence for several decades...
it may become more obvious that the argument has little information in it.
Many people use statically typed languages in part because they are afraid of type errors and feel safer with them than with dynamically typed languages, without regard for or deep investigation of actual merit, just as many people use Windows because they are afraid of using "something supported by random hackers", without regard for or deep investigation of actual merit.
|
|