Another trap for developers: linguistic determinism

Ludwig Wittgenstein

RAD environments can suppress the symptoms of impotence through the illusion of power

The immortal argument “my programming language is better than yours”, which is actually a reminiscence of childhood “my toy is better than yours” always caught my attention. I can spend hours amusing myself with these talks. That’s when I ask myself: can a programming language mutilate your mind? Can a single programming language produce a stupid? I think it can. A lot!

At the philosophy course, I was really impressed by the concept of linguistic determinism, which is the idea that the language shapes thought. Some philosophers go beyond that: Wittgenstein for example used to say (and I fully agree) that the limits of the world are actually the limits of the language. It’s a valid point of view: you only know something when you actually can describe it.

And where does our language comes from? Well, it’s actually the result of our environment (or is it something intrinsic?). The environment shapes our language. Here is a banal example: someone which lives in the arctic can identify several kinds of white, which will be reflected in it’s own vocabulary. I can only perceive one kind of white (I’m from Brazil), because white is not a common color in our environment. But I can perceive several types of bananas that a foreigner can’t perceive at first sight.

Edsger W. Dijkstra

This reminds me a Dijkstra quote: “the college pretending that learning BASIC suffices or at least helps, whereas the teaching of BASIC should be rated as a criminal offence: it mutilates the mind beyond recovery.“. In this case, this quote comes from the lecture “The threats to Computer Science”, which subject was the way how computer science courses were being taught at the time. Curiously, some people use to say the same about Java.

So the question is: can a programming language “mutilate the mind beyond recovery”? In my opinion, yes it can. Actually, I saw many cases of developers which can create amazing things in Delphi or Visual Basic (6) but every time they try to learn a new programming language fails miserably. They actually try to learn some other languages, but they usually think that it’s more safe to keep with what they already know then to try something new.

Something very similar I can see in Java too. Given the success of this language in several environments, many times the developer get used to it and never more ought to learn any other thing. The justification is always the same: “if I already know Java so well, why would I learn other languages or environment?”. In the case of Visual Basic (I’m always referring here to Visual Basic 6), this deficit is clearer: after wall, it’s considered by Microsoft as a deprecated language. In this sense, those who use to develop using VB6 have a huge advantage compared to those which are used to Java. The levels of arrogance are considerably lower, so the need to learn something new soars in this case. The problem is that in both cases they are only taking into consideration the fear to became technologically obsolete. The real problem is not obsolesce: it’s the linguistic determinism.

Which makes me think of the real role of the developer: reproduce computationally the solution of a given problem. Well, given that the perception of our world may be influenced by our language, and programming languages are actually shaping our view of the development process, our perception of it will be reduced if we only know one (or two) programming language.

Ignoring other programming languages imply in ignoring the main cause why programming languages are created: solve problems that can’t be easily solved by the languages present at the time of it’s inception. Are those general purpose languages? Yes, absolutely. So, shouldn’t these languages provide a wide view of the development process? Sure, but the world changes all the time. New problems arise while others are overpassed. If not, so we would have only a few programming languages today. This is why the argument “all the languages are basically the same, the only difference is the syntax” is so stupid.

Personally, I don’t know if it’s a good thing to know only languages based on managed code like Java or C#. That’s because they don’t show to the developer the inner workings of how a computer works. I don’t think also that you may be an expert in assembler too. But at least the basics of it you should know. Maybe at least C.

By the way, the formula “knowing only one x is not a good thing” where x equals programming language, programming paradigm, development environment or operating system is always true, because, as I mentioned earlier, you are actually limiting your perception of the world. As many things you know, as many dots you have to connect. And as many dots you have to connect, better will be your solutions.

And this is why I don’t like RAD environments at all. I think they are great for our productivity, but if someone starts it’s professional life through one of these tools, it will be really hard to get out of it when needed. As I mentioned I saw many cases of VB6 developers which had really bad times trying to learn other languages like Java or C#. In this case, not because VB6 or Delphi sucks, but because those environments usually create the illusion that software development is easy.

PS:
By the way, if you only know one language/environment, it’ll always be hard to learn anything which is different from it. (so it’s not a Delphi or VB6 exclusivity)

2 Comments

Add Yours →

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.