I've had this discussion with co-workers before about scripting languages, and in particular Python, as that is what I am working with currently. I feel that once Python -- or indeed any loosey-goosey language that lack strong types -- programs grow beyond a certain size you easily fall into the "inconsistency trap", especially if you have many programmers working on the same code base.<p>You have to be extra diligent with docstrings; unit tests and variable naming, or invent your own poor, ad hoc type checking with isinstance, or liberal use of exception handling if you insist on ensuring that Python's duck typing continues to work in your program.<p>Invariably you'll end up with two camps: those who feel <dynamic lang> scales to large codebases, and those who do not; those in the former camp have (almost never) had to maintain a millions of lines of code before so they do not know just how helpful having a strict compiler is, and just how hard it is to refactor or infer the meaning of code due to the dynamic nature of the language. Linting will only get you so far.<p>It's perfectly possible to write maintainable, large programs in dynamic languages, but it is infinitely harder than it should be.
"I haven’t listened to the interview so I honestly don’t know if the quote is taken out of context or not"<p>WTF? -1 for not trying.<p>There's a panel discussion with:<p><pre><code> Erik Meijer (misc, head of Cloud Programmability Team at Microsoft)
Gilad Bracha (Dart)
Martin Odersky (most recently Scala)
Anders Hejlsberg (Turbo Pascal, Delphi, C# etc)
Peter Alvaro (researcher e.g. datalog)
</code></pre>
And some ungooglable twerp doesn't actually listen to it?<p>Argument from authority seems spot-on when you're replying to something they said.<p>Make that -2
Link-bait.<p>The problem of composability has been debated to death and is in general recognized to be the biggest problem of our software industry. Even Unix-derived operating systems come these days with pretty big and monolithic pieces of software. Even Emacs is technically a big and monolithic piece of software, at least when compared to Vi.<p><pre><code> But Derick, You Write Large JavaScript Apps ...
I write JavaScript applications that appear to be large.
</code></pre>
Not trying to make an argument about who Derick is, but he's arguing against Anders Hejlsberg, a very talented software engineer and language designer. Certainly we should be wary about appeals to authority (just like the one I've made), however let's not get ahead of ourselves and forget the shoulders of the giants on which we stand.
I struggle to maintain a large system in Python (which, at least, is strongly typed).<p>My major banes are:<p>* performance. You have a hard job retrofitting performance to Python<p>* typos. Typos that survive my Integration Tests which can never have enough coverage. Stuff that just won't compile in a static language becomes a runtime issue on a dynamic language, and they can hide for months outside the happy path e.g. in some error handing code<p>* poor libraries. I get nice warm happy feelings about various async server frameworks that last until I have to debug them and stare at their innards and realised they were contributed to and diluted by twits<p>* pip/virtualenv doing a poor job with native code in modules<p>At least it has namespaces / modules and such<p>At least its not common for every 3rd party lib to want to squat on a function called $<p>And so on.<p>Static typing is a major plus when you are beyond the prototyping stage and heading heading towards the release and maintenance phase.<p>Which is why I'm on the look out for implicitly strongly statically typed languages that look like Python :)
Certainly, large programs are harder to maintain than small programs. Certainly, modularity and encapsulation helps, in any language. The implication that, therefore, choice of language is irrelevant to maintainability is spurious.
The original talk: <a href="http://css.dzone.com/articles/you-can-write-large-programs" rel="nofollow">http://css.dzone.com/articles/you-can-write-large-programs</a><p>Martin Odersky keeps a sober view on all of this. His insights on sound/unsound type systems is really good.<p>Also, Peter Alvaro makes a very good complaint about having a distinction of library creators and every-day programmers, which the others seem to believe not only to be true, but also to be inevitable (I obviously side with Peter on this).<p>The conversation is much better than this sad remark.