From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,3885b7fd66a1db28 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-12-21 04:01:48 PST Message-ID: <3E04573C.4D4257FB@sympatico.ca> From: David Marceau X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.4.17-10mdksmp i686) X-Accept-Language: en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: Why is Ada NOT a good choice for a beginner to programming? References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: Sat, 21 Dec 2002 06:57:48 -0500 NNTP-Posting-Host: 65.92.167.162 X-Complaints-To: abuse@sympatico.ca X-Trace: news20.bellglobal.com 1040471883 65.92.167.162 (Sat, 21 Dec 2002 06:58:03 EST) NNTP-Posting-Date: Sat, 21 Dec 2002 06:58:03 EST Organization: Bell Sympatico Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!cyclone.bc.net!torn!webster!nf1.bellglobal.com!nf2.bellglobal.com!news20.bellglobal.com.POSTED!not-for-mail Xref: archiver1.google.com comp.lang.ada:32150 Date: 2002-12-21T06:57:48-05:00 List-Id: First off I am not a great programmer. I'm more average than anything else. Secondly for anybody who wants to be a programmer and reach the zen of programming I have two suggestions I want to make before answering your Mr. Wright's questions: a wanna-be programmer needs to have some basic human traits and needs to buy some basic core equipment improving working endurance capability. Needed Human Traits: -------------------- 1)patience(I've got this) 2)perseverance(I've got this) 3)organization(I'm pretty much human, sometimes I brain fart like everybody else and don't use an agenda/engineering log when I should). PSP(Personal Softare Process by Watts S. Humphrey)/CMM standards are a good habit to develop to help you reach zen ASAP. I'm not a fan of extreme programming and I don't want to start a debate on this. Eventually you will realize you have to develop Project Manager skills to just manage yourself :) Learning project management sofware/CMM/PSP support software is a good idea. 4)like being in front of a computer because that's where you'll be. 5)Sensitivity to your entourage and self-awareness. To help you with this you might want to read a bood on Emotional Intelligence. If you've got some personal issues to deal with, you won't be able to focus on the programming tasks at hand. Again I'm human and sometimes I brain fart like everybody else but these kinds of books prevent me from doing it as often. Needed Basic Core Equipment Improving Working Endurance Capability ------------------------------------------------------------------ To save you wasting any energy in your efforts with any languages you do learn in your career path, 1)get quality glasses 2)get a quality monitor, my eyes think color lcd panels are ten million times better than Cathode Ray Tube types. Trust me if you do get an LCD color monitor you will be able to stay in front of your computer for longer periods of time without getting as much eye fatigue. A solid example of this: I can barely make it through 7.5 hours in front of an Envision CRT because it leaves a pinching pain in my left eye after the whole day. On the other hand a ViewSonic LCD Color Flat Panel Display, I can stay in front of the computer for about two days straight without going to bed no problem. I can't be any clearer than that. 3)Once you discover you have a nice rythm when playing a particular keyboard for your computer, buy a couple of the same brand name mark and model number and keep them in storage. In this way you can have one keyboard you're used to at home and another keyboard you're used to at work. This makes a huge difference in productivity. I haven't detected significant quality problems with keyboards but IMHO ergonomic weird shaped keyboards are not for me. The standard IBM keyboard is hard to beat. My current keyboard that I love is a Future Power KB-FPPC2001/E but with no special web buttons because I don't like all the extra value-added crap. I just want a keyboard that resembles the old mechanical typewriter keyboards that I learned keyboarding on. Having two keyboards like this avoids the frustration of going at work and working on a keyboard that you doesn't exactly match the keyboard layout that you're used to. David Wright wrote: > Specific Questions: > 1) Am I not giving Ada sufficient credit for being a suitable entry-level > language for a BEGINNING PROGRAMMER? I think if you have patience, learning Ada95 is a good start. I didn't always have that opinion considering c/C++/asm/basic have smaller vocabularies. IMHO Ada95 was not intended for having smooth learning curve. It was mainly intended of helping build large applications and helping to maintain them more easily to be blunt. There are a lot of other design goals for the language but that's the gist. Mr. Wright I am thirty-five years old and I no longer have any time and energy to waste. I have gone through learning basic, asm, prolog, c/c++, perl, odl/idl, ada95, java, javacard and j2me in about their respective order along with compiler tools/grammar. I've done OLE/COM/DCOM/JNI. I'm sorry for all the buzzwords but I need to back up that I believe my opinion should be valuable considering the experience that I bring to discussion. All these thingamajig language buzzwords to do something of concrete value to society. Some don't break easily. Some don't seem to protoype a gui very quickly. Some seem to compile very quickly. Some seem to execute quickly. Some seem to be maintained easily. Some seem to build the executable more easily. Some have a larger vocabulary and not as easy to remember. Ada95 is all the best of these IMHO. I love compiling Ada95 code knowing it has a better chance of working first shot on many operating systems and passing all the unit tests than c/c++/java/j2me... Why because all the harder concurrency/multitasking stuff that most people want to do while networking/gui-ing/databasing is all there in the ada95 vocabulary with tried and tested recipes. All you have to do is learn these Ada95 recipes. It takes time learning the language but at least you won't have to struggle against the coding concepts in any other language that are not necessarily guaranteed to compile and work on many targets. Ada95 was intended to jump over all those hurdles for you in order for you to concentrate on the problem that you are trying to solve. From what I have understood a good bunch of these recipes are in Ada95 books by the following authors: Barnes, Cohen, Burns, Wellings. IMHO that's the order that I would learn these books too if I were you. > 2) Would you recommend that I immerse myself in either BASIC (QBasic) or > PASCAL (Borland TP7) for a couple of years (yes, OK... forget BASIC ;D) and > THEN springboard to Ada? I would recommend investing all your time in Ada95 permitting you to save time developing the systems you want to make as soon as possible. I would also recommend compiling your Ada95 on at least two different platforms i.e. win32 and linux to understand its power. With time you will probably end up trying to do the same thing with basic, vb, c, java, j2me, tcl and perl. After doing so I believe you will come to the same conclusion as I have: All languages have there place but if you want something that needs to work on any target Ada95 rules :) > > 3) If you were to opt for Ada as an entry point, which particular dialect or > environment would be the most user friendly from a set up and > ?learning-the-fundamentals? point of view. Since I have a choice, I?d like > an Ada encounter that is a FUN experience, rather than marred by > gratuitious, buggy FRUSTRATION (which is why I'm not keen on beginning with > C, C++ or Java, even though others do). -emacs as a programmer's editor. It may seem hard to learn but it has some strong points like Ada95 in its favor that many people don't appreciate because they haven't taken the time to look closely into the software. -gnat Ada95 compiler Don't let the sleek first impression that msvc/msvb/java gui's give you fool you. Learn the language without thinking about gui's right away. Thinking about gui's is like opening a can of worms when you want to learn something. Stick to just doing command-line, file input output stuff. With just this, you'll have plenty of learning here to keep you busy. Note the last book I recommended you Burns and Wellings is how to do concurrency stuff. Again learn about doing this stuff without guis first then when you're solid here start learning about any gui sdk you want. That's where all the different operating systems differ the most so avoid it like the plague for now. As a last step when you're solid with ada95 and concurrency(that'll keep you busy for quite some time), then I suggest gtk as a gui sdk which goes well with gnat. I've done work with Motif/win32/xview/swing/awt so IMHO if you want to hit all targets in one sweep, I believe gtk is a good direction for many reasons which I have discussed in previous CLA postings but to be frank I haven't invested much time in gtk yet. I've only compiled and looked at the source code for the examples and liked what I saw. REALITY CHECK ------------- That said reality hits and if you want a job you will have to adapt to other languages/gui's/sdk's whenever you change jobs with other companies. My reality is I change companies often. Not because I want to but just because that's the way it is. One thing is for certain you're ada95 concepts will follow you everywhere and you will be able to apply those strong concepts to minimize the damage of using some other language as much as possible. Hey if I'm wrong about anything I have said in the above please feel free to criticize me. I'm all ears :) I hope this helps. You average human, David Marceau