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=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,b2d36a382ccbeb18 X-Google-Attributes: gid103376,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news4.google.com!feeder3.cambrium.nl!feeder6.cambrium.nl!feed.tweaknews.nl!feeder.news-service.com!feeder.news-service.com!news.motzarella.org!motzarella.org!not-for-mail From: =?ISO-8859-1?Q?S=E9bastien?= Newsgroups: comp.lang.ada Subject: Re: How Would a Hobbyist Learn Ada? Date: Mon, 26 May 2008 09:38:01 +0000 Organization: A noiseless patient Spider Message-ID: <483A84F9.4040204@gmail.com> References: <2ee634c3-0dee-4f02-8b02-c4804efd068f@x19g2000prg.googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: feeder.motzarella.org U2FsdGVkX1/3MAC5REj7U0w8VcgFD7dAFUDYeVTTlQ9+6sBWO3OxVeglcOJkFNYz3cy4Deq35T4pRnYNSe23taxear1rmYLFVnGTldDQ40xfD6XKSegaVKkwdSa5rJ7v+Apgl6p0g2Eqo4cfecD+SA== X-Complaints-To: Please send complaints to abuse@motzarella.org with full headers NNTP-Posting-Date: Mon, 26 May 2008 09:38:11 +0000 (UTC) In-Reply-To: X-Auth-Sender: U2FsdGVkX1/qixHcpN+O+9fFtAJbrVkmM5jHRJBnSSETWNPgOLnt0g== Cancel-Lock: sha1:xvCmubcgKV2TGoqe7DaiwXP0/78= User-Agent: Thunderbird 2.0.0.14 (Windows/20080421) Xref: g2news1.google.com comp.lang.ada:363 Date: 2008-05-26T09:38:01+00:00 List-Id: Hi Ankur, I can share with you my experience since I started learning ada a few months ago. First interesting think, you will get a lot of help in this forums since all my questions were answered here. > I was attracted to Ada because it was : > 1. Sanely Object Oriented - It doesn't force OO like Java and C#. Yes, that's the point, even If I find out some standard library could be OO, I thinks, there si some advantage to choose what is an object and what is not, even if I'm a fan of OO paradigm. > 2. Compiled - I *want* to do manual memory management so that I can at > least understand what automatic garbage collection means to me. I've > been living comfortably with Python for too long. > 3. Uniform Syntax - I find C++ syntax weird. C was okay, though. C++ is going to tghe right way. The compiler is really permissive, it's, it's not completly object, and you can do bad code that's not possible to maintain several weeks later. So there is some nice stuff in C++ (I'm working with C++ for years) but I still can't understand people that choose C++ for big application (like KDE and other graphics stuff), Ada could have been more suitable... > I'm sure there are other benefits, but I really don't understand what > they mean to me (yet). The other benefits are mainly that Ada force you to write good code. What does it mean? It mean you have to exaclty say what you want to be done, so there is so few suprises in the runtime, that's amazing. I started to create a Web application to manage contacts in a callcenter learning ada in the same time. In less than one month, I get something working. I still need to improve the design to get my component more reusable, but it's just because I'm learning during developpement phase. So I think that's a real good thing to learn Ada and to participate to the promotion of this language that too many people think it's already dead. > So, what would an amateur, cash deprived programmer like me do to > learn Ada? There are web tutorials, for for the 95 standard. There's a > Wikibook, but I've found it incomplete at several places and there are > a lot of concepts I can't grasp. There's the reference document, but I > can't make head or tail of it. The first step is to learn the main aspect of the language: - Main syntax: Control structure, all the aspects of types, difference between new type and subtype, array, access type, limited and private type. - Strings API: Ada.Strings.Fixed vs Ada.Strings.Unbounded. How to convert to string or from string. How to manage Intefeger and Float numbers. - Ada programming style: Procedure, function and package, how to manage a project, the gpr files to get a project structured. in / in out / out / access parameters, the difference and the use. The nested packages, procedures and functions. - OO: tagged and record, overloading and polymorphism - Error management: Exception in Ada, simple and powerfull. - Generic: Making a generic package / procedure / function, how to use it. Why C++ templates can definitivly go to bed. - Tasking: How to multitask a program, tasking is a part of the language in the difference of main language like C or Python. Then you can start to leard a few intersting library functions: Containers. The point is to create program for all this stuff to get familiar with them. For instance, create a program which read an integer, print it, calcul it. Try to see the contraint type, if your integer is too big, how ada manage? and so on. Then do the same with string, see how to store string, why you have to be carefull using string and why Unbounded strings can save your implementation and so on. At least you will have to determine you first program, is a console program? Graphics program? Web program? Ada has library for all this stuff. Sebastien