As someone who speaks a bunch of human languages, and has programmed in... 50 programming languages?, the other thing that's frustrating is that it's so, so, so, so much harder to learn a human language than a programming language.
It's harder when you move to some new paradigm - say, from a C-family language to a LISP-family language - but still, an experienced programmer can pick up a new language well enough to slowly write correct programs in it in a few days of not particularly superhuman work, become somewhat fluent in a few weeks, idiomatic in a year.
Human languages take _years_ to even get to fluency.
(They aren't "totally" different - just different. A human language is very different from a programming language, but still much more similar to each other than to, say, an octopus or a musical instrument or the planet Venus...)
Yeah they do have certain similarities or things in common, I guess, like fundamental structures...kinda how a grapefruit and a sheep's brain have certain fundamental structures in common, but somehow I don't think sheep's brain juice will be flying off the shelves. This metaphor suddenly makes no sense.
I like to compare programming languages to wishes to a very fast, very powerful, kind of dumb and very literal genie. The communication goes one way and you have a lot of time to prepare it. You you make your wish, tell the genie what to do and pray that you told him to do it right. Because an instant later he'll be back with what you told him to do (which might be different from what you thought you told him to do). Or maybe will have died from the effort within that second or two because you forgot to tell him when to stop. Or he might just grin and shrug and then you have to pore through your instructions to figure out why he's shrugging when you were sure that you were as clear as could be.
My other analogy for spoken languages is that they're like musical instruments because they take a lot of muscle memory and practice, and you have to respond in the moment to what the others are doing and perform something that fits in. And if you do it wrong it'll be jarringly obvious.
Those both seem like really clever ways to think about it. I don't know any programming languages, but what little coding I do know definitely lines up with that
As someone who speaks a bunch of human languages, and has programmed in... 50 programming languages?, the other thing that's frustrating is that it's so, so, so, so much harder to learn a human language than a programming language.
ReplyDeleteIt's harder when you move to some new paradigm - say, from a C-family language to a LISP-family language - but still, an experienced programmer can pick up a new language well enough to slowly write correct programs in it in a few days of not particularly superhuman work, become somewhat fluent in a few weeks, idiomatic in a year.
Human languages take _years_ to even get to fluency.
(They aren't "totally" different - just different. A human language is very different from a programming language, but still much more similar to each other than to, say, an octopus or a musical instrument or the planet Venus...)
Yeah they do have certain similarities or things in common, I guess, like fundamental structures...kinda how a grapefruit and a sheep's brain have certain fundamental structures in common, but somehow I don't think sheep's brain juice will be flying off the shelves. This metaphor suddenly makes no sense.
DeleteAnyway, good to have the input from an expert!
I like to compare programming languages to wishes to a very fast, very powerful, kind of dumb and very literal genie. The communication goes one way and you have a lot of time to prepare it. You you make your wish, tell the genie what to do and pray that you told him to do it right. Because an instant later he'll be back with what you told him to do (which might be different from what you thought you told him to do). Or maybe will have died from the effort within that second or two because you forgot to tell him when to stop. Or he might just grin and shrug and then you have to pore through your instructions to figure out why he's shrugging when you were sure that you were as clear as could be.
ReplyDeleteMy other analogy for spoken languages is that they're like musical instruments because they take a lot of muscle memory and practice, and you have to respond in the moment to what the others are doing and perform something that fits in. And if you do it wrong it'll be jarringly obvious.
Those both seem like really clever ways to think about it. I don't know any programming languages, but what little coding I do know definitely lines up with that
DeleteI am guessing that Python is a dialect of Parseltongue (Harry Potter reference)
ReplyDeleteI thought about Harry potter as well!
DeleteIn this case, I'm fluent in Mandarin (the fruit, not the language) ;-)
ReplyDeleteI wish there was a "like" option on here, because that made me chuckle. :)
DeleteLIKE
DeleteLIKE
Deleteso if someone knows java then they can talk to coffee
ReplyDelete*mentions Lojban*
ReplyDeleteThere is one "natural" language/dialect I can think of that functions very similar to programming languaes, though.
ReplyDeleteLegalese.
Ooh yes, there's a comic in there somewhere
Delete