Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Why pascal is not good

Author: Anthony Cozzie

Date: 06:44:02 07/31/03

Go up one level in this thread


On July 30, 2003 at 21:42:31, Matthew White wrote:

>On July 29, 2003 at 22:31:46, Vincent Diepeveen wrote:
>
>>On July 29, 2003 at 20:16:59, Matthew White wrote:
>>
>>>On July 29, 2003 at 16:53:05, Vincent Diepeveen wrote:
>>>
>>>>On July 29, 2003 at 03:15:54, Hristo wrote:
>>>>
>>>>>On July 28, 2003 at 19:12:56, Vincent Diepeveen wrote:
>>>>>
>>>>>>On July 28, 2003 at 17:34:46, Russell Reagan wrote:
>>>>>>
>>>>>>>Is there any reason to start new projects with C anymore? It seems like most (if
>>>>>>>not all) of the drawbacks of C++ have faded away with modern compilers.
>>>>>>>
>>>>>>>Note that I am talking about new projects, and maintaining old projects is
>>>>>>>obviously a good reason to still use C.
>>>>>>
>>>>>>If i would learn coding today i would prefer C++.
>>>>>>
>>>>>>However let's be clear, for good programmers there is not much diff between C
>>>>>>and C++. Every complex problem which you can solve in 10000 lines of C++ you can
>>>>>>solve in 10000 lines C too.
>>>>>>
>>>>>
>>>>>Vincent,
>>>>>with all due respect I must disagree. In 10K lines of C++ code one can solve a
>>>>>much more general or larger set of problem(s) or cram in more features. :)
>>>>>(think templates, exceptions, and often inheritance ... all of which can shorten
>>>>>your code)
>>>>
>>>>I do not know about you, but i program both in C and C++.
>>>>
>>>>Do you?
>>>>
>>>>Not a single program where you can use all the nice toys you can also make a few
>>>>functions for in C.
>>>>
>>>>In general the average programmed C++ program you program more compact in C.
>>>>
>>>>That's not what i'm talking about.
>>>>
>>>>If you do not know how to program in C, then just say it loud instead of writing
>>>>it down like this.
>>>>
>>>>the advantages of what you mention here (assuming 1 man products) you can show
>>>>great in 50 line examples or even 200 line examples.
>>>>
>>>>But as soon as you write a 10000 line product then it doesn't matter what you do
>>>>in C++. I can do the same in C too. No problem!
>>>>
>>>>>In your post, latter, you indicate that C++ offers some advantages over C,
>>>>>especially for large projects. In my experience this is %100 true, so we are in
>>>>
>>>>I see no other advantages to C++ than for big projects in fact.
>>>>
>>>>The advantage is *really* huge there for companies.
>>>>
>>>>Given the importance of those companies for the world, the choice to teach
>>>>students C++ instead of C is a logical choice.
>>>>
>>>>teaching them Java, delphi i find a bad idea.
>>>>
>>>The best reason that I see to teach students using Java is that Java gives you
>>>useful information when an error occurs (remember the first time you saw a
>>>segmentation fault how lost you felt?). Java has strong typing and it FORCES
>>>object orientedness. C and C++ are too frustrating for new programmers...
>>>
>>>Matt
>>
>>I agree fully with Bob here. His Pascal argument is very valid.
>>
>>Let me give you a bunch of reasons why you should not teach in a language like
>>that JAVA or delphi or pascal:
>>
>>  1) the students will later use the language they are learned. So
>>     if you directly learn them C++ they will use that. now they are doomed
>>     to use java or pascal because that's what they are familiar with.
>>  2) your students will earn thanks to that you learned them this toy language
>>     a lot less. C++ programmers earn better than Java programmers in general.
>>     In fact even some 'older' languages like fortran earn very well.
>>     Majority of
>>     programmers in netherlands at the KPN (which is about a 1000) is fortran
>>     programmers just to give an example. But also at supercomputers fortran
>>     is very important.
>>  3) If you learn them C++ you achieve 3 objectives at the same time
>>       3a - they learn a language they can later use
>>       3b - you can show them the great things of object orientation
>>            in 50 line programs
>>       3c - they are not fearing to program in C++ as they are familiar with it
>>  4) In big companies decisions get taken by management. Not by programmers.
>>     Managers in general are doing what is good for their company.
>>     If statistics show that 80% of all programmers with very small shoe
>>     sizes will make buggy code, then in theory the law doesn't allow you
>>     to discriminate. However managers do not work like the law there. They
>>     fear hiring someone who writes buggy code, so they never hire someone
>>     with a small shoe size if that statistic would be the case.
>>     Same is true for Pascal. Pascal is for newbies, exactly as you say so.
>>     Therefore managers will not hire people who are good in pascal, because
>>     a manager always finds out the truth. With his questions to the programmer
>>     the programmer in the end will confess he's better in pascal than in
>>     C++, so the manager concludes he's a pascal coder. So the programmer
>>     deduces from that he gotta be a crappy coder. So he isn't hired.
>>     Managers work very instinctive and they should. They are there to prevent
>>     disasters for their company, not to play the advocate of the devil which
>>     will say that a coder isn't a bad coder unless you have clear proof
>>     of that. Trivially it's easier to not hire someone than to fire someone.
>>   5) This really is important. In university and colleges they still do not
>>understand a thing very well and that is that 99% of the time you are busy
>>fixing bugs and 1% of the time you are busy creating something new. I will not
>>say throwing someone in the deep is a good thing. I have no opinion there.
>>But for sure it is better to learn to debug. Example at my own university out of
>>all the years that i was there i saw only 1 course which had 1 sheet which said
>>that debugging was important.
>>
>>All the other theories about debugging i have figured out myself. What is a
>>boundschecker. How the debugger works and how to effectively write testbeds.
>>
>>Your simple programming language when preventing severe bugs will definitely
>>create a bad coder. Someone who can't debug. That's a horror.
>>
>>If someone has followed your course i bet he can't debug. yet 99% of his time he
>>will lose debugging in his programming career.
>>
>>Programmers just starting their program i have always this discussion with:
>>
>>"Did you let it print to a log file all the lines is searched with alfa and beta
>>scores?"
>>
>>..
>>
>>"Why not?"
>>
>>..
>>
>>"SURE you must do that"
>>
>>..
>>
>>"yes i am VERY sure you must do that. How can you fix a bug in your chess
>>program if you do not know where it is and all you know is that it plays the
>>wrong move?"
>>
>>How many more programmers who just started their chess engine i need to explain
>>it to? They should learn this already at *school* IMHO.
>>
>>If you only teach someone to drive a car, why give him a flying license?
>By that same token, if you are teaching someone to drive, do you need to teach
>him on a Formula-1 Racecar? I agree that certain constructs in C++ are very
>shocking the first few times you use them, and that it is good to have exposure
>to them before you begin programming in "the real world" (whatever that means
>;)) However, the goal of learning to program is not so much to learn "the only
>language you'll ever need," but more to get comfortable with the concepts of
>programming. I agree that in many cases, Java has unnecessary bits that need to
>be included for a program to work correctly, but it also is very easy to
>troubleshoot, which is something that you would want to have while learning.
>
>When I learned to swim, my parents didn't just throw me in the pool and say,
>okay, start swimming... I would have drowned. You have to take a gradual
>approach to learning. The initial classes could be taught in Java, and then,
>once a good base is established, other languages could be taught/used. Would you
>rather learn GUI programming in Java or MFC?
>
>Matt

QT for linux, of course.  Quite an excellent toolkit.  And teaching beginners
Java is pure sillyness.  The classes will always focus on things like
polymorphism and oh, isn't it great we can do *this* complicated language
feature.  IMHO, everyone should learn assembly first and C second.  After that,
its your choice, but at least you understand how your machine works.  Of course,
this is the view of a hardware guy <shrug>.

anthony

P.S. my favorite language is ML, but Zappa is in a mixture of C, C++, and
assembly.



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.