2008-10-09 17 views
5

Estoy comenzando mi primera empresa independiente con fines de lucro. Estoy teniendo dificultades para decidir qué idioma usar. Quiero escribir mi aplicación en Perl, pero no creo que sea lo suficientemente simple de compilar. Si no lo escribo en Perl, lo escribiré en C++.Nuevo proyecto: Tengo problemas para elegir un idioma para usar

La aplicación tendrá muchas características, incluida la interfaz wxwidgets, acuerdo con SDL, temporizadores, algunos subprocesos y procesamiento de audio. El programa en sí será algo complejo, pero no terriblemente grande.

Así que mi pregunta son:

  1. Puede PAR, perl2exe, o equivalente recopilar más de casos de prueba básicos?
  2. Velocidad, y compilación aparte ¿por qué debería usar C++ sobre Perl?

Editar: Algunos de mis especificaciones del proyecto.

  • Plataformas múltiples. Estoy esperando que el 50% o más de mis usuarios posean Mac, y la mayoría del resto son usuarios de Windows. Si es posible, también quiero apoyar a Linux ya que es mi sistema operativo de todos los días.
  • Dado que es multiplataforma, necesito una herramienta de creación de GUI unificada. Necesita poder usar tipos básicos y permitirme crear manejadores de eventos personalizados y objetos personalizados de GUI.
  • Necesita procesamiento de audio. Leer y jugar, wav y/o mp3. También usaré algunos algoritmos personalizados para determinar propiedades especiales de los archivos de audio; cosas como tempo, patrones, etc.
  • Me gustaría pero no necesito soporte SDL/OpenGL.

Todo lo demás es bastante mundano. Algunas clases y contenedores diferentes. Algunos controles personalizados de GUI.

Respuesta

9

¿Por qué no utilizar un híbrido de ambos? En general, es la forma en que se está desarrollando mucho en estos días.

Sugeriría un combo Lua/C++ o Python/C++ (no estoy seguro de qué tan bien funciona un combo Perl/C++, pero esa también puede ser una buena opción).

Personalmente he hecho un montón con el combo Lua/C++ y es bastante fantástico.

+0

Pensamiento interesante. ¿Cómo lo haces? Extraiga cosas complejas y dependientes de la velocidad a C++, y envuélvalas en su código Lua/Python. –

+0

Sí, esa es la mejor manera. También muchas veces muchas cosas que parecen depender de la velocidad no son tan críticas en la realidad. Además, si haces muchas operaciones matemáticas y simplemente intercambias tu núcleo Lua con el núcleo LuaCoCo, puedes aumentar el lado Lua matemático 10 veces –

+0

Estoy trabajando en un proyecto para hacer que Perl/C++ sea una combinación más fácil. Busque mi nombre y Perl para obtener más información. –

11

Ir con C++. Timers, threading, audio, SDL, wxwidgets, estas son todas las cosas que Perl puede hacer, pero que en realidad no son excelentes. Además, PAR o perl2exe son mecanismos torpes para la distribución. Ellos trabajan, pero no son ideales. Mientras tanto, C++ (y recomiendo encarecidamente que use Boost) encajaría muy bien en este rol.

5

He usado PAR para empaquetar un importante programa Perl/Tk para Windows. Tomó un poco de toquetear, pero funcionó.

Si tiene al menos tanta experiencia en Perl como en C++, el desarrollo en Perl debería ser más rápido. Pero las velocidades de tiempo de ejecución para un programa equivalente serán más lentas. El resto de sus criterios pueden ser satisfechos por cualquiera, entonces yo diría que se trata de una elección personal.

4

¿No? Yo digo que no te metas en esto por mucho tiempo. Existen pros y contras de ir en cualquier dirección, pero parece que te estás acercando peligrosamente a la parálisis del análisis."Si nada más, voltea una moneda o elige la que creas que tiene el nombre más bonito.

+0

Gracias por el perspicaz comentario. He estado planeando e investigando. Gran parte del tiempo en esta cuestión y revisar los pro/contra por varias semanas. –

+0

Excelente respuesta. Yo mismo, soy propenso a la parálisis del análisis y lo importante es hacer es comenzar. – Darrel

11

Soy un programador de C++ y Perl. C++ es un lenguaje agradable, pero cada vez que tengo la opción, voy con Perl ya que el desarrollo sólo procede de manera mucho más rápida

Un par de comentarios:.

  1. pAR, PerlApp y perl2exe no son compiladores son empaquetadores no hay compilador de Perl, excepto en sí Perl Si desea... alguna forma de bytecode del código de Perl, tendrás que esperar Perl 6 en Parrot.
  2. Tengo uso d PAR para empaquetar una aplicación con un total de aproximadamente 500k SLOC, sin incluir perl. Funcionó bien, corrió la misma velocidad que Perl, pero el arranque fue más lento. Esto fue en 2005. Desde entonces, el rendimiento de inicio ha mejorado significativamente si instala el módulo Archive :: Unzip :: Burst en la máquina de desarrollo donde empaqueta el programa. He utilizado con éxito PAR para varias aplicaciones que varían en tamaño desde las más pequeñas hasta las 500k líneas antes mencionadas. Si necesita ayuda con PAR, hay una lista de correo activa y amigable. Solo haznos a nosotros y a ti el favor de no estar de acuerdo con "OMG, nada funciona, ayúdame, ¡kthx!". La gente lo hace todo el tiempo (y a veces aún recibe ayuda). :)
  3. El enhebrado de Perl no es genial. Compruebe si algo como POE se ajusta a su factura. Soy un usuario de threads.pm, pero prefiero no serlo. Con las disculpas apropiadas al mantenedor trabajador, Jerry D. Hedden.
  4. wxPerl está en una muy buena forma y hay una comunidad a su alrededor. Naturalmente, dado que wxWidgets es C++, siempre es un poco más actual y completo.
  5. SDL Perl es un contenedor directo alrededor de la biblioteca. La (pequeña) documentación supone que ya la conoce. En mi experiencia, leer documentos para una biblioteca en un idioma diferente puede ser un poco molesto.
  6. Los temporizadores están bien en perl: Time::HiRes
  7. La portabilidad es difícil. Más aún en C++ que en Perl, pero siempre se trata de disciplina y de poder probar en muchas plataformas.
  8. Para Perl en Windows, asegúrate de echar un vistazo a Strawberry Perl.
+1

Gracias por esa información. Ephimient y has refutado los rumores que he escuchado. En cuanto a las licencias, ¿está bien empacar Perl con mi aplicación comercial? No me importa vincularme a Perl.org, o PAR, pero quiero asegurarme de estar legalmente claro. –

+0

Es totalmente legal. Esa es esencialmente la razón por la cual Perl lleva los términos de la licencia dual Artistic + GPL. Otra cosa: no piense que PAR salta por los aros para ocultar su código fuente. Pruebe "descomprimir foo.exe" donde foo.exe es un ejecutable PAR-packaged. Ver también: módulo Filter :: Crypto. – tsee

1

La función es importante. El código, independientemente del idioma, hará cosas similares, especialmente si usa las mismas bibliotecas y componentes. A menos que tenga la función exacta resuelta a través de bibliotecas y kits de herramientas, protéjuela en Perl.

Existe un argumento de que el desarrollo tomará menos tiempo en un lenguaje dinámico. Hay problemas similares en Perl y C++ al obtener un menú desplegable en el lugar correcto, llenándolo con los valores correctos, realizando el cambio apropiado en el estado del programa a partir de la entrada del usuario.

Si Perl no lo hace en ciertas plataformas, transforme el código en C++.

Probablemente hay algunos consejos que le ayudarán en este enfoque:

  1. Eso significa que es probable que escribir el prototipo con OO Perl. Una vez que tenga la funcionalidad de alto nivel incorporada en una plataforma, siempre que pueda llegar tan lejos en Perl, entonces C++ es más o menos una optimización.

  2. Quizás pueda restringir el prototipo a más o menos cognados de C++.Pero no estoy seguro de esto, puede descomponer un map en un bucle o incluso simplemente reemplazarlo con una función de filtro llamada con un puntero de función para una función de prueba.

+0

Puedes escribir una novela en chino y una novela en inglés que cuenten la misma historia, pero si la escribes en inglés y la traduces al chino, es obvio. Cada idioma tiene diferentes expresiones idiomáticas. OO Perl es tan horrendomente malo C++ que ni siquiera es gracioso. C++ es igualmente horrible Perl. Limitarse al subconjunto que ambos contienen en realidad ignora la pregunta de "que es mejor" tratando de hacer ambos equivalentes cuando no lo son. –

0

Escriba su funcionalidad del núcleo en C++, a continuación, escribir el front-end para su aplicación en la herramienta para la plataforma en cuestión, es decir, Cocoa para Mac OS X, .NET/Delphi/MFC para Windows, etc.

Esta es mi forma preferida de desarrollar aplicaciones de escritorio multiplataforma. Por supuesto, sé muy poco acerca de lo que estás tratando de lograr, por lo que puede ser demasiado gordo para ti.

5

Una gran razón para usar Perl es la meta-programación.

Perl es lo suficientemente flexible como para permitirle escribir código para escribir código (así es como Moose hace su magia). Ahorrará tiempo y reducirá la cantidad de errores que necesita aplastar.

LA gran razón para usar Perl es CPAN.

Cuestiones relacionadas