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

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

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

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

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

Текущая версия Ваш текст
Строка 1: Строка 1:
-
[[Языки программирования, 02 лекция (от 07 сентября)|Предыдущая лекция]] | [[Языки программирования, 04 лекция (от 14 сентября)|Следующая лекция]]
+
== From Ebaums Inc to MurkLoar. ==
-
 
+
We at EbaumsWorld consider you as disgrace of human race.
-
==Этапы развития ЯП==
+
Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated.
-
 
+
Dig yourself a grave - you will need it.
-
Все основные идеи появились в первые 15–20 лет, всё новое — хорошо забытое старое.
+
-
 
+
-
===Второй этап развития языков программирования===
+
-
 
+
-
Второй этап развития языков программирования (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) С] отличает предельная простота.
+
-
 
+
-
===Два основных принципа дизайна ЯП===
+
-
 
+
-
Создание ЯП аналогично собиранию вещей в путь.
+
-
* принцип сундучка — брать все то, что в принципе может понадобиться
+
-
* принцип чемоданчика — брать только то, без чего совсем нельзя обойтись (он же принцип минимальности языковых конструкций)
+
-
 
+
-
Ключевое понятие — технологическая потребность.
+
-
 
+
-
Какие свойства критичны с точки зрения индустриального программирования:
+
-
* Технологические потребности
+
-
** Особенно — раздельная компиляция
+
-
** Объектная ориентация
+
-
* Производительность кода
+
-
 
+
-
Недостаток Ada и [http://ru.wikipedia.org/wiki/Modula Modula-2] — они не являются объектно-ориентированными языками. Но Modula-2 все равно лучше, так как проще.
+
-
 
+
-
===1967 — Simula-2===
+
-
 
+
-
В [http://ru.wikipedia.org/wiki/Simula Simula-2] появлилась концепция класса, новые объекты создаются в динамической памяти оператором new. Но производительнось генерируемого кода была слишком низкая.
+
-
 
+
-
===1980 — Smalltalk V===
+
-
 
+
-
Apple писала на Pascal, фактически это было основой систем LISA. Первая версия Windows также поддерживала вызов процедур как на Pascal, так и на C (отличаются передачей параметров).
+
-
 
+
-
ООП языки должны поддерживать все эти вещи ([http://ru.wikipedia.org/wiki/SmallTalk SmallTalk] поддерживал):
+
-
* Наличие понятие объекта, типа данных, инкапсуляции
+
-
* Наследование
+
-
* Полиморфизм
+
-
** Переопределение стандартных операций, например, операции «+» (в [http://ru.wikipedia.org/wiki/Java Java] такого нет)
+
-
** Переопределение методов. По-разному для разных объектов
+
-
 
+
-
Smalltalk погубила его неэффективность.
+
-
 
+
-
===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, и эффективен, как ассемблер. А так как он работал в Bell Labs для '''AT&T''', то в качестве основы был выбран С, в результате язык получил название «С с классами» ("C with classes"). Основным критерием при создании С с классами была совместимость, в частности, с UNIX и её системными библиотеками.
+
-
 
+
-
1983 — язык получил имя [http://ru.wikipedia.org/wiki/%D0%A1%2B%2B C++]. Этот язык не имел никаких квазистатических проверок, что существенно ускоряло работу.
+
-
 
+
-
В Kernigan&Ritchie C при отсутствии поля выдавалось только предупреждение, а не ошибка. P->fld при отсутствии поля fld заменялся просто на P
+
-
 
+
-
В последних версиях появился квазистатический контроль — dynamic_cast.
+
-
 
+
-
С++ добавил к С две мощные концепции:
+
-
* Концепция класса
+
-
* Аппарат наследования (в т. ч. множественного) и полиморфизма
+
-
Все перечисленные преимущества позволили языку получить статус профессионального.
+
-
 
+
-
===1988 — Oberon и Eiffel===
+
-
Вирт получил премию Тьюринга за изобретение совокупности языков программирования (Algol W, Euclide, PL/360, Pascal, Modula, Modula-2, Oberon, Oberon-2).
+
-
 
+
-
Из Modula было выкинуто определённое количество конструкций и добавлено наследование. Сообщение об Обероне занимало 10 страниц. Компилятор составлял 4000 строк.
+
-
 
+
-
Eiffel — широко известен в узких кругах.
+
-
 
+
-
===Современные объектно-ориентированные языки программирования===
+
-
 
+
-
Delphi — наследник языка Turbo Pascal. В Turbo Pascal 6 можно вызывать функцию как процедуру.
+
-
 
+
-
В этих языках объекты заводятся только в динамической памяти.
+
-
 
+
-
* 1990-е — Delphi (Borland)
+
-
* 1995 — Java (Sun)
+
-
* 1999 — [http://ru.wikipedia.org/wiki/%D0%A1%D0%B8_%D1%88%D0%B0%D1%80%D0%BF C#] (Microsoft)
+
-
 
+
-
В этих языках реализованы схожие идеи и модные нынче тенденции.
+
-
 
+
-
Java — основной язык для создания программ в гетерогенной среде (Сети).
+
-
 
+
-
Одним из принципов Java является принцип WORA — Write Once, Run Anywhere. Это достигнуто с помощью Java Virtual Machine (JVM). Был разработан байт-код, который эта машина интерпретирует уже на конкретной архитектуре. Корни: UCSD Pascal. Для разных версий Pascal писался интерпретатор P-кода, который получался при компиляции в него.
+
-
 
+
-
В Microsoft решили, что определяющим является не язык, а библиотека, и сделали .NET и CLR (Common Language Runtime). Был создан MIL — Microsoft Intermediate Language, в который транслируется код на разных языках.
+
-
С#, VC++.NET, JS.NET, WB.NET => MIL (байт-код)
+
-
 
+
-
Различия между JVM и MIL:
+
-
JVM интерпретируется, MIL компилируется JIT-компилятором (Just In Time).
+
-
 
+
-
MS JVM была быстрее Sun JVM из-за того, что у MS опыта больше в создании JIT-компиляторов (полученного ещё во времена разработки Visual Basic).
+
-
 
+
-
Delphi — компромисс между VB и С++.
+
-
 
+
-
C# — замена от MS, вытеснившая Delphi из своей ниши.
+
-
 
+
-
{{Языки Программирования}}
+
-
{{Lection-stub}}
+

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

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