Исторически HLL - это что-то вроде C, Fortran или Pascal, а VHLL - это как Ruby или Python. Я знаком с терминами 4GL, 5GL, DSL и LOP, и те, кто не должен, должны прочитать Википедию для определений. Я ищу UHLL.
У меня вопрос: есть ли какие-нибудь компьютерные языки, которые на порядок более продуктивны, и кто-нибудь над ними работает?
Более продуктивная означает меньше написанного кода и меньше времени программиста для достижения результата, меньше ошибок и меньше отладки, более тесная концептуальная связь между кодом и требованиями, меньше усилий для модификации и сопровождения.
Основной областью, которая меня интересует, являются бизнес-приложения общего назначения и потребительские приложения с интерфейсом GUI или браузера, сохранением данных и подключениями к другим системам, таким как печать и электронная почта. Другие люди вполне могут сосредоточиться в другом месте.
Я признаю, что некоторые из этих языков могут быть специфичными для домена, и что они могут быть немного больше, чем возможности конфигурации большого и функционального приложения. Электронные таблицы Excel попадают в эту категорию.
Я признаю, что некоторые из этих языков могут показаться общими, но все же могут быть узкими по своему охвату и не подходящими для многих проблем. Например, Matlab не может быть хорошим выбором для программы, которая занимается главным образом взаимодействием с пользователем и текстовыми данными.
Я знаю некоторые особенности, которые могут быть в UHLL, по аналогии с VHLL. Я ожидал бы найти одно или несколько из следующего (и не стесняйтесь добавлять в список):
- Рисунок формы GUI - это программа для формы GUI
- Таблица, содержащая строки, столбцы и заголовки, является программой для таблицы в базе данных.
- Декларативная логика говорит, что и когда должно быть сделано, без утверждений IF
- Операции над наборами данных без циклов FOR
- Непоследовательное выполнение, например, управление данными, сопоставление с образцом, обход дерева
Мотивация этого вопроса заключается в том, что мне все больше надоела огромная тяжелая работа по переводу относительно простых бизнес-требований в большие объемы кода для удовлетворения потребностей компьютера. Вопрос в том, чтобы найти других людей, которые разделяют мою боль и работают над повышением уровня языков и заставляют компьютер выполнять большую часть тяжелой работы. Это было основным направлением в 1970-х-80-х годах, но все еще происходит?
Вот некоторые предлагаемые ответы на мой вопрос, приведенные здесь для краткого изложения или перечисления языков, о которых я знаю, и которые, на мой взгляд, не соответствуют.
Есть много языков, которые являются HLL или VHLL и содержат отдельные функции, которые относятся к более высокому уровню. Я использовал большинство из них (часто плохо). Они включают
- Лисп с его макросами и способностью к самоизменению
- Haskell, с зависимостью от данных и сопоставлением с образцом
- SQL, который работает со строками и таблицами
- Ребол, который кажется умным, но я не совсем понимаю
- APL (и J), с его многомерными массивами и ультракомпактными операторами
- C # с LINQ
- AWK / Perl / Python / Ruby со встроенными замечательными коллекциями и регулярными выражениями
Эти языки имеют слишком много низкоуровневых функций, чтобы быть UHLL. Программист все еще должен написать много конструкций низкого уровня для любой полезной программы.
Есть пакеты RAD / 4GL. Я использовал некоторые:
- Dbase / Foxpro
- Dataflex / Powerflex (мой продукт)
- Доступ
- PowerBuilder
И многое другое я не использовал. В большинстве случаев язык - это HLL, но пакет содержит структуру и привилегированные соединения между языком и пакетом, что позволяет быстро создавать приложения. Я не уверен, почему такой подход выдохся, но в любом случае это не так.
Есть сырые фреймворки / библиотеки. Я использовал несколько:
- Рельсы
- Ява трепетно
- .NET Windows Forms, WPF и ASP.NET.
Это в настоящее время современное состояние. Они оставляют программиста в ловушке в болоте языка реализации, сталкиваясь со сложностью на каждом шагу. Это не UHLL, но UHLL, возможно, может быть построен поверх одного из них.
Есть инструменты дизайна, такие как UML и Rational, которые я не очень хорошо знаю. Насколько я вижу, они помогают сформулировать бизнес-требования, но никогда не могут заменить этап программирования. Я не хочу исключать программистов, просто делаю больше за единицу времени и усилий.
Поэтому, исключив всех претендентов, я могу думать, я надеюсь, что кто-то другой может предложить лучшего кандидата.
Позднее редактирование: я думаю, что у меня есть ответ: Wolfram Language. http://www.wolfram.com/wolfram-language/