¿Cuál es el mejor lenguaje de programación para proyectos de software muy grandes?

En primer lugar, la clave para escribir cualquier software realmente masivo es una buena y sólida gestión de proyectos . Sin eso, ningún lenguaje de programación puede salvarte.

Suponiendo que tiene un excelente administrador de proyectos, también desea un lenguaje que ayude a su equipo de desarrollo a escribir código claro, legible y comprensible. Este lenguaje puede ser de tipo dinámico o estático, pero este último ofrece una capa adicional de seguridad que puede ser beneficioso.

Dicho esto, no necesariamente tiene que ignorar los lenguajes dinámicos. Smalltalk, por ejemplo, se ha utilizado para escribir un programa de simulación de batalla de un millón de líneas para el ejército conjunto estadounidense llamado JWARS. Es una de las mejores historias de éxito de Smalltalk. Sin duda, su éxito dependía en gran medida de una excelente gestión de proyectos .

Parte de una buena gestión de proyectos es comprender que los lenguajes dinámicos y estáticos requieren diferentes enfoques para la ingeniería de software. Si aborda el desarrollo de Python de la misma manera que aborda el desarrollo de Java, se producirá un desastre.

Un lenguaje que ayuda a escribir código claro, legible y comprensible es, por lo general, un lenguaje más pequeño y simple con un mínimo estándar y algunos conceptos clave de programación. Presta atención a la psicología cognitiva. Reconoce que no todos en su equipo de desarrollo pueden ser una estrella. Dicho lenguaje debe ser accesible para más miembros del equipo junior.

Con respecto a la psicología cognitiva, dicho lenguaje también es beneficioso para los miembros del equipo con experiencia para quienes un lenguaje más complejo indudablemente impone una mayor fricción cognitiva o estrés, incluso si no lo sienten . Los informáticos siempre han entendido esto. En la década de 1970, Alan Kay y Dan Ingalls nos dieron Smalltalk. En la década de 1980, Niklaus Wirth y Per Brinch Hansen presentaron a Oberon y Edison, respectivamente. En la década de 1990, Guido van Rossum y Yukihiro Matsumoto entregaron Python y Ruby, respectivamente.

Muy recientemente, Rob Pike y Ken Thompson dieron a luz el lenguaje Go, que fue diseñado expresamente para la ingeniería de software práctica a gran escala . Esto fue en respuesta a muchos de los lenguajes que eran antitéticos a todos los anteriores, lenguajes como C ++, D, Scala y Vala. (Y aún así, tenemos nuevos lenguajes antitéticos como Rust y Swift emergentes. Algunas personas simplemente no aprenden).

Así que elige tu opción. Los mejores idiomas de hoy para escribir software masivo son Go (estáticamente tipado; pocos conceptos clave) y Smalltalk (tipeado dinámicamente; pocos conceptos clave). Es muy, muy difícil de superar, pequeño, simple, fácil de aprender, fácil de usar, claro, legible y potente.

Vea la respuesta de Richard Kenneth Eng a ¿Por qué no se ha creado un lenguaje tan poderoso como C / C ++ o Java con una sintaxis más fácil?

Esa es una pregunta muy cargada que implica muchas dinámicas. Esta pregunta es demasiado amplia y debería ser más específica, ya que los diferentes proyectos de software grandes tienen esencialmente requisitos y necesidades diferentes.

En general, la respuesta tiende a ser un híbrido de soluciones en múltiples plataformas.

Por ejemplo, ¿qué sucede si tiene un servicio web como, por ejemplo, un servicio Fantasy Football? Tiene el código web, el código del servidor, los códigos del cliente en múltiples plataformas, que en este caso podrían ser Java / PHP / Python / Ruby, luego Objective-C / Swift, Android Java para clientes móviles y finalmente HTML5 / CSS / Desarrollo híbrido para web. No existe un lenguaje o solución de bala de plata para Big Software Projects. En soluciones empresariales eficaces, utiliza un conglomerado de muchos idiomas diferentes, según la necesidad y el alcance.

¿Qué pasa si tienes un gran proyecto de juego? ¿Qué pasaría si tuviera que agregar un servidor o servidores de middleware, servidores de bases de datos? ¿Qué pasaría si hubiera aprendizaje automático involucrado u otros factores? Claro que puede hacerlo en C ++ o Java, pero una verdadera solución empresarial implicaría mucho más.

Es difícil cuantificar KLOC o líneas de código en un “mejor lenguaje de programación” para grandes proyectos, porque no hay una respuesta o solución “garantizada” sin saber más sobre dicho proyecto en cuestión.

Basado en los principios de codificación de software de diseño comunes y deseados, sea cual sea el lenguaje que sea el gran proyecto, es bueno mantenerlo altamente modularizado, y debe tener varios puntos finales para que cada módulo pueda comunicarse entre sí sin depender mucho de uno determinado.

En última instancia, para responder a esta pregunta, debe especificar más en profundidad lo que implica este gran proyecto antes de que cualquiera de nosotros pueda brindarle una evaluación adecuada.

Los grandes proyectos deben ser no monolíticos. Por lo tanto, el proyecto de 100K generalmente consta de 10 módulos de 10K cada uno. Es discutible qué es exactamente “módulo”, pero se entiende la idea general. Si necesita depurar todo el proyecto LOC de 1M, las instalaciones de idiomas no ayudan mucho.

Por lo tanto, tiene varios módulos y cada uno tiene una API, otros módulos usan esta API y, de lo contrario, son independientes entre sí. Si esto se hace bien, casi cualquier idioma funcionará.

Las herramientas que proporcionan los idiomas (como la escritura estática, el depurador, la capacidad de ver los volcados de memoria fácilmente) ayudan, pero no permiten escalar proyectos de 1K a 1M LOC por su cuenta. Es la modularidad lo más importante.

Hay características que ayudan o evitan la creación de proyectos modulares con un lenguaje específico, pero en general depende de la habilidad del desarrollador.

Para ser específicos, todo depende de los requisitos del proyecto.

Para la aplicación web, la GUI está diseñada y desarrollada básicamente en Java (rentable, ya que es de código abierto) o .net (soporte adicional de Microsoft).

Para aplicaciones móviles, se prefiere básicamente Java (complemento ADT – kit de herramientas de desarrollo de Android).

Para la aplicación del sistema, C ++ o VC ++ según los requisitos.

El backend generalmente está en Oracle o MySQL.

Es realmente una pregunta sin sentido.

En primer lugar, la mayoría de los proyectos grandes usarán varios idiomas: es probable que comience con componentes grandes (por ejemplo, DBMS, varios servidores, tal vez una plataforma), así como algunas bibliotecas y SDK que sean más apropiados para su aplicación. De inmediato, estos incluirán varios idiomas, que tendrá que usar si está adaptando o extendiendo esos componentes (por ejemplo, SQL, procedimientos integrados para su base de datos, un módulo apache). Si proporciona una interfaz web, agregue HTML y JavaScript. Si su sistema involucra algún controlador de dispositivo, probablemente escribirá algo de c, tal vez algún código de ensamblaje.

Luego está la cuestión del entorno objetivo. Si su sistema se implementa en un entorno de tiempo de ejecución existente, eso impondrá algunas restricciones.

Y luego están las herramientas: la elección de idioma para el código escrito localmente puede estar determinada por la cadena de compilación en uso por su organización o la organización de su cliente.

De lo que se trata realmente es de qué idioma es el mejor, para cada componente de su sistema, dentro de un conjunto de opciones generalmente bastante limitado.

Si se trata de un gran proyecto industrial, probablemente se verá obligado a utilizar los lenguajes de PLC asociados (escalera, lista de instrucciones, bloque de funciones) y entornos SCADA implicados por el hardware.

Si se trata de una gran base de datos de tipo gubernamental, con ejecuciones nocturnas y manejo de lotes, el tipo de lenguaje de procedimientos más antiguo podría dominar, o algo así como el rubí sobre rieles.

Si se trata de una base de datos en tiempo real, pero me entiendes. Caballos de carreras.

Con salarios que oscilan entre Rs. 111,389 hasta Rs. 722,959 no se puede evitar admirar el potencial del mercado para los programadores de software y seguir analizando el mismo. Análisis de los factores que ayudan a facilitar la transición en el mercado Los lenguajes de programación más importantes ¡Haga clic aquí! del desarrollo de software, es necesario, por ejemplo: uno debe investigar todos los cursos potenciales que los ayudarán a abordar una amplia gama de oportunidades profesionales, por lo tanto, también debe admirar el hecho de que la programación es la única forma de desarrollar la cartera y, por lo tanto, seguir desarrollando las carreras.

Los programadores de software pueden ganar remuneraciones que son exponencialmente más altas que las de sus otras profesiones. La escasez de competencia técnica es alarmante y la ausencia de factores de motivación es aún mayor. El lado positivo de esta nube gris se limita al hecho de que esto significa que las compañías goliath están en una búsqueda desesperada de profesionales eficientes con un conjunto de habilidades refinadas.

También se debe considerar la posibilidad de emprender un emprendimiento empresarial; Hoy, millones de profesionales y graduados tienen como objetivo abrirse camino hacia el mundo independiente. Las oportunidades fiscales de las cuales superan incluso la de los contratos profesionales a tiempo completo. Incluso teniendo en cuenta las empresas no técnicas, los programadores encuentran constantemente oportunidades en organizaciones que están actualizando e implementando técnicas de vanguardia en sus operaciones.

Después de considerar esto, uno no puede ser ajeno a los beneficios de las afiliaciones a cualquiera de las organizaciones de décadas y siglos, que tienen su propia presencia histórica que proporciona a un individuo un sentido de pertenencia y aumenta su importancia. Los programadores de software de hoy están encontrando oportunidades de carrera en empresas que están haciendo transiciones de culturas y entornos organizacionales tradicionales a la modernización y la globalización. Esta es la razón por la cual los programadores están avanzando para refinar y actualizar sus conjuntos de habilidades. En este escenario, es obvio que para los programadores, es y siempre será un mercado de vendedores, con oportunidades a su disposición.

Realmente depende del proyecto.

Si es un juego de computadora de gran presupuesto, por ejemplo, entonces probablemente necesitarás C ++.

Para el software empresarial, Java o C # son los más solicitados.

Realmente depende del proyecto, pero usaría un lenguaje estáticamente escrito cada vez para cualquier cosa que se parezca a un proyecto grande.

Eso significa que para mí sería Java o C #, o tal vez Go.

Sin embargo, realmente depende del proyecto, incluso podría querer darle una oportunidad a D, o tal vez Scala.

Personalmente, no consideraría un lenguaje dinámico para nada que se acerque a 100 KLOC.