Soy bastante fluido en C / C ++, y puedo manejar los diversos lenguajes de scripting (awk / sed / perl). Empecé a usar Python mucho más porque combina algunos de los aspectos ingeniosos de C ++ con las capacidades de scripting de awk / sed / perl.
Pero, ¿por qué hay tantos lenguajes de programación diferentes? Supongo que todos estos idiomas pueden hacer las mismas cosas, entonces, ¿por qué no limitarse a un solo idioma y usarlo para programar computadoras? En particular, ¿hay alguna razón por la que deba conocer un lenguaje funcional como programador de computadoras?
Algunas lecturas relacionadas:
programming-languages
Suresh
fuente
fuente
Respuestas:
Los lenguajes de programación evolucionan y se mejoran con el tiempo (innovación).
Las personas toman ideas de diferentes idiomas y las combinan en nuevos idiomas. Algunas características se mejoran (mecanismos de herencia, sistemas de tipos), algunas se agregan (recolección de basura, manejo de excepciones), algunas se eliminan (
goto
declaraciones, manipulaciones de puntero de bajo nivel).Los programadores comienzan a usar un lenguaje de una manera particular que no es compatible con ninguna construcción de lenguaje. Los diseñadores de idiomas identifican tales patrones de uso e introducen nuevas abstracciones / construcciones de lenguaje para soportar tales patrones de uso. No hubo procedimientos en lenguaje ensamblador. Sin clases en C. Sin manejo de excepciones en (++) C ++. No hay una forma segura de cargar nuevos módulos en los primeros idiomas (fácil en Java). Sin hilos integrados (fácil de usar en Java).
Los investigadores piensan en formas alternativas de expresar cálculos. Esto condujo a Lisp y a la rama funcional del lenguaje del árbol del lenguaje, Prolog y la rama de programación lógica, Erlang y otros modelos de programación basados en actores, entre otros.
Con el tiempo, los diseñadores / investigadores del lenguaje llegan a comprender mejor todas estas construcciones, y cómo interactúan, y diseñan lenguajes para incluir muchas de las construcciones populares, todas diseñadas para trabajar juntas sin problemas. Esto da como resultado lenguajes maravillosos como Scala, que tiene objetos y clases (expresados usando rasgos en lugar de herencia simple o múltiple), características de programación funcional, tipos de datos algebraicos integrados muy bien con el sistema de clases y la coincidencia de patrones, y concurrencia basada en actores.
Los investigadores que creen en los sistemas de tipo estático se esfuerzan por mejorar su expresividad, permitiendo cosas como las clases genéricas escritas en Java (y todas las cosas maravillosas en Haskell), para que un programador obtenga más garantías antes de ejecutar un programa de que las cosas no van a ir mal. Los sistemas de tipo estático a menudo imponen una gran carga sobre el programador (tecleando los tipos), por lo que se han realizado investigaciones para aliviar esa carga. Los lenguajes como Haskell y ML permiten al programador omitir todas las anotaciones de tipo (a menos que estén haciendo algo complicado). Scala permite al programador omitir los tipos dentro del cuerpo de métodos, para simplificar el trabajo del programador. El compilador infiere todos los tipos faltantes e informa al programador de posibles errores.
Finalmente, algunos idiomas están diseñados para admitir dominios particulares. Los ejemplos incluyen SQL, R, Makefiles, el lenguaje de entrada Graphviz, Mathmatica, LaTeX. Integrar las funcionalidades de estos lenguajes en lenguajes de propósito general (directamente) sería bastante engorroso. Estos lenguajes se basan en abstracciones específicas de su dominio particular.
Sin la evolución en el diseño del lenguaje de programación, todos seguiríamos usando lenguaje ensamblador o C ++.
En cuanto a conocer un lenguaje de programación funcional : los lenguajes funcionales le permiten expresar cálculos de manera diferente, a menudo de manera más concisa que el uso de otros lenguajes de programación. Considere la diferencia entre C ++ y Python y multiplíquelo por 4. Más en serio, como ya se mencionó en otra respuesta, la programación funcional le brinda una forma diferente de pensar sobre los problemas. Esto se aplica a todos los demás paradigmas; algunos se adaptan mejor a algunos problemas y otros no. Esta es la razón por la cual los lenguajes de paradigmas múltiples se están volviendo más populares: puede usar construcciones de un paradigma diferente si lo necesita, sin cambiar el idioma y, más desafiante, puede mezclar paradigmas dentro de una sola pieza de software.
fuente
tldr: No hay lenguaje de bala de plata.
Espero que no me demanden, pero aquí hay una foto de una de las presentaciones de Stanford.
Cuando decide elegir un idioma, puede elegir solo 2 de estas 3 características .
Y es por eso que la gente está triste y quiere inventar un superlenguaje que cubra a los 3.
En realidad, hay una gran lista de requisitos (algunos de ellos se pueden ver en otras respuestas) pero solo agregan detalles a las características principales. Además, existen razones históricas y políticas para preferir un idioma sobre otro.
Las combinaciones de tales factores producen un nuevo lenguaje.
( Y he escuchado que todo buen programador debe crear su propio lenguaje nuevo )
fuente
El mundo está lleno de cosas que tienen muchas variaciones diferentes: procesadores de texto, automóviles, diseños para el hogar, bebidas, dulces, bolígrafos, palas, etc. Las razones por las que tenemos tantos pueden resumirse en algunos principios:
Ingrese a cualquier tienda de suministros de oficina y mire la sección "instrumento de escritura": hay cientos de variedades de bolígrafos. Todos hacen aproximadamente lo mismo: entregar tinta a una superficie de escritura. Pero cada bolígrafo que se ve a la venta está allí porque es uno de los tres motivos anteriores.
La evolución de los bolígrafos continuará ya que ningún producto se ajusta a las necesidades de cada usuario. Algunas plumas son baratas y desechables, algunas son caras y están construidas con materiales de alta calidad; algunos usan geles, algunos usan tinta, algunos usan pigmentos; algunos tienen tapas desenroscables, algunos no tienen tapas en absoluto; barriles anchos, barriles estrechos, barriles redondos, barriles cuadrados; corto largo; rojo, blanco, negro, azul Etcétera etcétera.
Pero basta de bolígrafos.
Nuestra miríada actual de lenguajes de programación se remonta a los primeros: los códigos de máquina numéricos para las primeras computadoras en la década de 1940. Primitivo, difícil de usar y laborioso para ingresar a la computadora, pero hicieron el trabajo. No pasó mucho tiempo después de que los programadores asignaron palabras mnemotécnicas (como AGREGAR, LLAMAR, CARGAR) a los códigos de máquina, dando origen a la clase de idiomas llamados "lenguajes de ensamblaje".
Las diferentes arquitecturas de procesador requerían diferentes códigos mnemónicos, dependiendo de las características específicas de las máquinas subyacentes. Tener en cuenta estas diferencias significaba inventar diferentes lenguajes de ensamblaje.
(Quizás a estas alturas puedas ver a dónde va esto ...)
Los programadores observaron sus programas de lenguaje ensamblador y vieron patrones: las mismas secuencias de instrucciones se usarían para formar bucles, condicionales, asignación de variables, llamadas a funciones, etc. Así nacieron los lenguajes de programación procesal. Estos idiomas encapsulan grupos de instrucciones bajo términos generales como "if", "while", "let", etc.
De un análisis matemático de la programación de computadoras surgieron los lenguajes funcionales, una forma completamente nueva de ver la computación. No mejor, no peor, solo diferente.
Y luego está orientado a objetos, estáticamente tipado, tipado dinámicamente, enlace tardío, enlace temprano, bajo uso de memoria, alto uso de memoria, paralelizable, idiomas para usos específicos, y así sucesivamente.
En última instancia, tenemos diferentes lenguajes de programación porque queremos diferentes lenguajes de programación. Cada diseñador de idiomas tiene sus propias ideas sobre cómo se verá y funcionará su lenguaje "soñado". La diversidad es algo bueno .
fuente
Los lenguajes de programación funcional generalmente se basan en el modelo de computación diferente (pero equivalente en potencia): cálculo lambda . Hay algunos lenguajes sin tipo (con mecanografía similar a Python) como LISP, Scheme (utilizado en el libro / curso de Estructura e Interpretación de Programas de Computación ampliamente reconocible ) y lenguajes de tipo estático como Haskell, ML, F #.
SICP es lo que me llevó a la programación funcional, pero otras personas recomiendan este artículo de John Hughes y esta entrevista con él.
Microsoft está impulsando la programación funcional, por ejemplo, que ha incluido F # (su lenguaje funcional para .NET) en VS2010 y 11; También emplean a algunos desarrolladores de Haskell en MSR, IIRC.
Tenga en cuenta que también hay algunos lenguajes de programación funcionales que no son cálculos lambda, como Refal , que se basa en la coincidencia y reescritura de patrones.
Debido a que el nivel de abstracción en los lenguajes funcionales es diferente, su actitud para resolver problemas cambia cuando utiliza técnicas de programación funcional. Algunos dicen que puede hacerte un mejor programador en general.
fuente
Si. Porque Haskell cambió mi forma de pensar. Podría cambiar tu forma de pensar también.
Historia: Solía pensar que puedo aprender cualquier lenguaje de programación en un día. Un día empecé Haskell. Terminé todo lo que vino antes de las mónadas en medio día. Ahora ha pasado un año desde ese día y todavía estoy irremediablemente atrapado en Monads.
Leer:
Wiki de idiomas y pensamiento
La notación como herramienta para el pensamiento de Kenneth E. Iversion, conferencia del Premio Turing
La notación es una herramienta para el pensamiento. Necesitamos diferentes anotaciones a medida para lidiar con diferentes pensamientos cómodamente. Entonces creamos nuevos idiomas.
Además, lee . ;-)
fuente
Difícilmente podría haber un programador que en algún momento no se haya sentido frustrado por las limitaciones del lenguaje que estaban usando y decidió rascarse la picazón. Así nace un nuevo lenguaje, o dialecto de uno existente.
Abadi y Cardelli en "A Theory of Objects" desarrollan una familia completa de lenguajes de programación a partir de bases orientadas a objetos. Demuestran que la programación funcional es un caso especial de OO pero no a la inversa.
Inventar algo nuevo es divertido, es por eso que las personas tienen más probabilidades de crear otro idioma que contribuir a mejorar uno existente. Por supuesto, hay custodios de idiomas que no aceptan cambios en su visión. El mejor ejemplo es el abismo entre los partidarios de Common Lisp y Scheme.
fuente
Como otros ya han dado buenas respuestas a esta pregunta, solo citaré a Alan Perlis.
Además, http://weblog.raganwald.com/2004/10/beware-of-turing-tar-pit.html , es una buena lectura.
fuente
¿Por qué hay tantos países en el mundo? ¿No sería más fácil si tuviéramos 5 o 6 superpoderes, o incluso un reino universal de la Tierra? Es fácil argumentar por qué no sería mejor --- para empezar, la competencia en diferentes países puede conducir al progreso, y desde el punto de vista de la democracia, los derechos humanos, etc., muchos países pueden ser mejores que uno: - Pero esto no explica por qué tenemos muchos países. Solo explica por qué muchos países serían mejores .
Del mismo modo, puedes preguntar, ¿por qué tantos lenguajes humanos diferentes? Polaco, árabe, mandarín ... ¿No sería más fácil si hubiera un solo idioma? Podría argumentar de cualquier manera, pero esas serían razones por las cuales sería mejor si la vida fuera de una manera u otra. No explicaría las causas detrás de que haya tantos lenguajes humanos diferentes.
La cuestión es que hay muchas personas en el planeta, y todos estamos haciendo lo nuestro, todos tenemos nuestras opiniones, todos queremos estar a cargo y tener nuestro propio país o lenguaje de programación, y a menudo pensamos que sabemos mejor que otros, o al menos no se molestan en entender lo que otros tienen para ofrecer.
Lea esta publicación de blog muy esclarecedora, ¿Por qué tantos frameworks web de Python? Aparentemente, hay alrededor de 50 marcos web en Python. Esto es simplemente ridículo; no hay absolutamente ninguna razón racional sensata para eso. Pero el autor de la publicación responde: hay tantos frameworks web de Python porque es muy fácil crear uno . No necesita una razón racional para que haya más marcos web de Python o más lenguajes de programación. Las personas seguirán creando nuevas porque no saben lo que ya está disponible, o porque esperan poder ganar dinero, ¡o simplemente porque crear cosas nuevas es divertido!
Permítanme describir un ejemplo personal. Hace unos 10 años estaba escribiendo un código C ++ para una empresa finlandesa. Ya sabes, en Finlandia tienen esos enormes camiones que, bueno, viajan largas distancias y entregan muchas cosas de un lugar a otro. Estoy seguro de que también hay camiones en Estados Unidos. Entonces, un problema típico es asegurarse de que todos los 24 neumáticos estén bien. Por supuesto, existe una tecnología probada en el tiempo: la presión y la temperatura se pueden monitorear, y los cambios drásticos indicarían que algo salió mal. Por supuesto, toda esta tecnología es patentada, patentada, con todas las implicaciones. (Recuerde: ¡se supone que las patentes promueven la innovación!) Por lo tanto, esta empresa finlandesa quería detectar el estado de los neumáticos por ... sonido. La idea era instalar micrófonos para escuchar el sonido proveniente de todos los neumáticos y hacer algún tipo de magia de procesamiento de señal en esos sonidos para ver si uno de los neumáticos tenía algún tipo de problema, y estaba haciendo un prototipo de esta locura (Incluso tenían un laboratorio dedicado para grabar sonidos de muestra; una vez que me enviaron un impresionante video de una ocasión en particular cuando lograron explotar un neumático de muestra después de someterlo a 5 o 10 toneladas de presión y calentarlo a una temperatura ridícula .) Claramente, una vez más, no había una razón racional particular para este desarrollo, excepto que fue divertido y algunas personas querían ganar dinero. Así que también comprenda que hay muchas razones por las cuales alguien comenzaría a desarrollar un nuevo lenguaje de programación. No hay necesidad ni posibilidad de aprenderlos todos. (Incluso tenían un laboratorio dedicado para grabar sonidos de muestra; una vez que me enviaron un impresionante video de una ocasión en particular cuando lograron explotar un neumático de muestra después de someterlo a 5 o 10 toneladas de presión y calentarlo a una temperatura ridícula .) Claramente, una vez más, no había una razón racional particular para este desarrollo, excepto que fue divertido y algunas personas querían ganar dinero. Así que también comprenda que hay muchas razones por las cuales alguien comenzaría a desarrollar un nuevo lenguaje de programación. No hay necesidad ni posibilidad de aprenderlos todos. (Incluso tenían un laboratorio dedicado para grabar sonidos de muestra; una vez que me enviaron un impresionante video de una ocasión en particular cuando lograron explotar un neumático de muestra después de someterlo a 5 o 10 toneladas de presión y calentarlo a una temperatura ridícula .) Claramente, una vez más, no había una razón racional particular para este desarrollo, excepto que fue divertido y algunas personas querían ganar dinero. Así que también comprenda que hay muchas razones por las cuales alguien comenzaría a desarrollar un nuevo lenguaje de programación. No hay necesidad ni posibilidad de aprenderlos todos. una vez que me enviaron un impresionante video de una ocasión en particular cuando lograron explotar un neumático de muestra después de someterlo a 5 o 10 toneladas de presión y calentarlo a una temperatura ridícula.) Claramente, una vez más, no hubo un racional particular razón de este desarrollo, excepto que fue divertido y algunas personas querían ganar dinero. Así que también comprenda que hay muchas razones por las cuales alguien comenzaría a desarrollar un nuevo lenguaje de programación. No hay necesidad ni posibilidad de aprenderlos todos. una vez que me enviaron un impresionante video de una ocasión en particular cuando lograron explotar un neumático de muestra después de someterlo a 5 o 10 toneladas de presión y calentarlo a una temperatura ridícula.) Claramente, una vez más, no hubo un racional particular razón de este desarrollo, excepto que fue divertido y algunas personas querían ganar dinero. Así que también comprenda que hay muchas razones por las cuales alguien comenzaría a desarrollar un nuevo lenguaje de programación. No hay necesidad ni posibilidad de aprenderlos todos.
Por supuesto, todo esto solo se aplica si crees en la evolución. Si crees en alguna forma de diseño inteligente, que Dios también ha creado todos los lenguajes de programación, entonces tendrías que encontrar un propósito detrás de esta multitud. Quizás Dios quería promover la competencia entre diferentes lenguajes de programación para que el arte del desarrollo de software alcanzara su estado más alto posible.
En conclusión, hay muchas personas, muchos países, muchos lenguajes de programación. ¡Esto es solo la naturaleza de la vida! Seamos agradecidos por eso: esto solo significa que el campo de la programación / informática está muy vivo y floreciente.
fuente
¿Por qué hay tantos lenguajes de programación diferentes?
Porque hay que tomar decisiones:
Afortunadamente, las dos últimas son dicotomías no esenciales, es decir, uno podría poner ambas opciones en un solo lenguaje de programación. Pero, las tres primeras dicotomías dan lugar a 8 combinaciones. Entonces, incluso en un mundo ideal, habría al menos 8 lenguajes de programación. Cuando profundice, habrá más opciones de diseño con matices dentro de paradigmas particulares. Por ejemplo, si uno decide hacer un lenguaje tipado estáticamente basado en clases, hay diferentes formas de diseñar el sistema de tipos. Todavía no hay una forma canónica de hacerlo. Si uno decide hacer un lenguaje de programación concurrente, hay varias formas de representar la concurrencia: semáforos, regiones críticas condicionales, monitores, transmisión de mensajes (síncrono vs. asíncrono). Dentro del mensaje sincrónico que pasa,
Parte de la investigación que hacemos en la teoría del lenguaje de programación está dedicada a resolver estas dicotomías. Por ejemplo, trabajé para resolver la dicotomía entre la programación imperativa y funcional en un documento llamado " Asignaciones para lenguajes aplicativos " y nuestro método ahora ha sido adoptado por Haskell, convirtiéndolo en un lenguaje funcional e imperativo. Eso no significa que la dicotomía esté completamente resuelta. Un programador de Haskell todavía se enfrenta a la elección de resolver su problema funcional o imperativamente. Luca Cardelli trabajó en la resolución de la dicotomía de escritura estática vs. dinámica. Paul Levy trabajó en la resolución de la dicotomía llamada por valor vs. llamada por nombre . No todos estos resultados aún se han implementado en lenguajes de programación de la vida real.
Si todos estos idiomas pueden hacer lo mismo, ¿por qué no limitarse a un solo idioma y usarlo para programar computadoras?
Porque para un programador en el mundo real, no es suficiente hacer algo. También importa cómo se hace. Cuando se hace correctamente, el dominio del problema se representa fielmente en el programa, se conserva la modularidad del problema y los programas se vuelven fáciles de entender, modificar y mantener. Todas estas cosas afectan el costo del desarrollo y mantenimiento del programa. También afectan la confiabilidad y seguridad del software.
Por ejemplo, muchas personas usan un programa llamado " Quicken " para cuentas financieras. El programa original se desarrolló en alguna versión interna de Visual Basic, y fue bastante bueno. Sin embargo, ha sido difícil extenderlo y mantenerlo. A lo largo de los años, a medida que la compañía intentó ampliarlo para nuevas funciones, el programa se volvió cada vez más problemático con millones de clientes insatisfechos en todas partes. Probablemente se beneficiarán de la reingeniería del software en un lenguaje de programación orientado a objetos fuertemente tipado.
En particular, ¿hay alguna razón por la que deba conocer un lenguaje funcional como programador de computadoras?
Históricamente, Godel, Kleene e Church inventaron la "programación funcional" siguiendo la práctica matemática estándar, y Turing inventó la "programación imperativa" para precisar la noción de computación mecánica. Antes de Turing, no hay evidencia de que las matemáticas hayan analizado ideas de programación imperativas. (Si bien todos los algoritmos matemáticos tradicionales se expresaron en un "estilo imperativo", su contenido esencial seguía siendo funcional). Por lo tanto, la programación imperativa es muy nueva para la civilización humana, y sus matemáticas aún no se comprenden muy bien. La razón número 1 por la que todos deberían conocer algo de programación funcional es entender cómo la programación puede ser matemática. (No estoy admitiendo que la programación imperativa no sea matemática, que es lo que los programadores funcionales te harían creer. Pero estaría de acuerdo en que, con el estado actual del arte, todavía no sabemos cómo hacer matemáticamente una programación imperativa. Muchos de nosotros estamos trabajando precisamente en ese problema).
fuente
Puedes verlo como evolución.
Al principio, las computadoras se programaban puramente con códigos binarios. Después de eso se introdujeron los mnemotécnicos y se introdujeron los lenguajes de ensamblaje, que dependen principalmente de la CPU utilizada.
Después de que se introdujeron los lenguajes de nivel superior (nivel 3) (Pascal, C, ADA, Cobol), algunos muy genéricos (como C), algunos más adecuados para el manejo de datos (Cobol), algunos para cálculos (Fortran).
Después de eso surgieron los idiomas de cuarto nivel, como los lenguajes lógicos (como Prolog). Los idiomas más genéricos son sucesores de idiomas de tercer nivel; algunos de ellos son Java, C #.
También vemos lenguajes específicos para internet / web, como ASP.NET, PHP.
Y lenguajes para un dominio específico (DSL), que en su mayoría funcionan junto con un lenguaje genérico.
Luego hay idiomas para que los niños aprendan programación, como LOGO.
También idiomas para escribir código rápidamente, como Python, Ruby, etc., idiomas para manejar XML (XSLT).
Y probablemente haya olvidado muchos idiomas e incluso categorías de idiomas.
fuente
otras respuestas son buenas, agregarán algunos ángulos nuevos. ¡Mientras DC escribe, los lenguajes evolucionan como los lenguajes humanos reales! y toman prestados conceptos y sintaxis el uno del otro nuevamente como lenguajes humanos reales. en otras palabras, también hay un estudio bastante real de la etimología de los lenguajes de computadora.
Esto también significa que ha habido una larga historia y una línea de tiempo que comenzó principalmente alrededor de la década de 1930 con el cálculo lambda .
Existe una fuerte interacción / sinergia / simbiosis entre la teoría y la aplicación con lenguajes de programación. Se inventan nuevas aplicaciones que conducen a nuevas teorías y viceversa. Un lenguaje de programación es, en muchos sentidos, un puente entre la teoría y la aplicación .
Un interesante caso de estudio de la historia es Fortran. no se conoce bien, pero las versiones anteriores de Fortran (principalmente antes de Fortran77) tenían una gramática ambigua . esto significa que el compilador podría legítimamente "interpretar" / compilar legítimamente el compilador de diferentes maneras porque había múltiples "interpretaciones" válidas (este no es el mismo sentido técnico de los lenguajes "interpretados").
así que la teoría sobre las gramáticas formales se estaba desarrollando alrededor de la época en que se inventó Fortran, y fue una pequeña crisis cuando se descubrió el problema de la ambigüedad del lenguaje. La sintaxis de Fortan se reformuló para evitar esta ambigüedad y los lenguajes posteriores tuvieron más sensibilidad a la ambigüedad gramatical en su diseño. OOP es también un ejemplo muy importante / principal de un concepto / avance teórico en lenguajes de programación que "impacta" u "ondula" en muchos lenguajes existentes, transformándolos.
Otros estudios de caso son la invención de nuevas tecnologías. por ejemplo, la invención de la base de datos relacional ha tenido un gran impacto en los lenguajes de computadora, por ejemplo, con SQL e interfaces de lenguaje de computadora (por ejemplo, en Java, "JDBC"). asimismo, la red mundial con un impacto aún más masivo. Parecía haber una explosión de idiomas programada alrededor del boom de las puntocom que coincidió en gran medida con el crecimiento temprano de la WWW y podría compararse con explosiones evolutivas .
También parece haber una larga tendencia al alza en los nuevos lenguajes de programación junto con el enorme poder de procesamiento exponencialmente creciente de la ley Moores, que algunos piensan que puede estar disminuyendo.
Las tendencias actuales de larga data en los lenguajes de programación parecen estar orientadas hacia Big Data y Paralelización, por ejemplo, con MapReduce . También existe un interés actual en los cierres .
Otro aspecto clave de los lenguajes es que representan niveles crecientes de abstracción . se basan en abstracciones de nivel inferior para crear abstracciones de nivel superior (similar a una pirámide). de esta manera, el progreso de la evolución del lenguaje informático es probablemente interminable y podemos estar relativamente seguros de que se seguirán inventando nuevos e importantes en el futuro. Esto es probablemente análogo a un concepto similar en psicología llamado fragmentación : dicho de manera general, construir conceptos mentales de nivel superior a partir de bloques de construcción de nivel inferior.
¡cualquiera que haya estudiado muchos lenguajes de computadora debe admitir que se puede observar una mentalidad de rebaño por la cual algunos aspectos de ellos resultan ser modas sobrevaloradas, es decir, no tan críticas como se recomienda, o incluso desaparecer (en uso) con el tiempo! algunas de las ideas / cambios centrales permanecen pero la (sobre) exageración se desvanece. en este sentido, los lenguajes de programación también están de moda . En mi opinión, dos casos de la última mitad de la década que son realmente útiles pero fueron sobrevalorados:
cada vez más , se puede observar una auto-similitud en muchos idiomas principales, de modo que todos tienden a converger hacia la implementación de muchas características similares a su manera, es decir, como en los cuadros de comparación de productos que "marcan" muchas características en una cuadrícula.
fuente
No lo eran, es solo un truco de marketing: si haces que el lenguaje se parezca un poco a "C", eso reduce la barrera aparente de entrada.
Algunos que no tienen influencia de C: SQL, Pascal, Delphi, FORTRAN, COBOL, Ada, PowerBuilder, HyperTalk, Lisp, Simula, FOCAL, BASIC, PL / I, Algol, Algol-68, SNOBOL, Modula, Visual BASIC, Tutor, logotipo, Forth, DIBOL, Helix, AppleScript, Python, Erlang, Ruby, Pick, inglés, RPG, PL / SQL, ASP, Prolog, SmallTalk, Perl, bash, Wand BASIC, REXX, lenguaje por lotes DOS.
Los que se parecen un poco a C, pero tienen muy poco en común: JavaScript, Java, C #, (posiblemente) Objective-C.
Todo es marketing, Java, C ++ y JavaScript se parece un poco a C, pero difícilmente podría ser más diferente bajo las cubiertas.
fuente