2009-09-28 11 views
8

Necesitamos escribir algún software que se compile y ejecute tanto en un servidor Mac OS X como en Ubuntu. Nos encantaría usar Objective-C con toda su bondad Cocoa, sin embargo, las implementaciones de GNUstep de las piezas que estamos utilizando están rotas (en el último paquete de Ubuntu)Mejor lenguaje compilado para compatibilidad con Mac OS X y Linux

A la luz de esto deberíamos usar C++ (I realmente preferiría no), C u otra cosa en la que no hayamos pensado?

Es un proceso servidor/back-end que consume muchos recursos, Java y otras versiones interpretadas de este software funcionan mucho peor que la prueba de concepto Objective-C que hemos escrito, por lo tanto, ahora queremos volver a escribir en un lenguaje "compilado [1]".

(NB: Algunas personas pueden considerar esto subjetivo, sin embargo, al final del día tenemos que hacer un trabajo, tiene que haber una respuesta correcta razonablemente adecuada aquí).

[1] Compilado con instrucciones nativas de CPU, no compiladas en "códigos de bytes" que luego deben ser ejecutados por un intérprete.

+3

¿Por qué tiene que ser un lenguaje ** compilado **, por curiosidad? –

+4

Puede usar Objective-C en cualquier plataforma: el compilador de Objective-C forma parte de la distribución de GCC. El problema de la portabilidad es las bibliotecas de Cocoa de Apple. –

+2

¿Qué te hace pensar que GNUstep no lo va a cortar? Parece que quieres escribir algún tipo de servidor back-end, y no deberías tener problemas para hacerlo usando GNUstep. – Felixyz

Respuesta

20

Implementaré la lógica de negocio principal en C y me tomaré el tiempo para escribir envoltorios de GUI nativos para cada código de plataforma - Objective-C/Cocoa y GTK/gnome o lo que sea.

+6

Este es exactamente el consejo que Apple le daría. Factorice su código para separar la GUI de la lógica de su aplicación, y escriba una GUI nativa para cada plataforma en la que desee ejecutar. Si intenta utilizar una biblioteca de GUI multiplataforma como Qt, su aplicación será una mierda. – NSResponder

+1

@NSResponder - ¿Entonces la solución de Apple al problema de una biblioteca portátil de GUI multiplataforma es hacerla suya para cada aplicación que escriba? Eso suena como una forma horrible de hacer las cosas. –

+3

En realidad, probablemente sea ideal si tiene tiempo y presupuesto ilimitados. Sin embargo, realmente no sabemos si el OP realmente puede permitirse hacer esto. – ConcernedOfTunbridgeWells

0

Me atrevería a suponer que C/C++ sería la plataforma más independiente de lenguajes independientes.

(yo realmente preferiría no)

Por qué no? ¿Qué tipo de software planea desarrollar?

+3

No existe el lenguaje C/C++. –

+0

Haha gracias por señalar eso: P –

6

¿Qué tipo de software estás tratando de crear?

La respuesta más probable es C/C++.

+7

No existe un lenguaje como C/C++. –

+2

¿En serio me votaste por eso? Tienes problemas, mi amigo. – phoebus

+0

Sí, pero lol @ ambos (: – Jacob

0

Depende de lo que quieras hacer. Si busca una aplicación de muy alto rendimiento, sus opciones son C/C++. Si busca un desarrollo rápido, sus opciones son Java/Python.

+0

java/python no se compilan – Jacob

+0

@Jacob: estoy bastante seguro de que tengo que compilar mis fuentes Java antes de usarlas. El resultado puede no ser el binario final, ya que la JVM realiza la compilación final cuando tiene toda la información necesaria para optimizarla correctamente, pero está segura de que está compilada. Pero supongo que lo sabes. – Fredrik

+0

tienes que compilar java para usarlo. Estoy de acuerdo con Python, pero me centré en plataformas cruzadas y para un desarrollo rápido. – rjoshi

6

Considere usar Python. Puede escribir aplicaciones que son nativas en apariencia en ambas plataformas con wxPython.

Python viene con el escritorio Max OS X y Ubuntu y su aplicación se puede empaquetar para que se vea y se comporte como cualquier otra aplicación nativa en cualquier plataforma.

+1

Python no es tan rápido (ejecutar) como C/C++, pero si la velocidad de ejecución no es crítica, debería ser una buena opción. –

+2

Umm, no compilado – Jacob

+0

@Jacob, no compilado a código máquina, pero está compilado en bytes – dreamlax

6

Recomendaría Objective-C por portabilidad y facilidad de uso. No puede utilizar Cocoa si desea ejecutar Linux, pero Objective-C es un lenguaje realmente agradable y le permite interactuar fácilmente con el código C normal.

+1

Acepto, uso Objective-C todo el tiempo sin Cocoa solo porque me resulta más fácil trabajar que C++. – dreamlax

+0

+1 para esta idea. Además, para las cosas de Foundation/Cocoa que crees que te pueden gustar, generalmente no es muy difícil escribir una clase que imita de cerca la funcionalidad de su primo solo para Apple. – alesplin

4

¿Qué tal java?

Y si necesita algo realmente nativo, siempre puede usar JNI.

2

Suponiendo que desea crear una aplicación con una interfaz gráfica de usuario, creo que C++/QT es el candidato más probable. No conozco ningún otro compilado en [1] con compatibilidad madura de toolkits en OSX y Linux.


  1. Por 'compilado' Estoy haciendo la suposición de que quiere decir 'produce un ejecutable nativo'.
+2

NO use Qt para ninguna aplicación que planea enviar en OS X. – NSResponder

+2

¿Por qué no? ¿Tiene alguna experiencia personal de QT en OSX que le gustaría compartir? – ConcernedOfTunbridgeWells

+0

El único problema que he tenido con Qt es que no se siente como nativo en OS X, pero ese es un problema que tendrá con cualquier cruz -juego de herramientas de plataforma. A menos que desee escribir una interfaz personalizada para cada plataforma, no tendrá una apariencia nativa. – Amok

0

Yo votaría por ANSI C o C++ junto con POSIX.

0

dadas las otras respuestas a continuación creo que es necesario hacer dos opciones

1) Si necesita una interfaz gráfica de usuario no tiene que elegir la biblioteca de interfaz de usuario, ya sea una plataforma transversal, uno ee.g QT, etc wx o escribir diferentes para OSX y Linux - Manzanas de la forma preferida y creo que consiguiendo la mejor apariencia en cada plataforma

2) si su aplicación necesita cálculos rápidos ya que eso podría impulsar su elección de idioma, por ejemplo C++/C/Objective-C contra python

Las dos opciones son independientes, ya que puede mezclar la mayoría de las opciones de la GUI con diferentes idiomas.

3

¿Qué tal FreePascal quizás con Lazarus si está interesado en el desarrollo de la GUI?

+0

Woah, eso me trae por el carril de la memoria! – Jacob

+0

Soy un desarrollador de tiempo completo de Delphi, y creo que FreePascal es genial, y todo eso, pero no hay un enlace GUI completamente horneado que sea multiplataforma en Linux y OS X. El material de GTK requiere X11 en Mac OS X Feo y no nativo. –