2009-05-28 15 views
5

Se avecina un proyecto en el que algunos códigos que voy a escribir se pueden implementar en cualquier hardware que tengan clientes potenciales. Es una aplicación de negocios que funcionará 24 horas al día, 7 días a la semana, por lo que preveo que la mayoría de las máquinas anfitrionas serán cajas de tipo servidor, pero los clientes más pequeños pueden, por ejemplo, tener una PC simple.Lenguaje de desarrollo independiente de plataformas más apropiado

algunos detalles más sobre el código Voy a escribir:

  1. no habrá ninguna interfaz gráfica de usuario.

  2. Tendrá que comunicarse con otro dispositivo 'caja negra' a medida a través de una red Ethernet.

  3. Tendrá que comunicarse con una base de datos MySQL en algún lugar de la red.

  4. No tengo problemas de rendimiento ya que a) la cantidad de comunicaciones con la caja negra será pequeña, alrededor de 1 por segundo, y la cantidad de datos intercambiados será pequeña (alrededor de 1K cada vez), b) el número de lecturas/escrituras con la base de datos será pequeño, alrededor de 5 por minuto, y nuevamente la cantidad de datos intercambiados será pequeña yc) el procesamiento que debe realizarse es bastante simplista.

  5. Nada de lo que estoy haciendo es muy 'cercano al metal', así que no quiero usar lenguajes que tengan un nivel demasiado bajo. La facilidad de desarrollo y la facilidad de implementación son mis principales prioridades.

  6. No espero que haya una solución perfecta, así que puedo vivir con cosas como, por ejemplo, tener que tener archivos de configuración ligeramente diferentes para máquinas Windows que para Linux, etc. Me gustaría evitar tener que compilar el software para cada equipo host si es posible.

Daría valor a sus ideas en cuanto a qué lenguaje de desarrollo que considere más adecuado.

Saludos,

Jim

Respuesta

0

yo diría que el uso de C o C++. Son independientes de la plataforma, aunque deberá compilar para cada plataforma.

O use Java. Eso se ejecuta en una máquina virtual, por lo que es realmente multiplataforma y no es un nivel lento como C.

+1

+1 Java. Nunca lo he usado, pero para eso está diseñado, ¿verdad? – Assembler

+1

Sí. Java es un lenguaje realmente potente y puede ejecutarse tan rápido como C en la mayoría de los casos. Todavía tiene muchos problemas, pero no creo que afecten al OP. Tampoco he escrito Java durante 2-3 años. Amo .NET ahora :) – ddd

+0

-1 para C/C++ (basado en los requisitos de OP) pero +1 para Java, así que supongo que iguala a 0. – cletus

11

Iría con un lenguaje de scripting decente como Python, Perl o Ruby personalmente. Todos ellos cuentan con una biblioteca decente, pueden comunicarse fácilmente con bases de datos MySQL tanto locales como remotas y son bastante independientes de la plataforma.

1

Si todas las plataformas son PC estándar (o al menos ejecutan Linux), entonces se debe considerar Python. Puede compilarlo usted mismo si no existe un paquete para su versión. Además, puede quitar fácilmente la biblioteca estándar de cosas que no están disponibles y que no necesita (soporte de sonido, por ejemplo).

Python no necesita muchos recursos, es fácil de aprender y leer.

Si conoce Perl, puede intentarlo. Si no usa Perl diariamente, no lo haga. La sintaxis de Perl es difícil de recordar y después de una semana, se preguntará qué hizo el código, incluso si lo escribió usted mismo.

+0

Además de algunos excelentes módulos instalados en todas partes, baterías incluidas. – MrHus

5

Lo primero que debemos saber es qué habilidades lingüísticas ya posee. Es probable que esto sea un determinante bastante importante de qué elección idealmente haría.

Si yo estaba haciendo esto me gustaría sugerir Java para un par de razones:

  1. Se ejecutará en casi cualquier lugar y cumplir con los requisitos que he descrito.
  2. No es un lenguaje esotérico por lo que habrá muchos desarrolladores.
  3. ¡Ya sé cómo programar en él!
  4. Probablemente el ecosistema de bibliotecas más extenso de cualquiera de las plataformas de desarrollo.

También tenga en cuenta que puede escribirlo en otro idioma en la JVM si está más cómodo con Ruby o Python.

1

Perl puede ser útil para usted, ya que está disponible para muchas plataformas y puede obtener casi cualquier funcionalidad simplemente instalando módulos de CPAN.

3

Parece que Perl o Python encajarían perfectamente. El que elija dependerá de la experiencia de las personas que crean y apoyan el sistema.

3

En cuanto a los lenguajes de scripting en comparación con Java, me ha decepcionado el desarrollo de herramientas de línea de comandos con Java. No puede ejecutarlos directamente, tiene que (1) compilarlos y (2) escribir un script de shell para ejecutar el archivo jar, este script puede diferir entre plataformas. Recomiendo Python porque se ejecuta en cualquier lugar y tiene una gran biblioteca SQL, mysql-python. La biblioteca está lista para usar en Windows y Linux. Python también tiene mucho menos repetitivo, escribirás menos líneas de código para hacer lo mismo.

EDITAR: cuando hablé de JARs ejecutables o no, estaba hablando de si son directamente ejecutables sea el sistema operativo. Por supuesto, puede hacer doble clic en ellos para ejecutarlos si su administrador de archivos está configurado para hacerlo. Pero cuando estás en una ventana de terminal y quieres ejecutar un programa java, tienes que "java -jar myapp.jar" en lugar de la habitual "./myapp.jar". En Python uno solo ejecuta "./myapp.py" y no tiene que preocuparse por la compilación o las rutas de clases.

+0

Um, no, no (necesita un archivo por lotes/script para ejecutar programas Java). Puede empaquetar los archivos ejecutables. – cletus

+0

Yo detendría la sugerencia de Java. Otros carteles han sugerido Python o Ruby, etc., pero el soporte en plataformas que no sean x86 puede ser desigual: puede obtener una versión para la mayoría de las plataformas, pero no necesariamente todas las bibliotecas que necesita. También consideraría seriamente sqlite en lugar de MySql si realmente quieres soportar cualquier plataforma (soporte de plataforma sqlite se puede resumir como "todo menos nintendo DS" –

+0

Pero quizás necesita acceso de base de datos multiusuario, en cuyo caso SQLite es no es realmente un corredor. –

1

Python o Java. Ambos son fáciles de implementar tanto en los entornos de servidor como en los entornos de escritorio que mencione, es decir, Linux/Solaris y Windows.

Perl es también una buena elección, pero depende de qué tan bien conozca Perl, qué tan bien conocen Perl otras personas que mantendrán su código y número de usuarios de escritorio que son lo suficientemente inteligentes como para manejar una instalación de Windows Perl versión (s).

Como Java es compatible con Python a través de Jython, me gustaría tener un requisito de JVM, pero personalmente iría con una aplicación de Java hasta el final para dicho sistema que usted describe.

Cuestiones relacionadas