the programming most language advanced python programming-languages future-proof

python - most - the future of programming



Consejos de diseño para un programa que se ejecutará en 25 años (4)

En realidad, el requisito # 1 sería "usar un lenguaje popular con una especificación formal de la Organización de Normas Internacionales". Esto es mucho más importante que cualquiera de las otras cosas que mencionas. (¿"Código abierto"? Por favor ... Hay miles de programas de dominio público de los años 80 y 90 que sería casi imposible ejecutar hoy).

Por ejemplo, si usted codifica rígidamente a la especificación C99 o C ++ 98 o C ++ 03 o incluso C ++ 0x, las probabilidades son aproximadamente 99.9999% de que exista un compilador para su plataforma 10, 20 y 50 años a partir de Ahora que puede manejar su código con cero cambios. Esto es, sin duda, lo más útil de una especificación formal para un idioma popular.

La codificación rígida de acuerdo con una especificación de este tipo puede no ser fácil, ya que muchos programas no triviales (por ejemplo, cualquier cosa con una GUI) no pueden escribirse de manera portátil.

Pero ahí es donde empezaría. Implemente todo lo que pueda en un código que cumpla con el estándar al 100%, luego aísle el resto (como la GUI) en módulos dependientes de la plataforma. Minimice el tamaño de este último y minimizará el trabajo que deben realizar sus sucesores.

Las herramientas gratuitas de terceros, ya sea algo como Boost o Python, son excelentes respuestas a algunas preguntas, pero no a esta.

Si está creando una aplicación (que en su mayoría procesa datos) que necesita ejecutarse ahora y quizás (tal vez no) 10 o 25 años después, ¿qué consejos de diseño hay para tales aplicaciones?

Se aplican las reglas generales: dependen del software de código abierto y las plataformas probadas y los formatos de datos a prueba de fallas.

El idioma debe ser un lenguaje de alto nivel por razones de legibilidad (tal vez la única opción sea volver a escribir la solicitud en 15 años por alguien que tenga poco conocimiento del código original).

Me gustaría ir a UNIX (Linux) + Python + YAML / JSON (/ CSV / plaintext), ¿algún consejo para esta selección o un conjunto de herramientas alternativo? Scheme / lisp ha existido por mucho tiempo y es muy difícil arruinar los conceptos básicos del lenguaje, dado que todo sería autónomo.

EDITAR: por favor, no olvide los consejos sobre el diseño y el código reales, como el número de 2038 años .


Java puede ser un buen lenguaje para escribirlo. Java tiene una excelente compatibilidad con versiones anteriores, una gran biblioteca estándar que también tiene una buena compatibilidad con versiones anteriores, y es lo suficientemente popular como para que probablemente esté disponible en 25 años. Incluso si java pierde el favor, hay suficientes lenguajes jvm como scala y clojure para que uno sea lo suficientemente popular como para asegurar la supervivencia de jvm y java como producto secundario.

Python puede no ser una buena opción, ya que a veces rompen la compatibilidad (python 3 no es compatible con python 2).


Sería interesante conocer la vida media de una aplicación implementada. Mi conjetura es que 10 años no son nada inusuales, y las aplicaciones centrales de una empresa bien pueden tener más de 25 años, hay una gran cantidad de aplicaciones de Mainframe / CICS.

Por lo tanto, afirmaría que cualquier desarrollo serio debe anticipar que la aplicación se utilizará durante al menos 10 años. Las grandes empresas pueden tener una política de "Evergreening", es decir, migrar sus aplicaciones a versiones posteriores de sistemas operativos, bases de datos, etc.

En efecto, es imposible adivinar la longevidad de cualquier plataforma, así que simplemente seleccione algo que sea ampliamente adoptado y que sea en cierto sentido (de facto o formalmente) un estándar.

Su pila sugerida es razonable, Java y Spring o Java EE también serían buenas.

Prestaré atención a la modularidad y la "apertura" de la aplicación. Cuando digo que muchas aplicaciones tienen más de 10 años, eso no significa que se fosilizaron en ese tiempo. Las aplicaciones cambian tanto internamente como se integran con más y más sistemas. Esas aplicaciones CICS ahora producen datos que se ven en dispositivos móviles que no se habían escuchado hace 20 años.

Así que observe las interfaces en su aplicación, elija una arquitectura en capas y modular que permita que los elementos internos evolucionen y se acomode a nuevas integraciones.


Teniendo en cuenta que proporcionará un código fuente bien documentado, siempre podrán optimizar el código si surge alguna nueva tecnología que sea compatible con su código actual. De lo contrario, ellos solo tendrán que portarlo ellos mismos.