Re: Alternatives to C: ObjectPascal, Eiffel, Ada or Modula-3?
Francois PIETTE wrote:
> > I'm a CS student and I often need to write number-crunching code dealing
> > with combinatorial optimization problems.
> > 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.
> You said you are a student. So probably your goal is to get a job after your
> studies. If this is the case, you forgot the most important thing regarding
> language selection: The possibility to get a job !
> In that context, I wouldn't use any of the language you mentionned ! Ok,
> maybe FreePascal which would be replaced by Delphi or Delphi Prism once you
> are in a company for a real work. If it is not Delphi, then use C# or Java.
> It is likely that Delphi would be the fastest regarding number crunching.
> Delphi has a large and alive community. You can find a lot of opensource and
> freeware for Delphi.
The OP already knows C, so he will not have any problem finding a job.
Choosing a language based on perceived demand is a bad idea. A CS
student is supposed to learn as many languages as possible so as to be
able to compare them later, and not become captive of any one
language. Even more importantly, you need to learn paradigms; this
makes it easy to pick up any language that a job requires later on.
Conversely, hiring people based on the languages they know is an
equally bad idea. If you think knowledge of a particular language is
a must for an engineering position, you are wrong. Better criteria
include (but are not limited to) knowledge of sofware design (not just
"design patterns"; the real thing), algorithms, version control
systems, ability to work in teams, understanding of software
maintenance and general attitude towards software quality.
I think the OP understands all this very well; that's why he did not
mention job opportunities or market demand in his criteria for
Banks and insurance companies also understand this; they train their
new hires in COBOL or Ada and don't care what languages they knew
(PS. comp.lang.pascal trimmed because it's archived now).