¿Qué son las generaciones cuarta y quinta del lenguaje de programación? ¿Hay más de ellos? [cerrado]

36

Como a menudo se clasifica a nivel escolar / universitario, los lenguajes de programación populares (C #, Java, C ++) son todos lenguajes de tercera generación (con un mayor nivel de abstracción de las partes físicas de la máquina). Además, los lenguajes ensambladores se clasifican como lenguajes de segunda y máquina como lenguajes de primera generación.

Inicialmente, pensaba que SQL debería considerarse un lenguaje de cuarta generación porque es más abstracto y está lejos de los detalles de los bucles y es más descriptivo.

Justo ahora descubrí que hay lenguajes de cuarta y quinta generación, pero ¿cuál es la base para que cualquier lenguaje o tecnología de programación se clasifique como lenguaje de cuarta o quinta generación?

Además, ¿hay idiomas de sexta o séptima generación también?

Ali
fuente
12
Oh, si solo las personas pudieran ponerse de acuerdo sobre lo que hace que un lenguaje de enésima generación sea n ... No hay ningún criterio que uno pueda realmente atar (excepto al afirmar que los idiomas de mayor generación se eliminan aún más del metal desnudo que el nivel inferior, en qué grado es no acordado).
Oded
55
¿Qué "generación" es C? ¿Puedes dar algunos ejemplos de idiomas de cuarta y quinta generación y decirnos qué hace a cada generación? Es decir, ¿qué criterios definen un lenguaje como generación 'n'?
Mawg
3
Por cierto, no creo que el concepto del lenguaje de la Xa generación sea realmente relevante.
Pieter B
55
Estoy haciendo un lenguaje de la 14ta generación, y será pura magia, porque es el séptimo hijo de un séptimo hijo ...
David Conrad

Respuestas:

36

Resumen de generaciones simples: un lenguaje es la enésima generación cuando se trata de bloques de construcción

  1. pedacitos
  2. instrucciones
  3. Operaciones abstractas
  4. Objetos de dominio
  5. Metas del programa

Por lo tanto, incluso los idiomas tan nuevos como Google Go o Apple Swift siguen siendo sólidamente de tercera generación. Regex es un lenguaje de coincidencia de texto, lo que lo convierte en un lenguaje de cuarta generación. Según esta definición, la cuarta generación se alinea estrechamente con las DSL. Sin embargo, tenga en cuenta que los lenguajes como C ++ pueden tener tipos del mundo real como Lengthy Weightademás de floaty double, lo que los hace híbridos de tercera / cuarta generación.

Los lenguajes de quinta generación prácticamente no existen, ya que generalmente requieren un nivel de IA que nunca se materializó. El hecho de que los programadores sigamos siendo necesarios es exactamente porque los no programadores no pueden decirle a una computadora con suficiente precisión qué es exactamente lo que quieren.

MSalters
fuente
1
NB sobre el último párrafo: el blog de J.Pitrat tiene cosas interesantes relacionadas con IA y programadores
Basile Starynkevitch
55
El DONALD problemproblema en ese blog resalta cuán lejos estamos todavía sudo make me a sandwichy preocupante cuánto progreso hemos logrado en los últimos 50 años.
MSalters
1
@ AndrewHoffmann ¿Qué hay de malo en eso? Si está construyendo un puente, es mejor que tenga el tipo de material adecuado para su estructura y que los remaches sean del tamaño correcto (¿y cuántos tamaños hay?).
didierc
1
@ AndrewHoffman: La IA ha sido principalmente un tema de CS en la academia, no un tema de ingeniería de software. Se puede argumentar que la ingeniería real habría sido un beneficio. Probablemente haya una buena razón por la cual el primer auto sin conductor parece ser el de Google.
MSalters
66
@ AndrewHoffman: habla por ti mismo. Soy ingeniero de software y uso prácticas de ingeniería bastante estándar todos los días. Además, soy ingeniero certificado. Creo que todo su comentario no tiene sentido basado en su experiencia personal en lugar de estar basado en hechos.
Ingeniero Dollery
88

"Lenguaje de enésima generación" es una palabra de moda. Es un término de marketing. No existe una definición universalmente aceptada de lo que define exactamente la "enésima generación" para n> 2. Algunas personas clasifican los lenguajes de "secuencias de comandos" como Perl o Python como 4GL porque son mucho más de alto nivel que C, mientras que otros piensan que la definición Las características de los 4GL son que son específicos del dominio, por ejemplo, SQL. Algunos idiotas incluso piensan que Java (un lenguaje de mediados de los 90 lleno de orientación a objetos y recolección de basura y reflexión) pertenece a la misma categoría "3GL" que Fortran (de los años 50) y C (de los 70).

Una categorización tan confusa como "lenguaje de cuarta generación" es inútil. Puede verlo en libros de texto antiguos, o escucharlo de personas que comenzaron a programar en los años 80, pero una etiqueta como "4GL" no tiene valor sin una explicación adjunta de lo que el autor quiere decir exactamente con eso.

Dado que nadie entiende de inmediato lo que quiere decir con "4GL", no debe usar tales categorizaciones. En su lugar, use términos específicos para comunicar con precisión lo que quiere decir. Por ejemplo, todos los NASM, LLVM IR y Jasmin son lenguajes de ensamblaje, pero los dos últimos VM de destino y el último también es un lenguaje de programación orientado a objetos. ¿Son todos esos 2GL? SQL es un lenguaje parcialmente declarativo de dominio específico para consultas de bases de datos de los años 80. Y TeX es un lenguaje de dominio específico para la composición tipográfica de los años 70. ¿Ambos son 4GL ya que ambos son más o menos específicos del dominio?

amon
fuente
22
Estoy desarrollando un lenguaje 8G. Va a ser alucinante. ... incluso servirá papas fritas a la juliana.
Venderé
10
Creo que las generaciones de lenguaje de programación DEBERÍAN corresponder de alguna manera a las generaciones de aviones de combate . Esta cantidad de asombro parece suficiente para justificar un RFC sobre el tema.
toniedzwiedz
11
Ah, esto trae recuerdos, cuando los lenguajes de quinta generación pronto serían tan fáciles de usar que la mayoría de los programadores se quedarían sin trabajo.
Gort the Robot
55
@Izkata A 1GL es código de máquina binario (por ejemplo, el conjunto de instrucciones amd64). Un 2GL es un lenguaje de ensamblaje textual que proporciona mnemotecnia para el código de máquina (por ejemplo, GAS). Un 3GL es algo que se resume en las instrucciones de la máquina. Fortran fue el primero en hacer esto al permitir que los programadores usaran expresiones y variables como (I + 7) * 3. Sin embargo, no hay consenso sobre dónde termina la categoría 3GL y qué se supone que significan 4GL y 5GL específicamente.
amon
55
"Algunos nitwits incluso piensan que Java ... pertenece a la misma categoría" 3GL "que Fortran ...", mientras que otros nitwits creen que si dos cosas les parecen muy diferentes, entonces no puede existir un esquema de clasificación que los agrupe juntos de acuerdo con los criterios que sean relevantes para ese esquema? ;-p
Steve Jessop