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.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,d24e07f660698f1 X-Google-Attributes: gidfac41,public X-Google-Thread: 109fba,d24e07f660698f1 X-Google-Attributes: gid109fba,public X-Google-Thread: 103376,d24e07f660698f1 X-Google-Attributes: gid103376,public X-Google-Thread: f43e6,d24e07f660698f1 X-Google-Attributes: gidf43e6,public From: walth@netcom.com (Walt Howard) Subject: Re: I use Eiffel! and other "strange tongues"! Date: 1997/08/02 Message-ID: <33e4d7ec.1596193@news.deltanet.com> X-Deja-AN: 261677440 References: <33C61545.167EB0E7@tower.com> <01bc94e6$9ced0820$287b7b7a@tlo2> <33E1B18E.66B4DEC2@docs.uu.se> Organization: Delta Internet Services, Inc. Reply-To: walth@netcom.com Newsgroups: comp.software-eng,comp.lang.eiffel,comp.lang.c++,comp.lang.ada Date: 1997-08-02T00:00:00+00:00 List-Id: On Fri, 01 Aug 1997 11:51:10 +0200, Jakob Engblom wrote: >Jon S Anthony wrote: >> >> In article Brian Rogoff writes: >> >> > On Wed, 30 Jul 1997, Glenn Williamson wrote: >> > > ... about Eiffel ... >> > >> > > However, In my opinion, it is the perfect language to teach the >> > > principles of Object-Oriented Programming. While C and C++ may dominate >> > I agree. C++ let's you slide. It's up to the programmer to discipline himself not to break OOP. It's not good to teach OOP with C++ because you already have to understand OOP to use C++ correctly. >> > But what if you think that there is far more to programming than OOP? That >> > functional, constraint, and logic programming are equally important >> > "paradigms"? I think OOP is the terminal paradigm. It is like the wheel. We're there. We've arrived at the proper way to build software. We may make some minor adjustments in the future but the paradigm itself will be our computing core for hundreds, if not thousands of years. But that's just speculation of course. >> Exactly. Actually, functional, IMO, is significantly more important >> than OO. >> >In my opnion, Eiffel is a wonderful OO language, with a nice syntax and >some very powerful support for proper Software Engineering built-in. It >was designed by people who knew what they were doing, and as a teaching >language it IS superb, just like PASCAL is a good beginning of >programming imperative. > >But still OOP is perhaps a paradigm, but I would rather say an >orthogonal concept to the various calculation models used out there: >functional, imperative, logical, stackbased, assembler, >constraint-based. Right. >Another orthogonal concept is parallellism, and its stronger brother >distribution. Distribution is a specialization of OOP, or vice versa, they are the same thing. > >A few examples: > Erlang (www.ericsson.se/erlang) is processbased and functional. > Ada 95 is OOP, Imperative and parallel > CLOS is functinal and OOP > Oz (http://www.sics.se/~seif/oz.html) is functional, logical, OOP, > parallel and distributed > >I think that a computer science student should be comfortable >programming everything from assembly language to PROLOG, and be able to >add concepts like inheritance, object-orientation, parallelism and data >hiding across the board. It sure would be nice to have that. >Teaching PROGRAMMING in C or C++ is ridiculous, as you get bogged down >in silly details. If you're students need it, they will learn it on >their own. The job of the university is to teach concepts that will >last, and not todays high-fashion languages. I agree with you up to this point. C and C++ are not high-fashion languages. C has had constant growth since it's creation. C++ looks to be the spearhead that is getting OOP accepted universally, despite it's problems. Sending someone out into the real world knowing Pascal instead of C is like sending a soldier into a battlefield with a BB Gun while everyone else has an M16. I haven't yet seen anyone put their finger on why C is so popular. I'd like to put forth a possible reason. C and C++ are exploratory languages. C is really a thin shell over assembly language. Just enough of a language to be portable to different processors. It's a good balance between too much detail (assembly) and too little access to the machine (COBOL). It has no built in functions. No one decided that there was a perfect way to do something and forced the programmer to do it that way. Each programmer is allowed free reign to come up with new and unlimited uses of the computer. The main instrument which expresses this exploratory nature of C is pointers. The concept of Pointers (addresses) and a Stack are arguably probably the most important concepts in computer programming. Just about everything extends from them. If a language doesn't let you manipulate these things directly, you are cut off from 90% of what programming is about. C++ adds a little more, but the only radical departure in my opinion from C, is virtual functions. And once again, C++ provides the MINIMAL compiler machinery to implement these. You can implement any other high level language polymorphism concept with C++ or C, but you can't do the reverse. What I'm saying is, you can write a Prolog interpreter, a Smalltalk interpreter, a Fortan Compiler etc etc etc in C! But you can't do the reverse. This is because these higher level languages do not let you do certain things which are part and parcel of the very woop and warf of computer programming. No one man, or committee has had the final word on the best way to do something. Languages that attempt to enforce someone else's best way don't succeed in the free market as well as those that do. I don't know how many of my friends who program in Visual Basic say, "Some day I'm going to have to rewrite this in C++". I never hear anyone say, "Someday I'm going to have to rewrite this in Visual Basic". I'd say that C and C++ are the BEST way to teach basic programming. Once someone understands the basics of the computer, stacks, addresses, linked lists, trees, but implementing them himself with a language such as C, then he should graduate up to being able to ignore the details and use a higher level language. C is the simplest language there is to learn. If you leave out the compiler and talk about only the language, it has less syntax to learn than basic (don't include the standard library in the definition of C). But it can be made more complex than anything else once you get good with it. It spans a large range of complexity. This doesn't mean I think C and C++ are the best languages for every use, I don't. Now, I am actually more in favor of people learning a valuable skill that will make them a living first, then learning the details. So, if Visual Basic is in demand, learn that first. Walt Howard