Pregunta

En la empresa en la que trabajo, hacemos un montón de archivo basado en el procesamiento de transacciones.Los centros de procesamiento en torno a la conversión de archivos entre varios formatos para adaptarse a numerosos sistemas en numerosas empresas.

El tratamiento casi siempre implica un XML etapa y puede incluir una gran cantidad de análisis de texto, base de datos de las búsquedas de datos, conversión de datos y validación de datos.

Actualmente los programas de la realización de todas estas tareas están escritos en C++ y realiza muy rápidamente, todo en una media server.Estoy investigando las posibilidades de uso de una forma más "moderna" del lenguaje que los nuevos graduados a los programadores son más propensos a estar familiarizado con.(Correcta asignación de memoria en C++ parece que causa problemas con un montón de nuevos programadores en estos días)

Basado en la breve información proporcionada, sería un lenguaje como python proporcionar la funcionalidad necesaria y rendimiento, así como la atención de la asignación de memoria (y varios otros C++ relacionado con los problemas que se presentan?

Me gusta la idea de no tener que compilar los programas cada vez que realizamos un cambio.Entiendo que los lenguajes interpretados probablemente no golpear el mismo rendimiento que obtenemos actualmente.

Nuestros sistemas son Linux basado en la cual también restringir algunas de las opciones.

Cualquier comentario sobre la funcionalidad y el rendimiento con Python o sugerencias de los lenguajes alternativos sería muy apreciada.

¿Fue útil?

Solución

Me gusta la idea de no tener que compilar los programas cada vez que realizamos un cambio.Entiendo que los lenguajes interpretados probablemente no golpear el mismo rendimiento que obtenemos actualmente.

Este es el problema más grande;se puede vivir con el impacto en el rendimiento.Usted podría tratar de usar Python y se extiende con su actual C++ módulos para la realización de piezas pesadas.Sin embargo, el cambio de todo el sistema parece un gran esfuerzo si la única razón es la falta de C++ talento.La contratación de personas que saben C++ parece la opción más barata.

Otros consejos

Lo que es más importante, obtener rápidamente los programas de trabajo, o para obtener los programas de trabajo rápidamente?

Si usted está tratando con un gran número de archivos de gran tamaño a continuación, usted puede ser mejor que se queden en C++ y la enseñanza de su posgrado programadores lo que es un puntero (!)

De lo contrario, me gustaría recomendar encarecidamente que busque en una de scripting basado en la solución, ya que el desarrollo de estos, una vez que se llega a la velocidad, es mucho más rápido.Y mucho más divertido, si somos honestos, la mayoría de las personas, al menos.

Si la per-registro de la carga de procesamiento no es alta, usted puede ser sorprendido de lo poco rendimiento que perder:e / s de archivo es casi seguro que se manejan en un compilado (C) biblioteca, por lo que el intérprete de sobrecarga puede ser relativamente bajo.Vale la pena probar, me gustaría sugerir.

De los lenguajes imperativos, Perl es una opción evidente, Python es popular y Ruby tiene un alto perfil (y probablemente más limpio OO características de los dos primeros).Luego hay un poco más, er, reino esotérico de los lenguajes funcionales, pero no estoy calificado para hacer comentarios sobre los mismos.

Python probablemente eliminar la mayoría de los de bajo nivel de cosas que se utilizan en la aplicación.La asignación de memoria no será un problema nunca más.También, al menos en mi universidad, parece adoptar el uso de Python como lenguaje de programación debido a que los estudiantes no tienen que escribir todo eso formales cosas para empezar.Su único problema sería que el rendimiento de la parte, como Python es probable que nunca a ser tan rápido como un compilado programa de C++.

Yo aconsejaría usted a tomar un par de semanas para conocer los lenguajes de programación que se está considerando.Me gustaría comprobar fuera de Ruby también.Quizás juguete con Haskell un poco?

Como yo lo entiendo Python parece bien equipado para lidiar con todo lo que estamos hablando.XML, base de datos de búsquedas, validación, análisis.Normalmente es una opción segura, no sólo a causa de la fácil y divertido experiencia en programación, pero si estás atascado hay una impresionante comunidad en torno a la lengua y que están felices de ayudar.

Otra alternativa es la de incorporar Python en su programa de C++.Usted puede mantener gran parte de su aplicación de la misma, y hacer llamadas a Python para las piezas que se cambian a menudo, o de la necesidad de la flexibilidad que un lenguaje de secuencias de comandos proporciona.

A partir de la Python docs

Los capítulos anteriores se analizó cómo extender Python, que es, cómo extender la funcionalidad de Python adjuntar una biblioteca de funciones C a es.También es posible hacerlo de la de otra manera:enriquecer su C/C++ aplicación mediante la incorporación de Python en ella.La incrustación proporciona a su aplicación con la capacidad de poner en práctica algunos de la funcionalidad de la aplicación en Python en lugar de C o C++.Este puede ser usado para muchos propósitos;uno ejemplo de ello sería la de permitir a los usuarios adaptar la aplicación a sus necesidades por escrito algunos scripts en Python.Usted también se puede utilizar usted mismo si algunos de la funcionalidad puede ser escrito en Python más fácilmente.

Odio decir esto, pero si usted quiere algo que los desarrolladores van a estar familiarizado con, ir con Java.Java es el lenguaje que la mayoría de los recién graduados estará más familiarizado con.Usted todavía tiene que compilar, pero los tiempos de compilación será más corto que el de C++.Se va a ejecutar en Linux, y prácticamente en cualquier otro lugar.Tiene un buen recolector de basura.Es bastante rápido.Y menciono que sus desarrolladores puedan estar familiarizado con él?No, no es "cool" como Python, pero es un muy probado y verdadero lenguaje.

Honestamente, dudo de que tienes un montón de entrantes desarrolladores que chupar con C++, pero sería increíble con Python de todos modos.La gente que usa Python bien tienden a estar bien con manual de gestión de la memoria.Las personas que son malas con la gestión de memoria en realidad, tienden a ser malo con todos los idiomas.

Me parece preocupante que tienes los desarrolladores que están tan mal con la gestión de memoria que desea cambiar los idiomas.Eso es una señal que indica un problema, pero no estoy seguro de que el problema es con el idioma.

Si usted está bien con quedarse con un lenguaje compilado, me quedaría con C++ y proponer la elección de un buen conjunto de bibliotecas y enseñar a los novatos en el uso correcto y la adherencia a los sólidos patrones.

Si te las arreglas para encontrar un agradable conjunto de bibliotecas, será fácil para los principiantes a aprender a escribir sólido código.Mi (actual) de la preferencia personal es la clase de Qt biblioteca porque hace que el manejo de la memoria fácil y seguro y agradable para trabajar.También cuenta con soporte para XML de análisis y generación, ha regexp construido en, las capacidades de la red, es la cruz de la plataforma, ...y también es muy útil para los no-GUI sistemas.

Para mí, es una gran diferencia entre trabajar con la llanura de C++, enfermedades de transmisión sexual y biblioteca STL y trabajando con un poderoso biblioteca como Qt.Probablemente, en busca de impulsar regalos es también muy worthwile.

Yo sugeriría probar groovy.El soporte de XML está bien y de análisis, así como la validación de datos no debería ser difícil.

Sin embargo, algunas personas señalaron que la migración no puede ser la idea más brillante.No se puede intentar factor común de las cosas en "macher objetos" y "validación de objetos" para que los nuevos programadores utilizar su biblioteca de C++ en lugar de tratar de escribir propenso nuevo código que sólo los duplicados existentes fragmentos?

También me asegúrese de utilizar los modernos e / s de archivo (iostreams) y no C como IO en C++, que debe ayudar con los problemas de memoria un montón.

Busca también el impulso de las bibliotecas puede ser útil.

El rendimiento en Python puede ser un problema muy grande.Una vez tuve que crear el programa que involucra a un algoritmo de optimización en la lista de tareas.Empecé con Python, creó que es super-rápido y limpio, y luego vio que tomará las edades para proporcionar un resultado.La reescritura de línea por línea a de C++ que resultó en más de 100x mejora de la velocidad...

Así que a veces no se trata de un 5-10% de pérdida de rendimiento como se puede ver.Usted debe investigar en su caso (tal vez poco de prueba?).

O debería intentar almacenar sus reglas de análisis en una base de datos en lugar de dejar que ellos codificada dentro de su código.Como Ken Downs con razón citado, minimizar el código, maximizar el.De esta manera usted no tendrá que recompilar cada vez que un pequeños cambios en las reglas.

Si usted puede conseguir lejos con usar Python, Ruby, Groovy o Perl vsC++ que sería mejor ir con uno de estos lenguajes de alto nivel.La productividad aumentará en gran medida.Si usted encuentra que usted necesita más rendimiento, a continuación, ir con Java.Todo el mundo debería conocer y usar al menos una forma dinámica de lenguaje escrito.

debe mover a python que language hacer que todo sea posible en la creación de redes, si usted necesita más rápido se mueven a la c/c++

si la naturaleza del proyecto que está haciendo le permite contemplar incluso un movimiento como tal, a continuación, hacer mover (suponiendo que haya alguna pista).En muchos proyectos de C++, sin embargo, su única opción es mover abajo uno o dos niveles de abstracción (por ejemplo, para C o Asamblea).

Estoy de acuerdo con los demás, usted debe pegarse con C++.El cambio a un no-lenguaje compilado es un paso hacia atrás.Mientras que muchos de los programadores pueden tener problemas para lidiar con algunos de los aspectos problemáticos de la lengua (como punteros), al menos la mayoría de los programers han sido expuestos a algunos de C++.Recomiendo gastar su tiempo y dinero mejorando su base de código y programadores en lugar de cambiar de idioma.

Como para otros idiomas, es posible que desee mantener su ojo en IR lang.Un amigo mío utilizado ampliamente.Es un moderno lenguaje compilado.Tiende a ser claro, conciso y moderno.IR normalmente, las aplicaciones funcionan a velocidades comparables a las escritas en C++ y se comunica bien con la web.No es muy maduro en este punto, pero parece prometedor.

Buena Suerte!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top