Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Just three, ask for more if you wish:

The original version of Skype was done in Delphi.

The first versions of Mac OS were done in Apple Pascal.

Photoshop was originally done in Apple Pascal.



I'm not siding with or against you here, but each of your examples is of something originally being in a language other than C.

Your position isn't strengthened if you can only name systems that were written in something else before someone converted them to C. In fact, by design, that's kind of benefitting the opposing side. I'm just saying.


1) the original UI for Skype was written in Delphi. The core functionality is, and has always been written in C/C++.

2) Mac OS is not a desktop application.

3) Adobe Photoshop is all C/C++ now. They converted it to C/C++ because they decided that was a better choice. Its tough to sell that as a case for a major desktop application not in c/c++.


The parent poster asked for desktop software written in languages besides C or C++ without any reference of hybrid applications or timeframe when they were written.

Since when desktop operating systems are not desktop applications?

I can provide other examples, but most likely I will get extra requirements along the way, so why bother...

After all, you can always use the argument that any application needs to call C APIs when the OS is written in C, therefore all applications are written in C.


What a victim complex. If someone is debating that we should stop using C, and I ask for software not written in C, it's obvious that I'm looking for contemporary software. And the reasoning that every software is "C" because it needs to do system/library calls would be ludicrous, and to provisionally accusing me of that is insulting.

I've done some research myself, and there are some interesting and big projects in languages other than C. Eclipse in Java, Dropbox in Python to name two. But my point still stands. I looked at all the desktop applications I have installed and they're without fault C or C++.


My impression is that desktop software is/was largely written in C/C++/C#/Objective C/Objective C++ because those are the languages to which the Operating Systems of today expose their APIs. For example Win32 = C/C++, Cocoa = Objective C, Metro = C# (or I guess anything compiled to the Common Intermediate Language (CIL)???).

Now that said, most languages provide a bridging layer that allows them to call out to those "native" APIs. These are used to enable API ?wrappers?, however due to these being provided by third parties (I believe) there has been a tendency to gravitate toward the "blessed" language of the OS vendor.

One of the big advantages of Java (to me at least) was that it provided a platform independent windowing capability inbuilt within the JDK that has been maintained by Sun/Oracle/(and Apple) as new operating system revisions were released.

Note, for example, that C/C++/Objective-C/Objective-C++ programs aren't/weren't allowed in the Mac App Store (I'm not sure if this is still the case...). (Personally I ported a Java App to Objective C++ due to this.)

But generally I agree with your point that this isn't the only reason why C was so pervasively used. However, you also need to consider that a large number of programming environments and tools were specifically developed to aid C/C++ programmers, e.g. Borland C++, Visual C++, Code Warrior, XCode. It's also worth remembering that the GNU C Compiler and Debugger were import contributions to free software back in the day.

But also consider distribution of compilers etc. I think it is pretty fair to say that a lot of programmers learnt to program using Borland Pascal/C++ because at that point the Internet was not as accessible as today and copies of these could be "obtained".

The advent of Internet has not only allowed the distribution of compilers and environments for other programming languages, it has also meant that the languages used for backend systems, i.e. web servers and web applications, is irrelevant to the user's web browser.

Anecdotally, for safety-critical system software an issue with some languages other than C is that they have not been suitable for real-time systems. I don't know much about this other than that exception handling and also garbage collection can cause issues due to their non-determinism.

I fear that you'll think that the above is a bit too much like saying "all software is 'C' because it needs to do system/library calls", however I think it's probably fairer to say "all software is 'C' because many people have really, really liked it" and "better the devil you know".


Metro is an updated version of COM.

On the desktop side, you have C++/CX which is C++ with some language extensions to make talking to COM easier.

For those that would rather use plain ISO C++, there is the Windows Runtime template framework.

.NET code is JITed or compiled AOT with NGEN and makes use of CCW to interop with WinRT.

http://msdn.microsoft.com/de-de/magazine/jj651569.aspx

On the mobile side, Windows Phone 8 only has native applications, even .NET gets compiled to native code.

http://channel9.msdn.com/Shows/Going+Deep/Mani-Ramaswamy-and...


There is a lot of applications in C#, a lot in Java, a lot in full python (e.g. ubuntu utilities), some in flex (cheers to balsamiq the wonderful). The fact that you didn't installed them doesn't mean they aren't there. Moreover, you shouldn't say C/C++, they are very different languages and I can bet my hat that your desktop applications are full of C++ with an high level framework like Qt. Not really close to the metal.


Bingo Card Creator, by our very own patio11 (Patrick Mckenzie) is written in Java.


I thought Bingo Card Creator was a Ruby on Rails app...


That's the webapp. The original software is a desktop version, and patio11 wrote it in Java as far as I know.

http://www.kalzumeus.com/2006/06/28/the-sorrows-of-java-prin...


The desktop client is indeed written in Java Swing. Fun fact: for PDF printing and getting updates, it actually does interact with a web service in the Ruby on Rails application. Both are ungodly bits of code put together years ago which shame me but seem to continue functioning.


It's all "original" and "first versions", which kinds of strengthen the op's point.


To be honest, I was looking for some more recent software. Skype is 10 years old and both Mac OS and Photoshop are both decades old. And Pascal is not "better" than C, it is not a high level language.


Funny as someone that started coded back in the day Assembly was enterprise coding, my understanding of a high level language is a bit different than yours.

You asked for desktop software without any mention of time.


The implication is that his test is a proof of C's merit.

Merit is time-sensitive, in that if software is converted to another language, that language is more profitable/efficient for that software.

Therefore, the implication is also that systems converted to C demonstrate C's merit, because it's been decades since they were actually in the language you speak of.


What can I say. I am older than C and remember the days when it was used only as the UNIX system's language.

UNIX's success made people want to port UNIX's tooling for their home computers, this lead to the spread of C implementations outside UNIX.

Had UNIX been written in language XYZ, the article would be called "Learn XYZ". Merit is relative.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: