Languages

by Eszter Hargittai on February 17, 2008

The following in the comments thread of Kieran’s recent post reminds me of an issue I’ve wondered about in the past. The comment exchange:

Do people think it’s worth learning R if you already use STATA*?
Probably in the general sense that it’s worth learning new languages or applications so as not to get too rusty.

I’m not sure whether Kieran meant to refer to computer languages here only or foreign languages as well. I remember reading generals requirements in some graduate program (perhaps my own, I don’t recall) that equated speaking a foreign language with being proficient in a programming language. I’d always found that to be curious. While I believe both are helpful and important skills to have, they seem to be sufficiently different not to equate. Foreign languages (and time spent in other countries) allow us to get to know cultures, histories, peoples in a way that is very difficult to do through translation. Knowing a programming language lends itself to other potential benefits.** The two hardly seem interchangeable. I’m just curious to know what other people think about this.

[*] It’s actually Stata not STATA, I’m not sure why so many people spell it with all caps. Same goes for the Pew Internet & American Life Project. It’s Pew, not PEW.

[**] Yes, yes, I can think of ways in which knowing a programming language might also help one get to expand one’s horizons on those other dimensions as well and feel free to offer entertaining scenarios, but my overall question still stands.:)

{ 1 trackback }

Imagining Science » Blog Archive » Richard Powers, Etc.
02.19.08 at 6:58 pm

{ 72 comments }

1

Brett Bellmore 02.17.08 at 7:13 pm

LOL! Reminds me of when I tried to take the humanities course in logic, and was denied, because I had already taken the engineering course by the same name. Like being able to minimize Karnaugh maps had anything to do with arguing…

2

Daniel 02.17.08 at 7:25 pm

Perhaps I don’t know enough programming languages, but I feel that in general, it takes at most a week for someone who can program to become somewhat proficient in a new language, whereas I think mostly everyone takes more than a week to become somewhat proficient in a new language.

3

Mr Art 02.17.08 at 7:58 pm

If you learn a foreign language you can be reasonably sure that in 30 years people will still be speaking it. Not so with programming; it’s a constant struggle to keep up with the latest ‘cool’ language.

4

HP 02.17.08 at 8:07 pm

It’s actually Stata not STATA; I’m not sure why so many people spell it with all caps.

I used to copyedit technical trade books many years ago. Back in the days of COBOL, FORTRAN, BASIC, etc., it was widely assumed that all programming language names were written all caps. I remember reading in technical style manuals that programming languages were all caps not because they were acronyms, but because they were programming languages. I believe a softened version of this dictum might even have shown up in one of the Chicago manuals (12th edition, maybe?). So I suspect “STATA” is a prescriptivist hypercorrection.

The only exception from the olden days I can recall offhand was Pascal. Although that was sometimes written as PASCAL, as a sacrifice on the Altar of Consistency (which, as we all know, is attended by a priesthood of small-minded hobgoblins).

Nowadays, the trend is in the opposite direction. Consider UNIX versus Linux. And when UGS acquired the FE solver NASTRAN, they started marketing their flavor as NX Nastran.

5

Bob 02.17.08 at 8:11 pm

I think it’s an archaic conflation that may have made some sense at one time but no longer does. I was applying for graduate programs in the late 70’s and they generally required a foreign or programming language as a graduation requirement. Hard as it may be for youngsters to appreciate, computers were still new – I had never touched one even though I was wrapping up my second bachelors degree. Colleges were desperately trying to encourage students to use the damned things – especially those of us in the liberal arts who at the time tended to be somewhat skeptical of their utility. Giving the choice then may have been a good way to get people to utilize the power of computers. I think that battle is over – no one needs to be encouraged to use computers today. The opposite is probably true – people need to be taught how to conduct basic research off-line.

6

abb1 02.17.08 at 8:52 pm

Computer languages are all the same, pretty much. You only need to learn one.

7

paul 02.17.08 at 8:57 pm

Analogies can be made with the romance languages (with their Latin roots) and various computer languages that borrow or extend idioms from C, perhaps the closest thing we have to a mother tongue in computing (if you are conversant with C’s idioms, most other modern languages are a snap to pick up).

But where human languages evolve and allow for new idioms, human/machine interaction is not quite so flexible. How often do your listeners or readers throw up their hands when you leave off a semicolon or reference a term you haven’t explicitly defined earlier?

I doubt there is a lot of cross-benefit to this, other than to assume that someone who learns either sort of language for their own benefit is probably pretty bright in the head.

8

Kristina B 02.17.08 at 9:22 pm

Perhaps for people who speak only one language and do not know any programming languages, both seem equally foreign. No knowing much about either except that they are both called “language,” perhaps they lump them together into the “languages that are foreign to me” area of their brains.

While I generally agree with your sentiment that the two things are fundamentally different, your comments actually reminded me of similarities between the two rather than differences. See, I used to be a software project manager. I was some one who interfaced with both programmers and with non-technical people, and then translated the needs of the non-techies to the programmers and the details of the technology to the non-techies. I actually called it that, because in the absence of a mediator, extremely technical people and non-technical people have a hard time communicating.

Take this scenario, for example: Client A wants Feature X in the software they’ve hired a firm to create for them. Feature X is possible, but very time-consuming and therefor expensive. To Client A, Feature X seems simple and like it should actually be cheap. Now, if you leave it to the programmer to explain why the feature is expensive and how the firm could give them Feature Y instead which is cheaper if slightly less effective…. well, you end up with a frustrated, embittered programmer cursing the luddite masses and a pissy client who feels like she’s being given the run-around with all this mumbo-jumbo tech talk.

Anyway, I think the reason for this oh-so-common disconnect is that programmers and non-technical people tend to think about the world using a different frame, much like people who speak different languages do. So, in a sense, I think there really is a different culture among the super-technical, like folks who can pick up a new programming language in a week, and those who’ve never seen a line of code.

All of that being said, I still think the two should not be lumped together. The “culture difference” is really not that great, and it’s perhaps only noticeable to people who deal with it every day.

9

Quo Vadis 02.17.08 at 9:30 pm

Learning a programming language is more like learning to use statistical methods. You learn a new approach to solving certain classes of problems. Whether you are proficient enough to do so on your own or whether you leave the implementation to a specialist is not as important as knowing what techniques are best suited to a given problem you are trying to solve.

10

Cian 02.17.08 at 9:49 pm

Abb1 – um, no. At least not for anyone who has real problems to solve.

Paul: if you are conversant with C’s idioms, most other modern languages are a snap to pick up

This is wrong in so many ways it would be hard to know where to start. Most languages do not share C’s idioms (by which I’m guessing you mean things like use of the { symbol), its irrelivant to the more important core differences (Object Orientated/functional/procedural, dynamic vs static, etc, etc). If you think conversance with C will make C++ a snap to pick up, you’re in for a world of pain.

11

P.D. 02.17.08 at 9:57 pm

In many philosophy grad programs, a programming language will substitute for the language requirement. I don’t think that this is because anyone thinks the two are interchangeable, however. Most programs will also accept a “special skill” in lieu of the language exam. For students doing philophy of law, for example, this might mean taking some courses in law or even just having a law degree prior to entering the philosophy program.

In short, it’s an incremental way of eliminating the language requirement; it’s still on the books, but almost no one is satisfying it with a language.

12

Seth Finkelstein 02.17.08 at 9:58 pm

#3/mr art – “it’s a constant struggle to keep up with the latest ‘cool’ language.” – yeah, who would have thought that knowing “Farsi” or “Pashto” would ever be such prominent national security matters? And inversely, while there do still exist people who speak “Yiddish”, over the span of 30 years everyone with whom I’d personally have an interest in speaking it (well, granted, more like understanding it …) died off.

13

abb1 02.17.08 at 10:02 pm

Cian, OK, so first there was a family of ALGOL-style procedural languages – don’t you agree that they are all pretty much the same? And there there was this object-oriented reformation and what came out of it is all very similar too. So, yes, you need to understand two concepts, both relatively simple.

14

alex 02.17.08 at 10:06 pm

@seth,

Pretty much anyone who had looked at a map of the natural resources on the planet and noticed that a good portion of the oil reserves are in places that speak “Farsi”.

15

notsneaky 02.17.08 at 10:14 pm

It probably depends on univ/program but I know that a lot of econ depts get annoyed when the college insist that their grad applicants have had taken a foreign language when many of them come from technical backgrounds (or other countries) where a foreign language was not a requisite at the undergrad level. So equating foreign lang = prog. lang is a way around this annoying bureaucratic requirement. In some schools – Rochester I believe – you could get foreign lang credit for straight up math courses.

16

Robert the Red 02.17.08 at 10:22 pm

So you’re saying my idea of translating the Harry Potter books into C isn’t a good idea? Python might be better — it should express the Nagini and Parseltongue primitives fairly well, anyway.

17

Seth Finkelstein 02.17.08 at 10:38 pm

By the way, I recommend people read a masterpiece of the software-as-speech genre, James S. Tyre’s

“Programmers’ & Academics’ Amici Brief in NY MPAA DeCSS Case”

It includes a great footnote:

“If “$plain_text = $file_key ^ $xor_block” seems unapproachable, consider what those not trained in the language of legal citation would make of “111 F.Supp.2d 294, 326 (S.D.N.Y. 2000).” Each is meaningless to those unfamiliar with the language; but each is more precise and compact for those who do understand than would be an English narrative equivalent.”

(Disclaimer: I contributed to this, so I’m very self-interested)

18

julian 02.18.08 at 12:33 am

Basic, Pascal, C++ are languages only in the most attenuated sense of the word. They don’t permit anything but commands and instructions.

19

Matt Austern 02.18.08 at 1:03 am

I agree that human languages and computer languages are very different things. (Although there are enough interesting similarities, at levels like syntactic description, that the metaphor of “language” isn’t completely nonsensical. It’s not accidental that Chomsky is cited in both linguistics textbooks and computer science textbooks.) I also agree with two of the important differences people have pointed out above: the connection of human languages to cultures and bodies of literature, and the fact that learning a computer language well takes less than a year.

I disagree with the idea that all computer languages are essentially the same, however. It may seem that way if you’ve only learned a few languages, because it’s likely that the first few languages you’ve learned are pretty similar. (True for me, anyway. The first languages I used were Focal, BASIC, Fortran, and Pascal, which aren’t all that different from each other.)

But there is a fair amount of variation out there. Programs written in Scheme or Haskell or ML or Prolog or Newsqueak look very different, even at the algorithmic level, from programs written in Smalltalk or C++ or Algol.

20

vivian 02.18.08 at 2:14 am

Hi Seth@12: Michael Wex. (or if you prefer, Michael Wex) and Language Hat. Both very much alive. (And my aunt who turns 100 in six weeks, but she’s not online.)

21

SG 02.18.08 at 2:37 am

I thought the important thing with learning a computer language was not the syntax or the “grammar”, but the particular methods for writing programs effectively – methods like modularisation, debugging, commenting, proper type-declaration – which are pretty much independent of the language itself. In fact people who learn “programming” first through languages like R or the proprietary methods of Stata, SAS etc. aren’t really learning to program at all – they’re learning to give a computer instructions.

(Would Noam Chomsky say this about learning human language? I don’t know anything about linguistics, so I wouldn’t know…).

But I agree that the difference between learning a computer language and a real language is so great as to be incomparable.

22

Zarquon 02.18.08 at 4:23 am

Real programmers can write FORTRAN in any language, including Farsi.

23

occasional coder 02.18.08 at 8:48 am

“Programs written in Scheme…look very different, even at the algorithmic level, from programs written in Smalltalk or C++ or Algol.”

Indeed, and R, deep down, has the structure of the (highly respected) Scheme language. I’ve been tempted to learn it for that reason alone.

24

Scott Martens 02.18.08 at 8:56 am

Yes, learning a foreign language is quite radically different from learning a computer language, and yes, it’s good to take a new one on now and then from both categories. And furthermore, no, not all programming languages are the same – although I’d be hard pressed to compare variety in programming languages to variety in natural languages.

Learning to program in an OO language is not like a procedural language. Learning LISP and LISPy languages is quite unlike C or Perl. Working in Forth-style languages is every bit as hallucinatory as Navajo. And assembly language… might as well talk about learning Martian.

25

GreatZamfir 02.18.08 at 9:00 am

فورتران is apparently Fortran in Arabic. Up to you to write it in Farsi

26

bad Jim 02.18.08 at 9:06 am

Perhaps machine languages aren’t computer languages, but 8048 and 8051, Z80 and x386, 6502 and 6301 aren’t all the same. They have family resemblances, and knowing one machine well makes learning another much, much easier, but the families are as distinct from each other as Germanic and Romance languages.

With a microprocessor you’re only getting to know one individual very well, yet the library associated with one is pretty much guaranteed to have a lot of common functionality with the library of another, which is perhaps not generally the case with the literatures of different human languages. (Of course, all of computer history is short, so it shouldn’t be surprising that so many stories are similar.)

More to the point, computer languages are functional: the machine will do what you tell it to do, though not always what you want it to do. The result of the use of a human language isn’t always quite so determinate.

27

abb1 02.18.08 at 9:09 am

…or Haskell or…

C’mon, let’s talk about programing languages people actually use. This Haskell thing to computer languages is like those clicking languages spoken in South Africa to the foreign languages people typically trying to learn.

28

abb1 02.18.08 at 9:15 am

Now, a machine language program is indeed something completely different. That is, indeed, merely a sequence of instruction.

29

novakant 02.18.08 at 11:01 am

Of course the two are not interchangeable, but as far as learning them is concerned I think there are general similarities:

You can learn basic grammar and a few phrases in a foreign language within a month or so and you can learn the basics of a programming language in the same amount of time. Similarly you can read the manual of, say, a graphics program or read an introduction to Hegel in a relatively short amount of time and you’ll know where all the buttons are or you’ll be able to do some namedropping in casual conversation.

But that doesn’t mean you have much of a clue about what you are doing – all you know is how to follow certain rules or push certain buttons. If you’re actually asked to apply this knowledge, to do something more complex with it, you’ll probably be quite lost or at least very slow.

Also, a programmer with a bit of experience should be compared to a translator or linguist, rather than someone picking up his first foreign language.

30

jonfernquest 02.18.08 at 12:06 pm

It really depends on what you mean by “learn.”

Learning to write whole useful and error free computer systems in a language can be quite an undertaking and probably as complex as learning a natural language.

On the other hand, there are comparatively easy and forgiving scripting languages like Perl, Python, or Ruby, that you can come up to speed quickly and do easy things quickly just like the Thai language that many people seem to be speaking after a week, perhaps because the learning environment and people are so friendly.

Try Pali or Sanskrit for language for a language that is likely to blow all your fuses (phonetic, grammatical, morphological) simultaneously.

31

Michael 02.18.08 at 2:22 pm

Another dubious ‘language’ equivalence: When I was finishing my grad program (comp lit), there was a proposal to allow knowledge of musical notation to substitute for one of the foreign languages required for the degree. I imagine that reading/writing music is much closer to programming than to natural language, at least in terms of the corners of the brain each relies on.

32

monad 02.18.08 at 3:41 pm

C’mon, let’s talk about programing languages people actually use. This Haskell thing to computer languages is like those clicking languages spoken in South Africa to the foreign languages people typically trying to learn.

You’re grossly oversimplifying things. It’s like saying “There’s Romance languages, and Germanic languages, which are relatively easy to pick up if you already know one since they’re fundamentally similar at a deep level. Then there’s all the other languages in the world, some of which admittedly have vastly different syntactic frameworks and are quite difficult for an English or Italian speaker to learn, but they’re all just obscure so they’re irrelevant.”

It’s not a huge leap to go from imperative programming (or it’s cousin object-oriented programming) in, say, Python to Ruby, or C to C++. There’s often peculiarities in syntax that can increase the difficultly, but fundamentally they are solving the same problems in basically the same way.

But there’s other, vastly different, models of programming. Functional programming, such as the bulk of what’s done in Scheme or Haskell or template metaprogramming in C++, is an entirely different way of problem solving than imperative programming. It’s Chinese compared to English — it feels deeply foreign and overwhelming when you first attempt to dive into it, and for most people, it requires an intense effort initially to be able to wrap your head around what the heck is going on.

And functional programming not obscure at all — it’s a bit niche-y, but it lends itself very well to certain classes of problems (the most notable example being Google’s MapReduce, which is one of the core bits of the structure of its database).

33

Dingbat 02.18.08 at 3:56 pm

Interesting points, all. A couple to add: First, as James Redfield taught me in first-year Greek, the thing about language is that you already know ninety percent of what is being said.* With human-human languages, no matter how different, there is a huge store of common knowledge: we can’t see things in the dark, if we walk into a restaurant we probably want food or drink, we hurt when injured, etc.
We don’t have that store of knowledge in common with machines, which makes the language-learning analogy more apt in some ways–the language is ‘more foreign’, in that you have to think in a very different way–but less apt in others–it’s less of a language.
Secondly, Eszter’s contention that “Foreign languages … allow us to get to know cultures, histories, peoples in a way that is very difficult to do through translation” seems to me suspect.** I’d argue that learning a language is fairly far down the road of cultural understanding; there’s way more that can be done first in one’s native tongue. But perhaps that because of my intellectual/analytical bent; others who do a better job absorbing information may have a better experience learning the language first.

Lastly, language requirements are present in academic programs for all sorts of different reasons. Undergrad programs may require one because they feel (liberal-artsily) that it’s a generically broadening experience or that it stretches one’s mind in useful ways. Or they may feel (econ/technically) that it’s an important skill to have in today’s working world. Grad programs may require a foreign language because it’s central to the object of study (e.g. history) or because so much important scholarship in a given field has been written in it (why classicists should know French and German), or, again, because it causes indirect reflection on one’s own language (English Ph.D. programs requiring a foreign language).

In some of these cases (engineers learning Cantonese to be able to communicate with suppliers overseas; archaeologists stumbling through excavation reports in German or Russian) a rough, mechanical translation will do; other cases (you can easily imagine them) will require a more feeling familiarity with the language and culture.

Perhaps this comes back to the 90% of what is already shared between the speaker/writer and reader/listener: the laws of physics and chemistry and principles of mechanical engineering, knowledge of stratigraphy and epigraphy and art-historical periodization and the like, or an already deep familiarity with the society under study, which one is attempting to further.

In fact, perhaps we should flip Redfield’s dictum on its head, and say that the receiver of a message can only learn new information in a 1/9 proportion to the amount of information in a message that s/he already shares with the sender. If you have a lot of information in common, you can get the whole new 10% that’s being sent. If you have only a little bit in common, you’re only going to get a littler bit of new information.

*If this wasn’t a Redfield original, the cite would be appreciated!

**Yes, I’ve elided “time spent in other countries,” which I find harder to argue with.

34

Tom 02.18.08 at 5:16 pm

C’mon, let’s talk about programing languages people actually use. This Haskell thing to computer languages is like those clicking languages spoken in South Africa to the foreign languages people typically trying to learn.

That’s not really true, functional programing ideas from Haskell are becoming more mainstream all the time; list comprehensions, higher order functions etc. In fact one of the central tenenets of funtional programing, immutable variables, is core to both SQL (and variants) and pretty much every spreadsheet ever created, can’t get much more mainstream than that. So whilst Haskell itself remains largely an ‘academic ‘language the philosophy it represents and programing style it supports is far from the linguistic dead-end the comment suggests.

35

clew 02.18.08 at 5:17 pm

That’s funny, michael, I would assume that music is much more like natural language than like programming — largely because it is dependent on a human interpreter for its expressiveness and meaning (possibly ‘meaning’). MIDI is a programming language, or fraction thereof.

Again, any programmer can learn a new language badly, hammering it into the idiom of the one they like the way a hopeful tourist uses a phrasebook. This code rarely runs well, even though it’s being interpreted by deterministic machines… something that people who are good at the subtleties and reinterpretation of human interaction often forget is that the material world is also subtle, and while never contrary, never helpful. *Because* humans imply and interpret and assume, we are bad at explaining what we want done without assumptions.

So I don’t think machine and human languages are the same thing at all, for interacting with anything outside oneself. The only similarity I see is in the effect of learning a new language or ‘language’ on one’s own habits of thought. Maybe those are as similar in reality as they feel to me (and learning a new instrument, or even a new dance idiom, is surprisingly close too).

kristina b, in similar situations I have started by telling the non-techies that computers are only really good at doing the boring work. It was, among other things, a try for humanitarian business processes; offload the dull and repetitive, respect everything that took judgement. (And log the hell out of the judgement calls, to analyze them for efficiency and bias!)

36

Righteous Bubba 02.18.08 at 5:27 pm

I would assume that music is much more like natural language than like programming—largely because it is dependent on a human interpreter for its expressiveness and meaning (possibly ‘meaning’). MIDI is a programming language, or fraction thereof.

No. Written music is a set of instructions for making noise. It’s more vague than a programming language (check out sheet music for Erik Satie for instruction that doesn’t make much literal sense) but it’s still the container and not the product.

MIDI is not a programming language but an interface between digital instruments.

37

Great Zamfir 02.18.08 at 5:29 pm

An interesting blend between a programming language an a real language is the ‘pseudo-code’ style used to describe algorithms in books and papers.

This usually looks like a generic ALGOL-type language, with DO loops and IF ELSE ENDIF blocks, but critical parts are described only in words, and things like variable initialization and exception handling are not written down, but it is assumed that the reader will understand they are needed.

So it has the structure and vocabulary of a programming language, but its sole purpose is to communicate between humans. As a result, it can have the ambiguties and assumption that normally are so typical of real languages.

38

Righteous Bubba 02.18.08 at 5:30 pm

39

Alan Bostick 02.18.08 at 7:36 pm

hp @ 4: This particular small-minded hobgoblin (2nd Dan blackbelt in copyediting) finds it necessary to point out that “Unix” is to be written all in caps if and only if one is referring to the trademark owned by the Open Systems Group. The original operating system, developed by Ken Thompson, Dennis Ritchie, and collaborators at Bell Laboratories, was known as Unix.

This results in distinctions between, e.g., “Version 7 Unix” and “UNIX® System V.”

40

Matthew Kuzma 02.18.08 at 7:38 pm

I think all languages carry an internal logic to them. To the extent that learning to think differently than you do is your goal, computer and organic languages are equally useful. If, on the other hand, you prefer to know a people or a culture more intimately, a programming language is relatively useless to you.

As you say, there are similarities and there are differences. If your goals lie with the similarities, the two types of languages are interchangeable. If they lie with the differences, one type will be inherently more useful to you.

Personally, since this seems to be more of what you’re getting at, I’d rather learn Chinese than any programming language. I’ve never been interested in the utility of knowledge as much as the understanding that it brings, and understanding one of the most extensive cultures in the world has a lot to offer.

41

Alan Bostick 02.18.08 at 7:40 pm

julian@18: Basic, Pascal, C++ are languages only in the most attenuated sense of the word. They don’t permit anything but commands and instructions.

But perl permits poetry!

42

Matt Stevens 02.18.08 at 7:43 pm

As for capitalizing STATA: I’d guess it’s because SPSS, SAS and other statistical program names are capitalized. They’re capitalized, of course, because they’re acronyms (Statistical Program for the Social Sciences, etc.), and it’s natural to assume Stata is one too.

43

Great Zamfir 02.18.08 at 8:35 pm

Matthew Kuzma, if you are interested in understanding, I’d say a programming language is way more useful than Chinese. Why?

First, what are the odds you will learn Chinese well enough to read complicated texts in it, and understand them better than if you read a translation? My girlfriend has been studying Chinese for several years now, and she is now able to read children’s books.

Second, programming requires you to develop a new mindset, a different way to look at information and logic. A very significant part of the knowledge gained in the last decades lies in algorithms. There is a lot of extensive understanding in that directon too.

44

abb1 02.18.08 at 8:47 pm

But just like you don’t need to learn Chinese to read Confucius, you don’t need to know any programming languages to develop this ‘new mindset’. A simple flow-chart will suffice.

45

Great Zamfir 02.18.08 at 9:09 pm

Given the enormous difference in effort between learning even a tad of Chinese and learing the basics of a programming language, I think it only fair to include an amount of actual program-writing in our course.

It is my experience that some people have no problem at all to translate a goal into an actually working program. But for others, this is somehow much more difficult, and then it really seems to require a whole new way of thinking. For these people it is hard, but they do gain a lot in more general problem-solving skills and finding abstractions behind particulars.

I doubt the same can be learned from flow charts.

46

abb1 02.18.08 at 10:02 pm

the enormous difference in effort between learning even a tad of Chinese and learning the basics of a programming language

You’re certainly right about that. And not just Chinese, but any foreign language. Even a similar foreign language, like, for example, learning French when you’re fluent in Italian. It’s just not in the same friggin ballpark at all.

47

Cian 02.18.08 at 11:11 pm

C’mon, let’s talk about programing languages people actually use. This Haskell thing to computer languages

People use Haskell. But okay, Lisp/Scheme and Erlang are widely used. F# and Scala are probably going to be so in the next few years. I’m not really sure why you keep hammering this point, as you clearly don’t know much about programming.

you don’t need to know any programming languages to develop this ‘new mindset’. A simple flow-chart will suffice.

No it really won’t. That’s why people don’t develop using flow charts.

48

novakant 02.19.08 at 1:43 am

And not just Chinese, but any foreign language. Even a similar foreign language, like, for example, learning French when you’re fluent in Italian. It’s just not in the same friggin ballpark at all.

I don’t know: half of the world speaks English as a second language, ranging from pidgin to indistinguishable from a native speaker. I’m not so sure all these people would be equally successful in learning a programming language.

49

Righteous Bubba 02.19.08 at 1:52 am

I’m not so sure all these people would be equally successful in learning a programming language.

I’m sure they would be equally successful in learning a programming language. There’s a small vocabulary and regular rules. How can it not be easier?

It doesn’t mean that they will be able to make a useful database, but many people who know a language are not capable of writing a novel.

50

TW Andrews 02.19.08 at 2:47 am

As a programmer (COBOL, C, Java, Perl, Python, some Lisp) who also learned a few foreign languages, I can tell you that it is *way* easier to learn a new programming language (even your first) than it is to learn a new foreign language. Way, way easier.

51

clew 02.19.08 at 4:24 am

I’ve known people (at least two) who found it easier to pick up walking-around grammar in a new human language than to develop a new algorithm even in Excel or BASIC. (By ‘new algorithm’, I mean ‘equivalent of a spreadsheet with at least two formulas’, and BASIC was a desperate try at a languagey approach so they could pass whatever it was. Linguistics, maybe?)

It wasn’t the words and syntax, which of course they could memorize; it was something we didn’t know how to analogize to the language talent they clearly had. Possibly the problem was at the level of knowing why ‘colorless green ideas sleep furiously’ is not English.

They were odd cases, though. On the whole, I agree that computer languages are easier because they’re smaller and simpler; the hard part is in writing useful and correct code, which may be a difficulty in imagining (??) the world (???) in a new way. Perhaps we aren’t often judged on the usefulness and correctness of our natural speech.

righteous bubba, I have the vague belief that MIDI sequencers are or can be Turing-complete (ignoring the practical song length limitation that we ignore in hard disk data storage). That’s why I said ‘part of a programming language’. Casual Googling doesn’t say anything about this, and I’m too lazy to read the definitions.

52

Righteous Bubba 02.19.08 at 4:47 am

righteous bubba, I have the vague belief that MIDI sequencers are or can be Turing-complete (ignoring the practical song length limitation that we ignore in hard disk data storage).

MIDI sequencers have an OS that they use to produce MIDI data, which is, like written music, a purely descriptive set of instructions on what note to hit and how hard (and more). Loops or conditional operations are purely in the MIDI-producing OS or the OS of the receiving instrument. Not much different than a radio signal.

53

Righteous Bubba 02.19.08 at 4:52 am

Golly that’s a bad last sentence. “MIDI is” to the front of it and it’ll make more sense even if it’s ugly.

54

bi 02.19.08 at 5:09 am

“But just like you don’t need to learn Chinese to read Confucius”

No seriously… it’s a different thing, to be able to read Confucius in the original, especially when his teachings were written in an archaic register which nobody actually uses today, resulting in different interpretations each claiming to be correct.

I guess it’s somewhat like the argument over whether to read the Bible in its original languages (Biblical Hebrew, Ancient Greek, etc.) or in one of the modern translations.

Plus, if you can read foreign texts in their original, you have the advantage of getting access to texts which haven’t been translated, and that’s not a bad thing at all.

55

abb1 02.19.08 at 8:17 am

I’m not really sure why you keep hammering this point, as you clearly don’t know much about programming.

No, it’s the opposite: I’ve been doing this for a long time and I find that it’s usually very easy for me to pick up a new programming language; I don’t even need to ‘learn’ it, just reading/modifying some code examples is enough in most cases. I’ll admit, though, that I’m not familiar with those more exotic languages you mentioned. If they are indeed used as widely as you say, then you sure have a point there.

That’s why people don’t develop using flow charts.

Interesting. Again, my impression is that the opposite is true. You develop using flow charts (and a lot of scribbling) and then someone will do the coding, which is the easy part.

56

Great Zamfir 02.19.08 at 9:06 am

abb1, I guess you are right that the difficult parts of programming can be the ‘flowcharty’ parts more than the actual coding. But you can’t work on the flowcharts, if that’s your style, if you do not already have a good grasp on the coding, on what cannot be done, what’s doable but hard, what is confusing, what is errorprone, etc.

Sure, once you have reached this stage learning a new language is simple, especially if its ‘flavour’ is one you already know so you can use the same ‘flowcharts’ in your mind. But getting to this stage is the potentially mind-broadening experience, which I believe is potentially even more mind-broadening for the people for whom it’s difficult.

Bi, I don’t think anyone disagrees that the level of subtlety you describe is valuable. But learning Chinese well enough to read classical Chinese texts and see the subtleties and double-meanings is not the equivalent of learning a programming language, but perhaps closer to a PhD in computer science.

57

novakant 02.19.08 at 9:42 am

As a programmer (COBOL, C, Java, Perl, Python, some Lisp) who also learned a few foreign languages, I can tell you that it is way easier to learn a new programming language (even your first) than it is to learn a new foreign language. Way, way easier.

Sure, but you are a programmer, the equivalent to which with regard to languages would be a linguist or a formally trained translator. Also you most likely had something like two decades worth of formal education. The people I’m talking about might have grown up in some African village or god knows where and might only have gone to primary school, yet many of them still seem capable of learning enough English to be able to interact successfully with foreigners.

There’s a small vocabulary and regular rules. How can it not be easier? It doesn’t mean that they will be able to make a useful database, but many people who know a language are not capable of writing a novel.

Again, just knowing a few rules and expressions doesn’t mean that you know a programming or even scripting language. If you can’t apply this knowledge to solve the problems that will be thrown at you, you don’t really know anything useful. Conversely, even conducting a basic conversation in a foreign language with someone involves constantly using your skills to solve unforeseen problems and many people are able to reach such a level rather quickly and easily. And a lot of people, e.g. the Dutch, Germans and Scandinavians speak near perfect English, easily surpassing a good percentage of native speakers as far as grammar and vocabulary is concerned.

I think it’s a bit of a myth among Anglo-Saxon people that foreign languages are generally incredibly hard to learn. This might be due to the fact that most of them are not forced to learn one, since they’ll get by with English just fine in many cases.

58

Righteous Bubba 02.19.08 at 9:53 am

If you can’t apply this knowledge to solve the problems that will be thrown at you, you don’t really know anything useful.

All problems or some problems, as with language? Seriously, programming languages are just not harder than foreign languages. There’s a lot less to know.

59

Mikhail 02.19.08 at 10:00 am

As a person close to linguistics, I must say this whole discussion is off key. It is ridiculous to even compare real languages with programming ones. (Before someone goes there, yes, I know a few of each kind…) Putting aside the issues of complexity which are nearly always much higher in natural languages, and our predisposition to learn exactly those kinds of structures which are found in natural lgs, there is one major difference – adaptability. Programming always has to follow very strict rules. Speaking doesn’t. That’s the whole point of a natural language – it changes, flows, adapts. You don’t need to use exact words or precise grammar to be understood, unlike with the machines. Plus, people make huge use out of context – smth the computers are just beginning to do, very poorly. :)

60

Badger 02.19.08 at 10:50 am

plus the even more obvious fact that the *interlocutor* in a programming language is the universe of manipulable objects, while the interlocutor in a natural language is the universe of *people* who use and used to use the language. Which is of course embarrassing and ridiculous to have to point out…I’d like to continue, but I need to go eat my breakfast of plastic eggs, you have to cook them forever, but I think they’re done now…

61

Great Zamfir 02.19.08 at 10:58 am

MI’m sure no one with any knowledge of a programming language would mistake it for a real language in any sense. The interesting question is more along the lines of ‘what subject is useful to teach as an extra course to college-level students’, and the language part is just a silly means to put two very distincts subjects together.

My personal view: If you only speak your mother tongue, choose to learn another language, if only to see how languages are similar or different.
But after that I wouldn’t necessesarily learn another language unless you expect to really use it. If ‘broadening your mind’ is your goal, learning to program a computer probably gives you more broadening for the efort it takes than learning a third language.

62

bi 02.19.08 at 11:05 am

Great Zamfir:

“But learning Chinese well enough to read classical Chinese texts and see the subtleties and double-meanings is not the equivalent of learning a programming language, but perhaps closer to a PhD in computer science.”

I’d think it’s more like learning a programming language (say, C) to the point where one effectively knows all the nooks and crannies of the C99 standard like the back of his hand, and is able to write obfuscated programs without batting an eyelid. (A PhD in CS, I think, is a whole other thing.

So I guess there’s a sort of hierarchy here similar to the learning of natural languages: Learning the basics of C is like a random African villager learning a few words and basic grammar; learning enough C to write complex programs is like learning enough English to converse in the colloquial register; and learning C to the point of complete mastery is like being able to fully comprehend — and emulate — Shakespeare’s and Tolkien’s “non-standard” English.

Not that this says anything about “expanding one’s horizons”, though…

= = =

Mikhail: Well, to further confuse the issue, programming languages also have “dialects”…

63

abb1 02.19.08 at 11:10 am

I think it’s a bit of a myth among Anglo-Saxon people that foreign languages are generally incredibly hard to learn.

I think they are hard to learn when you’re older than 16-17 or so, and incredibly hard if you’re older than 35 or so. Unless, of course, you have a special talent for languages.

64

Great Zamfir 02.19.08 at 11:18 am

Bi, I think your right about your nooks and crannies, I was more vaguely indicating an amount of time and effort. Computer science as academic subject is indeed not really a form of übermastery of programming.

65

Badger 02.19.08 at 12:00 pm

But GZ, isn’t your argument somewhat circular. If you are in an (anglophone) environment where the most “interesting” questions have to do with career-planning, and the timing of this volume of effort against that, with a view to “actually planning to use” some skill, then you will naturally end up maximizing those skills that deal with manipulable objects, or that take the world to be the universe of manipulable objects, and consequently you end up minimizing your ability to go outside that (anglophone) environment. The assumption ends up being that outside of that environment, “there’s really very little there”, instead of “let’s go there and see.” “Broadening your mind” as “learning something without actually planning to use it”, is like a residual basket where you put those activities that are drop-outs from the mainstream. The longer the process goes on, the more difficult it becomes to even articulate the other point of view. (In the 1940s, Horkheimer and that group complained about the trend, but they still held out hope for independent thinking and philosophy. But that’s now become like another foreign language…)

66

novakant 02.19.08 at 12:20 pm

Programming always has to follow very strict rules. Speaking doesn’t.

I’m not convinced. There are tons of clunky or ingenuous hacks and workarounds in a large percentage of code, there are often lots of different ways of arriving at the same solution. Sure, there are some basics you have to obey, but I don’t see how they differ that much from the basics of natural languages.

67

Great Zamfir 02.19.08 at 12:32 pm

Badger, I see no contradiction. I am arguing that learning to program is still a good exercise for people who do NOT expect to actually write computer programs for a living. The people I have in mind might be called liberal arts students in the US, but I’m not sure about that. They study languages, history, arts.
I know quite some people in this group who have a lot of trouble with the problem-solving, mathematically-abstract way of thinking that comes natural to many other poeple, including myself. And this leads to very much the situation you describe, where people assume “there’s really very little there”, and are indeed not able to articulate the other point of view.

So, it’s a bit of hobby-horse of mine to suggest to them to learn a simple computer language, because programming seems to require exactly the mindset that is so alien to them. Sometimes people are intrigued by the idea, but even then it gets a sort of ‘Read the Gilgamesh in the original’- unreachable status. Which simply isn’t necessary

68

Mikhail 02.19.08 at 12:43 pm

There are tons of clunky or ingenuous hacks and workarounds

True, but you still have to get the code compiled… These are the immutable rules. Language doesn’t have these. I can screw around with grammar to a very large extent before comprehensible stop I be. :) The “dialects” mentioned before are simply slightly different sets of equally hard rules. It doesn’t bear on the question of difference between natural and artificial languages. Even languages like Esperanto, while constructed to be “like” a natural language, aren’t and do not behave and develop like real ones.

The larger question as some of you rightly pointed out is the reasons for why you’d learn one over the other. But it shouldn’t be phrased in terms of “languages”. It should be – would you rather learn about cultures, literature, history and psychology of the peoples in the world or would you rather study logic, electronics, math and algorithms. There are many ways of doing this, and learning one language or another is by far not the only or main way forward. :)

69

Badger 02.19.08 at 1:35 pm

GZ, I now see what you mean, that’s very sensible. Maybe I should try it and see what it’s like.

But naturally I’m with Mikhail on “the larger question”, plus I think there’s a balance that needs to be redressed (to say the least).

Btw, I guess in the opposite case to the one you describe, the comparable advice to try one of the easier languages, might not work as well. In those cases, access to the alien mindset I think is a little different, but I will not bore you.

70

Great Zamfir 02.19.08 at 1:52 pm

What country are you from, badger? Here in the Netherlands, everyone speaks English, and most university-educated people can read German and speak it a little. Learning those is however about as easy as it gets for a foreign language.

But I don’t think it is opening a different mindset in any sense, it’s mostly just useful. Therefore my scepticism when Anglos want to learn foreign languages for lofty, impractical reasons. The time and effort required until you understand a book BETTER in the original than in translation is enormous, and probably not worth it unless you have other, more direct reasons to learn the language.

71

Badger 02.19.08 at 3:25 pm

I’m north-american, GZ, and for instance I’ve taught myself a reading knowledge of Arabic, in the period since 9/11, in order to be able to cope, as an educated citizen, with the wave of propaganda respecting that part of the world that we all knew would be coming down the pike. Call me lofty and impractical. It was an effort, but it is not as daunting as people think. You can learn the alphabet, for instance, in a fun way by checking titles on AlJazeera for proper names and that way you can confirm that you know the letters with their sounds. Then you get a dictionary with the three-character roots, and you learn the transformations that generate vast vocabulary from relatively few roots. And so on. Start reading the simplest material and you find there is a variety of interesting points of view that get passed over in the anglophone world. The question of a translated book and its original doesn’t arise. You don’t need that much Arabic to do better than reading Juan Cole, shall we say.

So on those points, I would not call the time and effort enormous, considering that it is also enjoyable, and the returns come much faster that you would think.

The other thing about “lofty and impractical” is that there is learning process itself, (which I think could be what some of those irritating anglos might be trying to get at in their stuttering way), because in natural-language learning there is the combination of rote dog-work practice on the one hand with acquisition of meanings on the other, the same as in learning a musical instrument, and some people find that process remarkable when they notice it.

I do think you’re on to something with the difference between having been educated in Netherlands, say, and the anglo world, so I do think youse have a head start on us in the world.

72

tyrone slothrop 02.19.08 at 7:33 pm

Foreign languages? Considering the hundreds of Native languages spoken in the United States, we might begin by learning some of them first.

I have no problem with learning about “languages” and “cultures” outside the US, but we still have a great deal to do with learning about the “languages” and “cultures” within the US.

Comments on this entry are closed.