Historycznie HLL to coś w rodzaju C, Fortran lub Pascal, a VHLL to coś w rodzaju Ruby lub Python. Znam pojęcia 4GL, 5GL, DSL i LOP, a ci, którzy nie są, powinni przeczytać definicje w Wikipedii. Szukam UHLL.
Moje pytanie brzmi: czy są dostępne języki komputerowe, które są bardziej wydajne o jeden rząd wielkości i czy ktoś nad nimi pracuje?
Bardziej produktywny oznacza mniej autorskiego kodu i mniej czasu programisty na osiągnięcie wyniku, mniej błędów i mniej debugowania, bliższe koncepcyjne powiązanie kodu z wymaganiami, mniej wysiłku na modyfikację i utrzymanie.
Główną domeną, która mnie interesuje, są aplikacje biznesowe i konsumenckie ogólnego zastosowania, z graficznym interfejsem użytkownika lub interfejsem przeglądarki, trwałością danych i połączeniami z innymi systemami, takimi jak drukowanie i poczta elektroniczna. Inni ludzie mogą skupić się gdzie indziej.
Rozumiem, że niektóre z tych języków mogą być specyficzne dla domeny i że mogą one być czymś więcej niż możliwościami konfiguracji dużej i sprawnej aplikacji. Arkusze kalkulacyjne Excel należą do tej kategorii.
Rozumiem, że niektóre z tych języków mogą wydawać się ogólne, ale nadal mogą mieć wąski zakres i nieprzystosowane do wielu problemów. Na przykład Matlab może nie być dobrym wyborem dla programu zajmującego się głównie interakcją użytkownika i danymi tekstowymi.
Znam niektóre funkcje, które mogą znajdować się w UHLL, analogicznie do VHLL. Spodziewałbym się znaleźć jeden lub więcej z poniższych (i dodaj do listy):
- Rysunek formularza GUI JEST programem dla formularza GUI
- Tabela zawierająca wiersze, kolumny i nagłówki JEST programem dla tabeli w bazie danych
- Logika deklaratywna mówi, co należy zrobić i kiedy, bez instrukcji IF
- Operacje na zestawach danych, bez pętli FOR
- Wykonanie niesekwencyjne, np. Sterowane danymi, dopasowywanie wzorów, chodzenie po drzewie
Motywem tego pytania jest to, że coraz bardziej mam dość ciężkiej pracy polegającej na tłumaczeniu stosunkowo prostych wymagań biznesowych na duże ilości kodu, aby zaspokoić potrzeby komputera. Pytanie naprawdę dotyczy znalezienia innych osób, które podzielają mój ból i pracują nad podniesieniem poziomu języków i sprawieniem, aby komputer wykonał więcej ciężkiej pracy. To był główny cel w latach 70. i 80., ale czy nadal tak się dzieje?
Oto niektóre sugerowane odpowiedzi na moje pytanie, podane tutaj w celu streszczenia lub wyliczenia języków, które znam, i które moim zdaniem nie są wystarczające.
Istnieje wiele języków, które są HLL lub VHLL i zawierają indywidualne funkcje należące do wyższego poziomu. Użyłem większości z nich (często źle). Zawierają
- Lisp, z makrami i możliwością samodzielnej modyfikacji
- Haskell, z zależnością danych i dopasowaniem wzorca
- SQL, który zajmuje się wierszami i tabelami
- Rebol, co wydaje się sprytne, ale tak naprawdę tego nie rozumiem
- APL (i J) z wielowymiarowymi tablicami i ultrakompaktowymi operatorami
- C # z LINQ
- AWK / Perl / Python / Ruby z wbudowanymi wspaniałymi kolekcjami i wyrażeniami regularnymi
Te języki mają zbyt wiele funkcji niskiego poziomu, aby mogły być używane w języku UHLL. Programista musi jeszcze napisać wiele konstrukcji niskiego poziomu dla każdego przydatnego programu.
Istnieją pakiety RAD / 4GL. Użyłem trochę:
- dBase / Foxpro
- Dataflex / Powerflex (mój produkt)
- Dostęp
- PowerBuilder
I wiele innych nie korzystałem. Najczęściej językiem jest w najlepszym przypadku HLL, ale pakiet zawiera strukturę i uprzywilejowane połączenia między językiem a pakietem, dzięki czemu aplikacje można szybko budować. Nie jestem pewien, dlaczego to podejście zabrakło pary, ale w każdym razie UHLL tak nie jest.
Istnieją surowe frameworki / biblioteki. Użyłem kilku:
- Szyny
- Java awt i swing
- .NET Windows Forms, WPF i ASP.NET.
Są to obecnie najnowocześniejsze rozwiązania. Pozostawiają programistę mocno uwięzionego w błocie języka implementacji, radząc sobie ze złożonością na każdym kroku. To nie jest UHLL, ale możliwe jest zbudowanie UHLL na jednym z nich.
Istnieją narzędzia do projektowania, takie jak UML i zestaw narzędzi Rational, których nie znam dobrze. O ile widzę, pomagają one sformułować wymagania biznesowe, ale nigdy nie mogą zastąpić etapu programowania. Nie chcę eliminować programistów, po prostu wykonuj więcej na jednostkę czasu i wysiłku.
Myślę, że po wyeliminowaniu wszystkich kandydatów mam nadzieję, że ktoś inny może zapewnić lepszego kandydata.
Późna edycja: Myślę, że mam odpowiedź: język Wolfram. http://www.wolfram.com/wolfram-language/