Лекция 12. Биография основных теоретиков компьютерных наук (1185935), страница 2
Текст из файла (страница 2)
А. ванВейнгаардена (A. van Wijngaarden) и др. опубликовано в 1975 г.)46Языки и системы программированияPascal и его потомкиModulaAlgol-68ModulaAlgol-60TurboPascalPascalObject PascalDelphiDelphiAdaAdaSmalltalk19601970198019902000Член комитета по Алголу-68 Никлаус Вирт(Wirth, Niklaus; р. 1934) был против принятияпереусложненного стандарта.В знак доказательства своей правоты онразработал в 1971 г. простой и ясныйалголоподобный язык, предназначенныйпрежде всего для обучения студентов вФедеральном техническом университете вШвейцарии.
В честь изобретателя первойвычислительной машины Вирт назвал языкПаскалем.47Языки и системы программированияPascal и его потомкиvari, n: integer;s: float;x: array[1..n] of real;begins:=0;for i:=1 to n dos:=s+x[i];s:=s/nend.Программа на Паскале, вычисляющая среднееарифметическое n чисел48Языки и системы программированияPascal и его потомкиНовую жизнь языку Pascal далФилипп Кан (Kahn, Philippe; р.1938) – создатель компилятораTurbo Pascal для IBM PC иоснователь компании Borland(1984 г.)49Языки и системы программированияPascal и его потомкиСреда разработки Delphi фирмы Borlandобъединила передовые достижениятехнологии программирования: объектноерасширение языка Pascal, визуальнособытийное проектирование, модульноеструктурирование и раздельнаякомпиляция.В отличие от учебного Паскаля, языкпрограммирования Modula-2, предложенныеНиклаусом Виртом, изначальнопредназначался для профессиональногоприменения50Языки и системы программированияСуперязык PL/1CobolEXAMPLE: PROCEDURE OPTIONS (MAIN);ON ENDFILE (SYSIN) GO TO ENDING;Algol-60P1:GET LIST (A, B, C);D = B*B — 4*A*C;PL/1E = —B/(A+A);IF D<0 THEN DO;1960X1, X2 = E;1970Y1 = SQRT(—D)/(A+A);PL/1 = Programming Language OneЯзык PL/1 был частьюамбициозного проекта IBMS/360, он создавался в спешке ипредставлял собоймеханическую смесь идей измногих языков.
Критикисравнивали его с елкой сомножеством украшений.END;ELSE DO;R = SQRT(D)/(A+A);…Y1 = 0;END;Y2 = —Y1;PUT LIST (X1, Y1, X2, Y2);GO TO P1;ENDING:;END EXAMPLE;51Языки и системы программированияSimula и Smalltalk – революция в программированииVisual BasicAlgol-60Object PascalSmalltalkSimula-67SmalltalkSimulaSimulaC++19601970198019902000Simula = SIMULAlationЗа разрабртку языка SimulaКристен Нигорд (Nygaard,Kristen; 1926-2002), на снимкеслева, и Оле-Йохан Дал (Dahl,Ole-Johan; 1931-2002) былиудостоены высшей наградыкомпьютерного сообщества –медали Тьюринга52Языки и системы программированияSimula и Smalltalk – революция в программировании|a|a := Array new: 5.1 to: 5 do: [:i | a at: i put:(Prompter prompt: ’Введите элемент массива’)asNumber].a := a asSortedCollection.a do: [:i | Transcript putAll: i printString].Простейшая программана Smalltalk,вычисляющая среднееарифметическое пятичиселАлан Кей53Языки и системы программированияС – язык для профессионаловSmalltalkAlgol-60PL/1JavaBCC++JavaVisual C++Visual C++19601970198019902000Язык Си (С) был создан ДеннисомРичи (Ritchie, Dennis M.; 1941-2011) в1973 году в Bell Labs в ходеразработки операционной системыUNIX.
Он развивал язык Би (B),который основывался на созданномв Кембриджском университете языкеBCPL (от Basic CombinedProgramming Language), который всвою очередь был потомкомАлгола-6054Языки и системы программированияС – язык для профессионаловfloat A[5];for(int i=0;i<5;i++)scanf("%f",&A[i]);i=0;while(i<4){if(A[i]<=A[i+1])i++;else{z=A[i];A[i]=A[i+1];A[i+1]:=z;i=0;}};for(i=0;i<5;i++)printf("%f\n",A[i]);Текст на языке С отличается лаконичностью55Языки и системы программированияС – язык для профессионаловБьярн Страуструп (Stroustrup, Bjarne; р.
1950) ввел вязык С объекты и превратил его в С++56Языки и системы программированияJava – дитя интернетаВ 1995 г. фирма Sun Microsystemsпредставила язык Java дляпрограммирования в интернете.Он возник в ходе реализациипроекта Oak («Дуб»), целью которогобыло создание системыпрограммирования бытовыхмикропроцессорных устройств.Джеймс Гослинг (Gosling, James) –автор Java.57Языки и системы программированияJava – дитя интернетаКлиентВиртуальнаяJava-машинаJVMСерверInternetБайт-кодКомпиляторWeb-браузерИсходныйтекст наJavaJava - технология58Языки и системы программированияJava – дитя интернетаclass test{int i, n;float s;float x[n];public static void main( String args[]){n = 10;s = 0;for( i=1; i<=n; i++){s = s + x[i-1];s = s / n;}}ЯзыкJava основан на С++В качестве альтернативы Javaкорпорация Microsoft предложила59язык С# (Си-шарп)Языки и системы программированияДолгожитель Lisp – инструмент функциональногопрограммированияLispLispProlog19601970198019902000Lisp = LISt ProcessingДж.
Маккарти и А.П.Ершов Снимок 1975 г.Язык Lisp создан в 1960 годуДжоном Маккарти (McCarthy,John; р. 1927 ) вМассачусетском технологическом институте натеоретическом фундаментелямбда-исчисления, предложенного еще в 1930 годуизвестным американскимлогиком Алонзо Черчем.60Языки и системы программированияДолгожитель Lisp – инструмент функциональногопрограммирования(setq L `(8 5 13 11 10))(defun sum (L)(cond ((null L) '0)(t (add (car L) (sum (cdr L))))))(div (sum L) '5)Примитивы:cond — условная функция, проверяющая с помощьюфункции null пустоту списка;add — суммирование аргументов;car — извлечение первого элемента из списка;cdr — извлечение остатка списка (без первогоэлемента).Программа на Lisp имеет специфический вид из-за обилия скобок.За это студенты прозвали его «Lots of Infuriating & Silly Parenthesis» 61«Множество раздражающих и глупых скобок»Языки и системы программированияProlog – несостоявшаяся мечта ЭВМ V поколенияLispPrologProlog19601970198019902000Prolog = PROgramming for LOGicТеоретические основы языка были разработаныРобертом Ковальским (Kowalski, Robert) вЭдинбургском университете (Шотландия) вконце 1960-х годовПервая практическая реализация языкаосуществлена Аленом Кольмари(Colmerauer, Alain ) в Марсельскомуниверситете (Франция) в 1972 г.62Языки и системы программированияProlog – несостоявшаяся мечта ЭВМ V поколенияФакты:муж (петя), муж (ваня),муж (коля), жен (таня), жен (маша),ТаняПетяЖМмать (ваня, таня), отец (ваня, петя),Мотец (маша, ваня), отец (коля, ваня).ВаняПравила вывода:родитель (X, Y) :— отец (X, Y)родитель (X, Y) :— мать (X, Y)дед (X, Y) :— родитель (X, Z), отец (Z, Y)брат (X, Y) :— муж (Y), родитель (X, Z),родитель (Y, Z), X<>YПримеры диалога:GOAL> дед (коля, X) Кто дед Коли?X = ПетяGOAL> брат (маша, X) Кто брат Маши?X = КоляЖМашаМКоляОписаниепредметной областисемейныхотношений на языкеProlog63Языки и системы программированияProlog – несостоявшаяся мечта ЭВМ V поколенияПроект ЭВМ V поколения – японский вызов мировойкомпьютерной индустрии, брошенный в начале 1980-х годов643.2.
Языки и системы программированияProlog – несостоявшаяся мечта ЭВМ V поколенияВ качестве основного языка ЭВМ V поколенияпредполагалось использовать Prolog65Языки и системы программированияРефал – русский ПрологРефал = PЕкурсивных ФункцийАЛгоритмическийТеоретические основы языка были разработаныВалентином Турчиным в МФТИ в конце 1966годуPalindrom {s.1 e.2 s.1 = <Palindrom e.2> ;s.1 = True ;= True;e.1 = False ;} // Проверка палиндромности числа66РЕФАЛ$ENTRY Go{= <Prout <Symb <FN <Numb <Card>>>>;}FN{0 (s.1 s.2) = s.1;s.1 (s.2 s.3) = <FN <Sub s.1 1> (s.3 <Add s.2 s.3>)>;s.1 = <FN s.1 (0 1)>;} // Ввод N и вычисление числа Фибоначчи сномером N67Языки и системы программированияLogo – язык для самых маленькихLispLogoLogo19601970198019902000Язык Logo, изобретен в 1967 г.в MIT выдающимсяматематиком и педагогомСеймуром Пейпертом (Papert,Seymour; р.
1928).Пейперт в 1958-1963 годахработал в Женеве узнаменитого психолога ЖанаПиаже (Piaget, Jean), гдезанимался детьми и природойих мышления.Идейной основой Logoявляется язык LispНа фото: Сеймур Пейперт получаетстепень почетного доктора Софийского68 г.)университета (1999Языки и системы программированияLogo – язык для самых маленькихэто дуга :шаг :число_шаговЦиклповтори :число_шагов[вперед :шаг направо 10]Конецэто спираль :шагесли :шаг < 1 [стоп]дуга :шаг 18спираль :шаг / 2конецРекурсияПроцедура спараметромПрограмма на Logo управляетчерепашкой, оставляющей видимый след.С помощью зрительных образовинтерпретируются все базовые структурыпрограммирования69Языки и системы программированияУроки историиОсновные парадигмы программирования:• процедурное программирование (Fortran, Basic,Cobol, Algol, Pascal, Ada, С, Logo, FoxPro);• объектно-ориентированное программирование(Simula, Smalltalk, Object Pascal, C++, Java, C#);• визуально-событийное программирование (VisualBasic, Delphi, Visual C++, Visual Java, Visual FoxPro);• функциональное программирование (Lisp, Рефал);• логическое программирование (Prolog).70Спасибо за внимание!71.