Beautiful Failure
github.com
github.com
Obviously not the point of the article, but it's still important to get your jargon right. This isn't a race condition. It could be, if you were trying to modify the same class from separate threads. But the mere attempt to share access to a global variable is not a synchronization bug, and you shouldn't be using synchronization terms for it. This is usually just called a "namespace collision".
It can be like ActiveRecord migrations but for live wire protocols -- independent apps built against different versions of the structure definition all see the data in the form they expect, not the form it was sent in. protobuf and thrift only support the simple case of adding new fields in new versions, but binprot supports full translation functions: http://janestcapital.com/?q=node/41 -- and none of them involve an iota of on-the-wire self-description bloat.
I love this quote.
Have IDEs that generates boiler plate code? Then perhaps the language is too verbose, or not powerful enough to express templates of code. Have IDEs that auto complete variable names for you? Perhaps there are too many and your program is too big to fit into your head.
Although in fairness, it isn't necessarily a language smell. It can oftentimes be a framework smell or a "your code sucks" smell. :-)
(E.g., names are in one place. Refactoring can happen automatically, because the IDE can find all uses of a method and fix them.)
Isn't this also something that Smalltalk can do?
Eclipse is an effort to bring the advancements of smalltalk to java programmers, as the smalltalk community got absorbed by the java borg (see also: hotspot vm history.)
(Interesting sidebar: Eclipse is a descends directly from Smalltalk)
There exists a grotesque obsession with text and the tools to edit text among programmers.
My editor of choice can give me a great deal of help when writing HTML markup. It's actually quite amazing how good an editor can be.
But I can still jump off the track and remove a "<" where there really should be one. No, that's not really useful to me at all. I'd be much better off in a world where the angular brackes, quote marks wrapping strings, and other arbitrary delimiters of the ENCODING didn't really exist at all.
I'd much rather edit a DOM directly than through the looking glass of text.
An film editor would never open up his final cut project files and tweak them by hand. He has far better tools that more appropriately fit his domain. Why not me?
The reason programmers use text is that you can input text much faster than you can drag and drop things together, it's easy to massage with simple scripts, and if the vendor-du-jour's IDE is broken, incomplete, or unsatisfactory we can go outside of it without having to deal with some arbitrary binary file format.
Seriously, you need to make a better case that a visual language would be an improvement instead of another reason to become a park ranger.
Also, presumably you'd want a non-textual Javascript layer to go with your non-textual DOM layer. I think the jury's still out on general non-textual programming.
I think the reason programmers get hung up on text and its editors is that it's like C: it's the lingua franca. Every system uses it at some level, so if you've got a good tool for using it, it's applicable to any domain you care to look at. Without it, you'd be reduced to domain-specific abstractions which might not have any wider applicability at all.
It's entirely unproven. But I hope one day I can say it's a better way to do things.