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