Редактирование: Языки программирования, 03 лекция (от 12 сентября)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 7: Строка 7:
===Второй этап развития языков программирования===
===Второй этап развития языков программирования===
-
Второй этап развития языков программирования (20–25) лет. Знаменовался экспоненциальным ростом ЯП и тремя попытками создания универсальных языков программирования: [http://ru.wikipedia.org/wiki/PL/1 PL/1], [http://ru.wikipedia.org/wiki/Algol Algol-68], [http://ru.wikipedia.org/wiki/Ada Ada]. Все три проекта были обречены на неудачу. Все три языка провалились из-за повышенной сложности. [http://ru.wikipedia.org/wiki/Pascal Pascal] и [http://ru.wikipedia.org/wiki/%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) С] отличает предельная простота.
+
Второй этап развития языков программирования (20–25) лет. Знаменовался экспоненциальным ростом ЯП и тремя попытками создания универсальных языков программирования: [[PL/1]], [[Algol|Algol-68]], [[Ada]]. Все три проекта были обречены на неудачу. Все три языка провалились из-за повышенной сложности. [[Pascal]] и [[С]] отличает предельная простота.
===Два основных принципа дизайна ЯП===
===Два основных принципа дизайна ЯП===
Строка 23: Строка 23:
* Производительность кода
* Производительность кода
-
Недостаток Ada и [http://ru.wikipedia.org/wiki/Modula Modula-2] — они не являются объектно-ориентированными языками. Но Modula-2 все равно лучше, так как проще.
+
Недостаток Ada и [[Modula|Modula-2]] — они не являются объектно-ориентированными языками. Но Modula-2 все равно лучше, так как проще.
===1967 — Simula-2===
===1967 — Simula-2===
-
В [http://ru.wikipedia.org/wiki/Simula Simula-2] появлилась концепция класса, новые объекты создаются в динамической памяти оператором new. Но производительнось генерируемого кода была слишком низкая.
+
В [[Simula|Simula-2]] появлилась концепция класса, новые объекты создаются в динамической памяти оператором new. Но производительнось генерируемого кода была слишком низкая.
===1980 — Smalltalk V===
===1980 — Smalltalk V===
-
Apple писала на Pascal, фактически это было основой систем LISA. Первая версия Windows также поддерживала вызов процедур как на Pascal, так и на C (отличаются передачей параметров).
+
Apple писала на [[Pascal]], фактически это было основой систем LISA. Первая версия Windows также поддерживала вызов процедур как на Pascal, так и на [[C]] (отличаются передачей параметров).
-
ООП языки должны поддерживать все эти вещи ([http://ru.wikipedia.org/wiki/SmallTalk SmallTalk] поддерживал):
+
ООП языки должны поддерживать все эти вещи ([[SmallTalk]] поддерживал):
* Наличие понятие объекта, типа данных, инкапсуляции
* Наличие понятие объекта, типа данных, инкапсуляции
* Наследование
* Наследование
* Полиморфизм
* Полиморфизм
-
** Переопределение стандартных операций, например, операции «+» (в [http://ru.wikipedia.org/wiki/Java Java] такого нет)
+
** Переопределение стандартных операций, например, операции «+» (в [[Java]] такого нет)
** Переопределение методов. По-разному для разных объектов
** Переопределение методов. По-разному для разных объектов
Строка 44: Строка 44:
===1979–… — C++===
===1979–… — C++===
-
Simula [http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D1%83%D1%81%D1%82%D1%80%D1%83%D0%BF,_%D0%91%D1%8C%D1%91%D1%80%D0%BD Страуструпу] нравилась всем, кроме эффективности.
+
[[Simula]] [[Бьерн Страуструп|Страуструпу]] нравилась всем, кроме эффективности.
Страуструп хотел разработать язык, который был бы так же строен и красив, как Simula, и эффективен, как ассемблер. А так как он работал в Bell Labs для '''AT&T''', то в качестве основы был выбран С, в результате язык получил название «С с классами» ("C with classes"). Основным критерием при создании С с классами была совместимость, в частности, с UNIX и её системными библиотеками.
Страуструп хотел разработать язык, который был бы так же строен и красив, как Simula, и эффективен, как ассемблер. А так как он работал в Bell Labs для '''AT&T''', то в качестве основы был выбран С, в результате язык получил название «С с классами» ("C with classes"). Основным критерием при создании С с классами была совместимость, в частности, с UNIX и её системными библиотеками.
-
1983 — язык получил имя [http://ru.wikipedia.org/wiki/%D0%A1%2B%2B C++]. Этот язык не имел никаких квазистатических проверок, что существенно ускоряло работу.
+
[[1983]] — язык получил имя [[C++]]. Этот язык не имел никаких квазистатических проверок, что существенно ускоряло работу.
В Kernigan&Ritchie C при отсутствии поля выдавалось только предупреждение, а не ошибка. P->fld при отсутствии поля fld заменялся просто на P
В Kernigan&Ritchie C при отсутствии поля выдавалось только предупреждение, а не ошибка. P->fld при отсутствии поля fld заменялся просто на P
Строка 60: Строка 60:
===1988 — Oberon и Eiffel===
===1988 — Oberon и Eiffel===
-
Вирт получил премию Тьюринга за изобретение совокупности языков программирования (Algol W, Euclide, PL/360, Pascal, Modula, Modula-2, Oberon, Oberon-2).
+
[[Никлаус Вирт|Вирт]] получил премию Тьюринга за изобретение совокупности языков программирования ([[Algol|Algol W]], [[Euclide]], [[PL/360]], [[Pascal]], [[Modula]], [[Modula|Modula-2]], [[Oberon]], [[Oberon|Oberon-2]]).
Из Modula было выкинуто определённое количество конструкций и добавлено наследование. Сообщение об Обероне занимало 10 страниц. Компилятор составлял 4000 строк.
Из Modula было выкинуто определённое количество конструкций и добавлено наследование. Сообщение об Обероне занимало 10 страниц. Компилятор составлял 4000 строк.
Строка 68: Строка 68:
===Современные объектно-ориентированные языки программирования===
===Современные объектно-ориентированные языки программирования===
-
Delphi — наследник языка Turbo Pascal. В Turbo Pascal 6 можно вызывать функцию как процедуру.
+
[[Delphi]] — наследник языка [[Turbo Pascal]]. В Turbo Pascal 6 можно вызывать функцию как процедуру.
В этих языках объекты заводятся только в динамической памяти.
В этих языках объекты заводятся только в динамической памяти.
-
* 1990-е — Delphi (Borland)
+
* [[1990-е]] — [[Delphi]] (Borland)
-
* 1995 — Java (Sun)
+
* [[1995]] — [[Java]] (Sun)
-
* 1999 — [http://ru.wikipedia.org/wiki/%D0%A1%D0%B8_%D1%88%D0%B0%D1%80%D0%BF C#] (Microsoft)
+
* [[1999]] — [[C#]] (Microsoft)
-
В этих языках реализованы схожие идеи и модные нынче тенденции.
+
В этих языках реализованы схожие идеи и модные нынче тенднции.
Java — основной язык для создания программ в гетерогенной среде (Сети).
Java — основной язык для создания программ в гетерогенной среде (Сети).

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы