86 karma · joined August 13, 2010
Some of this may be technically incorrect. This is my own mental model of the C language which is sometimes incomplete.
Well it is. There are a finite number of consumers of C++ compilers. He is competing for the attention of potential free software advocates.
JavaScript fills me with joy because it is so unlike these languages and I get to watch people grow when they stop kicking and screaming and learn it. JavaScript doesn't have any super unique features or anything; it's just so not Java while frequently being suddenly essential to people who think in Java.
Namespace qualifiers in names are a fine solution to the collision problem. That's effectively what's there already except every darn function has to be in a module.
Names don't have to be treated like property, you can invoke policy on them and change bad names. His dreams about rich metadata probably include version tags and hashes that would prevent this from silently breaking anything or in a way that couldn't be repaired by a tool.
Modules don't solve the problem you think they do, they just make the name of all functions longer and harder to figure out. They're not hierarchical.
He addressed issues of visibility/encapsulation and gave a great example of where modules fail to solve the problem. Though I don't quite follow his suggested fix, it looks like using lexical scope to encapsulate fib/3 but my Erlang is actually a bit rusty.
Orthogonally, you don't have assume that everyone is stupid for it to be a good idea to design things as though everyone is stupid, because the fractional slice of attention and working memory that the user can easily spare is effectively a moron. This argument applies easy to issues of usability, but for programming, it may equate to driving a car with blinders on. I don't really know.
Indeed, the behavior the article describes sounds like a normal failure mode for a natural language processing computer program, "spewing out a jumble of grammatically correct yet disassociated sentences".
Erlang and Javascript are similar in that they both developed in highly asynchronous environments. And with multiple instances of Node.js, they have similar models of getting things done concurrently; that is, share nothing, pass and handle messages.
Both communities seem to prefer dynamic and/or functional solutions to programming problems rather than the sort of solutions you see in statically typed, "object oriented" languages. Though Node.js does make use of Javascript's object model, whereas Erlang uses very light weight processes to separate concerns.
Erlang's syntax is "weirder" where weird means doesn't look like C. It's semantics and facilities are much more strictly functional, though with some discipline you could use the same semantics in Javascript, minus nice functional features like pattern matching.
It is indeed a complicated matter to produce a book and an author should probably be compensated for producing the book that they did instead of one of the other numerable but less desirable possibilities. Readers of the book could not have guessed the correct number to get the experience of reading it.
There is no obvious threshold, where writing down a number becomes different than editing a home movie or sharing a Beatles tune. You may say, "well of course this case is obvious 'cause I wrote it!" but that can't always be a good reason or you'll allow anyone to turn a number into a thought crime.
Worse still, those making the money have done their damnedest to convince us that copy-right is an immortal entity that cometh from heaven to justly enrich the sacred gate keepers of knowledge and culture. This is why there are pirates and why they are so self righteous.
It can't be helpful though to pretend that books aren't information.