Historicamente, uma HLL é algo como C, Fortran ou Pascal e uma VHLL é algo como Ruby ou Python. Eu estou familiarizado com os termos 4GL, 5GL, DSL e LOP, e quem não é deve ler a Wikipedia para obter as definições. Estou procurando por UHLLs.
Minha pergunta é: existem linguagens de computador por aí que são outra ordem de magnitude mais produtiva e alguém está trabalhando nelas?
Mais produtivo significa menos código criado e menos tempo do programador para alcançar um resultado, menos erros e menos depuração, vínculo conceitual mais próximo entre código e requisitos, menos esforço para modificar e manter.
O principal domínio que me interessa são os aplicativos comerciais e de consumo de uso geral, com interface gráfica do usuário ou navegador, persistência de dados e conexões com outros sistemas, como impressão e email. Outras pessoas podem muito bem se concentrar em outro lugar.
Reconheço que algumas dessas linguagens podem ser específicas do domínio e que podem ser pouco mais do que a capacidade de configuração de um aplicativo grande e capaz. As planilhas do Excel se enquadram nessa categoria.
Reconheço que alguns desses idiomas podem parecer gerais, mas ainda podem ter escopo restrito e inadequado para muitos problemas. Por exemplo, o Matlab pode não ser uma boa opção para um programa que lida principalmente com a interação do usuário e dados textuais.
Conheço alguns dos recursos que podem estar em uma UHLL, por analogia com a VHLL. Eu esperaria encontrar um ou mais dos seguintes itens (e fique à vontade para adicionar à lista):
- Um desenho de um formulário da GUI É o programa para um formulário da GUI
- Uma tabela contendo linhas, colunas e cabeçalhos É o programa de uma tabela em um banco de dados
- A lógica declarativa diz o que deve ser feito e quando, sem instruções IF
- Operações em conjuntos de dados, sem loops FOR
- Execução não sequencial, por exemplo, orientada por dados, correspondência de padrões, caminhada na árvore
A motivação para a pergunta é que estou cada vez mais cansado do trabalho duro de traduzir requisitos de negócios relativamente simples em grandes quantidades de código para atender ao que o computador deseja ou precisa. A questão é realmente encontrar outras pessoas que compartilham minha dor e estão trabalhando para aumentar o nível de idiomas e fazer com que o computador faça mais do trabalho duro. Esse foi um dos principais focos nos anos 70-80, mas ainda está acontecendo?
Estas são algumas respostas sugeridas para minha pergunta, fornecidas aqui para resumir ou enumerar os idiomas que eu conheço e que, na minha opinião, ficam aquém.
Existem muitos idiomas HLL ou VHLL e contêm recursos individuais que pertencem a um nível superior. Eu usei a maioria deles (muitas vezes mal). Eles incluem
- Lisp, com suas macros e capacidade de auto-modificar
- Haskell, com dependência de dados e correspondência de padrões
- SQL, que lida com linhas e tabelas
- Rebol, que parece inteligente, mas eu realmente não entendo
- APL (e J), com suas matrizes multidimensionais e operadores ultracompactos
- C # com LINQ
- AWK / Perl / Python / Ruby com maravilhosas coleções e expressões regulares incorporadas
Esses idiomas têm muitos recursos de baixo nível para serem UHLL. O programador ainda precisa escrever muitas construções de baixo nível para qualquer programa útil.
Existem pacotes RAD / 4GL. Eu usei alguns:
- dBase / Foxpro
- Dataflex / Powerflex (meu produto)
- Acesso
- PowerBuilder
E muito mais que eu não usei. Principalmente, na melhor das hipóteses, a linguagem é HLL, mas o pacote contém uma estrutura e conexões privilegiadas entre a linguagem e o pacote, para que os aplicativos possam ser construídos rapidamente. Não sei ao certo por que essa abordagem ficou sem fôlego, mas, de qualquer forma, UHLL não é.
Existem estruturas / bibliotecas brutas. Eu usei alguns:
- Trilhos
- Java awt e swing
- .NET Windows Forms, WPF e ASP.NET.
Atualmente, esse é o estado da arte. Eles deixam o programador preso firmemente na lama da linguagem de implementação, lidando com a complexidade a cada momento. Isso não é UHLL, mas é possível que um UHLL possa ser construído sobre um deles.
Existem ferramentas de design, como o UML e o conjunto de ferramentas do Rational, que eu não conheço bem. Tanto quanto posso ver, eles ajudam a articular os requisitos de negócios, mas nunca podem substituir a etapa de programação. Não quero eliminar programadores, apenas fazer mais por unidade de tempo e esforço.
Então, tendo eliminado todos os candidatos, posso pensar, espero que alguém possa oferecer um candidato melhor.
Tarde Editar: Acho que tenho uma resposta: Wolfram Language. http://www.wolfram.com/wolfram-language/