From: Nicholas Paul Collin Gloucester <Colin_Paul_Gloster@ACM.org>
Subject: Re: Alternatives to C: ObjectPascal, Eiffel, Ada or Modula-3?
Date: Mon, 20 Jul 2009 12:15:08 +0000 (UTC)
Date: 2009-07-20T12:15:08+00:00 [thread overview]
Message-ID: <h41n4c$pm0$1@news.eternal-september.org> (raw)
In-Reply-To: h3sln0$rhm$2@news.eternal-september.org
On 2009-07-18, A. Taverna <a.tavs.NOSPAM@libero.it.invalid>
submitted for the newsgroups comp.lang.eiffel; comp.lang.ada;
comp.lang.modula3; comp.lang.pascal; and comp.programming ...
|---------------------------------------------------------------------------|
|"Hi folks! |
| |
|I'm a CS student and I often need to write number-crunching code dealing |
|with combinatorial optimization problems. |
|What I do usually is implementing ad-hoc algorithms and testing their |
|performance against other previously-known solutions, including general |
|solvers. |
| |
|In the past I used C, but now I have decided to change language. |
|I'm looking for a "better" one. |
| |
|Here follow the features it should have, ranked approximately by relevance:|
| |
|0) open-source support and an alive community |
|1) directly compiled to efficient code |
|2) statically typed and object-oriented, better if multi-paradigm |
|3) general-purpose libraries (possibly standardized, either by standard |
|or de facto), including containers and some math abstractions. |
|4) garbage collected. As an alternative, provide memory management |
|policies via libraries (e.g. memory pools and such) |
|5) optional run-time checks and some kind of control over compilation |
|and low-level issues |
|6) "relatively simple and consistent" |
| |
|So I have considered these alternatives: FreePascal, Eiffel, Ada and |
|Modula-3. |
|I have taken a look at all of them and I'm still undecided. Below are |
|the impressions I got for each language. |
|Can you help me? Feel free to recommend other languages as well. |
| |
|TIA |
| |
|--> Impressions I got for each language |
| |
|- FreePascal is a safe and modular alternative to C and C++, but |
|it is also close to the latter in terms of expressiveness. Moreover it |
|doesn't seem to have the libraries I need. |
|==>Qualifies for 0,1,2,5. Not sure about 3 and 4 |
| |
|- Eiffel is geared toward application programming in |
|medium/large-sized teams relying heavily on OO modelling. It is designed |
|for (re)usability, correctness and efficiency in this order. |
|My needs are somewhat different though. |
|The main gripe I have with Eiffel is the lack of a well-documented |
|standard gpl'ed library. |
|GOBO and EiffelBase seem to have incomplete or non-free documentation |
|and I couldn't find tutorials; as such, I couldn't get a clear picture |
|about them. |
|==> Qualifies for 0,1,2,4,5 and 6. Not sure about 3. |
| |
|- Ada is best suited for large teams and/or critical software, thus |
|it may be overkill for my work, OTH it could have anything I might |
|happen to need. |
|What holds me from jumping onto Ada is the potential complexity |
|It would be interesting to hear the experience of other people learning |
|Ada from the C/Java background. |
|As for memory management (requirement 4), I heard there are different |
|takes on the matter: |
|(a) Ada uses dynamic stack allocation a lot, and in a transparent way, |
|reducing the need of manual management (MM) |
|(b) Ada libraries adopt idioms that further simplifies MM issues |
|(c) Conservative garbage collectors such as Bohem's can be used with |
|Ada, and they are supposed to work "better" with Ada than with unsafe |
|languages such as C and C++ |
| |
|So can MM be said to be easier in Ada than in C? I hope Ada-ers will |
|mercifully shed some light on the issue. |
| |
|There seems to be a lot of Ada95 free documentation on the net, I guess |
|it's suitable for Ada05 as well. |
|==> Qualifies for 0,1,2,3,5 and, partially, 4 |
| |
|- Modula-3 is simpler/smaller than Ada and has been successfully |
|used for system/application programming. |
|It seems to be the most consistent, simple and easy to grok, but I |
|couldn't find any container/math library ready to use. |
|==> Qualifies for 0,1,2,4,5,6." |
|---------------------------------------------------------------------------|
Ciao!
I agree that static typing is important, but Modula-3; Eiffel; and
many versions of Pascal perhaps including FreePascal are restricted to
structural equivalence of types only. This is not sufficient strong
typing.
I give an example showing that Ada is better than Eiffel (and Modula-3
and many versions of Pascal) in this regard, based on an example by
Bertrand Meyer in the second edition of the book "Object-oriented
software construction". In that book, Dr. Meyer claimed that Ada's
overloading is inferior to Eiffel's overloading. He called Ada's
overloading syntactic overloading. He called Eiffel's overloading
semantic overloading. I believe that he was being sincere, but he was
definitely mistaken. He claimed that it would not be possible to
sensibly discriminate between overloaded subprograms for a point if
the real-number parameters could be in any of Cartesian notation and
polar notation.
This is refuted by the following Ada code...
procedure Syntactic_Overloading_Example_Based_On_An_Example_By_Bertrand_Meyer is
type Horizontal_Coordinate is new Float;
type Vertical_Coordinate is new Float;
procedure Point(X : Horizontal_Coordinate; Y : Vertical_Coordinate) is
begin
null; --Whatever.
end;
type Magnitude is new Float;
type Radians is new Float range -3.14*2.0 .. 3.14*2.0;
procedure Point(R : Magnitude; Theta : Radians) is
begin
null; --Whatever.
end;
X : Horizontal_Coordinate;
Y : Vertical_Coordinate;
R : Magnitude;
Theta : Radians;
begin
X := 1.1;
Y := 2.2;
R := 3.3;
Theta := 0.5;
Point(X, Y);
Point(R, Theta);
--The above is all legal Ada. However, the following mistakes would
--be legal in Eiffel but would be rejected by an Ada compiler...
R := X;
--An example compiler complaint...
--"Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb:29:09: expected type "Magnitude" defined at line 9
--Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb:29:09: found type "Horizontal_Coordinate" defined at line 2
--gnatmake: "Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb" compilation error".
Point(X, Theta);
--Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb:35:04: no candidate interpretations match the actuals:
--Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb:35:10: expected type "Magnitude" defined at line 9
--Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb:35:10: found type "Horizontal_Coordinate" defined at line 2
--Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb:35:10: ==> in call to "Point" at line 11
--Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb:35:13: expected type "Vertical_Coordinate" defined at line 3
--Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb:35:13: found type "Radians" defined at line 10
--Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb:35:13: ==> in call to "Point" at line 4
--gnatmake: "Syntactic_overloading_example_based_on_an_example_by_Bertrand_Meyer.adb" compilation error
end;
next prev parent reply other threads:[~2009-07-20 12:15 UTC|newest]
Thread overview: 285+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-18 14:19 Alternatives to C: ObjectPascal, Eiffel, Ada or Modula-3? Andrea Taverna
2009-07-18 14:42 ` Richard Harter
2009-07-18 14:53 ` Francois PIETTE
2009-07-18 15:23 ` Ludovic Brenta
2009-07-18 18:27 ` Andrea Taverna
2009-07-18 18:46 ` Pascal Obry
2009-08-04 20:09 ` Hendrik Boom
2009-08-04 21:35 ` Jon Harrop
2009-07-18 18:57 ` Andrea Taverna
2009-07-18 15:18 ` Pascal J. Bourguignon
2009-07-19 13:50 ` Andrea Taverna
2009-07-19 14:06 ` Pascal J. Bourguignon
2009-07-20 10:13 ` Nicholas Paul Collin Gloucester
2009-08-04 20:12 ` Hendrik Boom
2009-07-21 12:03 ` Jon Harrop
2009-07-21 13:25 ` Mark T.B. Carroll
2009-07-18 15:50 ` Ludovic Brenta
2009-07-18 16:31 ` Hibou57 (Yannick Duchêne)
2009-07-18 19:48 ` Georg Bauhaus
2009-07-20 10:34 ` Nicholas Paul Collin Gloucester
2009-07-23 22:58 ` A few Ada questions Andrea Taverna
2009-07-24 0:28 ` Ludovic Brenta
2009-07-24 9:07 ` AdaMagica
2009-07-28 9:48 ` Making a nonlimited type controlled by means of a controlled component Ludovic Brenta
2009-08-14 22:21 ` Randy Brukardt
2009-08-14 22:51 ` Adam Beneschan
2009-07-24 7:00 ` A few Ada questions Dmitry A. Kazakov
2009-07-24 15:26 ` Colin Paul Gloster
2009-07-24 15:01 ` Dmitry A. Kazakov
2009-07-18 16:27 ` Alternatives to C: ObjectPascal, Eiffel, Ada or Modula-3? BGB / cr88192
2009-07-18 17:41 ` Ben Bacarisse
2009-07-20 10:39 ` Nicholas Paul Collin Gloucester
2009-07-20 16:17 ` Ben Bacarisse
2009-07-21 12:10 ` Jon Harrop
2009-07-21 14:40 ` Colin Paul Gloster
2009-07-22 0:25 ` Andrew Reilly
2009-07-19 1:04 ` Andrew Reilly
2009-07-19 13:14 ` mockturtle
2009-07-19 13:35 ` Andrea Taverna
2009-07-19 15:28 ` Pascal J. Bourguignon
2009-07-19 17:30 ` Hibou57 (Yannick Duchêne)
2009-07-19 18:02 ` Georg Bauhaus
2009-07-19 19:09 ` Hibou57 (Yannick Duchêne)
2009-07-19 19:14 ` Pascal J. Bourguignon
2009-07-19 19:51 ` Georg Bauhaus
2009-07-19 19:52 ` tm
2009-07-20 9:57 ` Jean-Pierre Rosen
2009-07-20 13:42 ` Hibou57 (Yannick Duchêne)
2009-07-20 14:37 ` tm
2009-07-20 15:14 ` Jean-Pierre Rosen
2009-07-24 7:26 ` tm
2009-07-24 8:10 ` Dmitry A. Kazakov
2009-07-25 17:39 ` Frank J. Lhota
2009-07-25 18:12 ` Dmitry A. Kazakov
2009-07-24 21:15 ` Wolfgang Ehrhardt
2009-07-24 22:29 ` bartc
2009-07-26 10:55 ` tm
2009-07-26 12:14 ` bartc
2009-07-26 13:21 ` Pascal J. Bourguignon
2009-07-26 15:43 ` bartc
2009-07-20 15:46 ` Georg Bauhaus
2009-07-20 16:08 ` Ben Bacarisse
2009-07-20 19:48 ` Tetrahedral Quartz
2009-07-26 2:26 ` wwilson
2009-07-20 12:15 ` Nicholas Paul Collin Gloucester [this message]
2009-07-20 12:59 ` Mark T.B. Carroll
2009-07-20 13:18 ` Nicholas Paul Collin Gloucester
2009-07-20 13:21 ` Mark T.B. Carroll
2009-07-20 14:49 ` Nicholas Paul Collin Gloucester
2009-07-20 18:33 ` Cesar Rabak
2009-07-20 18:49 ` Hibou57 (Yannick Duchêne)
2009-07-20 19:35 ` Cesar Rabak
2009-07-20 21:54 ` Georg Bauhaus
2009-07-21 7:39 ` Dmitry A. Kazakov
2009-07-21 14:30 ` Cesar Rabak
2009-07-21 15:17 ` Martin
2009-07-20 19:23 ` Georg Bauhaus
2009-07-20 19:55 ` Cesar Rabak
2009-07-21 12:49 ` Colin Paul Gloster
2009-07-20 19:44 ` Nicholas Paul Collin Gloucester
2009-07-20 20:14 ` Cesar Rabak
2009-07-20 22:22 ` Ludovic Brenta
2009-07-21 1:33 ` Cesar Rabak
2009-07-21 7:54 ` Ludovic Brenta
2009-07-21 7:59 ` Dmitry A. Kazakov
2009-07-21 13:08 ` Colin Paul Gloster
2009-07-21 12:43 ` Dmitry A. Kazakov
2009-07-21 14:48 ` Cesar Rabak
2009-07-21 14:45 ` Cesar Rabak
2009-07-21 15:46 ` Dmitry A. Kazakov
2009-07-21 17:34 ` Colin Paul Gloster
2009-07-21 8:56 ` Jean-Pierre Rosen
2009-07-21 9:31 ` Georg Bauhaus
2009-07-21 15:02 ` Cesar Rabak
2009-07-21 16:42 ` Georg Bauhaus
2009-07-21 18:00 ` Cesar Rabak
2009-07-22 14:10 ` Colin Paul Gloster
2009-07-22 14:54 ` Cesar Rabak
2010-03-24 2:46 ` Robert Love
2010-03-25 15:51 ` Colin Paul Gloster
2009-07-21 17:37 ` Colin Paul Gloster
2009-07-21 14:08 ` Hibou57 (Yannick Duchêne)
2009-07-21 13:38 ` Colin Paul Gloster
2009-07-21 15:25 ` Cesar Rabak
2009-07-21 17:48 ` Colin Paul Gloster
2009-07-23 18:47 ` Jon Harrop
2009-07-23 19:20 ` Colin Paul Gloster
2009-07-23 21:51 ` Jon Harrop
2009-07-24 1:08 ` Cesar Rabak
2009-07-24 7:04 ` Dmitry A. Kazakov
2009-07-22 19:29 ` sjw
2009-07-22 20:05 ` Dmitry A. Kazakov
2009-07-23 12:01 ` Colin Paul Gloster
2009-07-24 1:19 ` Cesar Rabak
2009-07-24 8:50 ` Georg Bauhaus
2009-07-24 15:56 ` Colin Paul Gloster
2009-07-24 16:52 ` Colin Paul Gloster
2009-07-24 18:36 ` Cesar Rabak
2009-07-24 21:46 ` Robert A Duff
2009-07-25 14:32 ` jimmaureenrogers
2009-07-25 17:31 ` Cesar Rabak
2009-07-21 12:25 ` Jon Harrop
2009-07-21 11:41 ` Martin
2009-07-21 14:09 ` Jon Harrop
2009-07-21 13:41 ` Martin
2009-07-21 13:45 ` Martin
2009-07-21 13:58 ` Dmitry A. Kazakov
2009-07-21 16:06 ` Jon Harrop
2009-07-21 15:54 ` Georg Bauhaus
2009-07-22 9:37 ` Jon Harrop
2009-07-22 9:19 ` Georg Bauhaus
2009-07-22 7:53 ` Martin
2009-07-22 9:18 ` Jon Harrop
2009-07-21 23:17 ` Robert A Duff
2009-07-21 14:12 ` Andrea Taverna
2009-07-21 14:14 ` Hibou57 (Yannick Duchêne)
2009-07-21 14:38 ` Hibou57 (Yannick Duchêne)
2009-07-21 15:29 ` Mark T.B. Carroll
2009-07-21 16:10 ` Jon Harrop
2009-07-22 8:16 ` Martin
2009-07-22 18:59 ` Jon Harrop
2009-07-24 8:15 ` tm
2009-07-24 9:31 ` Jon Harrop
2009-07-24 9:42 ` Georg Bauhaus
2009-07-24 13:03 ` Jon Harrop
2009-07-24 10:15 ` tm
2009-07-24 13:11 ` Jon Harrop
2009-07-24 13:01 ` tm
2009-07-24 14:42 ` Jon Harrop
2009-07-25 1:15 ` wwilson
2009-07-25 6:05 ` robertwessel2
2009-07-25 9:24 ` Dmitry A. Kazakov
2009-07-26 2:10 ` wwilson
2009-07-26 3:27 ` Andrew Reilly
2009-07-26 10:08 ` bartc
2009-07-27 11:28 ` Colin Paul Gloster
2009-07-28 5:01 ` wwilson
2009-07-28 10:13 ` Colin Paul Gloster
2009-07-28 12:29 ` Dave Seaman
2009-07-28 12:42 ` Peter Hermann
2009-07-28 18:35 ` wwilson
2009-07-21 13:09 ` parnell
2009-07-28 20:57 ` fft1976
2009-07-28 21:59 ` Georg Bauhaus
2009-07-28 22:01 ` Ludovic Brenta
2009-07-30 3:04 ` fft1976
2009-07-30 6:47 ` Martin
2009-07-28 23:14 ` Jon Harrop
2009-08-01 19:46 ` frankenstein
2009-08-01 21:56 ` Paul Rubin
2009-08-01 23:28 ` Jon Harrop
2009-08-02 10:07 ` frankenstein
2009-08-02 18:55 ` Jon Harrop
2009-08-02 9:48 ` frankenstein
2009-07-29 0:40 ` Oxide Scrubber
2009-07-29 2:52 ` fft1976
2009-07-29 4:46 ` Oxide Scrubber
2009-07-29 7:50 ` Elena
2009-07-29 15:06 ` Andrea Taverna
2009-07-29 8:11 ` Ray Blaak
2009-07-29 9:57 ` learn2code
2009-07-29 11:38 ` Oxide Scrubber
2009-07-29 14:03 ` learn2code
2009-07-29 14:35 ` Pascal J. Bourguignon
2009-07-29 17:02 ` Oxide Scrubber
2009-08-03 11:19 ` oxhiderubber
2009-07-29 21:10 ` Jon Harrop
[not found] ` <kctwcdo5pewe.1ut3dcff8axm0$.dlg@40tude.net>
2009-07-29 21:18 ` Jon Harrop
2009-07-29 16:36 ` Colin Paul Gloster
2009-07-29 17:22 ` Ray Blaak
2009-07-29 18:44 ` Martin
2009-07-29 20:58 ` Jon Harrop
2009-07-29 15:19 ` Andrea Taverna
2009-07-29 19:25 ` Jon Harrop
2009-07-30 2:11 ` tmoran
2009-07-30 2:34 ` fft1976
2009-07-30 2:48 ` Paul Rubin
2009-07-30 3:40 ` fft1976
2009-07-30 3:53 ` Paul Rubin
2009-07-30 6:51 ` Georg Bauhaus
2009-07-30 7:52 ` fft1976
2009-07-30 8:34 ` Ludovic Brenta
2009-07-30 16:10 ` Georg Bauhaus
2009-07-30 17:09 ` fft1976
2009-07-30 17:20 ` Pascal Obry
2009-07-30 17:28 ` fft1976
2009-07-30 17:47 ` Isaac Gouy
2009-07-31 10:48 ` Georg Bauhaus
2009-07-30 17:23 ` Ludovic Brenta
2009-07-30 17:59 ` Isaac Gouy
2009-07-30 19:38 ` fft1976
2009-07-30 21:44 ` Isaac Gouy
2009-07-30 22:14 ` Paul Rubin
2009-07-31 10:27 ` Georg Bauhaus
2009-07-31 11:13 ` Georg Bauhaus
2009-07-31 11:29 ` Georg Bauhaus
2009-07-31 16:38 ` Isaac Gouy
2009-07-30 16:25 ` Isaac Gouy
2009-07-30 12:28 ` Colin Paul Gloster
2009-07-30 11:49 ` Martin
2010-03-23 12:31 ` balson
2010-03-23 12:56 ` balson
2010-03-23 13:24 ` Georg Bauhaus
2010-03-23 15:05 ` Maciej Sobczak
2010-03-23 17:52 ` Georg Bauhaus
2010-03-24 6:33 ` Martin Krischik
2010-03-24 8:31 ` Maciej Sobczak
2010-03-23 16:50 ` Warren
2010-03-23 20:29 ` Patrick Scheible
2010-03-24 15:07 ` Warren
2010-03-24 21:11 ` Patrick Scheible
2010-03-24 21:27 ` Pascal J. Bourguignon
2010-03-24 22:14 ` Adam Beneschan
2010-03-24 23:15 ` Patrick Scheible
2010-03-24 23:24 ` Adam Beneschan
2010-03-24 23:28 ` Patricia Shanahan
2010-03-25 1:52 ` John B. Matthews
2010-03-25 16:42 ` Andrew Haley
2010-03-26 23:54 ` Pascal J. Bourguignon
2010-03-24 21:36 ` Adam Beneschan
2010-03-26 7:58 ` Martin Krischik
2010-04-12 11:03 ` Ole-Hjalmar Kristensen
2010-03-24 6:28 ` Martin Krischik
2010-03-24 15:10 ` Warren
2010-03-25 2:19 ` Mike Sieweke
2010-03-25 13:48 ` Robert A Duff
2010-03-25 15:42 ` Colin Paul Gloster
2010-03-26 15:54 ` blmblm
2010-03-26 19:18 ` Warren
2010-03-27 0:03 ` Pascal J. Bourguignon
2010-03-23 17:12 ` J-P. Rosen
2010-03-23 17:41 ` Jim Balson
2010-03-23 17:54 ` Pascal Obry
2010-03-23 18:34 ` jpwoodruff
2010-03-23 20:34 ` Patrick Scheible
2010-03-23 20:33 ` Patrick Scheible
2010-03-23 20:39 ` Pascal Obry
2010-03-24 6:24 ` Martin Krischik
2010-03-23 19:33 ` Adam Beneschan
2010-03-23 22:02 ` Mensanator
2010-03-31 6:55 ` David Thompson
2010-03-31 8:08 ` Martin Krischik
2010-03-24 15:15 ` Warren
2010-03-25 15:46 ` Colin Paul Gloster
2010-03-27 0:53 ` Andrea Taverna
2010-03-27 6:19 ` Gautier write-only
2010-03-23 17:31 ` Patrick Scheible
-- strict thread matches above, loose matches on Subject: below --
2010-03-23 18:57 cbcurl
2010-03-23 20:27 ` John B. Matthews
2010-03-23 21:34 ` Adam Beneschan
2010-03-24 2:08 ` John B. Matthews
2010-03-24 15:23 ` Warren
2010-03-24 16:57 ` Adam Beneschan
2010-03-24 20:00 ` Warren
2010-03-24 20:48 ` Adam Beneschan
2010-03-25 13:45 ` Warren
2010-03-26 8:20 ` Martin Krischik
2010-03-26 19:21 ` Warren
2010-03-28 15:07 ` Martin Krischik
2010-03-29 13:28 ` Warren
2010-03-26 8:05 ` Martin Krischik
2010-03-26 8:02 ` Martin Krischik
2010-03-26 19:24 ` Warren
2010-03-28 14:54 ` Martin Krischik
2010-03-29 13:31 ` Warren
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox