Path: utzoo!utgpu!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!cwjcc!hal!nic.MR.NET!umn-cs!stachour From: stachour@umn-cs.CS.UMN.EDU (Paul Stachour) Newsgroups: comp.lang.misc Subject: Re: Languages in the the REAL world -- Listing Message-ID: <10134@umn-cs.CS.UMN.EDU> Date: 20 Nov 88 22:58:39 GMT References: <325@lafcol.UUCP> <4950001@hpiacla.HP.COM> Reply-To: stachour@umn-cs.cs.umn.edu (Paul Stachour) Organization: CSci Dept., University of Minnesota, Mpls. Lines: 84 ... >As everyone knows, English, German, etc. is far more complex by at >LEAST a factor of 100 then a programming language. So the statement >above taken in the context of programming languages is totally >meaningless. One has to start somewhere in an analogy. I know that natural languages are definitely more than an order-of-magniture more complex than programming languages, and will accept your 100+ times. But I can't accept that the analogy is meaningless. ... >Each of us have unique gifts which allow us to excel in some areas >while in others ... well we don't do quite so well. It may be quite >true that you are unable to become fluent in a language in just two >weeks, this could very well be the norm. I'm sure there are other >areas you excel in. However, I have had to write large modules (5K+ >lines of code) in four different languages over the last three years. I don't call 5k+ lines of code "large modules". In fact, I suspect that they are not modules at all, but incorrectly modularized subsystems. A 5K+ lines "module", if it really is a module, is very interesting. Grady Booch has over 500 components in his set, and none of them is anywhere near that size. Yes, I can write a 5000+ lines-of-code, but that hardly tests fluency. How big are full-length novels in natural languages? And even they use a very small subset of a natural language. >It took me at most 2 weeks to become fluent in each language and >usually only one week. I do mean fluent here, not just competent in >the language. There are many other people I know who also have >this ability. Who considers you fluent? You or a "native speaker"? I know hundreds of people who consider themselves fluent in "C". Yet, when I ask them questions like: "What method do you use in C when writing modules to avoid the name-clash problem?" they stare. And it usually takes 20 minutes to explain the problem. And when I ask questions such as "Under what circumstances you use '#define' versus 'typedef ENUM'?" they don't know. And when I ask them "Does your dialect of C support bit-fields, and if so in what way?" they've never looked it up. I could go on and on with my questions, but I have discovered that most people who think they are fluent in a language aren't. They are like the people who programmed in FORTRAN for 10+years, and got suprised by the way in which the values of their variables no longer persisted between invocations of a subprogram on a different machine. They were even more suprised when I pointed out that the FORTRAN 66 standard didn't even mention the semantics question, and that their FORTRAN vendor was perfectly legal. >So although a week may be a little short, a competent software >engineer should be able to become good-and-fluent in ANY new language >in less than 6 weeks with most learned in 1-3 weeks. You may indeed be the programming-language anologue of Charles Berlitz, who can "learn a new language in two weeks". IF you are, I'd like to have you working where I do. But I do suspect that you are "merely" one who learns the initial portion of languages fast. I, for one, will accept the studies of Barry Boehm, as shown in his Software Engineering Economics Book. It's the best set of hard-data that I know. But why should I judge? Why don't you post what the languages were that you learned in two weeks? Along with that, post what was the "hardest semantic" of that language for you to learn. I still have trouble in French not confusing "ecouter" with "entendre". (I don't have a French book here, and may have spelled them incorrectly.) They mean "to hear" and "to listen"; and I somtimes confuse the two. And I also have cross-language problems, sometimes saying "gare" (French for railroad-station) when I mean Bahnhoff (German for railroad-station). And, in programming languages, I sometimes write "\=" when I mean "/=" for not-equals (or was it "!=" or "^=" or "~="). Someone totally fluent in a language does not make that kind of mistakes, but someone who is only partially fluent does. In conclusion, there is a lot more to a language than just learning the syntax: There's the subtle semantics, the language interactions, and the fact that what "always works" in C doesn't all of a sudden when you go to another world (say VAX-VMS) and discover that one of the ways-of-working that you always implictly thought was part of the language was "just a subroutine convention" and it doesn't work there, just as natural language changes in subtle ways between British-English and US-English and Australian-English and ...