Текущая версия |
Ваш текст |
Строка 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}}
| + | |