4 ms·
Languages often have a bunch of implicit assumptions which are not stated outright in the material. As a example, the Foo-lang [1] books starts (obviously) wit
by goto11 6y ago
Languages often have a bunch of implicit assumptions which are not stated outright in the material.
As a example, the Foo-lang [1] books starts (obviously) with how to write and compile a hello world program. Bar-lang books typically postpone this to the end of the book since IO and deployable programs are advanced concepts. I once talked to some Bar-fans about this and they simply did not understand why this could be an issue. Surely you could just echo "Hello world" in the repl as the first exercise?
The underlying unstated assumption is that Bar-lang programs are primarily something you write for yourself and interact with in a repl, while Foo-programmers assume programs are written to be deployed and executed.
Such unstated assumptions are not written on first page in the manual because they are invisible when you are immersed in the culture.
Another example is a discussion I saw where a Baz-user claimed that everything was simpler in Baz than in Bong. The Bong-fan then asked how you loaded data from a relational database. The Baz-fan replied that only an incompetent moron would use a relational database, real men use text files which have less overhead. Now this could be dismissed as cognitive dissonance because Baz didn't have a nice RDBMS interface, but I think it is indicative of a deeper cultural assumption that the application can decide which format to persist data in, where Bong comes from an assumption that the data is already there in a given system and a workable program will need to be able to interact with it whether the developer like it or nor.
Again, such underlying assumptions are typically not written in the tutorial, but have deep implications for the language design and ecosystem.
[1] I changed the language names so as to not start a discussion about the particular languages. Although I'm sure there are actual languages called Foo, Bar etc.
- deleted 6y ago[deleted]
- waheoo 6y agoFoo = procedural (c) Bar = functional (haskell) Baz = bash ? Bong = hard to say because bash has a perfectly good interface to sql so im just super confused now.
- JadeNB 6y agoMention language names and people get hung up on the specific languages chosen, use generic names and people try to figure out what the obscured specific languages might have been ….
- waheoo 6y agoHey, let us have some fun.
- marcosdumay 6y ago> Baz = bash ? Lisp (the anecdote is famous) Bong may be C#, but "good" is pushing it. The only language I know with a good interface with a database is SQL, but I/O is quite bad.
- waheoo 6y agoAh yes that must be it! Then what is bong?
- goto11 6y agoI'm curious, what anecdote are you referring to?
- marcosdumay 6y agoThere's an essay from PG where he explains how viaweb used only text files and how people react to the absence of a database.
- goto11 6y agoNice. I was actually paraphrasing a discussion I saw recently about K versus Python.
- marcosdumay 6y ago