O que são as quarta e quinta gerações de linguagem de programação? Existem mais deles? [fechadas]

36

Como costuma ser classificada no nível de escola / faculdade, as linguagens de programação populares (C #, Java, C ++) são todas as linguagens de terceira geração (com maior nível de abstração das partes físicas da máquina). Além disso, as linguagens assembly são classificadas como 2ª e as linguagens de máquina como 1ª geração.

Inicialmente, eu pensava que o SQL deveria ser considerado uma linguagem de quarta geração, pois é mais abstrato e distante dos detalhes de loop e mais descritivo.

Neste momento, descobri que existem linguagens de quarta e quinta geração, mas qual é a base para qualquer linguagem ou tecnologia de programação ser categorizada como linguagem de quarta ou quinta geração?

Além disso, existem idiomas de 6ª ou 7ª geração também?

Todos
fonte
12
Ah, se as pessoas pudessem concordar sobre o que torna uma enésima língua genérica que n ... Não há critérios que possamos realmente amarrar (exceto afirmando que as línguas genéricas superiores são mais removidas do bare metal do que o nível inferior - em que grau é não acordado).
Oded
5
Qual "geração" é C? Você pode dar alguns exemplos de idiomas de quarta e quinta geração e nos dizer o que faz cada geração? Ou seja, que critério define uma linguagem como geração 'n'?
MAWG
3
Acho que o conceito de linguagem da Xª geração não é realmente relevante.
Pieter B
5
Eu estou fazendo uma linguagem 14ª geração, e que vai ser pura magia, porque é o sétimo filho de um sétimo filho ....
David Conrad

Respostas:

36

Visão geral de gerações simples: um idioma é de nona geração quando são construídos

  1. bits
  2. instruções
  3. Operações abstratas
  4. Objetos de domínio
  5. Objetivos do Programa

Portanto, mesmo idiomas tão novos como Google Go ou Apple Swift ainda são solidamente de terceira geração. O Regex é um idioma de correspondência de texto, o que o torna um idioma da quarta geração. Por essa definição, a 4ª geração está alinhada com as DSLs. No entanto, observe que idiomas como C ++ podem ter tipos do mundo real como Lengthe Weightalém de floate double, o que os torna híbridos de terceira / quarta geração.

As linguagens de quinta geração praticamente não existem, pois geralmente exigem um nível de IA que nunca se materializou. O fato de que nós programadores ainda somos necessários é exatamente porque os não programadores não podem dizer a um computador com precisão suficiente o que exatamente eles querem.

MSalters
fonte
1
NB sobre o último parágrafo: blog de J.Pitrat têm coisas interessantes relacionados com a AI & programadores
Basile Starynkevitch
5
O DONALD problemproblema no blog destaca a que distância ainda estamos longe sudo make me a sandwiche, de maneira preocupante, quanto progresso fizemos nos últimos 50 anos.
MSalters
1
@AndrewHoffmann O que há de errado nisso? Se você está construindo uma ponte, é melhor ter o tipo certo de material para sua estrutura e os rebites devem ter o tamanho certo (e quantos tamanhos existem?).
didierc
1
@AndrewHoffman: A IA tem sido principalmente um tópico de CS na academia, não um tópico de engenharia de software. Pode-se argumentar que a engenharia real teria sido um benefício. Provavelmente há uma boa razão para o primeiro carro autônomo parecer ser do Google.
MSalters
6
@AndrewHoffman - fale por si mesmo. Sou engenheiro de software e uso práticas bastante comuns de engenharia todos os dias. Além disso, sou um engenheiro certificado. Eu acho que todo o seu comentário é um absurdo baseado na sua experiência pessoal, e não na verdade.
Engenheiro Dollery
88

"Linguagem de segunda geração" é um chavão. É um termo de marketing. Não existe uma definição universalmente aceita do que exatamente define a “nésima geração” para n> 2. Algumas pessoas categorizam linguagens de “script” como Perl ou Python como 4GLs porque são muito mais de alto nível que C, enquanto outras acham que a definição características das 4GLs é que elas são específicas do domínio, por exemplo, SQL. Alguns idiotas até pensam que Java (uma linguagem de meados dos anos 90 cheia de orientação a objetos e coleta e reflexão de lixo) pertence à mesma categoria "3GL" que Fortran (dos anos 50) e C (dos anos 70).

Uma categorização tão confusa como “linguagem de quarta geração” não tem utilidade. Você pode vê-lo em livros antigos ou ouvir pessoas que começaram a programar nos anos 80, mas uma tag como “4GL” é inútil sem uma explicação complementar do que exatamente o autor quer dizer com isso.

Como ninguém entende imediatamente o que você quer dizer com “4GL”, você não deve usar essas categorizações. Em vez disso, use termos específicos para comunicar exatamente o que você quer dizer. Por exemplo, todos NASM, LLVM IR e Jasmin são linguagens assembly, mas as duas últimas VMs de destino e a última também são uma linguagem de programação orientada a objetos. São todos esses 2GLs? SQL é uma linguagem específica do domínio parcialmente declarativa para consultas ao banco de dados dos anos 80. E o TeX é uma linguagem específica de domínio para composição tipográfica a partir dos anos 70. Ambos são 4GLs, pois são mais ou menos específicos do domínio?

amon
fonte
22
Estou desenvolvendo uma linguagem 8G. Vai ser alucinante. ... até julienne frita. Vou vender licenças para três pagamentos fáceis de ...;)
BrianH
10
Eu acho que as gerações de linguagem de programação devem corresponder de alguma forma às gerações de caças a jato . Essa quantidade de grandiosidade parece suficiente para justificar uma RFC sobre o assunto.
toniedzwiedz
11
Ah, isso traz lembranças, quando as linguagens de quinta geração em breve seriam tão fáceis de usar que a maioria dos programadores ficaria sem emprego.
Gort the Robot
5
@Izkata Um 1GL é um código de máquina binário (por exemplo, o conjunto de instruções amd64). Um 2GL é uma linguagem de montagem textual que fornece mnemônicos para código de máquina (por exemplo, GAS). Um 3GL é algo que abstrai as instruções da máquina. O Fortran foi o primeiro a fazer isso, permitindo que os programadores usassem expressões e variáveis ​​como (I + 7) * 3. No entanto, não há consenso sobre onde termina a categoria 3GL e o que 4GL e 5GL devem significar especificamente.
amon
5
"Alguns idiotas até acham que Java ... pertence à mesma categoria" 3GL "do Fortran ..." - enquanto outros idiotas acreditam que se duas coisas parecem muito diferentes para eles, então não pode existir um esquema de classificação que os agrupe juntos de acordo com os critérios relevantes para esse esquema? ;-p
Steve Jessop