Wir müssen eine Software schreiben, die sowohl auf einem Mac OS X Server als auch auf Ubuntu kompiliert und ausgeführt wird. Wir würden gerne Objective-C mit all seiner Cocoa-Güte verwenden, aber die GNUstep-Implementierungen der Teile, die wir verwenden, sind gebrochen (im aktuellen Ubuntu-Paket sowieso.)
In Anbetracht dessen sollten wir C ++ (ich würde wirklich lieber nicht), C oder etwas anderes, an das wir nicht gedacht haben, verwenden?
Es ist ein Server / Back-End-Prozess, der sehr ressourcenintensiv ist, Java und andere interpretierte Versionen dieser Software schneiden viel schlechter ab als der Objective-C-Proof-of-Concept, den wir geschrieben haben, daher wollen wir jetzt neu schreiben eine "kompilierte [1]" Sprache.
(NB: Manche Leute mögen das für subjektiv halten, aber am Ende des Tages müssen wir eine Arbeit erledigen, es muss hier eine angemessen richtige Antwort geben).
[1] Kompiliert mit nativen CPU-Anweisungen, nicht in "Byte-Codes" kompiliert, die dann von einem Interpreter ausgeführt werden müssen.
Ich würde die Kerngeschäftslogik in C implementieren und mir die Zeit nehmen, native GUI-Wrapper in den Code jeder Plattform zu schreiben - Objective-C / Cocoa und GTK / gnome oder was auch immer.
Erwägen Sie die Verwendung von Python. Mit wxPython können Sie auf beiden Plattformen native Anwendungen schreiben.
Python wird mit Max OS X und Ubuntu Desktop geliefert und Ihre Anwendung kann so gepackt werden, dass sie wie jede andere native Anwendung auf jeder Plattform aussieht und sich auch so verhält.
Wie wäre es mit FreePascal vielleicht mit Lazarus wenn Sie an GUI-Entwicklung interessiert sind?
Angenommen, Sie möchten eine Anwendung mit einer grafischen Benutzeroberfläche erstellen, denke ich, dass C ++ / QT der wahrscheinlichste Kandidat ist. Ich kenne keine andere kompilierte [1] Sprache mit ausgereifter Toolkit-Unterstützung unter OSX und Linux.
Angesichts der anderen Antworten, die Sie unten finden, müssen Sie zwei Möglichkeiten wählen.
1) Wenn Sie eine GUI benötigen, müssen Sie entweder die UI-Bibliothek entweder plattformübergreifend (z. B. QT, wx usw.) oder andere für OSX und Linux - Apples bevorzugte Methode wählen und ich denke, Sie bekommen das beste Aussehen und fühle dich auf jeder Plattform
2) ob Ihre Anwendung schnelle Berechnungen benötigt, da dies Ihre Sprachwahl beeinflussen könnte, z. C ++ / C / Objective-C vs Python
Die beiden Optionen sind getrennt, da Sie die meisten GUI-Optionen mit verschiedenen Sprachen kombinieren können.
Ich würde vermuten, dass C / C ++ die offensichtlichsten plattformunabhängigen Sprachen sein würde.
(würde ich wirklich lieber nicht)
Warum nicht? Welche Art von Software planen Sie zu entwickeln?
Tags und Links objective-c linux compatibility gnustep