handrail - ada standards for accessible design pdf
Ada para nuevo proyecto? (6)
Actualmente estamos desarrollando una solución navcomm no crítica de tipo de mapa móvil para nuestro dispositivo de aviónica basado en Atom. El prototipo se ha realizado en Python / Qt, ahora necesito decidir qué idioma usar para la aplicación "real". Ada o C / C ++. He sido un desarrollador de C ++ durante 12 años y detesto el lenguaje. Ada parece prometedora, pero estoy un poco preocupada por la infraestructura de soporte, las bibliotecas disponibles, la disponibilidad del desarrollador, etc. ¿Alguien aquí ha pasado por esto antes? ¿Cuáles son tus conclusiones?
(Una respuesta de un desarrollador de Ada real)
Contrariamente a la predicción de su inminente desaparición, Ada todavía está yendo bien. La versión actual del idioma es Ada 2005 , y las actualizaciones para Ada 2012 están en proceso de finalización.
Ada continúa con la modernización e incorpora nuevas características y prácticas de ingeniería de software a medida que las desarrolla la industria. (Y lo contrario también es cierto: la concurrencia incorporada ha sido una característica principal de Ada desde 1983, y que solo ahora se está abriendo camino en los lenguajes de programación "modernos". :-)
No todas las características y prácticas nuevas serán adoptadas por Ada; Ada no se va a transformar en un lenguaje funcional, por ejemplo. Pero esas características que mejoran la productividad, confiabilidad y seguridad del software se incorporan de una manera que es consistente con la arquitectura y la intención subyacente de Ada.
Es cierto que Ada no es un lenguaje de programación muy utilizado, pero tiene una comunidad de desarrolladores comprometidos, que casi siempre están más que dispuestos a ayudar con preguntas, inquietudes y consejos para aquellos que desarrollan proyectos y aprenden el idioma. Los recursos se incluyen aquí en (verifique la ada ), comp.lang.ada , incluso Reddit .
En cuanto a la disponibilidad de desarrolladores de Ada, es una especie de situación "Catch-22". Debido a que no se usa mucho, hay menos desarrolladores. Debido a que hay menos desarrolladores, las empresas evitan usarlo en los proyectos y, como no se utiliza para proyectos, los desarrolladores no buscan trabajo en ellos.
Sin embargo, puedo dar fe de que hay muchos programadores de Ada actuales y anteriores con conocimientos que les encanta trabajar con el lenguaje, y que estarían particularmente interesados en hacerlo para una aplicación del tipo que usted describe, si lo supieran . Si se comprometió a ir con Ada, y luego se anunció sin disculpas para los desarrolladores de Ada: en Monster, donde quiera que anuncie, con mucho gusto en comp.lang.ada o Reddit: creo que la disponibilidad de los desarrolladores de Ada lo sorprendería a usted ya muchos otros. otros escépticos.
Buena suerte con tu proyecto.
Bueno, parte de la razón por la que Ada no es un lenguaje taquillero (aunque por lo que leo, en realidad estoy interesado en aprender más) es porque la mayoría de los programadores quieren algo rápido y sucio. Basta con mirar a Microsoft Windows. Escribieron las primeras versiones en C (y un poco de ensamblador x86). Les llevó 2 años terminar toda la monstruosidad, e incluso ahora es frágil. La facilidad con la que los virus y los gusanos pueden infiltrarse en el sistema es tan mala que intentan alejarse de la API de Win32 en Windows 8. Estoy seguro de que si el sistema operativo se escribiera en Ada, sería mucho más Robusto y mucho más seguro de lo que es ahora.
En general, hay algunas situaciones en las que prefiero C ++. Si su programa no tiene concurrencia en absoluto, y existen algunas bibliotecas de C ++ (no C, sino C ++ ) por ahí que serían realmente útiles de usar, entonces C ++ es probablemente el camino a seguir.
Sin embargo, si tendrá concurrencia como parte del diseño de su sistema, Ada es una gran victoria, ya que lo soporta de forma nativa. Un trabajo en el que escribí en realidad escribió un planificador de tiempo real completamente portátil. Portamos la simulación completa (> 100KSLOC) de vxWorks a un compilador de Windows de un proveedor completamente diferente en aproximadamente 2 horas (todo el tiempo dedicado a tratar con sus diferentes sistemas de biblioteca de código fuente).
Cualquier biblioteca que tenga enlace C está perfectamente disponible en Ada, aunque a veces es posible que tenga que escribir enlaces. Eso es un poco más de trabajo, pero a menudo encontrará que otras personas con las mismas bibliotecas con las que deben lidiar ya han hecho el trabajo por usted. Por ejemplo, creo que hay enlaces para todos los Win32 disponibles. Sin embargo, crear nuevos es bastante fácil, ya que a menudo me encuentro haciéndolo solo para proporcionar una interfaz que me guste más.
Ada también tiene un par de características que, en mi opinión, lo convierten en el lenguaje principal disponible para la programación de sistemas de bajo nivel. Por ejemplo, el idioma le permite especificar exactamente dónde y qué tan grande se coloca cada campo en un registro. Esto es vital al tratar con hardware o datos comunicados con otras plataformas. C ++ actualmente solo te permite especificar qué tan grande es cada campo. Estoy lidiando con eso ahora mismo, y lo encuentro muy frustrante.
La otra característica importante de la programación del sistema es que, de forma predeterminada, todos los arreglos tienen límites comprobados. Puede desactivarlo por eficiencia si lo desea, pero el valor predeterminado es seguridad. En mi humilde opinión esto es lo que debería ser el predeterminado. En C ++, si desea seguridad, debe desviarse para codificarlo usted mismo o usar una clase más segura como std :: vector (y solo usar el método .at()
. ¿Cuántas veces ha visto? ¿Alguien hace eso? ¿Nunca? Yo tampoco.
Hay restricciones de pragma que puedes usar para restringir ciertas características del idioma también. Podría ser alternativa al uso de chispa.
Si escribe un Software de aviónica, generalmente no puede usar muchas libretas. Por lo general, tienes muchas reglas de codificación que se deben seguir. Por ejemplo, las funciones recrusivas o la asignación dinámica de memoria están prohibidas. Por lo tanto, las bibliotecas causan muchos problemas cuando se trata de la certificación (por ejemplo, DO-178C).
Prefiero Ada sobre C ++ porque te impide hacer muchos errores de codificación estúpidos. En principio, puedes hacer lo mismo con Ada y C ++. Sin embargo, debe definir muchas reglas de codificación para cumplir con los requisitos de certificación. Y tienes que demostrar el cumplimiento de esas reglas.
Tienes lo mismo con Ada pero es menos trabajo que con C ++.
Voy a tirar en mis pensamientos. Para un contexto rápido: actualmente estoy trabajando en Ada en una de esas grandes empresas (no en Lockheed, pero lo suficientemente cerca). Soy un programador de C en el núcleo. (usa C ++, C #, y Java también)
Ada está bien como idioma. Tiene algunas cosas buenas que no puedes obtener en C / C ++. Para sistemas críticos en tiempo real, es realmente bueno. Se necesita un poco de tiempo para acostumbrarse, pero es bastante fácil de aprender.
El inconveniente es realmente la percepción del lenguaje. La mayoría de los ingenieros que conozco que gustan y eligen a Ada son mayores (45+). De esos hay 2 tipos de programadores: las personas que son realmente buenas en Ada y pueden hacerlo bien, y las que "conocen" a Ada, pero lo programan de una manera / estilo representativo de los años 70 con idiomas más antiguos. Aquellos buenos programadores de Ada son altamente valorados aquí. Para que una pequeña empresa los arrebate, creo que necesitarías arrojar algo de dinero importante sobre ellos. Tienen 4-5 semanas de vacaciones, 6 salarios de cifra (incluso en lugares más baratos para vivir) y todo tipo de beneficios. Espero que esto no parezca una cuestión de edad, pero es así y es algo para pensar como una pequeña empresa. Si se encuentra en un área de tecnología importante como Dallas / Fort Worth, podría estar bien. Como mencionaste en tus comentarios, la mayoría de los programadores más jóvenes no están emocionados de aprender Ada. Puede pagar bien y estar bien como idioma, pero no es tan comercial ni emocionante.
Si estuviera iniciando un proyecto de sistema integrado en tiempo real, me limitaría a C (o C ++ si necesita el OO). Para los sistemas integrados, prefiero C en lugar de C ++ porque, según mi experiencia, los ingenieros intentan forzar el sistema integrado en OO y usan características porque están ahí, pero su millaje puede variar. Con C o C ++: 1. GRAN grupo de programadores para elegir. 2. Cada herramienta conocida por el hombre ha sido diseñada para trabajar con ella (muchas son gratis). 3. Los recursos en línea son infinitos.
Te permitirá simplemente ir a trabajar. Si tiene acceso a algunos de los grandes depuradores que utilizan JTAG, como tienen Green Hills y VxWorks, realmente aumenta la velocidad de desarrollo.