This is a great article that touches on psychology...
# thinking-together
j
This is a great article that touches on psychology, languages, and language https://medium.com/@old_sound/programming-languages-are-not-languages-c6f161a78c44 P.s. those references are 😍
☝️ 3
👍 2
🍰 2
e
The German philosopher Heidegger believed thinking is speaking to yourself, and that there is no consciousness without language. Computer languages are languages, just ones with very few nouns. If you carefully examine the task of learning a new language, you have a few dozen numeric primitives, perhaps 500 total verbs, of which you only use about 50 regularly. But then you hit the nouns, and there a million of those. Human languages have a name for all sorts of parts of things. A computer is such a simple universe there aren't even 50 nouns. So they seem very different, but really it is just the giant pile of nouns that makes human languages seem so complex. But the complexity level of grammar of computer languages is pretty comparable. His point that various build and make tools often require a different tool or language is not always true. It just happens that language designers are sometimes shortsighted, and also because of OS idiosyncrasies which require customization for packaging. I find some of the build tools to be so hard to use that i don't even bother learning the language.
🍰 2
k
I spent a while a few years ago intensively thinking about the difference between languages and tools. But I never considered these terms themselves as analogies when applied to programming. Extremely useful article. But calling programming languages 'tools', while useful once I think of it as an analogy, still leaves a lot on the table IMO. A tool as we usually conceive of it typically has only a few degrees of freedom. Think of your hands, or a screwdriver, or MS paint. But the state space of a programming language is much more vast and non-linear. The mental image I find most useful is of a language as a little universe being born, budding off from ours through a tiny wormhole that can only transmit information at 48 baud. Perhaps we need a neologism. I like conlangs and esolangs. Perhaps we need proglangs, parasitic constructs off natural language with many attributes of tools but nonetheless vast state spaces more akin to languages.
o
In fact in french, there are two words: Langue for natural language and Language which is more general and that comprises also formal languages.
And looking for some distinctive characteristics between natural and formal languages I have just came across the notion of "double articulation", or "duality of patterning" which is specific to human language (or speech) and might allow a "potentially infinite number of meaningful language sequences" (citing wikipedia page). There is an articulation of "tokens" that carry meaning like "cat" in "the cat is sleeping". And token that carry no meaning, like sounds or letters, the "c" in "cat" which carry no meaning at all.
This second category of "token" is called "Figurae", and I find the wikipedia page about it very interesting. One of the examples is "three-horizontal-band" national flags (like Russia) : for analysis of those flags a given horizontal-color-bar is a figurae. It as no meaning itself, but the meaningful Russian flag is a given combination of three of them.
I like the term "Figurae", as it feels to me more general and not tied to text languages.
❤️ 1
d
As I programming language designer, I do believe in a weak form of the Sapir-Whorf hypothesis. There is now enough experimental evidence that I consider it proven. See the work by Lera Boroditsky, for example.
The author says that programming languages aren't languages, and that Sapir Whorf doesn't apply to programming languages. My personal experience contradicts both statements.
Programming languages are more than just tools. They are notation for describing algorithms. For communicating ideas between human beings, just like written language. In the early days of programming, before the first compiler, we wrote programs in high level languages for the purpose of communicating algorithms between programmers, and mathematical notation was invented centuries before that. The lambda calculus is now considered an early programming language, but it was invented in the 1930's as a notation for describing recursive functions, and it clearly wasn't a "tool" then.
👍 1
Here's another perspective. Hominins have been making tools for a million years (fire, stone knives). Anatomically modern homo sapiens has existed for 200,000 years (AFAWK our brains have been anatomically modern for this long). But language is only about 40,000 years old. Language is a technology: it is a tool of communication, and a tool of thought. We invented language as a tool, just as we invented flint knives and various other technologies in even earlier eras.