<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>rant about the state of c++ software</title>
		<link>http://www.allegro.cc/forums/view/599467</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 18 Mar 2009 02:53:45 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>[rant]</p><p>I am completely exhausted trying to put libraries together...almost nothing works.</p><p>I had big problems with Allegro 4.9.8, which does not compile under VS2005 with libjpeg support (and other issues, I have posted them in the &quot;installation, setup &amp; configuration&quot; area). I was fighting with this for almost 6 hours, and I gave up (nothing against Allegro, it was the required libs that gave me the trouble).</p><p>Then I saw that Nokia released Qt 4.5, which is open source. I downloaded their SDK, but unfortunately it plays only with Mingw. No problem, I said, I will use Mingw from now on. </p><p>I tried to compile the examples...they don&#39;t compile. Oh, the horror! the problem is the paths: since I have VS2005, the compiler does not look at the mingw STL library, but at the Microsoft&#39;s library. I searched the options in the Qt Creator, but there are none for the compiler paths. So, I gave up with this as well.</p><p>Then I went to another little thing I wanted to try: boost intrusive lists with smart pointers. Then I discovered that the specific type of lists does not work with boost&#39;s smart pointers!!!!!</p><p>At this point, I am extremely exhausted and thinking of quitting any programming for my own leisure. </p><p>I am also extremely frustrated by the state of C++ software. Nothing works out of the box, and I have to jump hoops in order to make things work...</p><p>[/rant]
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Fri, 06 Mar 2009 21:29:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I had that issue with MSVC, MinGW and QT before. I just use a batch file that unset some environment variables that seem to confuse something with QT&#39;s build process.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (MiquelFire)</author>
		<pubDate>Fri, 06 Mar 2009 21:48:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>C++ is by elitists, for elitists. It&#39;s what can be expected. No concept of usability. <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Fri, 06 Mar 2009 22:15:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Then I saw that Nokia released Qt 4.5, which is open source. I downloaded their SDK, but unfortunately it plays only with Mingw. No problem, I said, I will use Mingw from now on.
</p></div></div><p>
I&#39;ve been using Qt 4.5 beta1 and RC1 for some time now with visual studio. They don&#39;t provide a binary package, you have to compile it yourself, but it&#39;t quite easy:</p><p>Download the source distribution.</p><p>Open the MSVC2005 command prompt (it should be in programs-&gt;microsoft visual studio 2005-&gt;Tools).</p><p>Go to the qt dir where you unziped everything</p><p>and run:</p><p>configure -debug-and-release<br />nmake</p><p>And done. It takes some time to compile, so better go do something else. In case you have mingw installed pass <i>-platform win32-msvc2005</i> to configure to make sure it generates the vc libraries and not the mingw ones.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Oscar Giner)</author>
		<pubDate>Fri, 06 Mar 2009 22:23:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I&#39;ve been using Qt 4.5 beta1 and RC1 for some time now with visual studio...
</p></div></div><p>

What about QtCreator? have you tried that?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Fri, 06 Mar 2009 22:25:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
In case you have mingw installed pass -platform win32-msvc2005 to configure to make sure it generates the vc libraries and not the mingw ones.
</p></div></div><p>

<img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Sat, 07 Mar 2009 00:39:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
What about QtCreator? have you tried that?
</p></div></div><p>
Yes, but I didn&#39;t like it :/ I tested it only with mingw, though. I preffer Visual Studio IDE + QtDesigner as a sepparate program. With QtCreator you end up with too many things that don&#39;t really fit on a single window (on my poor 1024x768 resolution <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />).</p><p>[edit]<br />Mmmm, I just found <a href="http://www.qtsoftware.com/developer/faqs/what-is-the-visual-studio-add-in/view">this</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Oscar Giner)</author>
		<pubDate>Sat, 07 Mar 2009 00:54:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>C++ is write only.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Sat, 07 Mar 2009 02:39:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>c++ is a convoluted mess because it has to find common criteria for everything from 8-bit micros to 64-bit super computers.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Goalie Ca)</author>
		<pubDate>Sat, 07 Mar 2009 03:18:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
c++ is a convoluted mess because it has to find common criteria
</p></div></div><p>
From the first post, it seems that even the common criteria have divergent implementations...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kibiz0r)</author>
		<pubDate>Sat, 07 Mar 2009 04:19:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Libraries for both providers and users are hell. I was searching for an easy way of doing all this. Different languages compilers and build systems. But nearly all powerfull libraries are C/C++ and often don&#39;t provide a good platform-independent build support.<br />You could try a linux distro. They have nearly all the important libs as binaries and they are installed easily. No problems with dependencies. And mostly no need for compilation by hand.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Martin Kalbfuß)</author>
		<pubDate>Sat, 07 Mar 2009 07:01:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
c++ is a convoluted mess because it has to find common criteria for everything from 8-bit micros to 64-bit super computers.
</p></div></div><p>You only have to look as far as Java to see that statement is false. C++ is a mess because the standard focuses too much on the syntax and ignores important issues such as interoperability.</p><p>I tend to avoid C++ unless I absolutely have to deal with it. Managed languages (Java, C#, etc.) have been around long enough for programmers to recognise their superiority in most situations.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Sat, 07 Mar 2009 09:50:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
You only have to look as far as Java to see that statement is false. C++ is a mess because the standard focuses too much on the syntax and ignores important issues such as interoperability.
</p></div></div><p>
Great, comparing a programming language with one that appeared 15 years later <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> Interoperability back in the 70&#39;s wasn&#39;t such a big issue as it is today, saying C++ isn&#39;t focusing on it is just as true as saying old 1920 films don&#39;t scale correctly in todays&#39; HDTV sets.</p><p>C++ is a mess because it is an old language. The same will happen to Java once it is overcame with newer, simpler and more powerful languages.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sat, 07 Mar 2009 10:07:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>QBASIC always works when i need it to
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (le_y_mistar)</author>
		<pubDate>Sat, 07 Mar 2009 10:16:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Great, comparing a programming language with one that appeared 15 years later <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div></div><p>My point is that if you live in the past, don&#39;t complain when it doesn&#39;t work out for you.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Sat, 07 Mar 2009 16:49:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sometimes you don&#39;t get to choose languages. I don&#39;t program in Visual Basic 6 because I like it, it is because the application is written in it. And I don&#39;t program in VB.NET because I like it, I do it because our company licenses Microsoft stuff. And I don&#39;t use Java because I like it, I use it because we are running Tomcat in a Linux with Apache.</p><p>A programmer chooses a language to work with. An experienced programmer uses whatever language is available.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sat, 07 Mar 2009 21:16:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
My point is that if you live in the past, don&#39;t complain when it doesn&#39;t work out for you.
</p></div></div><p>
Writing high-speed computational models is a thing of the past now? Just because you don&#39;t do <i>real</i> work with a programming language, doesn&#39;t mean the problem isn&#39;t there. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>Some people <i>have</i> to work with C++, and answering their complaints with &quot;oh, stop living in the past, duh&quot; is not very helpful. Sometimes, as ReyBrujo said, you need to support legacy applications. Other times, something just can&#39;t be done efficiently in those languages: right tool for the right job etc, and the job that C++ does basically has no other tool that can do it aside from C++ (or C, I guess). And, as it has been noted, the tool is often clumsy to use, so yeah...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Sat, 07 Mar 2009 21:19:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">everyone said:</div><div class="quote"><p>
C++ is a mess
</p></div></div><p>
I disagree - the language itself ifs fine (for me). Actually, it makes a lot more sense than plain C. OOP is a lot more human-friendly.</p><p>That says nothing  about the software, however.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Darizel)</author>
		<pubDate>Sat, 07 Mar 2009 21:21:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I disagree - the language itself ifs fine <b>(for me)</b>
</p></div></div><p>
<i>Emphasis mine</i>.</p><p>That too, I personally never had the issues OP is talking about, perhaps because I haven&#39;t ever used MinGW and MSVC at the same time. If C++ works for you, it&#39;s the others&#39; burden to prove that you should switch away from it. And if they don&#39;t feel like proving it, they might as well stop trolling about it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Sat, 07 Mar 2009 21:25:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And if they don&#39;t feel like proving it, they might as well stop trolling about it.
</p></div></div><p>
Thanks for  the support <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /> <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /><img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /> <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Darizel)</author>
		<pubDate>Sat, 07 Mar 2009 21:35:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">SiegeLord said:</div><div class="quote"><p>
Some people have to work with C++, and answering their complaints with &quot;oh, stop living in the past, duh&quot; is not very helpful.
</p></div></div><p>Did you read the original post entirely?
</p><div class="quote_container"><div class="title">axilmar said:</div><div class="quote"><p>
At this point, I am extremely exhausted and thinking of quitting any programming for my own <b>leisure</b>.
</p></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Sat, 07 Mar 2009 21:59:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I write computationally intensive simulations for my leisure <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Sat, 07 Mar 2009 22:05:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Sometimes you don&#39;t get to choose languages. I don&#39;t program in Visual Basic 6 because I like it, it is because the application is written in it. And I don&#39;t program in VB.NET because I like it, I do it because our company licenses Microsoft stuff. And I don&#39;t use Java because I like it, I use it because we are running Tomcat in a Linux with Apache.
</p></div></div><p>
Oh yes. Likewise, I would not have chosen FORTRAN as the language I do most of my stuff with these days...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Sat, 07 Mar 2009 22:51:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hehehe, our database programmer wants to write the new database manager in Eiffel. I guess everyone has a preferred language.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sun, 08 Mar 2009 01:52:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>IMO, C++ is such a giant mess because of its strict adherence to the &quot;to everyone their own&quot; rule (which basically states that the language should not contain anything that resembles user code), and because it refuses to add features that could somehow have an impact on run-time performance, however negligible.</p><p>It appears even messier because other, newer, languages have been made in the meantime, and some of them learned a lesson or two from C++.</p><p>Libraries are a mess because C++ (other than C) lends itself to multiple programming paradigms, and the same problem can be tackled using different programming techniques (e.g., use exceptions or return values? OOP or procedural? Templates or polymorphism?); but other than Java or C#, it doesn&#39;t come equipped with a monolithic library providing &quot;95% of what you&#39;ll ever need&quot; that you can rely on and that you can assume every other programmer uses as well. With C++, every library defines its own way of doing things, and often they don&#39;t go together well; with Java, for example, the compiler, the &quot;library&quot; (runtime), and the &quot;machine&quot; (the virtual one anyway) it runs on are standardized, and thus very predictable. With C++, there are a dozen compilers and a million different machines you can possibly face, and you need to accomodate them all somehow.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I disagree - the language itself ifs fine (for me). Actually, it makes a lot more sense than plain C. OOP is a lot more human-friendly.
</p></div></div><p>
Actually, OOP is a lot more fun using a language that has built-in constructs for getters/setters, interfaces, events, a mother-of-all-classes (&quot;class Object&quot;), a built-in string type that goes all the way, and all those other nice things that make your life easier.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Sun, 08 Mar 2009 03:02:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Actually, OOP is a lot more fun using a language that has built-in constructs for getters/setters, interfaces, events, a mother-of-all-classes (&quot;class Object&quot;), a built-in string type that goes all the way, and all those other nice things that make your life easier.
</p></div></div><p>
I&#39;m sure you can find  code that contains similar features and alter it slightly to your purpose. If you want a mother class, write one and use it in every program.
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">class</span> Object <span class="k2">{</span>
<span class="k2">}</span><span class="k2">;</span>

<span class="k1">class</span> Whatever <span class="k2">:</span> <span class="k1">public</span> Object <span class="k2">{</span>
     <span class="c">// Put your stuff here. </span>
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Darizel)</author>
		<pubDate>Sun, 08 Mar 2009 03:17:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Obviously that is useless if Object doesn&#39;t actually contain anything useful.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Sun, 08 Mar 2009 12:44:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Libraries are a mess because C++ (other than C) lends itself to multiple programming paradigms, and the same problem can be tackled using different programming techniques (e.g., use exceptions or return values? OOP or procedural?
</p></div></div><p>

How do other C++-like languages prevent using multiple paradigms? In Python I can write perfectly procedural code or OOP code, I can use exceptions or I can use return values. I can do things in many-many ways (e.g list comprehension or manual loops). </p><p>Wouldn&#39;t it be perfectly possible to write purely procedural code even if you are forced to only use classes and methods?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (anonymous)</author>
		<pubDate>Sun, 08 Mar 2009 16:13:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The problem is that c++ allows for multiple incompatible &quot;worlds&quot; to exist:</p><p>1) the MFC world.<br />2) the Qt world.<br />3) the wxWidgets world.<br />4) the boost world.<br />5) the Microsoft Visual C++ world.<br />6) the Mingw/GCC world.<br />7) etc.</p><p>All these are incompatible with each other. Different ABIs, different built systems, different implementation details, different memory management techniques, different threading, etc. You can only choose one of them and be happy.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Sun, 08 Mar 2009 17:35:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Except for memory management, that&#39;s not a very strong argument against C++. Java has different build systems (although many times better than make) such Ant and Maven. There&#39;s also an explosion of mutually incompatible web frameworks around Java. The real advantages of Java over C++ to developers are garbage collection, the huge standard library and the builtin standards that allow easy linking of classes at runtime.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Mon, 09 Mar 2009 03:37:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Except for memory management, that&#39;s not a very strong argument against C++.
</p></div></div><p>

I disagree. You can&#39;t use one of these &quot;worlds&quot; with any other &quot;world&quot;. In many cases, simply including files from two or more &quot;worlds&quot; does not even allow the program to compile (let alone function properly).</p><p>And then designing something that mixes features from these worlds requires extreme hacking techniques. </p><p>For example, Boost signals are incompatible with Qt signals. MFC and wxWidgets don&#39;t even have signals. </p><p>Or each library contains its own string class.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Mon, 09 Mar 2009 16:42:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>C++ is a great language, that&#39;s why it&#39;s in such a predicament. It happened to be a reigning champ during the computer boom, so tons of companies put all their weight behind it, pushing it far beyond what it was meant to be. It&#39;s only natural that, with such a popular language, mutually exclusive dialects spring up.</p><p>But now, almost two decades later, it&#39;s bursting at the seams because we&#39;ve refused to move on. We insist on patching up the holes with C++0x, allowing everyone to invest even more in something that&#39;s increasingly less important.</p><p><span class="remote-thumbnail"><span class="json">{"name":"jobgraph.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/9\/f\/9f660dd16bf392139835691f2a06925e.png","w":540,"h":300,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/9\/f\/9f660dd16bf392139835691f2a06925e"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/9/f/9f660dd16bf392139835691f2a06925e-240.jpg" alt="jobgraph.png" width="240" height="133" /></span></p><p>(Note that it&#39;s percentage growth, so C++ is continually losing job positions.)</p><p>I hardly think C++ is going to &quot;die out&quot; any time soon, but I do think that it&#39;s outlived its purpose. It&#39;s also entirely possible that I&#39;m talking out of my <span class="cuss"><span>ass</span></span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kibiz0r)</author>
		<pubDate>Tue, 10 Mar 2009 00:36:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I do think that it&#39;s outlived its purpose
</p></div></div><p>
So doing computational simulations is no longer needed? You might think that&#39;s not important, but that is the cornerstone of my future research career. I want a language that works well with that, and the patches coming in C++0x are very much welcome to people like me. Perhaps business world does not need C++ anymore, but business world != entire world.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Tue, 10 Mar 2009 03:42:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
So doing computational simulations is no longer needed?
</p></div></div><p>
See, that&#39;s what they call a false dichotomy. I did say it wasn&#39;t going to die out any time soon. My point was just that...
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
[The] business world does not need C++ anymore
</p></div></div><p>
And, like it or not, the business world fuels the evolution and adoption of programming languages, the same way with Java and C# as with C++.</p><p>Is it strange to think that people 10 years from now may talk about C# the same way we&#39;re talking about C++?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kibiz0r)</author>
		<pubDate>Tue, 10 Mar 2009 04:43:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The difference being C# is still changing a lot, and can continue to change. C# is controlled mainly by Microsoft, so they don&#39;t have to deal with standards committees and a bunch of whiny nerds when they want to change or add something. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Tue, 10 Mar 2009 05:06:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>As far as I know, C++ has a lot more libraries/support/etc. than C#. But I don&#39;t really know <i>anything</i> about C#.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Darizel)</author>
		<pubDate>Tue, 10 Mar 2009 05:48:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
See, that&#39;s what they call a false dichotomy. I did say it wasn&#39;t going to die out any time soon. My point was just that...
</p></div></div><p>
C++ has not outlived it&#39;s purpose. You said that, I corrected you. No false dichotomies introduced.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And, like it or not, the business world fuels the evolution and adoption of programming languages, the same way with Java and C# as with C++.
</p></div></div><p>
I&#39;d like to see some proof of that. Academia has been creating quite a few innovative languages these days, irrespective of their business applicability. FORTRAN is still going strong in the academia too, being revised and updated constantly. I doubt it even registers in your little percentage growth chart.</p><p>I think that the business world fuels the evolution and adoption of programming languages in the business world only. Business world != entire world.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Tue, 10 Mar 2009 05:49:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Support doesn&#39;t matter much to me, I can find all the resources I need in dealing with C#. As far as libraries go, I haven&#39;t had much problem finding whatever I need with C# either. In fact, most of the stuff you&#39;d have to do yourself or find a third party library for with C++ is built in to C#&#39;s standard library (.NET).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Tue, 10 Mar 2009 06:31:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>When it comes to business applications, C++ is not relative any more. But there is a lot more than business applications out there.</p><p>For example, one of our next projects at work (if we are offered the contract) includes the modernization and enhancement of software that operates the torpedo systems on a certain class of French Frigates (details can not be disclosed of course). </p><p>The software is huge. We are talking about 5 million lines of C++ code and 3 million lines of Java code. </p><p>Java is used for the GUI. Java apps are stored in a cluster of servers, accessible from any console on the ship. All the consoles are programmable.</p><p>C++ is used for the torpedo systems. The torpedo launcher kernel is written in Ada (a few hundred thousand lines of code), but the rest of the system is written in C++.</p><p>One thing that C++ has, and it is a tremendous advantage when compared to other languages, is performance. All the power of C++ comes from two things:</p><p>1) templates. A list of integers works in C++ many times faster than a list of integers in Java, simply because Java has generics, not templates. In Java, a list of integers is actually a list of Integer objects.</p><p>2) static allocation. Much of the data in a C++ program live on the stack. Especially small classes used as keys to maps, iterators, etc. Big win for C++ in this domain.</p><p>These things matter very much, especially when there are run-time constraints.</p><p>So, overall, C++ is still relevant. It may not be obvious, because C++ is not used in business applications, but it is here and it is not going to go away anytime soon.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Tue, 10 Mar 2009 14:26:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>C++ is, IMO, slowly moving from being the #1 mainstream language into a niche: applications where detailed control over memory allocation is needed, runtime performance is crucial, or the target platform is severely limited hardware-wise.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Tue, 10 Mar 2009 16:19:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>C++ is also used in all the major applications:</p><p><a href="http://www.lextrait.com/vincent/implementations.html">http://www.lextrait.com/vincent/implementations.html</a></p><p>So I don&#39;t think C++ is moving into a niche any time soon.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Tue, 10 Mar 2009 16:55:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Not c++ but c. Maybe interesting non the less.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
<b>C dominated 2008&#39;s open-source project nursery</b></p><p>C overwhelmingly proved the most popular programming language for thousands of new open-source projects in 2008, according to license tracker Black Duck Software.</p><p>The company, which monitors 180,000 projects on nearly 4,000 sites, said almost half - 47 per cent - of new projects last year used C. Black Duck said 17,000 new open-source projects were created in total. Next in popularity after C came Java, with 28 per cent.
</p></div></div><p>

<a href="http://www.theregister.co.uk/2009/01/21/open_source_projects_08/">link</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Tue, 10 Mar 2009 17:53:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Open Source, yes. I can see why: An open source project needs as many contributors as it can get, and C is somewhat the lowest common denominator for most programmers.<br />Also, the number of new open source projects doesn&#39;t really say much: Many of those end up as abandonware, or they never find a significant audience. Also, most open source projects are *nix-ish things: small tools tailored for one specific sub-task; this is something C lends itself for.<br />However, if you count the total number of users, and include web applications, then I bet the figures look a lot different.</p><p>I still think that C++ is slowly moving from its pole position as the most popular general-purpose programming language towards a more specialistic role - when runtime performance is more important than developer efficiency; when legacy C++ code needs to be supported; when coding at a very low level is necessary; when JIT compilation cannot be afforded; things like that. The process is obviously slowed down a lot because:<br />- Everybody knows C++<br />- Everybody has been using C++ in the past, and migrating can be costly<br />- C++ is available for virtually every platform
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Tue, 10 Mar 2009 19:44:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I still think that C++ is slowly moving from its pole position as the most popular general-purpose programming language towards a more specialistic role - when runtime performance is more important than developer efficiency; when legacy C++ code needs to be supported; when coding at a very low level is necessary; when JIT compilation cannot be afforded; things like that. The process is obviously slowed down a lot because:<br />- Everybody knows C++<br />- Everybody has been using C++ in the past, and migrating can be costly<br />- C++ is available for virtually every platform
</p></div></div><p>

And another reason:</p><p>- C++ is faster than the other languages.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Tue, 10 Mar 2009 20:37:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Speed doesn&#39;t matter in most cases. Only in special cases would the slight speed hit to a different language matter.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Tue, 10 Mar 2009 20:46:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Speed doesn&#39;t matter in most cases. Only in special cases would the slight speed hit to a different language matter.
</p></div></div><p>

I disagree. All the big packages mentioned in the page I posted above would be slower from Java and C# (databases, office, browsers etc). There is still no big app in these languages. </p><p>GC&#39;d languages require 2.5 times the memory of languages where memory is managed manually.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Tue, 10 Mar 2009 20:58:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Speed doesn&#39;t matter in most cases. You are mentioning huge applications. How many good office programs, databases, and browsers are there? Not many. </p><p>The vast majority of business applications do not require the marginal speed benefits of C++. And even of the three you mentioned, only databases would truly benefit from that. C# is more than sufficient for a word processor or web browser.</p><p>Ease of development trumps using fewer CPU cycles.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Tue, 10 Mar 2009 21:06:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Speed doesn&#39;t matter in most cases. You are mentioning huge applications. How many good office programs, databases, and browsers are there? Not many.</p><p>The vast majority of business applications do not require the marginal speed benefits of C++. And even of the three you mentioned, only databases would truly benefit from that. C# is more than sufficient for a word processor or web browser.</p><p>Ease of development trumps using fewer CPU cycles.
</p></div></div><p>

I agree with all your points, except one: that only databases would truly benefit from that. </p><p>At work we have some freakin&#39; huge documents (800+ pages), which are handled very slowly by Word 2007. If Word was implemented in Java, it would be truly painful.</p><p>Perhaps the situation would be better with C#.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Tue, 10 Mar 2009 21:33:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The language itself doesn&#39;t make the handling of such huge pagecounts slow, but rather their algorithm.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Tue, 10 Mar 2009 23:04:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Assuming that the algorithm is optimal, it&#39;s the fault of the language. Practically, Java would choke on such large files, setting fire to the hard disk due to extreme swapping.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Wed, 11 Mar 2009 00:34:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;re making a pretty damn big assumption here.</p><p>For one, when dealing with such huge amounts of data, especially if randomly accessed, you will want to load it in chunks on demand, rather than load it all to RAM at first.</p><p>Java doesn&#39;t choke on filesize unless you try to read it all at once. A file handle doesn&#39;t care if the file is 1B or 7TB.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Wed, 11 Mar 2009 03:48:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>As far as I know, word processors <i>do</i> need to read the entire file...<br />And is that 7 <i>Tera</i>bytes??!!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Darizel)</author>
		<pubDate>Wed, 11 Mar 2009 04:44:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It was just an example.</p><p>Why does a word processor need to read all 800+ pages at once? You can&#39;t read that much at a time...</p><p>Furthermore, I fail to see how C++ could provide a noticeable speed boost when <i>using the same algorithm</i>. If you&#39;re reading what is presumably a few hundred MB of data, it&#39;s going to bottleneck at the hard drive no matter what language you&#39;re in.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Wed, 11 Mar 2009 09:56:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Why does a word processor need to read all 800+ pages at once? You can&#39;t read that much at a time...
</p></div></div><p>

I&#39;m going to buy a crapton of monitors and display an entire 800+ page document at one time, just to prove you wrong!</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Furthermore, I fail to see how C++ could provide a noticeable speed boost when using the same algorithm. If you&#39;re reading what is presumably a few hundred MB of data, it&#39;s going to bottleneck at the hard drive no matter what language you&#39;re in.
</p></div></div><p>

I agree (my above statement was an obvious lie). Well, if you use something really ancient, or really inefficient, then the language could make a difference.</p><p>I&#39;m just trying to cover all the bases so someone doesn&#39;t bring up Uber_Obscure_Language_That_Sucks_At_Making_Text_Editors--
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Black)</author>
		<pubDate>Wed, 11 Mar 2009 10:05:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
You&#39;re making a pretty damn big assumption here.</p><p>For one, when dealing with such huge amounts of data, especially if randomly accessed, you will want to load it in chunks on demand, rather than load it all to RAM at first.</p><p>Java doesn&#39;t choke on filesize unless you try to read it all at once. A file handle doesn&#39;t care if the file is 1B or 7TB.
</p></div></div><p>

It sounds like you haven&#39;t used Word. Do you know what re-pagination is? type a character in page 10, and the whole document has to be re-paginated, up to page 800.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Furthermore, I fail to see how C++ could provide a noticeable speed boost when using the same algorithm. If you&#39;re reading what is presumably a few hundred MB of data, it&#39;s going to bottleneck at the hard drive no matter what language you&#39;re in.
</p></div></div><p>

You are right. Strictly speaking, C++ and Java can not use the same algorithm. Because in C++, objects take much less memory than in Java. So, C++ has the advantage, because the algorithm used in C++ can&#39;t be used in Java.</p><p>Practical example:</p><p>C++:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">class</span> Bar <span class="k2">{</span>
public:    
    <span class="k1">int</span> i<span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>

<span class="k1">class</span> Foo <span class="k2">{</span>
public:  
    Bar bar<span class="k2">;</span>  
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>

Size of Foo + Bar = 4 bytes.</p><p>Java:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">class</span> Bar <span class="k2">{</span>
    <span class="k1">public</span> <span class="k1">int</span> i<span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>

<span class="k1">class</span> Foo <span class="k2">{</span>
    <span class="k1">public</span> Bar bar <span class="k3">=</span> <span class="k1">new</span> Bar<span class="k2">;</span>  
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>

Size of Foo + Bar = 28 bytes (12 bytes for each object, plus 4 bytes for the bar&#39;s member).</p><p>The Java objects are 24 bytes bigger than the C++ objects.</p><p>So, it&#39;s not really possible to use the same algorithm, strictly speaking, because Java objects are much more heavyweight than C++.</p><p>If you multiply the above by, let&#39;s say, 1 million objects, then the Java overhead is 24 MB.</p><p>In practice, the difference is bigger. In C++, I can do this:</p><div class="source-code snippet"><div class="inner"><pre>std::list<span class="k3">&lt;</span>int&gt; data<span class="k2">;</span>
data.push_back<span class="k2">(</span><span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

The memory allocated for this operation is:</p><p>1) 12 bytes for the linked list node: 8 bytes for the previous-next pointers, 4 bytes for the integer.</p><p>Total: 12 bytes.</p><p>In Java:
</p><div class="source-code snippet"><div class="inner"><pre>List<span class="k3">&lt;</span>int&gt; list <span class="k3">=</span> <span class="k1">new</span> LinkedList<span class="k3">&lt;</span>int&gt;<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
list.add<span class="k2">(</span><span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

The memory allocated for this operation is:</p><p>1) 16 bytes for the Integer instance (due to auto-boxing, remember Java does not have templates): 12 bytes for the Object bookkeeping data, 4 bytes for the integer field.<br />2) 24 bytes for the linked list node: 12 bytes for the Object bookkeeping data, 8 bytes for the previous-next pointers, 4 bytes for the pointer to object.</p><p>Total: 40 bytes.</p><p>So, for the linked list, the difference is 28 bytes.</p><p>It is even worse for maps. In C++, a key-value pair takes exactly the amount of memory required for the key and value types, plus the pointers to other nodes; in Java, both the key and the value are objects.</p><p>There is also the overhead of interface invocation in Java.</p><p>All this, and if we also consider that in C++ most objects live in the stack, makes C++ preferable over Java.  </p><p>In practice, that is the exact reason no major desktop application is written in Java.</p><p>Java has other advantages, which make it suitable for other types of projects.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Wed, 11 Mar 2009 18:21:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Perhaps business world does not need C++ anymore, but business world != entire world.
</p></div></div><p>You&#39;re right. The business world represents only the real world.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And, like it or not, the business world fuels the evolution and adoption of programming languages, the same way with Java and C# as with C++.
</p></div></div><p>I&#39;d like to see some proof of that. Academia has been creating quite a few innovative languages these days, irrespective of their business applicability.
</p></div></div><p>Yes, C++ is a good example of &quot;irrespective of their business applicability&quot;.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
In practice, that is the exact reason no major desktop application is written in Java.
</p></div></div><p>Whoa, that&#39;s a bold claim. Certainly not one you could back up. I know of many successful desktop apps built on Java. The best PHP IDE currently in existence is a Java desktop application. There are very many more Java desktop apps developed and used internally by large corporations. Then there is the huge amount of Java web apps used in commercial sectors, such as Internet banking systems. Perhaps your claim is based on the Microsoft Office not being written in Java?</p><p>Axilmar, you&#39;re right and wrong. You&#39;re right about it sucking that Java has generics, but templates aren&#39;t the answer. C# has the best parameterized class system. It generates classes at runtime as needed and (as far as I know) allows primitives as type parameters. You&#39;re wrong about stack allocation being superior to heap allocation and garbage collection. First of all, Java uses a generational garbage collector by default. It has been found that most objects typically survive only one generation, so object creation patterns in Java closely resemble stack-based patterns in C++ anyway. Secondly, heap allocation and garbage collection liberates the programmer from managing responsibility for object deletion. This allows objects to be passed around freely without fear of memory leaks. Of course, you can get the same effect in C++ with boost::shared_ptr, but then you&#39;re addding memory overhead and cluttering code with boost::shared_ptr.</p><p>One thing that irks me about C++ is that it could retain all its perceived benefits without being so damn cumbersome to use. It could use a package system (like Java&#39;s) instead of header includes and library linking. It could ditch the requirement for forward declarations. It could have a much simpler template system. Its syntax in general could be much more readable. All this without losing one little bit of runtime performance, while significantly improving developer performance. The people behind C++0x had their opportunity to improve developer productivity and they blew it. This is one reason why C++ is becoming a niche language.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Wed, 11 Mar 2009 19:29:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Whoa, that&#39;s a bold claim. Certainly not one you could back up. I know of many successful desktop apps built on Java. The best PHP IDE currently in existence is a Java desktop application.
</p></div></div><p>

PHPEdit is actually written in Delphi...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vanneto)</author>
		<pubDate>Wed, 11 Mar 2009 20:03:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
It sounds like you haven&#39;t used Word. Do you know what re-pagination is? type a character in page 10, and the whole document has to be re-paginated, up to page 800.
</p></div></div><p>
Pagination requires knowing the text and the dimensions of the objects. That does not take up much memory. </p><p>Given a high of 500 words per page, that is only 400,000 words. If they average six characters, that is 2.4MB. The dimensions of embedded objects would only be a few KB.</p><p>Thus memory is of no concern here.</p><p>If anything, it&#39;s a CPU intensive task. But really, all you have to do is re-page the currently visible pages. The rest can be done in the background. The user won&#39;t notice, as most of the time you&#39;re not inserting a character and then jumping 500 pages ahead.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Wed, 11 Mar 2009 20:35:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>As an off-topic, a word processor shouldn&#39;t care about the layout of the paging, it should edit text and do grammar and spell checking. Allowing the user to meddle with layout and the like, leads to horribly formated documents. The few non web documents I have had to write have been in LaTeX, and they came out looking fantastic, and I wasn&#39;t required to guess at what would be the best way to format something.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Timorg)</author>
		<pubDate>Wed, 11 Mar 2009 20:55:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Whoa, that&#39;s a bold claim. Certainly not one you could back up. I know of many successful desktop apps built on Java. The best PHP IDE currently in existence is a Java desktop application. There are very many more Java desktop apps developed and used internally by large corporations. Then there is the huge amount of Java web apps used in commercial sectors, such as Internet banking systems. Perhaps your claim is based on the Microsoft Office not being written in Java?
</p></div></div><p>

I said <b>major applications</b>. Please check out the following link: <a href="http://www.lextrait.com/vincent/implementations.html">http://www.lextrait.com/vincent/implementations.html</a></p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
but templates aren&#39;t the answer. C# has the best parameterized class system. It generates classes at runtime as needed and (as far as I know) allows primitives as type parameters.
</p></div></div><p>

Generation of classes at runtime is good for two reasons:</p><p>1) it does not slow down compilation.<br />2) it does not bloat the result executable.</p><p>But this is irrelevant to performance.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
You&#39;re wrong about stack allocation being superior to heap allocation and garbage collection. First of all, Java uses a generational garbage collector by default. It has been found that most objects typically survive only one generation, so object creation patterns in Java closely resemble stack-based patterns in C++ anyway.
</p></div></div><p>

&quot;Closely resembles&quot; does not make it equal. In practice, the difference for big data sets is not negligible.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Secondly, heap allocation and garbage collection liberates the programmer from managing responsibility for object deletion. This allows objects to be passed around freely without fear of memory leaks. Of course, you can get the same effect in C++ with boost::shared_ptr, but then you&#39;re addding memory overhead and cluttering code with boost::shared_ptr.
</p></div></div><p>

I agree with that. I am talking about code performance. I am a supporter of garbage collection in C++, I have registered an online petition, written numerous times to Bjarne Stroustrup and posted countless threads here about smart pointers.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
One thing that irks me about C++ is that it could retain all its perceived benefits without being so damn cumbersome to use. It could use a package system (like Java&#39;s) instead of header includes and library linking. It could ditch the requirement for forward declarations. It could have a much simpler template system. Its syntax in general could be much more readable. All this without losing one little bit of runtime performance, while significantly improving developer performance. The people behind C++0x had their opportunity to improve developer productivity and they blew it.
</p></div></div><p>

I couldn&#39;t agree more. In fact, <a href="http://esr.ibiblio.org/?p=532#comment-232711">I fully support a movement</a> for a new programming language that has the qualities of C++ but none of its problems.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Pagination requires knowing the text and the dimensions of the objects. That does not take up much memory.</p><p>Given a high of 500 words per page, that is only 400,000 words. If they average six characters, that is 2.4MB. The dimensions of embedded objects would only be a few KB.</p><p>Thus memory is of no concern here.</p><p>If anything, it&#39;s a CPU intensive task. But really, all you have to do is re-page the currently visible pages. The rest can be done in the background. The user won&#39;t notice, as most of the time you&#39;re not inserting a character and then jumping 500 pages ahead.
</p></div></div><p>

You have forgotten that a Word document is composed of COM objects. Which means that each little item in a page is a fully COM object, and has visual attributes like Color, font, style; also parents, siblings, pointers to interfaces, etc.</p><p>And then you have also forgotten that a document can contain images, tables, OLE objects etc.</p><p>And Word does the re-pagination in the background, but if your document is 800 pages, it causes heavy swapping, and stops all the other tasks. Which means it is memory intensive.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
As an off-topic, a word processor shouldn&#39;t care about the layout of the paging, it should edit text and do grammar and spell checking. Allowing the user to meddle with layout and the like, leads to horribly formated documents. The few non web documents I have had to write have been in LaTeX, and they came out looking fantastic, and I wasn&#39;t required to guess at what would be the best way to format something.
</p></div></div><p>

I couldn&#39;t agree more.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Wed, 11 Mar 2009 21:59:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I haven&#39;t forgotten any of those things. None of them affect what I&#39;ve said.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Wed, 11 Mar 2009 22:44:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>They do affect what you said. The document is technical, i.e. it contains lots of diagrams, bitmaps, tables etc.</p><p>The fact is that there is no office, database, web browser, and other major software written in anything else than C++.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Wed, 11 Mar 2009 23:33:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t care what it contains. My Commodore 64&#39;s word processor could hold hundreds of pages with 64K of RAM. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The fact is that there is no office, database, web browser, and other major software written in anything else than C++.
</p></div></div><p>
So? First, there are seasoned programmers like who you would never consider using anything except C++ (for these &quot;major&quot; projects). Those people have to retire first, as learning a new language is impossible. (Cannot teach an old dog new tricks.)</p><p>Second, I don&#39;t expect anybody to recode their existing C/C++ codebase to another language. &quot;Major&quot; software isn&#39;t rewritten. It&#39;s extended and upgraded until it breaks under its own weight. Then something else replaces it. Switching to a new language isn&#39;t reason enough to start up a new project to compete with existing &quot;major&quot; software.</p><p>Third, there aren&#39;t many choices yet if you want to do cross platform, native programming. C# is great for Windows, but doesn&#39;t have much support for other platforms. Java is a good language, but suffers a lot from abstraction. I think D is a more practical language, but it doesn&#39;t get much attention.</p><p>Fourth, your definition of &quot;Major&quot; software is meaningless. I, for example, would consider Paint.NET major software. But you wouldn&#39;t because it&#39;s not written in C++. Any example I give, you can just say it&#39;s not major.</p><p>Fifth, your &quot;fact&quot; is wrong. There are HTML/CSS2 web browsers written in Java.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Wed, 11 Mar 2009 23:43:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Do you define major as in user base, or in scope? If its in scope, <a href="http://research.microsoft.com/en-us/projects/singularity/">Singularity OS</a> is way up there.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Timorg)</author>
		<pubDate>Wed, 11 Mar 2009 23:50:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://en.wikipedia.org/wiki/HSQLDB">http://en.wikipedia.org/wiki/HSQLDB</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Thu, 12 Mar 2009 00:02:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Does anyone see firms like Oracle and IBM really getting behind C++? No, they put their eggs in the Java basket. Especially Oracle. They are certainly major corporations.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
PHPEdit is actually written in Delphi...
</p></div></div><p>NetBeans 6.5 is a better PHP IDE than PHPEdit. It&#39;s also free and open source.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Thu, 12 Mar 2009 05:14:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I don&#39;t care what it contains. My Commodore 64&#39;s word processor could hold hundreds of pages with 64K of RAM. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div></div><p>

You should, because different and much more complicated data structures are required to hold drawings, tables etc than simple text.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
So? First, there are seasoned programmers like who you would never consider using anything except C++ (for these &quot;major&quot; projects). Those people have to retire first, as learning a new language is impossible. (Cannot teach an old dog new tricks.)
</p></div></div><p>

You are wrong. I am also a Java programmer :-). And I have learned C#, and a little bit of LISP, Smalltalk, Haskell, Erlang, ADA and Eiffel in my spare time.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Second, I don&#39;t expect anybody to recode their existing C/C++ codebase to another language. &quot;Major&quot; software isn&#39;t rewritten. It&#39;s extended and upgraded until it breaks under its own weight. Then something else replaces it. Switching to a new language isn&#39;t reason enough to start up a new project to compete with existing &quot;major&quot; software.
</p></div></div><p>

Which only shows that new languages don&#39;t have any substantial benefits over the old ones.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Third, there aren&#39;t many choices yet if you want to do cross platform, native programming. C# is great for Windows, but doesn&#39;t have much support for other platforms. Java is a good language, but suffers a lot from abstraction. I think D is a more practical language, but it doesn&#39;t get much attention.
</p></div></div><p>

Agreed. The only options are C++ and ...C++.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Fourth, your definition of &quot;Major&quot; software is meaningless. I, for example, would consider Paint.NET major software. But you wouldn&#39;t because it&#39;s not written in C++. Any example I give, you can just say it&#39;s not major.
</p></div></div><p>

Paint .NET is not called to handle lots of data in very short time.</p><p>Read the docs of uTorrent. The author says that it chose C++ because the other languages were slower.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Fifth, your &quot;fact&quot; is wrong. There are HTML/CSS2 web browsers written in Java.
</p></div></div><p>

You could have written a browser in QBasic, or any Turing-Complete language. The issue here is performance.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
<a href="http://en.wikipedia.org/wiki/HSQLDB">http://en.wikipedia.org/wiki/HSQLDB</a>
</p></div></div><p>

As a &#39;personal&#39; database, Hypersonic is good. I don&#39;t know how well would it perform when big performance is required though.<br /> 
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Does anyone see firms like Oracle and IBM really getting behind C++? No, they put their eggs in the Java basket. Especially Oracle. They are certainly major corporations.
</p></div></div><p>

Not for the database engine. Java for the client, the tools, the server back end...</p><p>And let&#39;s not forget Google&#39;s Map-Reduce...in C++.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Thu, 12 Mar 2009 15:05:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What is your definition of &quot;big&quot; applications?</p><p>Is it something that moves a lot of data? You mentioned uTorrent. So that must be big. But what about the Java bittorrent clients? They don&#39;t count as big, but uTorrent does? </p><p>eBay moves a lot of data. It&#39;s written in Java, as are a lot of other huge websites. I know they aren&#39;t desktop applications, but if we are talking about handling a lot of data in a short amount of time (your words), surely they all qualify.</p><p>I don&#39;t expect reasonable answers, as you make false black-and-white claims (there are no databases, no web browsers, etc in Java) and then when shown that you are wrong, you just raise the bar even higher, just as I predicted.</p><p>And as I&#39;ve already said, the lack of &quot;big&quot; software written in C# is not any indication that it is incapable of being used for that. It has only been around for eight years. Most of the programs you would mention as &quot;big&quot; have been in existence for longer than that. </p><p>It seems that you are shrinking your definition of C++&#39;s niche into data crunching programs. In that case, I believe you&#39;ve come over to our side in that C++ is a dieing language that will only be used for components of programs that deal with large amounts of mission critical, time-sensitive calculations.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Thu, 12 Mar 2009 20:54:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Is it something that moves a lot of data? You mentioned uTorrent. So that must be big. But what about the Java bittorrent clients? They don&#39;t count as big, but uTorrent does?
</p></div></div><p>

The uTorrent author said that he chose C++ over the alternatives because C++ produced faster and lighter programs.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
eBay moves a lot of data. It&#39;s written in Java, as are a lot of other huge websites. I know they aren&#39;t desktop applications, but if we are talking about handling a lot of data in a short amount of time (your words), surely they all qualify.
</p></div></div><p>

eBay moves a lot of data, but it does not process huge data sets which have a high degree or coupling.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I don&#39;t expect reasonable answers, as you make false black-and-white claims (there are no databases, no web browsers, etc in Java) and then when shown that you are wrong, you just raise the bar even higher, just as I predicted.
</p></div></div><p>

I never said there are no databases, there are no web browsers. I said there are no <b>major</b> databases and web browsers.</p><p>Moving huge data sets around can easily be done in Java, as the code effectively is the same as in C++: the underlying O/S code is invoked to handle the reception or transmission of data.</p><p>If you wanted to create objects from those data and process them (let&#39;s say 10,000,000 objects), then C++ is much more preferable than Java.</p><p>To put it in perspective:</p><p>in C++:
</p><div class="source-code snippet"><div class="inner"><pre>MyObject <span class="k3">*</span>hugeDataSet <span class="k3">=</span> <span class="k1">new</span> MyObject<span class="k2">[</span><span class="n">10000000</span><span class="k2">]</span><span class="k2">;</span>
</pre></div></div><p>

In Java:
</p><div class="source-code snippet"><div class="inner"><pre>MyObject<span class="k2">[</span><span class="k2">]</span> hugeDataSet <span class="k3">=</span> <span class="k1">new</span> MyObject<span class="k2">[</span><span class="n">10000000</span><span class="k2">]</span><span class="k2">;</span>
<span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">10000000</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span>
    hugeDataSet<span class="k3">&lt;</span>i&gt; <span class="k3">=</span> <span class="k1">new</span> MyObject<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Big difference in performance...</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And as I&#39;ve already said, the lack of &quot;big&quot; software written in C# is not any indication that it is incapable of being used for that. It has only been around for eight years. Most of the programs you would mention as &quot;big&quot; have been in existence for longer than that.
</p></div></div><p>

Did I say anything about C#? I did not. But the fact is Microsoft Office is written in C++, not C#. Visual Studio as well.</p><p>C#, coming after Java, has many constructs that allow better performance than Java.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
It seems that you are shrinking your definition of C++&#39;s niche into data crunching programs. In that case, I believe you&#39;ve come over to our side in that C++ is a dieing language that will only be used for components of programs that deal with large amounts of mission critical, time-sensitive calculations.
</p></div></div><p>

But I&#39;ve said it from the start: C++ is for big heavy stuff. I clearly said so from the beginning.</p><p>My difference with you is that it is not a dying language though, because the big heavy stuff is not going away any time soon.</p><p>I wonder if my English is so bad that confused you so much Matthew.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Thu, 12 Mar 2009 21:38:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your exact quote is:
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The fact is that there is no office, database, web browser, and other major software written in anything else than C++.
</p></div></div><p>
You did not say:
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The fact is that there is no major office, major database, major web browser, and other major software written in anything else than C++.
</p></div></div><p>
You implied that all database, office apps, and web browsers were major.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The uTorrent author said that he chose C++ over the alternatives because C++ produced faster and lighter programs.
</p></div></div><p>
I&#39;m asking for <b>your</b> definition of a major/big application. What is it? I don&#39;t care about what his definition was. Other people have used Java to make fast bittorrent applications.</p><p>And of course the C++ one is smaller. The Java runtime is huge! That has nothing to do with the conversation at hand. Raising the bar to avoid Java again?</p><p>And of course C++ (compiled code) will not be slower than managed code. Neither will Assembler be slower than C++. But we are talking about being sufficiently fast for the task at hand.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
eBay moves a lot of data, but it does not process huge data sets which have a high degree or coupling.
</p></div></div><p>
So now it has to &quot;process huge data sets with high degree or coupling&quot; to be big. Bar raises again.</p><p>What is your exact definition of big/major software?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Thu, 12 Mar 2009 21:47:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
You implied that all database, office apps, and web browsers were major.
</p></div></div><p>

Nope. Read again. Talking about all major things does not exclude the existence of minor things.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I&#39;m asking for your definition of a major/big application. What is it? I don&#39;t care about what his definition was. Other people have used Java to make fast bittorrent applications.
</p></div></div><p>

Any application that processes big data sets with heavy coupling amongst the data.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And of course the C++ one is smaller. The Java runtime is huge! That has nothing to do with the conversation at hand. Raising the bar to avoid Java again?
</p></div></div><p>

...and lighter, but you conveniently left that out.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And of course C++ (compiled code) will not be slower than managed code. Neither will Assembler be slower than C++. But we are talking about being sufficiently fast for the task at hand.
</p></div></div><p>

As I said above, and for the Nth time (oumf!!!): C++ is here to stay when the processing load is very big. Huge. Enormous. Gigantic. </p><p><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
So now it has to &quot;process huge data sets with high degree or coupling&quot; to be big. Bar raises again.</p><p>What is your exact definition of big/major software?
</p></div></div><p>

For the Nth time (I guess some people can only learn by repetition):</p><p><a href="http://www.lextrait.com/vincent/implementations.html">http://www.lextrait.com/vincent/implementations.html</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Fri, 13 Mar 2009 02:01:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So the GIMP and Photoshop are big/major software according to the link. Then surely Paint.NET is as well, which is written in C#. So you&#39;ve disproved your point. That&#39;s all.</p><p>Ultimately, I think we come to the same conclusion: In the future, C++ will only serve the niche of &quot;processing large datasets.&quot;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Fri, 13 Mar 2009 02:09:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Is that link even... correct? They claim Linux has no asm in it (idk if its true or not). They claim the GUI for OS X is in C++ (it&#39;s.... not, everything is obj-c.). They claim the Win32 GUI is in C++ (they wrote a C API in C++? What?).</p><p>It also appears to state games used to be written in ASM and C, and are only in C++ now. Uhm, what?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Fri, 13 Mar 2009 06:27:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
They claim Linux has no asm in it
</p></div></div><p>It does, but I doubt theres all that much in the x86[_64] port[s].
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Fri, 13 Mar 2009 06:57:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It seems like a very biased chart, to say the least.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Fri, 13 Mar 2009 08:20:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
It seems like a very biased chart, to say the least.
</p></div></div><p>What would you expect from crusty old nerds living in the past? The difference between them and the rest of us is that in 20 years time we won&#39;t be arguing why Java/C# is superior to the next big language/platform/paradigm.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Fri, 13 Mar 2009 12:02:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s superior because Change Is Bad(tm), and the familiar is comfortable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Black)</author>
		<pubDate>Fri, 13 Mar 2009 12:06:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
So the GIMP and Photoshop are big/major software according to the link. Then surely Paint.NET is as well, which is written in C#. So you&#39;ve disproved your point. That&#39;s all.
</p></div></div><p>

GIMP and Photoshop are entirely different programs from Paint.NET. Paint.NET is a simple pixel art program, GIMP and Photoshop are professional applications for photo editing.</p><p>Photo editing != pixel painting.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Ultimately, I think we come to the same conclusion: In the future, C++ will only serve the niche of &quot;processing large datasets.&quot;
</p></div></div><p>

And any application where performance matters.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
What would you expect from crusty old nerds living in the past? The difference between them and the rest of us is that in 20 years time we won&#39;t be arguing why Java/C# is superior to the next big language/platform/paradigm.
</p></div></div><p>

Well, all arguments against C/C++ are moot, since Allegro is in C.</p><p>The day Allegro is in Java, we can talk.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Fri, 13 Mar 2009 16:13:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I wish I could troll half as good as you! <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /> Don&#39;t worry, I&#39;m taking notes.</p><p>Paint.NET is a &quot;simple pixel art program&quot;. And Allegro is an old DOS blitting library. Ignorance is bliss, they say.
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Paint.NET is free <b>image and photo editing software</b> for computers that run Windows. It  features an intuitive and innovative user interface with support for layers, unlimited undo, special effects, and a wide variety of useful and powerful tools. An active and growing online community provides friendly help,  tutorials, and plugins.</p><p>It started development as an undergraduate college senior design project mentored by Microsoft, and is currently being maintained by some of the alumni that originally worked on it. Originally intended as a free replacement for the Microsoft Paint software that comes with Windows, it has grown into a powerful yet simple image and photo editor tool. <b>It has been compared to other digital photo editing software packages such as Adobe® Photoshop®, Corel® Paint Shop Pro®, Microsoft Photo Editor, and The GIMP.</b>
</p></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Fri, 13 Mar 2009 20:16:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I wish I could troll half as good as you! <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /> Don&#39;t worry, I&#39;m taking notes.</p><p>Paint.NET is a &quot;simple pixel art program&quot;. And Allegro is an old DOS blitting library. Ignorance is bliss, they say.
</p></div></div><p>

I am not trolling. </p><p>Does it match Photoshop and the GIMP? Is it used professionally? Has it replaced Photoshop yet? are its tools equal to Photoshop? can Paint.NET handle the same amount of data that Photoshop does with the same performance?</p><p>Did you check my code examples? do you have any objection on how Java handles generics and arrays? don&#39;t you recognize that these language constructs can potentially harm performance? Don&#39;t you see that C++ has the advantage over Java?</p><p>You have to check the details before simply declaring someone trolling.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Fri, 13 Mar 2009 20:29:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Paint.NET handles the same amount and types of data just fine. It&#39;s photo editing software. Have you ever used it? It has unlimited undos, layers, filters, plugins, etc. No, it doesn&#39;t have all the features that Photoshop has, but the language is not preventing anybody from writing those features.</p><p>It doesn&#39;t have those features because it hasn&#39;t been around as long and doesn&#39;t have as many people working on it as Photoshop—nor is it trying to be an exact replacement for The Gimp (which is already free). It has nothing to do with limitations of C#.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
can Paint.NET handle the same amount of data that Photoshop does with the same performance?
</p></div></div><p>
When I use Paint.NET to edit my photos, I don&#39;t ever sit there and think &quot;boy, I wish this were faster.&quot; It&#39;s <i>sufficiently fast for the task at hand</i>, and that&#39;s all that matters. If maximum speed were the goal of every project, then we&#39;d all be writing in hand optimized machine code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Fri, 13 Mar 2009 20:40:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Does it match Photoshop and the GIMP? Is it used professionally? Has it replaced Photoshop yet? are its tools equal to Photoshop? can Paint.NET handle the same amount of data that Photoshop does with the same performance?
</p></div></div><p>

Gimp isn&#39;t fulfilling most of your fators as well.<br />It didn&#39;t replace photoshop. It&#39;s tools aren&#39;t equal to photoshops. It isn&#39;t used professionally.</p><p>Why is the Gimp a major app an paint.net not?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Fri, 13 Mar 2009 20:45:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Paint.NET handles the same amount and types of data just fine. It&#39;s photo editing software. Have you ever used it? It has unlimited undos, layers, filters, plugins, etc.
</p></div></div><p>

Yes, many times. I like it, for simple graphics editing is very good.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
No, it doesn&#39;t have all the features that Photoshop has, but the language is not preventing anybody from writing those features.</p><p>It doesn&#39;t have those features because it hasn&#39;t been around as long and doesn&#39;t have as many people working on it as Photoshop—nor is it trying to be an exact replacement for The Gimp (which is already free). It has nothing to do with limitations of C#.
</p></div></div><p>

Does it have the same performance with Photoshop in the features used by Publishing Studios?</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
When I use Paint.NET to edit my photos, I don&#39;t ever sit there and think &quot;boy, I wish this were faster.&quot; It&#39;s sufficiently fast for the task at hand, and that&#39;s all that matters. If maximum speed were the goal of every project, then we&#39;d all be writing in hand optimized machine code.
</p></div></div><p>

But the point of this discussion is not if a program or a programming language is sufficient for small tasks.</p><p>I have said, right from the start, that C++ is used in big heavy software.</p><p>C# and Java are fine for smaller tasks.</p><p>C# may also be capable of matching C++ in heavy tasks like databases, for example.</p><p>Java certainly is not, due to the way it handles collections and arrays.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Fri, 13 Mar 2009 20:46:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Why is the Gimp a major app an paint.net not?
</p></div></div><p>
Because it&#39;s written in C/C++ and on The List. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>Just like Allegro is somehow major! (Quote: &quot;Well, all arguments against C/C++ are moot, since Allegro is in C.&quot;)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Fri, 13 Mar 2009 20:54:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I have said, right from the start, that C++ is used in big heavy software.
</p></div></div><p>

All right, so what is &quot;big, heavy software&quot;? Give us a concrete definition. Is there a minimum of CPU usage? A certain number of hard drive accesses? A required number of lines of code? What are the criteria for something to be &quot;big, heavy software&quot;?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Black)</author>
		<pubDate>Fri, 13 Mar 2009 21:00:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://www.allegro.cc/forums/thread/599467/799488#target">http://www.allegro.cc/forums/thread/599467/799488#target</a></p><p>It has to be on the list. And written in C/C++.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Fri, 13 Mar 2009 21:02:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What I observed in this discussion was:<br />the claim was made that all major apps are written in c.<br />Everytime a major c#/java app was mentioned the definition of a major app was changed excluding all non c++ apps.</p><p>I also think that c++ has a speed advantage.<br />But that doesn&#39;t mean it&#39;s the only option.</p><p>And the other advantages other languages have will lead to the fact that they will get used despite their speed problem. With better hardware speed becomes more unimportant from day to day.<br />Ease of development, bug tracking, changeability will become more valuable. C++ can&#39;t keep up in this categories.</p><p>I use C# for any private gui development.<br />And the only reason I use C++ for developing games is that there are no native librarys I like yet (maybe this will change in the future).<br />There is XNA as well. But I don&#39;t like it that much.</p><p>At work I develop software with Java.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Fri, 13 Mar 2009 21:04:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Everytime a major c#/java app was mentioned the definition of a major app was changed excluding all non c++ apps.
</p></div></div><p>
Precisely. But it doesn&#39;t matter. If he wants to think that all major apps are written in C++, that&#39;s fine. It&#39;s his definition, he can make it whatever he wants. His major apps list is so small, it&#39;s essentially the same thing I&#39;m saying.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Fri, 13 Mar 2009 21:09:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And the other advantages other languages have will lead to the fact that they will get used despite their speed problem. With better hardware speed becomes more unimportant from day to day.<br />Ease of development, bug tracking, changeability will become more valuable. C++ can&#39;t keep up in this categories.
</p></div></div><p>
Not in the scientific field, they won&#39;t. It is a mistake to think that ease of development, bug tracking and changeability necessarily come with speed penalties. E.g. ever heard of &#39;Vala&#39; language? The idea is silly even to me, but basically it is C# that is translated to C and then compiled. So, they get all of the benefits of C#&#39;s syntaxical sugar, with all of the benefits of C. I don&#39;t think Vala overall is that great, but it&#39;s an example of what axilmar wants (and what I want too): an easy to use language that does not sacrifice any execution speed.</p><p>I don&#39;t really know the history behind C# or Java, but I am 100% sure that if C# or Java were somehow compiled to machine code, all you fans of those languages would still like them, because you as coders only care about RAD and related buzzwords. You have come to accept the speed penalties as a necessary evil, because by chance the heavily marketed C# and Java had those speed penalties.</p><p>Well, I don&#39;t see that it is a necessary evil in general (it is if you use those languages). Vala is an example of that. D is an example of that. Neither of those two are perfect, but they are steps in the right direction.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Fri, 13 Mar 2009 21:14:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The idea is silly even to me, but basically it is C# that is translated to C and then compiled.
</p></div></div><p>
C# is a compiled language; the only difference against a traditional one-pass compiled language like C++ is that the first pass (C# to IL) happens at build time, and the second pass (IL to machine code) at run time.<br />One JIT compiled, there is no reason equivalent chunks of code in C# and C++ can&#39;t perform equally well. The speed difference often observed doesn&#39;t necessarily come from the language itself, but rather because C# makes using safe, comfy (and thus slower) memory management easier than C++ does. When speed matters, a C# programmer can still allocate behind the GC&#39;s back and take care of pointers manually.
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
C# and Java are fine for smaller tasks.
</p></div></div><p>
In my experience it is exactly the other way around: out-of-the-box C# (and probably Java too, don&#39;t use it enough to know for sure) is way superior in terms of organizing large projects, especially when using Visual Studio. The larger a project, the less comfortable I feel doing it in C++.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Fri, 13 Mar 2009 22:20:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
All right, so what is &quot;big, heavy software&quot;? Give us a concrete definition. Is there a minimum of CPU usage? A certain number of hard drive accesses? A required number of lines of code? What are the criteria for something to be &quot;big, heavy software&quot;?
</p></div></div><p>

He has already defined that all heavy software uses C++. So obviously, any C++ application is a heavy application.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
C# is a compiled language; the only difference against a traditional one-pass compiled language like C++ is that the first pass (C# to IL) happens at build time, and the second pass (IL to machine code) at run time.
</p></div></div><p>

Actually, the latest version of Mono lets you go all the way to machine code at compilation time. It then outputs machine language code for the app and all dependencies.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Fri, 13 Mar 2009 23:45:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Not in the scientific field, they won&#39;t.
</p></div></div><p>

Noone ever disagreed with that.<br />axilmar said  that no major app will ever be written in a diffrent language then c++. That was the point I couldn&#39;t agree with.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
but it&#39;s an example of what axilmar wants (and what I want too): an easy to use language that does not sacrifice any execution speed.
</p></div></div><p>

We want that too. We would be stupid if we wouldn&#39;t.<br />But as long as there isn&#39;t such a language, developers (doing non scientific apps) will start to use easy to use languages despite the (mostly unnoticable) speed penalty.<br />And the discussion wasn&#39;t about whether we want such a new language but about how only c++ is able to write major apps.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Sat, 14 Mar 2009 00:03:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I did not change the definition of a major app from the beginning of my post. I am sorry if I was not clear enough. Let me try again.</p><p>I consider the following apps big and major:</p><p>1) databases that are able to support a big number of transactions per second. Db2, Oracle, etc.</p><p>2) office software that can handle very complex documents with minimum delay. Microsoft Office, Open Office etc.</p><p>3) Web browsers that allow for many tabs (20, 30 tabs etc) to be open without much memory overhead. Internet Explorer, Firefox, Safari, Chrome.</p><p>4) Torrent applications that can manage thousands of peers per second. uTorrent, for example.</p><p>5) Desktop environments like KDE or Gnome.</p><p>6) Complex algorithms like Map-Reduce.</p><p>7) photoediting software like Photoshop that can handle big pictures (10,20,30 megapixels) with ease, with multiple effects and layers.</p><p>I have nothing against Java or C#. But the truth is that any application with object complex relationships and complex algorithms and big data sets will have lower performance than if programmed with C/C++.</p><p>I did not see anyone argue on the coding examples I gave. Why? </p><p>As for Allegro, I wonder why it is written in C. Why not in C#, for example? Or Java? since these languages are very fast?</p><p>And why there are no &#39;big&#39; games in these languages?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Sat, 14 Mar 2009 01:30:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
As for Allegro, I wonder why it is written in C. Why not in C#, for example? Or Java? since these languages are very fast?
</p></div></div><p>
Why isn&#39;t it written in C++? Mainly Because the Allegro developers write in C. Every C library is written in C. Every ASM library is written in ASM. Every QBASIC library is written in QBASIC. Weird.</p><p>Regarding Allegro, C is the common denominator. It&#39;s cross platform and can be used within other languages. There are bindings to all sorts of languages, including C#! </p><p>If you want a native C# gaming library, get out the XNA.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I did not see anyone argue on the coding examples I gave. Why?
</p></div></div><p>
Why should we? You gave a detailed list of major software. </p><p>#4 -&gt; Vuze, a bittorrent client. Written in Java.<br />#7 -&gt; Paint.NET, a photo editing client. Written in C#.</p><p>I say both of those have no substantial performance decrease. That&#39;s the end result of these languages that you say cannot perform well. Yet, there are two examples of complete applications that do. </p><p>So why should I break down the little details when I already know I won&#39;t agree with the end result? The proof of the pudding is in the eating...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sat, 14 Mar 2009 02:02:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ugh, why do you go on? (:-X Why do I read?)<br />You can all agree the languages you mention do different stuff. I had a revelation a year ago or so. I was talking to somebody and the discussion somehow came to doing your own programming. He mentioned he used Javascript. WTF ?! Javascript ?!Yes. And he told me about all the projects he had in javascript and it was really interesting. He even did profiling and optimized functions (the proper mathematical kind founded optimization). And I thought: &quot;Yeah, if it works for him, why not?&quot; Up until that point I blamed myself for not learning assembly. I&#39;m happy with C++. (Everyone seems to be harsh on C++. Give it some slack: it works terrifhack.) I overly enjoy optimizing at the level of C++. Some people like to do it on assembly level. Whilst others like to get as much functionality as possible, without considering the load they put on a system.<br />You can&#39;t argue over what people will like doing in the future. But what is needed for future business: being (overly) efficient or getting things fast? Both of-course. What tool will be used? Who knows?::)<br />Mr. Leverton if you really want to get the last word, abuse your power. Something like:
</p><div class="quote_container"><div class="title">axilmar said:</div><div class="quote"><p>

Ooh, Matthew you&#39;re always right!
</p></div></div><p>
Only then without the quote tags...</p><p>BTW in the LHC they use custom built circuitry to do the first pass of data analysis. How&#39;s that for lightweight efficiency?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (weapon_S)</author>
		<pubDate>Sat, 14 Mar 2009 02:29:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>keep it up, I&#39;ve come so far and I don&#39;t want to go to bed yet. This isn&#39;t over.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (emilb)</author>
		<pubDate>Sat, 14 Mar 2009 07:53:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I remember heated discussions like this over 10 years ago, except it was ASM vs C, C vs C++ or even reinvent the wheel vs using libraries (yes, there were people that believed real programmers don&#39;t use libraries!). Now it&#39;s C++ vs Java/C#. The arguments are always the same. Why doesn&#39;t axilmar go all the way and favour asm over C++? After all, if he&#39;s processing massive datasets, even one CPU cycle in an inner loop will make all the difference.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Sat, 14 Mar 2009 14:09:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Why isn&#39;t it written in C++? Mainly Because the Allegro developers write in C. Every C library is written in C. Every ASM library is written in ASM. Every QBASIC library is written in QBASIC. Weird.
</p></div></div><p>

Well, if C# and Java are so fast, it could have been written in those languages. I don&#39;t see how extremely experienced programmers that can write C in their sleep have a problem with fancier and easier languages like Java and C#.</p><p>Or is it because they fear that their library won&#39;t be as fast as, let&#39;s say, in C?</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Regarding Allegro, C is the common denominator. It&#39;s cross platform and can be used within other languages. There are bindings to all sorts of languages, including C#!
</p></div></div><p>

Java is also cross platform.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Why should we? You gave a detailed list of major software.
</p></div></div><p>

Because I am arguing about performance, which obviously you avoid.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I say both of those have no substantial performance decrease. That&#39;s the end result of these languages that you say cannot perform well. Yet, there are two examples of complete applications that do.</p><p>So why should I break down the little details when I already know I won&#39;t agree with the end result? The proof of the pudding is in the eating...
</p></div></div><p>

Another take is this: why should you break down the little details when you know the real numbers will not support your arguments?</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
axilmar said:<br />Ooh, Matthew you&#39;re always right!<br />Only then without the quote tags...
</p></div></div><p>

I never said anything like that.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I remember heated discussions like this over 10 years ago, except it was ASM vs C, C vs C++ or even reinvent the wheel vs using libraries (yes, there were people that believed real programmers don&#39;t use libraries!).
</p></div></div><p>

I did not choose to heat the discussion up. I try to respond with facts and numbers, while Matthew acts like a politician: he tries to win not by arguments and facts, but with impressions.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Now it&#39;s C++ vs Java/C#.
</p></div></div><p>

It is not. I never said C++ is better than Java or C#. </p><p>It&#39;s very strange. Everyone here thinks I said that C++ is better than Java or C#. I never said that. I said that C++ is better than Java or C# <b>in performance</b>.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The arguments are always the same. Why doesn&#39;t axilmar go all the way and favour asm over C++? After all, if he&#39;s processing massive datasets, even one CPU cycle in an inner loop will make all the difference.
</p></div></div><p>

I have a friend that programs embedded devices and micro-controllers. He uses asm. If he says &#39;asm is better than C in this domain&#39;, should I tell him that he is wrong? he is obviously right.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p></div></div><p>

<b>I don&#39;t see what the fuss is all about, and I really don&#39;t understand the reaction of the Allegro.cc crowd. You all support Matthew, perhaps because he is an American and I am not, or because he is the site owner. But your reaction is not logical. If you check the facts, the numbers, the performance, you will see that I am right.</b>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Sat, 14 Mar 2009 18:27:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You are right. It&#39;s not worth the fuss.</p><p>But I want to explain why we are arguing.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
If you check the facts, the numbers, the performance, you will see that I am right.
</p></div></div><p>

We never denied your numbers. And we never denied the c++ performance is better.<br />We just denied that not only C++ is able to write major apps.<br />That was because you definition of major app was/is different from our definition.</p><p>When we said you definition of major apps changed over time you said that was not the case.<br />That means: You meant the same all the time but because you said it differently we understood it differently in every post.<br />At first you definition of a major app <b>seemed</b> be to be the same as ours.<br />And with that definition your statement that only c++ can be used was wrong in our opinion.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I said that C++ is better than Java or C# in performance.
</p></div></div><p>

And all we said that c++ will be used less in the future because for most projects this difference in performance will be unimportant.<br />Then you started to say that c++ will not  be used less because it is the only tool to write major apps in.<br />But apps that are major apps after your definition are needed less then other shabby gui/server apps which c#/java be more then sufficient for.</p><p>So I don&#39;t see the point that you are arguing against the fact that c++ will be used less. </p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Because I am arguing about performance, which obviously you avoid.
</p></div></div><p>

As said above we never wanted to argue about performance because we know this fact.<br />It isn&#39;t arguable.<br />The only thing we argued about was the fact that c++ will be used less and isn&#39;t the only language todays apps can be written in.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
It&#39;s cross platform and can be used within other languages. There are bindings to all sorts of languages, including C#!
</p></div></div><p>
Java is also cross platform.
</p></div></div><p>

You missed the important part: can be used within other languages</p><p>Written in C means it can be used from: C, C++, Java, C#, Ruby... other ones.</p><p>So if you want a library that can be used in much languages you choose c.<br />Which doesn&#39;t mean that it is the ONLY language you can write a library in.</p><p>We probably tatalkedbout different things all the time whwhichas why we couldn&#39;t get to an agreement.<br />I hope you can see that now too. Let&#39;s all be friends again <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>What I can&#39;t ignore though:</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
perhaps because he is an American and I am not
</p></div></div><p>

I don&#39;t know where you come from and I don&#39;t care. This is the internetz!<br />Saying  something like that is a defamation. I would appreciate if you won&#39;t say something like this again.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Sat, 14 Mar 2009 18:57:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
As for Allegro, I wonder why it is written in C. Why not in C#, for example? Or Java? since these languages are very fast?
</p></div></div><p>

Because Allegro is <i>old</i>.  It&#39;s origins are what, in 1990 or so?  Java and C# didn&#39;t exist.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Speedo)</author>
		<pubDate>Sat, 14 Mar 2009 20:45:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I have a friend that programs embedded devices and micro-controllers. He uses asm. If he says &#39;asm is better than C in this domain&#39;, should I tell him that he is wrong? he is obviously right.
</p></div></div><p>
If he says that ASM allows him to write faster and smaller code, then he is right. If he says that all major micro controllers must be programmed in ASM because of that, then he is wrong. </p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Another take is this: why should you break down the little details when you know the real numbers will not support your arguments?
</p></div></div><p>
I don&#39;t know how else to say this. This will be my last attempt to get your understanding. Christopher has also summed it up great.</p><p>Statement 1: Generally speaking, C++ (and any similar language) will have better performance and less memory requirements than the equivalent code written in Java and C# (and other similar languages). </p><p>Statement 2: Most people find that Java and C# are much easier to use and write error free code than with C++.</p><p>Statement 3: For most applications, the ease-of-development (Statement 2) trumps the performance loss (Statement 1).</p><p>Do we not all agree on those three things? The only reason why I&#39;m still in this discussion is because I find it funny that you are clinging on to your &quot;major application must be written C++&quot; idea.</p><p>Your thinking is something like:
</p><ul><li><p>C++ has better performance than C#</p></li><li><p>Better performance is good</p></li><li><p>Therefore C++ is the only choice for applications that max the CPU.</p></li></ul><p>

You should take it a step farther and replace C++ with hand written machine code and C# with C++.</p><p>Let&#39;s say the C# applications runs 5% slower. You say that is unacceptable performance. Guess what? The C# application running on today&#39;s PC is faster than the C++ application running on last year&#39;s PC. So I guess all of those people need to upgrade their hardware because the performance is no longer acceptable&mdash;because a different environment is faster.</p><p>Your fascination with maximum performance must lead you to believe that every &quot;major software&quot; must always be installed only on the very fastest machines available because anything less would be uncivilized&mdash;you wouldn&#39;t be getting the best performance possible.</p><p>But no, what really happens is people run software on hardware that can run the software at speeds that are acceptable to them. It&#39;s quite possible (and likely) that C# runs at the same acceptable level as C++ does to the user, even on major applications.</p><p>Since Photoshop is a major application to you, I&#39;ll use it as my example. The user has non-functional requirements like &quot;a ten megapixal image must be able to be resized into a thumbnail in less than one second.&quot; Even if C++ takes 0.01 seconds and C# takes 0.5 seconds, it doesn&#39;t matter. Both satisfy the requirement.</p><p>Your definition of a &quot;major application&quot; is basically: anything that requires more speed than C# or Java can provide. And in that case, I agree 100%! C# or Java will never be used in that definition of a major application.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sat, 14 Mar 2009 20:47:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Well, if C# and Java are so fast, it could have been written in those languages. I don&#39;t see how extremely experienced programmers that can write C in their sleep have a problem with fancier and easier languages like Java and C#.
</p></div></div><p>

The only problem was that C# didn&#39;t exist back then and Java didn&#39;t either, or was in its infancy.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I have a friend that programs embedded devices and micro-controllers. He uses asm. If he says &#39;asm is better than C in this domain&#39;, should I tell him that he is wrong? he is obviously right.
</p></div></div><p>

Yes, but in that area it IS better, mainly because you&#39;re limited to how much code you can store, very limited with ram and CPU power, etc. There&#39;s no shortage of any of that on any of today&#39;s computers, so there is no reason to use ASM in most cases.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I don&#39;t see what the fuss is all about, and I really don&#39;t understand the reaction of the Allegro.cc crowd. You all support Matthew, perhaps because he is an American and I am not, or because he is the site owner. But your reaction is not logical. If you check the facts, the numbers, the performance, you will see that I am right.
</p></div></div><p>

But you are only supplying heavily biased data that isn&#39;t really meaningful at all. I didn&#39;t see you present any cold hard benchmarks or anything like that.</p><p>Either way, like Christopher and Matthew said, we&#39;re not denying that C++ is faster. At least I&#39;m not. I&#39;m just saying that the speed difference doesn&#39;t matter much at all.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sat, 14 Mar 2009 21:01:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Java is also cross platform.
</p></div></div><p>But you can&#39;t easily bind EVERY OTHER language to it. <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" /></p><p>With C, you can bind Java, Python, Perl, Scheme, C#, ObjC and pretty much every other language to it with relative ease.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sun, 15 Mar 2009 02:13:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
We never denied your numbers. And we never denied the c++ performance is better.<br />We just denied that not only C++ is able to write major apps.<br />That was because you definition of major app was/is different from our definition.
</p></div></div><p>

Major = performance.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
When we said you definition of major apps changed over time you said that was not the case.<br />That means: You meant the same all the time but because you said it differently we understood it differently in every post.<br />At first you definition of a major app seemed be to be the same as ours.<br />And with that definition your statement that only c++ can be used was wrong in our opinion.
</p></div></div><p>

I never said it differently each time. I explained it differently. It&#39;s not my problem if you are stuck to a certain definition.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And all we said that c++ will be used less in the future because for most projects this difference in performance will be unimportant.<br />Then you started to say that c++ will not be used less because it is the only tool to write major apps in.<br />But apps that are major apps after your definition are needed less then other shabby gui/server apps which c#/java be more then sufficient for.
</p></div></div><p>

Yes, C++ is the only tool to write major apps in. And it will continue to be so. And the major apps are not going to go away any time soon, so you are wrong that shabby gui/server apps will dominate.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
As said above we never wanted to argue about performance because we know this fact.<br />It isn&#39;t arguable.
</p></div></div><p>

Ok then.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The only thing we argued about was the fact that c++ will be used less and isn&#39;t the only language todays apps can be written in.
</p></div></div><p>

I don&#39;t understand how can you argue on something <b>I never said</b>.</p><p>I never said c++ is the only language that apps can be written in. I said c++ is the only language that apps that require performance can be written in. There is a difference.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
You missed the important part: can be used within other languages</p><p>Written in C means it can be used from: C, C++, Java, C#, Ruby... other ones.</p><p>So if you want a library that can be used in much languages you choose c.<br />Which doesn&#39;t mean that it is the ONLY language you can write a library in.
</p></div></div><p>

Writing it in Java pretty much diminishes the need to use other languages.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I don&#39;t know where you come from and I don&#39;t care. This is the internetz!<br />Saying something like that is a defamation. I would appreciate if you won&#39;t say something like this again.
</p></div></div><p>

Ok, I admit that was a little bit over the top.</p><p>But at least it got your attention :-).</p><p>I would like to note here that it is not an unusual phenomenon for people to support others based on ethnicity or other attributes. For a moment, the collective a.cc reaction seemed like something similar happened.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Because Allegro is old. It&#39;s origins are what, in 1990 or so? Java and C# didn&#39;t exist.
</p></div></div><p>

Allegro 5 is not old. It could have been written in other languages.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
If he says that ASM allows him to write faster and smaller code, then he is right. If he says that all major micro controllers must be programmed in ASM because of that, then he is wrong.
</p></div></div><p>

I never said anything else.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Statement 1: Generally speaking, C++ (and any similar language) will have better performance and less memory requirements than the equivalent code written in Java and C# (and other similar languages).</p><p>Statement 2: Most people find that Java and C# are much easier to use and write error free code than with C++.</p><p>Statement 3: For most applications, the ease-of-development (Statement 2) trumps the performance loss (Statement 1).
</p></div></div><p>

I agree with this as well. I&#39;ve already said this.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Do we not all agree on those three things? The only reason why I&#39;m still in this discussion is because I find it funny that you are clinging on to your &quot;major application must be written C++&quot; idea.</p><p>Your thinking is something like:</p><p>    * C++ has better performance than C#<br />    * Better performance is good<br />    * Therefore C++ is the only choice for applications that max the CPU.</p><p>You should take it a step farther and replace C++ with hand written machine code and C# with C++.
</p></div></div><p>

But I never said that! </p><p>It&#39;s very funny, but everyone understood something else from what I said.</p><p>Let me say it again:</p><p><b>Applications that need performance should be written in C++.</b></p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Let&#39;s say the C# applications runs 5% slower. You say that is unacceptable performance. Guess what? The C# application running on today&#39;s PC is faster than the C++ application running on last year&#39;s PC. So I guess all of those people need to upgrade their hardware because the performance is no longer acceptable—because a different environment is faster.
</p></div></div><p>

Again, I agree, with two exceptions:</p><p>1) some apps require performance that even tomorrow&#39;s PCs can not deliver.<br />2) PC performance can not grow indefinitely. People are already say that and seeking concurrent solutions.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Your fascination with maximum performance must lead you to believe that every &quot;major software&quot; must always be installed only on the very fastest machines available because anything less would be uncivilized—you wouldn&#39;t be getting the best performance possible.
</p></div></div><p>

I don&#39;t have any fascination with anything, including performance. It is people that like to get their job done as fast as possible and then go on and do other things.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
But no, what really happens is people run software on hardware that can run the software at speeds that are acceptable to them. It&#39;s quite possible (and likely) that C# runs at the same acceptable level as C++ does to the user, even on major applications.</p><p>Since Photoshop is a major application to you, I&#39;ll use it as my example. The user has non-functional requirements like &quot;a ten megapixal image must be able to be resized into a thumbnail in less than one second.&quot; Even if C++ takes 0.01 seconds and C# takes 0.5 seconds, it doesn&#39;t matter. Both satisfy the requirement.</p><p>Your definition of a &quot;major application&quot; is basically: anything that requires more speed than C# or Java can provide. And in that case, I agree 100%! C# or Java will never be used in that definition of a major application.
</p></div></div><p>

But the difference is not always that small. Perhaps in the 10 megapixel range, garbage collected languages choke and invoke the collector a lot of times, whereas because C++ has manual memory management, no such thing happens. And then, in your example, resizing a 10 megapixel picture to a thumbnail becomes a 2 second job, and thus it becomes frustrating.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Yes, but in that area it IS better, mainly because you&#39;re limited to how much code you can store, very limited with ram and CPU power, etc. There&#39;s no shortage of any of that on any of today&#39;s computers, so there is no reason to use ASM in most cases.
</p></div></div><p>

Who said anything about using ASM? I just offered an example of where more performance justifies the use of a more primitive tool.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
But you are only supplying heavily biased data that isn&#39;t really meaningful at all. I didn&#39;t see you present any cold hard benchmarks or anything like that.
</p></div></div><p>

My data are not biased at all. </p><p>Take, for example, databases like DB2, used in enterprises.</p><p>If the database was written in Java, for example, wouldn&#39;t it have a big performance hit?</p><p>In that domain, every bit of performance counts.</p><p>I did not present any benchmarks, but I presented code, which makes it obvious why c++ offers better performance.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Either way, like Christopher and Matthew said, we&#39;re not denying that C++ is faster. At least I&#39;m not. I&#39;m just saying that the speed difference doesn&#39;t matter much at all.
</p></div></div><p>

It may not matter to you. Or me. But it matters to those that make applications using, for example, the databases mentioned above.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
But you can&#39;t easily bind EVERY OTHER language to it. <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" /></p><p>With C, you can bind Java, Python, Perl, Scheme, C#, ObjC and pretty much every other language to it with relative ease.
</p></div></div><p>

It&#39;s not that easy, but the use of Java pretty much diminishes the need to use any other language. The major advantage of these languages, i.e. garbage collection, is also an advantage of Java.</p><p>Are there any major games written in anything else than c++? I am asking, I don&#39;t know.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Sun, 15 Mar 2009 16:19:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Let me say it again:Applications that need performance should be written in C++.
</p></div></div><p>

Agreed. Nothing more to discuss from my side! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Are there any major games written in anything else than c++? I am asking, I don&#39;t know.
</p></div></div><p>

Runescape is written in Java. I used to know some more games when I still was interested in Java <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /><br />There are some indie XBox games written in C# and xna. Don&#39;t know how much it is used by the &quot;big&quot; developers.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Sun, 15 Mar 2009 18:05:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
the use of Java pretty much diminishes the need to use any other language.
</p></div></div><p>You know, except for USER BASE.</p><p>Its a <span class="cuss"><span>bitch</span></span> to bind to C++, so we choose C. And every other language including C++ bind to C nicely.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sun, 15 Mar 2009 22:51:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I said c++ is the only language that apps that require performance can be written in.
</p></div></div><p>

</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Applications that need performance should be written in C++.
</p></div></div><p>

Your argument is morphing again! You went from must be in C++ to should be in C++ in one post!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Mon, 16 Mar 2009 00:43:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Your argument is morphing again! You went from must be in C++ to should be in C++ in one post!
</p></div></div><p>
Bear in mind that you&#39;re speaking to a non-native speaker, for whom nuances of language may not be interpreted in the same way as for you.<br />I think you&#39;re overinterpreting a difference in wording where no difference in meaning was intended.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Mon, 16 Mar 2009 01:07:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I think you&#39;re overinterpreting a difference in wording where no difference in meaning was intended.
</p></div></div><p>I&#39;m not so sure. Non native speakers tend to be more anal about the rules than native English speakers. I couldn&#39;t care less about them to be honest, but theres several here on the forums for whom its their second or even third language which seem to be highly anal about the rules and various nuances.</p><p>The only people I&#39;ve ever seen that cared so much about it, were all English majors, or professors.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Mon, 16 Mar 2009 01:50:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Allegro 5 is not old. It could have been written in other languages.
</p></div></div><p>

A quick scan with a code counter shows Allegro 4.2.2 having some 75,000 lines of code.  Are YOU volunteering to rewrite all of them?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Speedo)</author>
		<pubDate>Mon, 16 Mar 2009 04:56:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
But the difference is not always that small. Perhaps in the 10 megapixel range, garbage collected languages choke and invoke the collector a lot of times, whereas because C++ has manual memory management, no such thing happens. And then, in your example, resizing a 10 megapixel picture to a thumbnail becomes a 2 second job, and thus it becomes frustrating.
</p></div></div><p>
This seems to be axilmar&#39;s main point. Garbage collection (mark and sweep) in every major high level language with an associated vm tends to take up more time than manual memory management. Additional time hogs are error checking and reflection. Without these things any error is likely to completely crash a C/C++ program, but assuming errors don&#39;t occur then C/C++ will probably be a winner in terms of performance.</p><p>Of course any sufficiently sophisticated program is likely to have a host of errors and it seems more useful to reduce the number of errors by 5% than increase the performance by 5% but it depends on the application domain.</p><p>Anyway axilmar, why do you keep claiming that things should be written in C++? C++ is an incredibly thin veil over C and the only other thing going for it (the template system) isn&#39;t that impressive compared to other things. Besides the fact that the template system has nothing to do with performance.</p><p>If you took out closures I&#39;m sure you could compile Scheme or ML down to C/C++ using explicit memory management. Of course without closures those languages are basically worthless.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Mon, 16 Mar 2009 05:14:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Isn&#39;t allegro 5 a rewrite?</p><p>Kill C++. There are a lot of better languages out there.</p><p>I would prefer Pascal. But most people won&#39;t. So I vote for C#. With the introduction of Mono, it&#39;s multi-platform. And Mono is able to compile C#. So speed shouldn&#39;t be a big problem.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Martin Kalbfuß)</author>
		<pubDate>Mon, 16 Mar 2009 05:15:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Kill C++. There are a lot of better languages out there.
</p></div></div><p>
Your metric for &#39;better&#39; is flawed. There are no better languages out there by my metric.</p><p>EDIT: Incidentally, has <a href="http://shootout.alioth.debian.org/debian/benchmark.php?test=all&amp;lang=all&amp;d=data&amp;calc=calculate&amp;xfullcpu=1&amp;xmem=1&amp;xloc=1&amp;binarytrees=1&amp;chameneosredux=1&amp;fannkuch=1&amp;fasta=1&amp;knucleotide=1&amp;mandelbrot=1&amp;meteor=0&amp;nbody=1&amp;nsieve=1&amp;nsievebits=1&amp;partialsums=1&amp;pidigits=1&amp;recursive=1&amp;regexdna=1&amp;revcomp=1&amp;spectralnorm=1&amp;hello=0&amp;sumcol=1&amp;threadring=1">this</a> been posted yet? I like that metric, faulty as it is, more than the platitudes expressed in this thread.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Mon, 16 Mar 2009 07:26:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What a shame, it says D is faster than C++. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></p><p>I guess all performance critical programs <b><i><u>must</u></i></b> now be written in D.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Mon, 16 Mar 2009 08:06:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yay for D. Now if only they could release D 2.0 sometime soon...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Mon, 16 Mar 2009 08:45:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
There are a lot of better languages out there.
</p></div></div><p>
When has that ever been an argument to use one piece of software over another?</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Incidentally, has this [shootout.alioth.debian.org] been posted yet? I like that metric, faulty as it is, more than the platitudes expressed in this thread.
</p></div></div><p>
Interesting how poor FORTRAN is doing in that comparison. One to give to people who keep insisting that FORTRAN code is faster than C/C++ code (and therefore one should not use C/C++). <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /><br />Of course, the (valid) counter argument will be that G95 isn&#39;t the best FORTRAN compiler around...</p><p>EDIT: yes, people do still make that argument...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Mon, 16 Mar 2009 08:56:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Let me say it again:<b>Applications that need performance should be written in C++.</b>
</p></div></div><p>When you fart in an elevator, it is best to get out at the next floor rather than try to justify it until you (and everyone else) is blue in the face.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Mon, 16 Mar 2009 12:09:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I agree with Matt and it has absolutely nothing to do with his nationality. In fact its ingrained into Australian society to hate everything and everyone remotely American like, even Canadians. But I am intelligent enough to think beyond that and measure an argument for what it states and what it doesn&#39;t.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Timorg)</author>
		<pubDate>Mon, 16 Mar 2009 21:04:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>SiegeLord wrote 03/15/2009 5:26 PM </p><p>&gt; Your metric for &#39;better&#39; is flawed. There are no better languages out there by my<br />&gt; metric.</p><p>&gt; EDIT: Incidentally, has this [shootout.alioth.debian.org] been posted yet? I like<br />&gt; that metric, faulty as it is, more than the platitudes expressed in this thread.</p><p>The link you provided was to measurements that haven&#39;t been updated in at least a year.</p><p>Here are up-to-date benchmarks game measurements -</p><p><a href="http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&amp;lang=all&amp;box=1">http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&amp;lang=all&amp;box=1</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Isaac Gouy)</author>
		<pubDate>Mon, 16 Mar 2009 21:28:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Here are up-to-date benchmarks game measurements -
</p></div></div><p>
I had a quick look at the C++ and FORTRAN N-body codes they used for comparison, and they&#39;re not even doing the exact same thing (in terms of what quantities they calculate) and they don&#39;t use the same features (the C++ code doesn&#39;t use standard library functions to calculate the square root, for instance).<br />So take with a bucket of salt.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Mon, 16 Mar 2009 21:43:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Maybe throwing in my opinion without any reason wasn&#39;t professional and C++ isn&#39;t that bad. But &quot;C++ is the holy grail&quot; discussions suck. Many people like C++ because everyone is using it. But that isn&#39;t an indicator for its quality. If most people would use fortran they would say exactly the same thing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Martin Kalbfuß)</author>
		<pubDate>Mon, 16 Mar 2009 22:02:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Isn&#39;t allegro 5 a rewrite?</p><p>Kill C++. There are a lot of better languages out there.</p><p>I would prefer Pascal. But most people won&#39;t. So I vote for C#. With the introduction of Mono, it&#39;s multi-platform. And Mono is able to compile C#. So speed shouldn&#39;t be a big problem.
</p></div></div><p>
That would be cool, but it would be a separate project from Allegro. Allegro is a C library -- that&#39;s just what it is. The only way it could spontaneously blossom into a C# library would be if there was a strong feeling by the community that it was necessary.</p><p>But if you&#39;re seriously interested in doing that, I&#39;d be on board. (We&#39;d obviously be dispatching into a lot of C DLLs, and I&#39;ve gotten a lot of experience with that working on Allegro#. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kibiz0r)</author>
		<pubDate>Tue, 17 Mar 2009 00:53:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve tried to do a wrapper for gnu pascal. But gave up, because It was to much work for me at that time. Surely I&#39;m interested. The problem is, that I&#39;m new to C# and mono. So this would take some time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Martin Kalbfuß)</author>
		<pubDate>Tue, 17 Mar 2009 00:58:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Evert wrote on 03/16/2009 7:43 AM  <br />Quote:<br />Here are up-to-date benchmarks game measurements -<br />I had a quick look at the C++ and FORTRAN N-body codes they used for comparison, and they&#39;re not even doing the exact same thing (in terms of what quantities they calculate) and they don&#39;t use the same features (the C++ code doesn&#39;t use standard library functions to calculate the square root, for instance).<br />So take with a bucket of salt. </p><p>double distance = sqrt(dx * dx + dy * dy + dz * dz);</p><p><a href="http://shootout.alioth.debian.org/u32q/benchmark.php?test=nbody&amp;lang=gpp&amp;id=1">http://shootout.alioth.debian.org/u32q/benchmark.php?test=nbody&amp;lang=gpp&amp;id=1</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Isaac Gouy)</author>
		<pubDate>Tue, 17 Mar 2009 02:38:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Aww... the newest ones don&#39;t have D in them... how sad.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Tue, 17 Mar 2009 02:59:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
When has that ever been an argument to use one piece of software over another?
</p></div></div><p> I wish the whole point was in that sentence: I&#39;d put in my signature.</p><p>Screw benchmarks! <a href="http://www.mrob.com/pub/lang_srom.html">What does teh internetz say?</a><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (weapon_S)</author>
		<pubDate>Tue, 17 Mar 2009 03:13:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
double distance = sqrt(dx * dx + dy * dy + dz * dz);
</p></div></div><p>
Here&#39;s the one I get if I just follow C++ / nbody from the first link.</p><p><a href="http://shootout.alioth.debian.org/u32q/benchmark.php?test=nbody&amp;lang=gpp&amp;id=4">http://shootout.alioth.debian.org/u32q/benchmark.php?test=nbody&amp;lang=gpp&amp;id=4</a><br />Definitely different.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Tue, 17 Mar 2009 04:17:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Evert on 03/16/2009 2:17 PM <br />Quote:<br />double distance = sqrt(dx * dx + dy * dy + dz * dz);<br />Here&#39;s the one I get if I just follow C++ / nbody from the first link.<a href="http://shootout.alioth.debian.org/u32q/benchmark.php?test=nbody&amp;lang=gpp&amp;id=4">http://shootout.alioth.debian.org/u32q/benchmark.php?test=nbody&amp;lang=gpp&amp;id=4</a><br />Definitely different. </p><p>There are currently 3 C++ nbody programs.</p><p><a href="http://shootout.alioth.debian.org/u32q/benchmark.php?test=nbody&amp;lang=all">http://shootout.alioth.debian.org/u32q/benchmark.php?test=nbody&amp;lang=all</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Isaac Gouy)</author>
		<pubDate>Tue, 17 Mar 2009 07:53:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Point is, you&#39;re not comparing languages or compilers fairly if you&#39;re not running essentially the same code in each case.</p><p>To clarify that: the code should use the same algorithm to solve the exact same problem, using only standard language features. It should also probably be optimised to the same level in both cases.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Tue, 17 Mar 2009 09:51:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Point is, you&#39;re not comparing languages or compilers fairly if you&#39;re not running essentially the same code in each case.</p><p>To clarify that: the code should use the same algorithm to solve the exact same problem, using only standard language features. It should also probably be optimised to the same level in both cases.
</p></div></div><p>
Why? Not all algorithms translate well to the languages. You wouldn&#39;t use the same algorithm in Haskell that you would in C for example. Not all optimizations would have the same effect too.</p><p>I don&#39;t think that&#39;s a problem. They seem do disallow the graver cheating (no implementing a function in C, and then calling it from a language X and calling that a program in language X). The bigger problem (plaguing most benchmarks) is that their programs are unrealistic and artificial, being small and unflexible. And this point is why it&#39;s called a language benchmarks game.</p><p>Isaac Gouy, please use the </p><pre>&lt;quote&gt;
&lt;/quote&gt;</pre><p> tags <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Tue, 17 Mar 2009 10:22:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Why? Not all algorithms translate well to the languages. You wouldn&#39;t use the same algorithm in Haskell that you would in C for example. Not all optimizations would have the same effect too.
</p></div></div><p>
That&#39;s not quite what I meant. Comparing random code that uses different algorithms is not a good way to compare programming languages.<br />If Haskell allows you to write a better algorithm, that&#39;s fine - it&#39;s the better tool for the job. In this particular case, the comparison is C and FORTRAN, and you can easily write the same algorithm in both if you want to compare - and in fact you should.<br />That doesn&#39;t mean you shouldn&#39;t use language features; one of FORTRAN&#39;s strengths are its intrinsic array operations. You&#39;d be a fool not to use those if you can.</p><p>What you should not do is take C++ code that uses compiler-specific optimised functions and solves an N-body problem in effectively two dimensions (the example I linked to effectively does this), compare it to a FORTRAN program that solves the same problem in three dimensions using standard library functions and then claim that the C++ code is faster, because you&#39;re not doing a fair comparison.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The bigger problem (plaguing most benchmarks) is that their programs are unrealistic and artificial, being small and unflexible. And this point is why it&#39;s called a language benchmarks game.
</p></div></div><p>
Well yes, there is that too. Point one way or the other being, those bench marks don&#39;t mean too much.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Tue, 17 Mar 2009 10:40:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>IMO, the main reason why performance-critical applications are still written in C++ is that most of them stem from a codebase from way back when C++ was simply the most advanced language available. Parsing SQL commands, optimizing queries, managing data streams and all that are a major pain to implement, and if you have an existing codebase that solve those problems well enough, you better stick to it rather than re-code the entire thing in a newer language.<br />About the GC: C# at least allows for manual memory management when needed (using unsafe code), so the argument that GC is what breaks performance isn&#39;t entirely valid. In the hands of a skilled programmer, I&#39;m pretty certain that C# can and will produce code that is at least comparable in terms of efficiency. There may even be cases where JIT compilation yields an advantage: the JIT compiler may choose to use optimizations specifically for the system it currently runs on, taking advantages for which a C++ version would have to jump through quite some hoops for(e.g. producing 64 bit code when it runs on a 64 bit CPU, taking advantage of vendor-specific CPU instructions, optimizing for memory usage or cpu clocks based on the system specs, ...).<br />No matter what application you write, as soon as a certain critical mass in terms of program size is reached, it becomes very likely that memory management needs to be organized in some way; in C++, people usually end up implement either a smart pointer or a garbage collector anyway (or use an existing library), while C# and Java have it built in. (And as stated above, C# at least gives you enough control to bypass it where the extra performance is worth the effort).</p><p>Then there&#39;s the JIT compilation overhead; but since JIT compilation happens only at load-time, it doesn&#39;t affect runtime performance once the application is fully loaded; especially with databases, the startup time is relatively uninteresting (when the server goes down, you&#39;re screwed anyway unless you have a failover).</p><p>Yet another possibility I expect future applications to use is to split up the codebase into a performance-critical lower layer (written in C++) and a higher level &#39;user code&#39; layer (written in a more comfortable language). Microsoft makes this fairly easy, although managed C++ (which can be used to glue plain C++ together with other managed code) has very ugly syntax.</p><p>I also think that your definition of &#39;major&#39; (performance critical) doesn&#39;t match what the rest of us can agree on (large code base, large user base, large number of features).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Tue, 17 Mar 2009 16:25:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599467/800084#target">Thomas Fjellstrom</a> said:</div><div class="quote"><p>
You know, except for USER BASE.
</p></div></div><p>

It&#39;s not that important for Allegro. There are not many users who use Allegro through less popular programming languages anyway. </p><p>Writing it in C is good for marketing reasons though: &quot;our library is accessible from every language! yeay!&quot;</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599467/800100#target">BAF</a> said:</div><div class="quote"><p>
Your argument is morphing again! You went from must be in C++ to should be in C++ in one post! 
</p></div></div><p>

Ok, if you want to be so pedantic. There is a minor difference between &#39;must&#39; and &#39;should&#39;, and although my native language is not English, I understand your comment.</p><p>Let&#39;s stick with &#39;should&#39;.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599467/800106#target">Evert</a> said:</div><div class="quote"><p>
Bear in mind that you&#39;re speaking to a non-native speaker, for whom nuances of language may not be interpreted in the same way as for you.<br />I think you&#39;re overinterpreting a difference in wording where no difference in meaning was intended. 
</p></div></div><p>

Exactly. In Greek, there is one word for both (&#39;must&#39; and &#39;should&#39;).</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599467/800150#target">Speedo</a> said:</div><div class="quote"><p>
A quick scan with a code counter shows Allegro 4.2.2 having some 75,000 lines of code. Are YOU volunteering to rewrite all of them?
</p></div></div><p>

Allegro 4.9.8 is 66,000 lines of code. It&#39;s not that big. With Java, it could probably be a lot less.</p><p>I would certainly volunteer, if I did not have to work a full time job.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599467/800153#target">kazzmir</a> said:</div><div class="quote"><p>
This seems to be axilmar&#39;s main point. Garbage collection (mark and sweep) in every major high level language with an associated vm tends to take up more time than manual memory management. Additional time hogs are error checking and reflection. Without these things any error is likely to completely crash a C/C++ program, but assuming errors don&#39;t occur then C/C++ will probably be a winner in terms of performance.</p><p>Of course any sufficiently sophisticated program is likely to have a host of errors and it seems more useful to reduce the number of errors by 5% than increase the performance by 5% but it depends on the application domain.
</p></div></div><p>

Exactly.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Anyway axilmar, why do you keep claiming that things should be written in C++? C++ is an incredibly thin veil over C and the only other thing going for it (the template system) isn&#39;t that impressive compared to other things. Besides the fact that the template system has nothing to do with performance.
</p></div></div><p>

I disagree about the template system. Compare Java Generics to c++ templates: autoboxing vs native values. Native values win.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
If you took out closures I&#39;m sure you could compile Scheme or ML down to C/C++ using explicit memory management. Of course without closures those languages are basically worthless.
</p></div></div><p>

I am not so sure about that. They both do not have structs, do they? they fake structs by using the function &#39;nth&#39; for accessing the &#39;nth&#39; member of a list. And then in Scheme, polymorphism is achieved through tagged values, which might be slower than vtables. Feel free to correct me if I am wrong.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599467/800155#target">Martin Kalbfuß</a> said:</div><div class="quote"><p>
Kill C++. There are a lot of better languages out there.
</p></div></div><p>

I agree! but replace it with something with equal performance. It&#39;s possible. There is no need to sacrifice performance.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599467/800410#target">Tobias Dammers</a> said:</div><div class="quote"><p>
About the GC: C# at least allows for manual memory management when needed (using unsafe code), so the argument that GC is what breaks performance isn&#39;t entirely valid.
</p></div></div><p>

If you manage memory manually, then you are not using the GC. So you can&#39;t really say that &quot;the GC does not break performance&quot;.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
There may even be cases where JIT compilation yields an advantage: the JIT compiler may choose to use optimizations specifically for the system it currently runs on, taking advantages for which a C++ version would have to jump through quite some hoops for(e.g. producing 64 bit code when it runs on a 64 bit CPU, taking advantage of vendor-specific CPU instructions, optimizing for memory usage or cpu clocks based on the system specs, ...).
</p></div></div><p>

Modern C++ compilers do most of that.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
No matter what application you write, as soon as a certain critical mass in terms of program size is reached, it becomes very likely that memory management needs to be organized in some way; in C++, people usually end up implement either a smart pointer or a garbage collector anyway
</p></div></div><p>

There is only one garbage collector for C++, and that is the concervative Boehm collector.</p><p>It is not possible to use the Boehm garbage collector in C++, due to preprocessor and linking issues, unless your app does not contain 3rd party libraries and very little STL (I&#39;ve been there and tried it).</p><p>Smart pointers are good. I&#39;ve recently finished a 75,000 lines of code project, which use smart pointers. I have no memory leaks, but I needed to copy the boost code, since my Qt library (old version, 3.0.5) is not compatible with boost.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Then there&#39;s the JIT compilation overhead; but since JIT compilation happens only at load-time, it doesn&#39;t affect runtime performance once the application is fully loaded; especially with databases, the startup time is relatively uninteresting (when the server goes down, you&#39;re screwed anyway unless you have a failover).
</p></div></div><p>

Are you sure? because the VM engine monitors the execution of virtual calls in order to replace them with &#39;if&#39;.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Yet another possibility I expect future applications to use is to split up the codebase into a performance-critical lower layer (written in C++) and a higher level &#39;user code&#39; layer (written in a more comfortable language). Microsoft makes this fairly easy, although managed C++ (which can be used to glue plain C++ together with other managed code) has very ugly syntax.
</p></div></div><p>

But that would make C++ a necessary tool for these apps.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I also think that your definition of &#39;major&#39; (performance critical) doesn&#39;t match what the rest of us can agree on (large code base, large user base, large number of features). 
</p></div></div><p>

So? that does not make my definition wrong or yours wrong. We simply talk about different things.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (axilmar)</author>
		<pubDate>Tue, 17 Mar 2009 20:01:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599467/800438#target">axilmar</a> said:</div><div class="quote"><p>
Modern C++ compilers do most of that.
</p></div></div><p>
At compile time. Which, for C++, is before shipping. Halfway compiled languages perform their final compilation step at run time, which means they can take optimizations based on the specific system they are actually running on, instead of the system they were compiled for.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
If you manage memory manually, then you are not using the GC. So you can&#39;t really say that &quot;the GC does not break performance&quot;.
</p></div></div><p>
Let me rephrase then: The fact that C# offers GC, and that C#&#39;s GC is turned on by default, doesn&#39;t necessarily break runtime performance. In C#, you are free to mix GC&#39;ed code (a.k.a. &#39;managed&#39;) and manual-allocation code (&#39;unsafe code&#39; in C# lingo), with all the consequences this implies. However, where GC is hard to implement or use in C++ (as you state yourself, it&#39;s so hard that most people resort to smart pointers, which are typically faster but have a problem with reference cycles), and manual allocation is relatively &#39;easy&#39;, C# reverses the situation by making manual allocation slightly harder (you need to put relevant code inside an unsafe {} block, and your application needs to acquire permission to run unsafe code), and GC&#39;ed code very easy.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Are you sure? because the VM engine monitors the execution of virtual calls in order to replace them with &#39;if&#39;.
</p></div></div><p>
I&#39;m not sure, no. What the VM does at runtime, is basically a secret to me. However, when and if the most basic method (a plain compilation from the IM / bytecodes into the current platform&#39;s machine code) is NOT chosen, the only obvious reason I can think of is that whatever they use instead is faster in most cases.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
But that would make C++ a necessary tool for these apps.
</p></div></div><p>
Not necessary, no. Only if the development team chooses to use this option. It would, however, turn a &#39;major application written in C++&#39; into a &#39;major application written in C# / Java / ..., with some low-level functions written in C++&#39;. The fact that the Paint.NET team chose to use C# even for low-level functions shows that even things like image processing can be coded in C# efficiently enough to not mandate C++.<br />As for databases; I think the main reason we haven&#39;t seen one written in C# or Java is that in order to succeed at that level, one has to compete with the current major players (MySQL, PostgreSQL, Oracle, SQL Server), all of which have been around longer than C# or Java and tap into a huge code base; and since the rise of C# and Java, there hasn&#39;t been any entirely new competitor, in any language. I have no idea how well a Java-based heavy-load database would perform, but to be honest, neither does anyone else, simply because there is no such thing yet.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Tue, 17 Mar 2009 22:34:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599467/800470#target">Tobias Dammers</a> said:</div><div class="quote"><p>
At compile time. Which, for C++, is before shipping. Halfway compiled languages perform their final compilation step at run time, which means they can take optimizations based on the specific system they are actually running on, instead of the system they were compiled for.
</p></div></div><p>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
It would, however, turn a &#39;major application written in C++&#39; into a &#39;major application written in C# / Java / ..., with some low-level functions written in C++&#39;.
</p></div></div><p>
Huh? If you are writing all of your low level high performance functions in C++, then you are not taking advantage of JIT compilation. Why have the JIT if you still have to use the non-JIT compiled code for performance critical components?</p><p>Saying that you can write high performance code in C++ and then use it from C#, and then declare that C# is high performance is silly.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The fact that the Paint.NET team chose to use C# even for low-level functions shows that even things like image processing can be coded in C# efficiently enough to not mandate C++.
</p></div></div><p>

As for that, I&#39;ve heard reports that Paint.NET is a slow program, so I&#39;m not so sure about that. I haven&#39;t used it enough to check.</p><p>EDIT:</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Halfway compiled languages perform their final compilation step at run time, which means they can take optimizations based on the specific system they are actually running on, instead of the system they were compiled for.
</p></div></div><p>

What about OSS software? Gentoo et al? Plenty of people compile C/C++ software on end user systems. I remember when I first used Paint.NET is did this compillation stage, and it took about as long as compiling C/C++ programs from source takes. I don&#39;t know how widespread this is, but maybe it&#39;s possible to halfway compile C/C++ too, distribute ready to link object code for non-performance critical parts, and the source to the performance critical parts, and then have the compiler compile only the latter files, and the linker link everything together.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Tue, 17 Mar 2009 23:13:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/599467/800474#target">SiegeLord</a> said:</div><div class="quote"><p>
Huh? If you are writing all of your low level high performance functions in C++, then you are not taking advantage of JIT compilation. Why have the JIT if you still have to use the non-JIT compiled code for performance critical components?</p><p>Saying that you can write high performance code in C++ and then use it from C#, and then declare that C# is high performance is silly.
</p></div></div><p>
I didn&#39;t say you have to. I just presented it as an alternative to using C++ for everything, so as to draw the benefits from both worlds. This doesn&#39;t mean that it is impossible to use C# for everything.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
What about OSS software? Gentoo et al? Plenty of people compile C/C++ software on end user systems. I remember when I first used Paint.NET is did this compillation stage, and it took about as long as compiling C/C++ programs from source takes. I don&#39;t know how widespread this is, but maybe it&#39;s possible to halfway compile C/C++ too, distribute ready to link object code for non-performance critical parts, and the source to the performance critical parts, and then have the compiler compile only the latter files, and the linker link everything together. 
</p></div></div><p>
I have never heard of any such thing, except for Microsoft&#39;s &#39;managed C++&#39;, which is basically C++ with some syntax extensions for garbage-collected types that compiles into IL instead of machine code. <br />&#39;As long as compiling C/C++ programs from source takes&#39; is a bit vague - &#39;Hello world&#39; takes less than a second, but large projects might easily amount to several minutes, maybe even hours, for a full build.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Wed, 18 Mar 2009 01:53:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">axilmar said:</div><div class="quote"><p>Quote:</p><p>If you took out closures I&#39;m sure you could compile Scheme or ML down to C/C++ using explicit memory management. Of course without closures those languages are basically worthless.</p><p>I am not so sure about that. They both do not have structs, do they? they fake structs by using the function &#39;nth&#39; for accessing the &#39;nth&#39; member of a list. And then in Scheme, polymorphism is achieved through tagged values, which might be slower than vtables. Feel free to correct me if I am wrong.
</p></div></div><p>

Thats almost right. Structs are made with vectors (basically constant sized lists) and doing the nth element of a vector is basically the same as array lookup (i.e. extremely fast).</p><p>Yes polymorphism is achieved with tagged values but vtables don&#39;t come into play there. All data types are tagged using the lower two bits so that native types can be used (you are right with the autoboxing vs native type thing). The class systems don&#39;t use those tags and have their own vtables somewhere.</p><p>(I can really only talk about mzscheme since I know the implementation, other schemes might do things differently but the fast ones probably do things the way I described.)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kazzmir)</author>
		<pubDate>Wed, 18 Mar 2009 02:53:45 +0000</pubDate>
	</item>
</rss>
