Lambda the Ultimate

inactiveTopic Linguistic Relativity Homepage
started 10/1/2002; 11:38:04 PM - last post 4/26/2003; 12:01:13 PM
jon fernquest - Linguistic Relativity Homepage  blueArrow
10/1/2002; 11:38:04 PM (reads: 2652, responses: 9)
Linguistic Relativity Homepage

Does the controversial Sapir-Whorf Hypothesis or theory of "linguistic relativity" that has been proposed for human languages hold for programming languages and the programmers who use them?

Linguistic relativity is the "proposal that the particular language one speaks influences the way one thinks about reality"... According to the theory, "people who speak different languages perceive and think about the world quite differently"...

"The Sapir-Whorf Hypothesis is the most famous. Benjamin Whorf's hypothesis had two interpretations, the first is called determinism ["people's thoughts are determined by the categories made available by their language"], and the second is labeled relativism ["differences among languages cause differences in the thought of their speakers"..... "

Do the language features of the programming languages a programmer uses as a computer science student determine the ideas that a programmer is able to use and understand as a professional programmer? [ Sapir-Whorf Hypothesis on Google]


Posted to Software-Eng by jon fernquest on 10/2/02; 12:03:23 AM

Michael Vanier - Re: Linguistic Relativity Homepage  blueArrow
10/2/2002; 12:13:14 AM (reads: 1752, responses: 0)
I think it's pretty obvious to anyone who knows several programming languages from different paradigms that programming languages, perhaps even more than human languages, shape the way we think. That's why I think that one of the main reasons to learn new PLs (apart from the fact that it's really fun ;-)) is that they teach you new ways to think and broaden your ideas of what can be done with programming. Alan Perlis even said something like "Any programming language that doesn't change your ideas about programming isn't worth learning."

I think this explains why it's so incredibly hard to popularize new programming paradigms. People have to retrain their whole way of thinking, which is much harder than learning a new syntax.

Ehud Lamm - Re: Linguistic Relativity Homepage  blueArrow
10/2/2002; 12:40:11 AM (reads: 1753, responses: 0)
Previous LtU discussion

jon fernquest - Re: Linguistic Relativity Homepage  blueArrow
10/2/2002; 1:35:29 AM (reads: 1745, responses: 1)
> Previous LtU discussion

Whoops! I didn't check it on Google since it seemed to be a little weird and slightly off-topic.

> I think this explains why it's so incredibly hard to
> popularize new programming paradigms. People
> have to retrain their whole way of thinking,
> which is much harder than learning a new syntax.

Incrementally adding features might be less demanding.

...and sometimes it is only *specific features* in an alternative paradigm that are really useful.

One of the Oz papers made the point that all Prolog features are not equally useful. The logical database horn clause feature (a database of ground clause facts, a query, and "back chaining" inference rules that produce a set of predicates that satisfy the clauses) being the useful core of Prolog.

For instance, with this subset of Prolog you can embed business logic in a more declarative fashion in business applications. (One of the columnists at Dr. Dobbs Journal referred to this use of Prolog several timesin his column)

The Sapir-Whorf-like question I'd like a more specific answer to is:

How do specialized DSL syntax and semantics help end-users and programmers conceptualize problems and their solutions in the domain?

Ehud Lamm - Re: Linguistic Relativity Homepage  blueArrow
10/2/2002; 1:47:56 AM (reads: 1816, responses: 0)
Well, its about designing domain specific abstracions, isn't it?

Anton van Straaten - Re: Linguistic Relativity Homepage  blueArrow
10/2/2002; 9:30:56 AM (reads: 1683, responses: 0)
Do the language features of the programming languages a programmer uses as a computer science student determine the ideas that a programmer is able to use and understand as a professional programmer?

As Michael V. posted, the computer languages you know well at any one time do affect the way you think about problems, but that doesn't necessarily say anything about one's ability to learn new languages and approaches. That's really a separate question, and I would answer the above quote with an unequivocal "no". If it were otherwise, that would be an incredibly strong claim, worthy of serious study - it amounts to suggesting that learning one thing prevents you from learning another. There are plenty of counterexamples to falsify this claim.

If anything, the opposite seems to be true: the computer languages one is able to master are determined by qualities of the individual, and the main way in which one's first language(s) matter is that inertia might bind one to them.

How do specialized DSL syntax and semantics help end-users and programmers conceptualize problems and their solutions in the domain?

As Ehud implied, being able to manipulate high-level domain-specific abstractions can provide significant leverage and power. In addition, DSLs allows programmers to focus on the problem domain, not on lower-level details, which can free up cognitive bandwidth. For end-users, the same thing can make it possible to participate more directly in programming, which might otherwise be effectively impossible.

These questions all have direct analogs in math and scientific disciplines. Theoretical advances are often only possible due to layering of abstractions, so science is all about "DSLs". From that perspective, it's rather amazing how much in the computing world (especially "professionally") is done without the benefit of DSLs - it's as though physicists were to shun calculus in favor of manual integration. In fact, in commercial computing it's not unusual to find a strong bias against abstraction, on grounds such as e.g. performance concerns. Of course, this kind of thing has an enormous influence on one's thinking about problems.

Alex Sauer-Budge - Re: Linguistic Relativity Homepage  blueArrow
10/2/2002; 12:31:14 PM (reads: 1645, responses: 0)
Academics aren't the only ones who have tossed around the idea that the sequence of learning matters. As a private pilot, I've heard it said that if you learn to fly an airplane before learning to fly a helicopter, you will never be a safe helicopter pilot (and I assume visa versa) because your gut reaction (and action) in an emergency will be for the wrong vehicle. This is less "learning one thing prevents you from learning another" and more "learning one thing can prevent you from properly applying another thing."

Michael Vanier - Re: Linguistic Relativity Homepage  blueArrow
10/2/2002; 5:03:28 PM (reads: 1627, responses: 0)
I would say that learning one thing well sets up an automatic reaction to behave in a certain way in similar circumstances. The problem comes up when the circumstances are similar, but the differences are strong enough that blindly reapplying what you know is counterproductive. So, in terms of computer languages, if you know C really well and you learn scheme, you might want to solve everything imperatively, using set! all over the place, even though it's not the natural way to use the language. Similarly, you could write an entire program in java in terms of static methods of a single class, but it's not leveraging the abstractions provided by the language. It's hard to convince people of this; they tend to say "but I _know_ that my way works, so why should I try to do it a new way, when I don't even understand the new way?" You try to explain that the new code will be more modular, easier to prove correct, etc., but it's still hard for many people to accept.

On the topic of DSLs: the problem I have with DSLs is that it's a pain to have to learn a whole new syntax for every language domain. That's why I like s-expression syntax: you can mold it into whatever you want and the core syntax doesn't change (you just add new special forms through macros). In fact, Paul Graham advocates lisp as a language for writing DSLs, and he says that in lisp essentially all programming consists of writing DSLs whether they're called that or not. Of course, s-expression syntax is not perfect for all domains, but if I have to learn 100 DSLs I'd be happy if they had some syntactic common ground.

Anton van Straaten - Re: Linguistic Relativity Homepage  blueArrow
10/2/2002; 9:43:53 PM (reads: 1613, responses: 0)
I agree that sequence of learning can make a difference, although I'm sure there are many other possible factors: the age you learn something, how much time you spend learning each thing, how often you use that learning, how much you switch between competing learned behaviors, etc.

Humans apparently have a very strong ability to learn new human languages between ages 2 and 6. This ability drops off dramatically after about age 6. I don't think we know whether something similar might apply to formal languages such as programming languages, since we don't typically teach them to 2-6 year olds. Perhaps we're all hampered by not having learned ML as toddlers?

Instead, by the time we're learning computer languages, we seem to be applying a generic and rather adaptable ability (at least in some humans) to learn formal languages. Amongst those who are capable of learning multiple formal languages at all, I haven't typically seen much evidence of the first language having a particularly special significance, except for reasons of inertia I mentioned - which admittedly can be strong. I know plenty of people who've managed to move on quite convincingly from having learned BASIC, FORTRAN, Pascal, C, or some assembler as a first language. To use a trivial example, one doesn't often find ex-BASIC or FORTRAN programmers hankering after a GOTO, unless they were simply badly trained...

In fact, Paul Graham advocates lisp as a language for writing DSLs, and he says that in lisp essentially all programming consists of writing DSLs whether they're called that or not.

I agree with you and Paul - however, I think it can make sense to provide a sugared syntax if the language is to be used by end users or programmers familiar with some other syntax, and that's not uncommon with DSLs.

Ehud Lamm - Re: Linguistic Relativity Homepage  blueArrow
4/26/2003; 12:01:13 PM (reads: 1165, responses: 0)
Nice discussion about "real" languages over on languagehat.