From: balson on
Andrea Taverna wrote:
> Hi folks!
>

[snip]


> 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"
>


Where's performance on this list? Do you not care how fast the
applications run? Look at the following white paper to see if
performance should or shoild not be high on your list if you are
considering changing development languages:

http://www.cherrystonesoftware.com/doc/AlgorithmicPerformance.pdf

What this WP documents is we took 5 basic very common computer science
algorithms and wrote them in different languages: C/C++, Java and C# and
then benchmarked them against each other. If performance is of any
concern to you, you'd stiff with C/C++.

IOW, stay away from the likes of Java, C#, Pascal. Unless you have a
very specific reason for going in that direction. Your performance will
suffer.

Now if you just want to learn a new language, that's different. But if
you are in the commercial space and delivering to customers and that
customer demands top performance, stick with C/C++.


Jim



> 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.

From: balson on
Andrea Taverna wrote:
> Hi folks!
>

[snip]


> 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"
>


Where's performance on this list? Do you not care how fast the
applications run? Look at the following white paper to see if
performance should or shoild not be high on your list if you are
considering changing development languages:

http://www.cherrystonesoftware.com/doc/AlgorithmicPerformance.pdf

What this WP documents is we took 5 basic very common computer science
algorithms and wrote them in different languages: C/C++, Java and C# and
then benchmarked them against each other. If performance is of any
concern to you, you'd stiff with C/C++.

IOW, stay away from the likes of Java, C#, Pascal. Unless you have a
very specific reason for going in that direction. Your performance will
suffer.

Now if you just want to learn a new language, that's different. But if
you are in the commercial space and delivering to customers and that
customer demands top performance, stick with C/C++.


Jim



> 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.

From: Georg Bauhaus on
balson schrieb:

>
> Where's performance on this list? [...]

> http://.../doc/AlgorithmicPerformance.pdf
> What this WP documents is we took 5 basic very common computer science
> algorithms and wrote them in different languages:
> C/C++, Java and C# and then benchmarked them against each other.

Note: Cherrystonesoftware markets a product that is not available
with Java, C#, or other languages.
From: Maciej Sobczak on
On 23 Mar, 14:24, Georg Bauhaus <rm.dash-bauh...(a)futureapps.de> wrote:

> Note: Cherrystonesoftware markets a product that is not available
> with Java, C#, or other languages.

Are they supposed to make products for those platforms that they
consider inferior? Why?

I only believe in those statistics that I falsified myself, but in
this particular paper they clearly described the measurement
conditions and provided source code - it is complete and therefore
credible.
In this case I see no problem.
Or, frankly, I'm not surprised that what they find in their own
measurements is consistent with what they market, as apparently both
the product and the paper are targeted for the same, performance-aware
audience.

--
Maciej Sobczak * http://www.inspirel.com

YAMI4 - Messaging Solution for Distributed Systems
http://www.inspirel.com/yami4
From: Warren on
balson expounded in news:4BA8BA91.4050905(a)cherrystonesoftware.com:

> Andrea Taverna wrote:
>> Hi folks!
> [snip]
>> 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"
>
> Where's performance on this list?

Performance is mentioned in "1) directly compiled to efficient
code".

> IOW, stay away from the likes of Java, C#, Pascal. Unless you
> have a
> very specific reason for going in that direction. Your performance
> will suffer.
> Jim

I don't think many people would be surprised by these results.
After all Java, C# and Pascal (variants) are still largely
interpreted languages, even if they use some sort of compiled
intermediate code.

But each "tool" has its own place in the toolbox.

Warren