| Register | FAQ | Calendar | Search | Today's Posts | Mark Forums Read |
|
#21
| |||
| |||
| "Pascal J. Bourguignon" <pjb@informatimago.com> wrote in message news:87skt3jgv7.fsf@hubble.informatimago.com... > Juha Nieminen <nospam@thanks.invalid> writes: > >> Pascal J. Bourguignon wrote: >>> The best programming language to learn as a beginner is probably scheme. >> >> Is that a joke? > > No. > >> Functional languages like scheme and haskell may be wonderful for >> programming gurus and mathematicians (and if you are both, better). >> The average person does not think functionally nor recursively. A > Average persons have nothing to do in programming. There are enough > jobs at McDonalds for average persons. That's not being elitist at all? Programming should be for everyone and if that means using easy languages then I don't see a problem. The few functional programming examples I've seen have been bits of Ocaml posted in this newsgroup, and most of it was utterly incomprehensible. Except for the few bits that were written in imperative style to do some everyday task. I'm not familiar with Scheme -- the first thing Wikipedia says about it is that it was Lisp-like, and I didn't bother to look further. I do some language design myself (purely for fun) and I'm confident enough about it's syntax being understandable that I sometimes post fragments here but call it pseudo-code (usually, pseudo-code that has been tested!). And someone else mentioned about Python also being pseudo-code that runs (perhaps not quite as fast as mine though...). I feel sorry for people trying to choose a language because there is no one good choice. Everyone seems huge (.NET), overcomplex (C++), slow (Python), weird (functional), primitive (C), or sometimes a combination.. And I keep seeing languages described as simple and easy-to-learn, and you download them and you've suddenly got 27000 extra files, yet you have to go on-line to find any docs! (That was one version of Ruby.) -- Bartc |
|
#22
| |||
| |||
| On 18 Aug, 00:54, Juha Nieminen <nos...@thanks.invalid> wrote: > It may be how a mathematician...thinks about (some) things, > but [it's] not how normal people do. Mathematicians are normal people, too. ![]() |
|
#23
| |||
| |||
| Juha Nieminen wrote: > Pascal J. Bourguignon wrote: <snip> >> I would still learn C and Smalltalk, before C++. > > Hell no! Smalltalk maybe, but C? No, no and a thousand times no! > > Make a beginner learn C as his first language and he will struggle > to learn good programming for YEARS to come. Just no. Ah, that explains the "quality" of an average programmer's output I suppose. C has been the single most popular beginner's language since the mid-90s. Personally, I can see any reason why it would be a terrible first choice. Granted it isn't really an ideal first language, nor a beginner friendly one, but why would starting out with C lead someone to struggle for years to learn good programming? Any concrete reasons? <snip> |
|
#24
| |||
| |||
| William Pursell <bill.pursell@gmail.com> wrote: >On 18 Aug, 00:54, Juha Nieminen <nos...@thanks.invalid> wrote: >> It may be how a mathematician...thinks about (some) things, >> but [it's] not how normal people do. > >Mathematicians are normal people, too. ![]() But I still hope that they don't drink and derive! -- Regards, Casey |
|
#25
| |||
| |||
| Gits wrote: > What's the best language to learn as a beginner, for someone like I > who has never programmed in any language before? I'm interested in > learning python or c++, which would you say is the least complicated? Regardless of what you learn first, make sure you learn at least one other language soon after. The second language should be very different from the first one. Perhaps pick a couple of languages suggested by people who made non-overlapping suggestions. People who stick to one programming language for the first few years of their programming experience can fall into the One True Language trap. Their thinking about programming becomes so intertwined with their first language that programming in any other language feels very awkward and inconvenient. They seem to think idiomatically in their first language, and then try to translate, which does not really work. That is OK if you happen to pick a winner, a language that remains popular for the whole of your career. It is very bad if you pick a language that becomes unpopular 20 years after you learn it. Patricia |
|
#26
| |||
| |||
| On 18 Aug, 17:25, "Bartc" <b...@freeuk.com> wrote: > "Pascal J. Bourguignon" <p...@informatimago.com> wrote in messagenews:87skt3jgv7.fsf@hubble.informatimago.co m... > > > Juha Nieminen <nos...@thanks.invalid> writes: > > >> Pascal J. Bourguignon wrote: > >>> The best programming language to learn as a beginner is probably scheme. > > >> * Is that a joke? > > > No. > > >> * Functional languages like scheme and haskell may be wonderful for > >> programming gurus and mathematicians (and if you are both, better). > >> * The average person does not think functionally nor recursively. A > > Average persons have nothing to do in programming. *There are enough > > jobs at McDonalds for average persons. > > That's not being elitist at all? > > Programming should be for everyone and if that means using easy languages > then I don't see a problem. You've never had to fix code written by a non-programmer? |
|
#27
| |||
| |||
| thomas.mertes@gmx.at wrote: > > > AFAIK Java is used very often to teach programming nowerdays > (interestingly nobody did it suggest until now). Java is also missing > concepts like overloading and multiple dispatch. I don't know what "multiple dispatch" is, but having first learned C++ and then switched to Java, I can say that I don't miss operator overloading at all (function overloading, of course, is supported by Java). I think that the decision not to enable it in Java was sound. On the other hand, I miss C++ kind of "protected" access a lot. RW |
|
#28
| |||
| |||
| Bartc wrote: ) That's not being elitist at all? ) ) Programming should be for everyone and if that means using easy languages ) then I don't see a problem. Ah, so while other jobs require years of training and talent, this job should be easy and accessible to everyone with half a brain ? You sound like a manager. Programming is not easy. No matter the language. Easy languages make you think it is easy because you can quickly accomplish some easy tasks. Do you call yourself an electrician when you can install a wall switch ? Do you call yourself a car mechanic when you can change the oil filter ? Do you call yourself a programmer when you can hack together a web app ? SaSW, Willem -- Disclaimer: I am in no way responsible for any of the statements made in the above text. For all I know I might be drugged or something.. No I'm not paranoid. You all think I'm paranoid, don't you ! #EOT |
|
#29
| |||
| |||
| "Bartc" <bc@freeuk.com> writes: > "Pascal J. Bourguignon" <pjb@informatimago.com> wrote in message > news:87skt3jgv7.fsf@hubble.informatimago.com... >> Juha Nieminen <nospam@thanks.invalid> writes: >> >>> Pascal J. Bourguignon wrote: >>>> The best programming language to learn as a beginner is probably scheme. >>> >>> Is that a joke? >> >> No. >> >>> Functional languages like scheme and haskell may be wonderful for >>> programming gurus and mathematicians (and if you are both, better). > >>> The average person does not think functionally nor recursively. A > >> Average persons have nothing to do in programming. There are enough >> jobs at McDonalds for average persons. > > That's not being elitist at all? No, THAT was a joke. ;-) > Programming should be for everyone and if that means using easy languages > then I don't see a problem. Yes, of course. If it was a non-CS professionnal who wanted to program little commands for his personnal use, I wouldn't advise the same than if it was a CS would be professionnal who will have to develop applications or systems for use by innocent non-CS professionnals or users. Let's see. For CS professionnaly, I'd advise scheme as a teaching language and Common Lisp as a industry strong programming language. For a non-CS professionnal, let's say a secretary who wants to customize her editor[1], or a MD who wants write little scripts to manage his patients, I would advise emacs lisp. Oops! I advised lisp in both cases :-) [1] http://www.gnu.org/software/emacs/emacs-paper.html (see the Blue sky section) Ok, serriously, I can admit that python is selected by Pr. Norvig as programming language for his non-CS students, (I'm all in favor teaching some programming to non-programmers, as well as teaching some history or some physic to programmers). And I can even admit non-programmer programming their little program in any programming language they please. But I won't be there to do any "maintenance" when their little "programs" become big and when they start to dream selling them to millions of users. > I'm not familiar with Scheme -- the first thing Wikipedia says about > it is that it was Lisp-like, and I didn't bother to look further. Go look again. Actually Scheme was there before Common Lisp, and it was on the contrary Common Lisp that took some ideas from Scheme. > I do some language design myself (purely for fun) and I'm confident enough > about it's syntax being understandable that I sometimes post fragments here > but call it pseudo-code (usually, pseudo-code that has been tested!). And > someone else mentioned about Python also being pseudo-code that runs > (perhaps not quite as fast as mine though...). > > I feel sorry for people trying to choose a language because there is no one > good choice. Everyone seems huge (.NET), overcomplex (C++), slow (Python), > weird (functional), primitive (C), or sometimes a combination.. > > And I keep seeing languages described as simple and easy-to-learn, and you > download them and you've suddenly got 27000 extra files, yet you have to go > on-line to find any docs! (That was one version of Ruby.) You've not looked hard enough: Metafor Interactive Natural Language Programming http://www.lehigh.edu/~amsp/2005/03/...ogramming.html http://web.media.mit.edu/%7Ehugo/dem...der-simple.mov http://web.media.mit.edu/~hugo/publications/ http://web.media.mit.edu/~hugo/publi...05-metafor.pdf (Watch the video!) However, there more words about these "easy", "pseudo-code" programming languages, from COBOL to AppleScript, etc. Remember that they use the simplistic English grammar as a base, to be easily processed by the system. First, for most native language users, English is just as cryptic as scheme, probably even more. Second most native language users have a language with a grammar much more complex than English, so it will be harder to make a programming language for them. From my point of view, it looks like the only people who can read and write (some) English are the programmers. And finally, I hope you will have much fun when you will have to read a routine written in 茲蚨's natural "pseudo-code" language. I'd rather read his scheme code... -- __Pascal Bourguignon__ http://www.informatimago.com/ CAUTION: The mass of this product contains the energy equivalent of 85 million tons of TNT per net ounce of weight. |
|
#30
| |||
| |||
| santosh wrote: > Granted it isn't really an ideal first language, > nor a beginner friendly one, but why would starting out with C lead > someone to struggle for years to learn good programming? Any concrete > reasons? While in theory it is indeed possible to learn good programming even when starting with C, in practice, however, programming in C leads to what I call the "C-hacker syndrome". It includes things like: - Aversion and prejudice towards programming paradigms other than pure (C-style) imperative programming. This especially includes object-oriented programming with its notions of data hiding and abstraction (which the C-hacker detests above all things). This kind of attitude can be very hard to learn away. - A tendency to overuse things like global variables, simply because they are much "easier" to use than passing pointers around. - A natural tendency to micro-optimize code (so-called "hacker optimization") while often dismissing the most relevant bottlenecks. In other words, tendency to optimize the wrong things, often at the expense of readability and clarity (and usually with no real speed benefit). - A natural tendency to minimizing the length of the source code and obfuscation rather than clarity. - Aversion and prejudice against anything the compiler or a library might be doing "behind the scenes", so that the programmer is not in full control (which is one of the reasons why the C-hacker detests C++, as he feels that C++ does too much behind the scenes, without the control of the programmer). Besides these attitude problems, C also has other more practical problems: - Due to the nature of C, it tends to teach bad programming habits which easily make the code very unsafe, obfuscated and hard to maintain. These include things like passing tons of dangling pointers around, no bounds checking, no encapsulation and an overall lack of good, systematic memory management. - Rather ironically (as C is classically viewed as an "efficient" language), the C style of programming often leads the beginner to write very inefficient code. The classical example is writing loops like "for(i = 0; i < strlen(line); i++)" (especially in situations where the compiler is unable to optimize the strlen() call outside the loop because it has no way of knowing whether the contents of 'line' might change inside the loop). - Endless struggles with dynamic data containers (which C has absolutely no standard library support for) and the countless unsafe standard library functions related to them (such as the string functions). (And no, I'm not claiming C++ is any better as a first programming language in this regard. OTOH, it *does* offer many tools which can make people's lives easier, so if I had to choose between the two, I would definitely recommend C++, with the proper guidance.) |
![]() |
| Thread Tools | |
| Display Modes | |
In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.