Pierwsze języki z ogólną obsługą programowania

15

Który był pierwszym językiem z ogólną obsługą programowania, i który był pierwszym głównym statycznie typowanym językiem (powszechnie używanym) z obsługą ogólnych.

Generics wdrażają koncepcję sparametryzowanych typów, aby umożliwić wiele typów. Termin ogólny oznacza „odnoszący się lub odpowiedni dla dużych grup klas”.

Widziałem następujące wzmianki o „pierwszym”:

Polimorfizm parametryczny pierwszego rzędu jest teraz standardowym elementem statycznie typowanych języków programowania. Począwszy od Systemu F [20,42] i funkcjonalnych języków programowania, konstrukcje znalazły drogę do głównych języków, takich jak Java i C #. W tych językach polimorfizm parametryczny pierwszego rzędu jest zwykle nazywany lekiem generycznym.

Z „ Generics of a Higher Kind” , Adriaan Moors, Frank Piessens i Martin Odersky

Programowanie ogólne jest stylem programowania komputerowego, w którym algorytmy są zapisywane w kategoriach, które mają zostać określone, a następnie tworzone w postaci instancji w razie potrzeby dla określonych typów dostarczanych jako parametry. Takie podejście, zapoczątkowane przez Adę w 1983 roku

Z Wikipedii Programowanie ogólne

oliwki
źródło

Odpowiedzi:

4

Prawdopodobnie Lisp. Mniej więcej tak było w latach sześćdziesiątych. W rzeczywistości, jeśli chodzi o to, co było pierwszym językiem, który zrobił coś ważnego, prawdopodobnie okaże się, że to seplenienie. Przerażające jest uświadomienie sobie, że nowa fajna funkcja w języku X była w rzeczywistości nową fajną funkcją lisp w 1960 roku!

Zachary K.
źródło
7
Lisp nie został wpisany statycznie, więc „ogólne” nie ma nawet sensu w tym kontekście.
Rufflewind
Cóż, „Generics” ma sens tylko w przypadku niektórych rodzajów pisania statycznego. Istnieje wiele rodzajów systemów typów, które mają różne właściwości.
Zachary K
@ZacharyK Specyficzną cechą systemu typów rozumianą przez „generics” jest paramteryczny polimorfizm , który nie ma sensu w nietypowych językach.
Jack
3

Przed rodzajowymi były szablony, a przed tym zastępowanie makr.

Lie Ryan
źródło
Szablony nie są polimorfizmem parametrycznym, co większość ludzi ma na myśli, mówiąc „rodzajowe” w kontekście typów. Szablony i makra nie są nawet powiązane z systemami pisma, są w ogóle funkcją ortogonalną.
Jack
Ta odpowiedź myli „ogólne Java” z „ogólnym programowaniem”.
Kaz