tutorial tipos tiobe programacion nivel lenguajes lenguaje indice descargar caracteristicas bajo alto programming-languages survey

programming-languages - tipos - ruby tutorial



¿Qué lenguajes de programación y características del lenguaje tienen menos de 10? (17)

¿Qué hay de F # :). También hay toneladas de nuevos lenguajes en desarrollo por desarrolladores individuales. Como scala, jruby, groovy, boo, etc.

Para que un idioma lo capte, realmente necesita un gran respaldo de una gran empresa, por lo que nos quedaremos atrapados con lo que obtuvimos por un tiempo. Aunque Sun y MS están invirtiendo mucho para que sus plataformas (JVM, CLR) estén más abiertas a estos idiomas. Los valores predeterminados serán Java y C # por ahora, pero solo el tiempo puede decir.

Parece que hay muchos lenguajes ''nuevos'', pero en realidad parece que la mayoría de los populares, no experimentales, ya están en la adolescencia y la verdadera corriente principal es más antigua que la mayoría de los programadores jóvenes. Ahora acabo de recordar este hecho evidente cuando me di cuenta de que incluso el lenguaje "moderno" de Ruby tiene 15 este mes (febrero de 1994). Mientras que cosas como Haskell, eso está en la lista de ''aprender'' de todos es incluso más antiguo que eso.

Pensando en ello, el único lenguaje realmente nuevo, de uso común, podría pensar que eso es menos de 10 es C #. Pero incluso C # realmente no tiene nuevas características, aunque ha recogido algunas de las mejores características de sus predecesores.

Entonces, me pregunto qué nuevos lenguajes, y sus nuevas características / ideas correspondientes son menores de 10 en este momento. ¿Algo que probablemente sea grande en 10 años a partir de ahora? ¿Alguna nueva característica del lenguaje que esperar? ¿O ya hemos terminado?

Aparentemente no hay nada realmente nuevo que no sea un híbrido o refinamiento. Tal vez LOLCODE porque está diseñado para ser absurdo por encima de todo, pero incluso cosas como Brainf * ck y WhiteSpace son básicamente antiguos lenguajes ensambladores basados ​​en stack.

¿Hemos llegado a la era enciclopédica de los lenguajes de programación?


Diría que las últimas incorporaciones de C # como LINQ, los métodos de extensión, las expresiones lambda y el resto son relativamente nuevos. Si no son grandes en este momento, lo serán.

ASP.NET MVC aunque no es una característica de idioma va a ser grande (estoy casi seguro), aunque sé que muchos nunca lo aceptarán.


El lenguaje AgentSpeak (L) para programar agentes inteligentes. Está basado en Prolog (que es muy antiguo) pero hay algunas características muy específicas, y es completamente nuevo.

Puede consultar a un intérprete completo llamado Jason .


El lenguaje de programación D tiene menos de 10 años. Sus características únicas incluyen const transitivo (todo lo accesible desde un objeto const también es const), compilar la función de evaluación del tiempo y la capacidad de anotar funciones como puras y hacer que el compilador compruebe estáticamente los efectos secundarios visibles fuera de la función. También se incluye un sistema de plantillas que pone en jaque las plantillas C ++, los genéricos Java / C #, etc.

  1. Plantillas variables que "simplemente funcionan" para un número ilimitado de argumentos.
  2. Las cadenas, los números de coma flotante y los alias de función pueden ser parámetros de plantilla.
  3. La declaración static if , similar a lo que existe en papel en C ++ 0x, se implementa realmente y funciona.
  4. Mezclas de cadenas y plantillas, que permiten la inyección de código repetitivo arbitrario parametrizado en cualquier lugar de su fuente, y para la generación arbitraria de códigos de tiempo de compilación. En el caso extremo, Don Clugston lo utilizó para construir una biblioteca de matriz matemática que realmente analizara el código dado como literales de cadena en tiempo de compilación y generara un código de ensamblado en línea óptimo para estas operaciones, antes de la etapa de generación de código del compilador.
  5. Las estructuras se pueden representar como tuplas, lo que permite la iteración sobre sus campos. Esto permite una programación genérica interesante con estructuras.
  6. Ridículamente poderosa reflexión / introspección en tiempo de compilación. Una vez escribí una plantilla de función que podía copiar profundamente cualquier estructura, siempre y cuando no estuvieran implicados objetos de clase polimórficos en tiempo de ejecución (en los que la reflexión de tiempo de compilación simplemente no puede funcionar). Esto se hizo utilizando solo la reflexión de tiempo de compilación. No se utilizó información del tipo de tiempo de ejecución.

Los idiomas evolucionan No necesita necesariamente un nuevo idioma para obtener una nueva función de idioma. Como ejemplo, Haskell no es un idioma nuevo, pero sí tiene muchas características "nuevas", incluido STM.


Muchos de los lenguajes "nuevos" se dirigen a uno u otro VM bien ubicados, a saber, JVM o CLR. Permite concentrarse más en el diseño de la sintaxis y la "filosofía" que en la implementación (aprovechamiento de VM, GC, bibliotecas, etc. optimizados existentes).

Curiosamente, algunos lenguajes se dirigen a ambas plataformas, como el Lenguaje de Programación de Fans .

Otros lenguajes simplemente se traducen a otro idioma (generalmente C), por lo que dependen de algún compilador optimizado portátil o local para hacer un buen trabajo.

Encontré mucho interesante porque se dirige a varios idiomas / VM: JavaScript, Flash, NekoVM o incluso PHP.

Como otros dijeron, hoy es difícil encontrar conceptos realmente nuevos. En parte porque ya se han explorado muchas cosas, en parte porque muchos programadores son flojos y confusos si un nuevo idioma no usa una sintaxis familiar (vi muchas quejas de personas en la lista de correo de Lua, solicitando el uso de {y} en lugar de do / end - vea también quejas contra JavaFX que no es Java ...), ¡y mucho menos un nuevo concepto!


No creo que la innovación reciente haya estado inventando nuevas características. Ha estado haciendo que las viejas ideas estén disponibles (y prácticas) en las configuraciones principales. Las expresiones Lambda son un gran ejemplo de esto: antiguas como las colinas, pero la gran mayoría de los desarrolladores no las habrán encontrado antes de C # 3 y VB9.

Del mismo modo, dos características pueden haber existido independientemente antes, pero nunca en el mismo idioma. No me gustaría comenzar a reclamar qué combinaciones son nuevas, pero vale la pena considerarlas.

¿Es la naturaleza de los genéricos .NET "nuevos" por cierto? No conozco suficiente historia informática para decir, pero hay claras diferencias entre ella y los genéricos de Java (con borrado de tipo) o las plantillas de C ++ (donde la especialización es realmente un negocio en tiempo de compilación hasta donde yo sé, requiriendo fuente de la plantilla).


Ok, conocemos los Contratos de código desde Eiffel, así que son más de 20 años y Análisis de código por años y años, pero nunca había visto una combinación tan completa de Contratos de código, Análisis de código y Prueba de unidad como en c # 4.0 y Pex. Tal vez estoy equivocado e ignorante sobre otros idiomas y productos que ofrecían ese nivel de funcionalidad hace años, pero seguramente llamaría ese grado de ayuda hacia el software "libre de errores" una característica. Entonces, ¿es nuevo?


muchas ganas de Boo .

Boo es un lenguaje de programación orientado a objetos y de tipo estático en desarrollo activo desde 2003, que busca utilizar el soporte de Common Language Infrastructure para Unicode, internacionalización y aplicaciones web, al tiempo que usa una sintaxis inspirada en Python 1 y un enfoque especial en el lenguaje y extensibilidad del compilador Algunas características de la nota incluyen inferencia de tipo, generadores, métodos multimétodos, tipado de pato opcional, macros, cierres verdaderos, currying y funciones de primera clase.


Wikipedia tiene una buena línea de tiempo sobre la primera aparición de lenguajes de programación: muestra que hay varios idiomas que se parecen a los de 2000+, aunque creo que estos no son lenguajes ampliamente utilizados (¿todavía?).


Creo que el fraseo de la pregunta sugiere que no hay innovación, pero de hecho todo lo que se revela en la discusión aquí es que las innovaciones tardan décadas en convertirse en una corriente principal.

Si hubieras hecho esta pregunta hace 20 años cuando OO era una de las ''grandes cosas nuevas'' con C ++ y Smalltalk y otras cosas, la gente podría simplemente responder que eso era simplemente Simula (1967) reempaquetado. Pero en 1970, no creo que nadie hubiera considerado los objetos como "una gran innovación", sino que simplemente habrían sido "una interesante sensación sintáctica" en el lenguaje Simula. Con el tiempo, OO evolucionó, la gente reconoció cómo OO es natural para modelar / estructurar sistemas, se encontraron patrones de diseño, ... y ahora, hoy en día, una gran cantidad de idiomas simplemente dan OO ''por sentado''. Pero es difícil encontrar un momento en el que la gente diga ''OO fue una gran innovación'' porque cuando era nuevo, nadie apreciaba su alcance de influencia en el campo de la ingeniería de software, y para cuando su alcance era evidente, ya no era nuevo

Dentro de 20 años, tal vez todos los idiomas nuevos / populares tendrán una característica como ''clases de tipo'' de Haskell de hoy (es una característica excelente), pero ya es ''demasiado viejo'' para ser una innovación, aunque puede ser ''la próxima gran cosa''.

Entonces, sí, apuesto a que hay cosas nuevas bajo el sol, probablemente cientos, pero todas están en pequeños lenguajes experimentales y no apreciaremos la novedad hasta décadas después cuando las mejores ideas de hoy en día se refinan / prueban y hacen camino a la corriente principal.


El lenguaje E hizo accesible el pipeline de la promesa de peso ligero. Esta debería ser una idea crucial para la próxima revolución multinúcleo, ya que permite escribir código que se puede paralelizar fácilmente, tiene dependencias de bajo costo entre subprocesos de comunicación y esquiva todos los problemas estándar al administrar bloqueos y evitar un punto muerto. . Las ideas principales en E se han trasladado a una variedad de otros idiomas . E es parte de una larga (aunque algo oscura) línea de lenguajes de capacidades de objetos, que tiene algunas contribuciones muy importantes que hacer en robustez y seguridad del software. E tiene solo 10 años.


El lenguaje de programación azul muestra un gran potencial. Piensa "Python pero es más fácil de usar y extender".

No, no estoy diciendo que Blue sea mejor que Python, solo digo que está elaborando cerveza, es fácil de usar y (ya, después de solo un par de años) bastante estable. Ha estado creciendo en mí durante aproximadamente un año :)


El lenguaje de programación de Scala tiene menos de 10 años (creo que fue lanzado originalmente en 2001) y podría afirmarse que es el primero:

  • Lenguaje escalable del mundo real (por ejemplo, desde scripts e implícitos a actores y módulos). Digo mundo real porque algunos afirmarán que otros, comenzando por Lisp, fueron los primeros en llegar, pero creo que la compatibilidad con Scala en Java, las características orientadas a objetos, el tipo de sistema, etc. lo hacen diferente
  • La fusión del mundo real de la programación funcional y orientada a objetos (por ejemplo, tener funciones de orden superior, pero también el estado y el tipado estático). Estoy diciendo el mundo real otra vez porque, por ejemplo, si Oz es mayor, creo que la compatibilidad y el pragmatismo de Scala hacen la diferencia

OMeta tiene menos de 2 años y es un lenguaje para crear otros idiomas. En mi opinión, es más expresivo que los lenguajes como el próximo MGrammar de Microsoft.

La mejor idea que tiene es que puede crear idiomas de forma orientada a objetos (por ejemplo, podría crear un lenguaje de mashup de las gramáticas de Ruby y C #).

También es bueno que la sintaxis se vea casi idéntica a BNF y, por lo tanto, bastante legible.

Escribí más sobre esto aquí .


Powershell como idioma tiene menos de 10 años, por supuesto, no las características del idioma.


Ninguno , que he visto.

Claro, hay idiomas "nuevos" apareciendo todo el tiempo. Pero utilicé las comillas de miedo porque todos los ejemplos que se ofrecen habitualmente son:

  • reempaquetar (en otro idioma) ideas que han estado en Informática y Matemáticas por décadas, o
  • idiomas / técnicas que son más antiguos que eso, pero que recientemente fueron "descubiertos" por el mundo "dominante".

Para ejemplos concretos:

El trabajo de promover, popularizar, aplicar y refinar estas (y muchas otras) ideas importantes vale la pena. Pero eso no hace que esos usos sean verdaderamente innovadores.

Por supuesto, estaré encantado si alguien puede proporcionar un ejemplo de un concepto verdaderamente original en la programación que no existía hace diez años.