markdown guide
 

A bit of a different take on natural language learning:

Language affects the way you think, and being able to think in a way similar to native speakers of a language makes it easier to understand the language itself. Having learned a diverse set of programming languages has helped me learn to readily adapt the way I think, which has in turn helped a lot with my recent endeavors to learn Swedish.


On a slightly different note, I pretty regularly use Python to do the sometimes complex statistics work required for planning out encounters in tabletop RPG's. It's nice being able to throw together a few dozen lines of Python and get all the numbers I need to figure out how likely the group I'm planning the encounter for is to be able to deal with it safely.

 

Thought happens only in some language so of course it matters in which one, not to mention that the meanings of words are made out of how much you know already - so on one hand each language comes also with its whole cultural support and depth and on the other hand, the more natural languages you know, the better your knowledge of each of them becomes, a sort of exponential gain. And then again, some languages (especially some programming languages) do more harm than good to learn, as it were, there is such a thing too (it's called at times "brain rot" because that's precisely the issue - instead of supporting your thought, the "language" makes it even harder to think clearly).

While Python is great for quickly prototyping/scripting something, that's exactly what it is good for. On the other hand CPP is effectively an anti-tool, forcing bad habits and increasing the load on the developer, while Ada for instance is precisely a very supporting (newcomers tend to mistake that for "restrictive") tool.

 

Thought happens only in some language so of course it matters in which one, not to mention that the meanings of words are made out of how much you know already - so on one hand each language comes also with its whole cultural support and depth and on the other hand, the more natural languages you know, the better your knowledge of each of them becomes, a sort of exponential gain

While generally true within a language family, I find that this tends to mostly fall apart when you go for very different languages.

For example, knowing Latin has essentially zero benefit for learning Japanese because they have drastically different grammars, drastically different cultural background, and only one specific word that's shared (パン ('pan' in romanji), but it's actually a naturalized loanword from Portuguese). The only real benefit there is that you already have some experience with thinking differently from how you normally would.

In contrast, my limited knowledge of German, my existing knowledge of English, and even my circumstantial knowledge of French and Old Norse have been very helpful in learning Swedish, but they're all pretty directly related (Swedish is a Germanic language like English and German, derived from Old Norse, and had a lot of French influence over the years (and unlike English, they tend not to naturalize loanwords as much).

And then again, some languages (especially some programming languages) do more harm than good to learn, as it were, there is such a thing too (it's called at times "brain rot" because that's precisely the issue - instead of supporting your thought, the "language" makes it even harder to think clearly).

I don't entirely agree with this. Some languages make it harder to utilize certain patterns of argument or reasoning, but that doesn't prevent you from thinking those things, or even make it significantly more complicated. For example, quite a few languages don't actually have a generic possessive verb like the English 'have'. Pretty much all that don't have a single word construct for this do, however, have some standard phrasing that conveys the same meaning (usually something along the lines of 'X is to me' or 'X exists at me'), because it's at least a useful concept, even if the culture discourages thinking that way. Similarly, English really doesn't differentiate degrees of past tense like some languages do (differentiating for example between distant past and recent past), but that doesn't make it more difficult for most native English speakers to reason about such things, it just makes it harder to express such thoughts or reasoning efficiently.

While Python is great for quickly prototyping/scripting something, that's exactly what it is good for. On the other hand CPP is effectively an anti-tool, forcing bad habits and increasing the load on the developer, while Ada for instance is precisely a very supporting (newcomers tend to mistake that for "restrictive") tool.

Ada's known for being restrictive because it is, but that restrictiveness is why it's so hard to write bad code in the language, the language itself just won't let you. This can be a good thing in many cases, but that level of restrictiveness can also be a limitation. There's some things you just can't do without access to the low-level stuff that's dangerous (for example, Duff's device or Jensen's device aren't possible in most 'modern' programming languages because the constructs they utilize can cause pretty significant issues).

What you mean regarding related languages is true but it's not what I meant really: knowing the Russian meaning of Ρ€Π°Π²Π½ΠΈΠ½Π° adds inevitably to my English word "plain". While related languages share structure/approaches/words and therefore by learning one you effectively learn something of the others too, the un-related languages enrich your knowledge of the concepts that inevitably appear in each of them (since they are all talked by humans). If you prefer, I'm not that much focused on "making it easy" as on making it richer.

Regarding Ada though, it would really be great if one could indeed force good code simply by being restrictive. Sadly that is not at all the case and I've seen plenty of bad code written in Ada regardless of its restrictions. Moreover, it's usually precisely the authors of such code that tend to complain most about "restrictive" - basically they are trying to write CPP in Ada and it's, well, unyielding in this sense, true. The issue with the things "you can't do" is to consider first why that is - in most cases it's not the right place to do them, in fact. To move this to less charged ground, think of a flight and some basic "limitation" - you can't open the window for instance.

Classic DEV Post from Oct 20 '18

Learning the Granular Details of a Programming Language?

I'm currently reading "JavaScript: The Definitive Guide" and it's a mighty long...

Brett Beutell profile image
I like things that I don't understand on the first try