лекции (2015) (1160856), страница 2
Текст из файла (страница 2)
41Эквивалентность типов данных................................................................................................ 42Виды трансляции ...................................................................................................................... 42Раздельная трансляция ........................................................................................................ 42Зависимая трансляция .......................................................................................................... 42Пакеты JAVA ..........................................................................................................................
43Модули в интерпретируемых языках .................................................................................... 44Обработка ошибок(аварийных ситуаций) ................................................................................ 44Саша & Стас ([947-968], завершено) ........................................................................................... 451Спецификация исключений: (только в С++ и Java) .................................................................
48Наследование ........................................................................................................................... 49Объединения ............................................................................................................................. 50Совместимость типов ............................................................................................................... 52Класс как область видимости ................................................................................................... 52Преобразование типов (неявное) .............................................................................................
53Классы-оболочки. Автораспаковка в Java, C# ......................................................................... 53Запрет наследования (sealed в C#, final в Java, final в C++11) ............................................... 53Динамическое связывание методов. Полиморфизм. ТВМ ..................................................... 55Алик ([969-981], done) ................................................................................................................... 57Инкапсуляция.
Уровни доступа в C#, Java. Управление видимостью .................................... 57Вложенные (внутренние) классы, их особенности в Java, C#, C++ ........................................ 59Aбстрактный класс - как интерфейс для наследования .......................................................... 60Различия между абстрактным классом и интерфейсом в Java (на англ) .............................. 61Явная и неявная реализация интерфейса в C# ...................................................................... 62Множественное наследование ................................................................................................. 63Костя ([982-990], завершено) .......................................................................................................
67Параметрический полиморфизм .............................................................................................. 67Шаблоны в C++. Явная и частичная специализация шаблонов ......................................... 68Обобщения в C#. Ключевое слово where ............................................................................. 70Обобщения в Java.
Ограничения с помощью extends, super и wildcards ............................ 71Шаблоны в Ада-83 ................................................................................................................. 722Костя ([834-856], завершено)Виды программирования● развлекательно-игровое● научное (Fortran, Pascal, Python)● индустриальное (C++, C, Ада, Java, C#, Delphi)Языки, появившиеся для использования в web-приложениях: Python, JS, PHP, Ruby. Все эти языкиинтерпретируемы.Парадигма программирования - совокупность идей и понятий, определяющих стильпрограммирования.Основные парадигмы (их определения см. в файле с термином): императивная, объектноориентированная, обобщенное программирование, функциональная, логическая.Объект - сущность, обладающая состоянием и поведением. Состояние моделируется членамикласса.
Поведение моделируется сообщениями и их посылкой.Object C = C + Smalltalk.Абстрактный тип данных - множество операций, без состояния.Упоминаются термины методы доступа, accessors и mutators (getters и setters), свойствообъекта, но нет их определений.Далее идет сравнение языков программирования на примере задачи реверса входной строки.Примеры программ приведены для языков C, C#, Java, Python, C++ (с использованием шаблонов врамках парадигмы обобщенного программирования).C++ и STL. STL включает в себя контейнеры, алгоритмы и итераторы (думаю, что стоит найтиопределения итераторов и контейнеров).
Рассматриваются итераторы ввода/вывода для cin, cout,istream_iterator<char>.Реализация реверса на С++ чисто через STL:#include <algorithm>#include <iterator>…int main() {vector<char> v;copy(istream_iterator<char>(cin), istream_iterator<char>(),back_inserter<char>(v));copy(v.rbegin(), v.rend(), ostream_iterator<char>(cout));}Функциональная парадигма на примере LISP (List Processing, 1959). В ФП данные представляются ввиде списков.Пример для LISP: (print (reverse (read)))3Основные точки зрения рассмотрения ЯП●●●●●Технологическая позиция, отражающая взгляд человека, желающего или вынужденногопользоваться языком программирования как технологическим инструментом на каком-либо изэтапов жизненного цикла программного обеспечения.
Одна из основных позиций.Авторская позиция. Говорит о том как это могло быть и почему это не реализовано, и почемуприняты именно такие решения. ЯП — система компромиссов. PL/1 — бескомпромиссныйязык, поэтому и провалился. Часто компромиссное решение хуже, чем любое изпредложенных, поэтому компромиссы не должны составлять весь язык. Авторская позициярассматривает различные за и против включения тех или иных сущностей в язык.Семиотическая позиция, отражающая особенности языка как знаковой системы.Реализаторская позиция, отражающая взгляд на язык реализаторов транслятора с этогоязыка и авторов документации.
Позиция человека, который собирается создать язык.Социальная позиция. Иногда нельзя не учитывать те или иные аспекты развития языкапрограммирования в отрыве от общества. Например, Delphi лучше VB по всем четырёмпредыдущим позициям, но в результате популярнее стал VB. Так что важно учесть кем, вкаком контексте и для кого разрабатывался язык.В СССР основным учебным языком с 80х годов был Pascal, поэтому у нас много людей,программирующих на Delphi. В Америке же учились на Basic’е, поэтому там широкораспространен Visual Basic.Типы данных, операции и связывание, константы времени компиляции ивремени выполнения. Базис парадигмыОсновные понятия языков программирования: данные, операции и связывание.В любом ЯП есть данные, над которыми выполняются операции.
В функциональной парадигмефункции тоже могут быть рассмотрены как данные .Тип данных характеризуется множеством принимаемых значений и множеством операций над ним.Составные типы данных – это типы, которые состоят из подобъектов, то есть имеют внутреннююструктуру.Связывание – это процесс установления связи между элементом программы и конкретныматрибутом или характеристикой. Время связывания – это момент установления этой связи.Связывание бывает статическим и динамическим (см. термин).Есть два типа констант:● константа времени компиляции - задаются в коде в виде конкретных значений● константы времени выполнения - константные переменные, которые нельзямодифицироватьОбъектно-процедурная парадигма включает в себя1) Базис - то, на чем строятся все остальные конструкции. Базис бывает скалярным (то, что неимеет внутренней структуры, простые типы данных) и структурным (составные типы данных,выражения, операторы).2) Средство построения абстракции3) Средство защиты построенных абстракцийОсновным расширением скалярного типа данных в C++ относительно C есть ссылочный тип данных.Побочный эффект - изменение состояния выполняемой программы.4Различие между readonly и const в C#Ключевое слово readonly отличается от ключевого слова const.
Поле с модификатором constможет быть инициализировано только при объявлении поля. Поле с модификатором readonly можетбыть инициализировано при объявлении или в конструкторе. Следовательно, поля смодификатором readonly могут иметь различные значения в зависимости от использованногоконструктора.
Кроме того, поле const является константой во время компиляции, а поле readonlyможно использовать для констант времени выполнения.Имя – это строка символов, служащая для обозначения некоторой сущности в программе.Область видимости (scope) - обозначает область программы, в пределах которой идентификатор(имя) некоторой переменной продолжает быть связанным с этой переменной и возвращать еёзначение. (из википедии)Область видимости (действия) начинается от языковой конструкции, где вводится объект данных.С каждым объектом связываются тип, область действия, время жизни.Виды объектов (статические, квазистатические…)●●●●статические — существуют всё время работы программыквазистатические — существуют только во время работы некоторой синтаксическивыделенной конструкции (блока)динамические — существуют до тех пор, пока нужны: до сборки мусора, удаленияхранимые (persistent)Объектно-референциальная модельОбъекты - принципиально анонимные, именования являются ссылками на объекты.
В таких моделяхвсе параметры передаются в функции всегда по ссылкам. Связывание с другими объектами чистодинамическое.В языках C# и Java ссылки - это единственный способ обращения к объектам. В этих языках принятареференциальная объектная модель.Примеры:JavaАлгол 68int[] a; // объявили именованнуюссылку, но пока пустуюa = new int [10]; // связалиименованную ссылку с объектомX x;x = new X();int i;ref int a = i; // ссылка на intref ref int b = a; // ссылка нассылку на intПримитивные ТД. Объявление переменных в Ада●●●●●арифметическиелогический booleanсимвольный charуказательпорядковые ТД (определяются на уже описанных). Например, перечисления.5Описываются какие-то особенности языка Ада: в основе всех типов лежит какой-то канонический тип(дальше не получилось разобрать, что написано).