Históricamente, un HLL es algo así como C, Fortran o Pascal y un VHLL es algo como Ruby o Python. Estoy familiarizado con los términos 4GL, 5GL, DSL y LOP, y aquellos que no lo estén deberían leer Wikipedia para las definiciones. Estoy buscando UHLLs.
Mi pregunta es: ¿hay algún lenguaje de computadora que sea otro orden de magnitud más productivo, y hay alguien trabajando en ellos?
Más productivo significa menos código creado y menos tiempo del programador para lograr un resultado, menos errores y menos depuración, un vínculo conceptual más cercano entre el código y los requisitos, menos esfuerzo para modificar y mantener.
El dominio principal que me interesa son las aplicaciones comerciales y de consumo de uso general, con interfaz gráfica de usuario o interfaz de usuario, persistencia de datos y conexiones a otros sistemas, como impresión y correo electrónico. Otras personas podrían enfocarse en otro lado.
Reconozco que algunos de esos lenguajes pueden ser específicos de un dominio y que pueden ser poco más que la capacidad de configuración de una aplicación grande y capaz. Las hojas de cálculo de Excel entran en esta categoría.
Reconozco que algunos de esos lenguajes pueden parecer generales, pero aún así pueden ser de alcance limitado e inadecuados para muchos problemas. Por ejemplo, Matlab podría no ser una buena opción para un programa que se ocupa principalmente de la interacción del usuario y los datos textuales.
Conozco algunas de las características que podrían estar en un UHLL, por analogía con VHLL. Esperaría encontrar uno o más de los siguientes (y siéntase libre de agregar a la lista):
- Un dibujo de un formulario GUI ES el programa para un formulario GUI
- Una tabla que contiene filas, columnas y encabezados ES el programa para una tabla en una base de datos
- La lógica declarativa dice qué se debe hacer y cuándo, sin declaraciones IF
- Operaciones en conjuntos de datos, sin bucles FOR
- Ejecución no secuencial, por ejemplo, impulsada por datos, coincidencia de patrones, caminata de árbol
La motivación para la pregunta es que estoy cada vez más harto del arduo trabajo de traducir requisitos comerciales relativamente simples en grandes cantidades de código para satisfacer lo que la computadora quiere o necesita. La pregunta es realmente acerca de encontrar a otras personas que compartan mi dolor y estén trabajando para elevar el nivel de los idiomas y lograr que la computadora haga más trabajo duro. Este fue un enfoque importante en las décadas de 1970 y 1980, pero ¿sigue sucediendo?
Estas son algunas respuestas sugeridas a mi pregunta, proporcionadas aquí para resumir o enumerar los idiomas que conozco y que, en mi opinión, se quedan cortos.
Hay muchos idiomas que son HLL o VHLL y contienen características individuales que pertenecen a un nivel superior. He usado la mayoría de ellos (a menudo mal). Incluyen
- Lisp, con sus macros y su capacidad de auto modificarse
- Haskell, con dependencia de datos y coincidencia de patrones
- SQL, que trata en filas y tablas
- Rebol, que parece inteligente pero realmente no lo entiendo
- APL (y J), con sus matrices multidimensionales y operadores ultracompactos
- C # con LINQ
- AWK / Perl / Python / Ruby con maravillosas colecciones y expresiones regulares incorporadas
Estos idiomas tienen demasiadas características de bajo nivel para ser UHLL. El programador todavía tiene que escribir muchas construcciones de bajo nivel para cualquier programa útil.
Hay paquetes RAD / 4GL. He usado algunos:
- dBase / Foxpro
- Dataflex / Powerflex (mi producto)
- Acceso
- PowerBuilder
Y mucho más que no he usado. En su mayoría, el idioma es HLL en el mejor de los casos, pero el paquete contiene un marco y conexiones privilegiadas entre el idioma y el paquete para que las aplicaciones se puedan construir rápidamente. No estoy seguro de por qué este enfoque se acabó, pero en cualquier caso UHLL no lo es.
Hay frameworks / bibliotecas en bruto. He usado algunos:
- Rieles
- Java awt y swing
- .NET Windows Forms, WPF y ASP.NET.
Estos son actualmente el estado del arte. Dejan al programador firmemente atrapado en el lodo del lenguaje de implementación, lidiando con la complejidad en todo momento. Esto no es UHLL, pero posiblemente se pueda construir un UHLL sobre uno de estos.
Hay herramientas de diseño, como UML y el conjunto de herramientas de Rational, que no conozco bien. Hasta donde puedo ver, ayudan a articular los requisitos del negocio, pero nunca pueden reemplazar el paso de programación. No quiero eliminar a los programadores, solo hago más por unidad de tiempo y esfuerzo.
Entonces, habiendo eliminado a todos los contendientes que puedo pensar, espero que alguien más pueda proporcionar un mejor candidato.
Edición tardía: creo que tengo una respuesta: Wolfram Language. http://www.wolfram.com/wolfram-language/