Языки программирования Парадигмы языков Стандартизация языков Интернационализация Типы данных Управление последовательностью действий Управление памятью.

Презентация:



Advertisements
Похожие презентации
ВЫПОЛНЕНИЕ АЛГОРИТМОВ КОМПЬЮТЕРОМ. Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой. Программа данные, предназначенные.
Advertisements

Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 3.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Познакомиться с основными понятиями языка Pascal 2.
Типы данных. В Delphi в объявлении переменной необходимо указать ее тип Стандартные типы уже определены в языке, а переменную такого типа можно объявить,
М.Ю. Харламов, ВНУ им. В.Даля, Семантический анализатор Семантический анализатор выполняет следующие основные действия: проверку соблюдения во входной.
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
Тип, имя и значение переменной.. Переменные. В объектно-ориентированных языках программирования, и в частности в языке Visual Basic, переменные играют.
Формальные и фактические параметры Вызов по ссылке и значению.
Основы алгоритмизации Алгоритмы. Типы алгоритмов. Алгоритмы. Типы алгоритмов. Блок-схемы. Вопросы и задания. Вопросы и задания.
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
Знакомство с языком Паскаль. Язык Pascal был создан в начале 70-х годов XX века Никлаусом Виртом. Основой для этого языка послужил широко распространенный.
Язык Python Универсальный язык программирования Интерпретируемый язык.
Pascal 1 Основы языка Паскаль Информатика и ИКТ Смирнов М.В. МКО ООШ п. Климковка Белохолуницкого района Кировской области.
Февраль Типизация языков программирования.
Переменные, величины Переменные, величины Типы, имена переменных Типы, имена переменных Хранение величин Хранение величин Переменные, величины Переменные,
О конформности Си-программ Михаил Посыпкин ИСП РАН.
Тема 1. Введение 1.
Транксрипт:

Языки программирования Парадигмы языков Стандартизация языков Интернационализация Типы данных Управление последовательностью действий Управление памятью

Парадигмы языков программирования 1. Императивные (процедурные) языки. Основная концепция – это состояние машины, т.е. множество всех значений всех ячеек памяти компьютера. Программа – это последовательность операторов, меняющих значения ячеек памяти, т.е. переводящих машину в новое состояние. Примеры. C/C++, Fortran, Algol, PL/1, Pascal, Ada, Cobol, Smalltalk 2. Аппликативные (функциональные) языки. Основная концепция – не определение последовательности состояний машины для получения ответа, а выбор функции, которую надо применить к исходным данным для получения ответа. Синтаксис: функция 1(функция 2(функция 3(…функцияn(данные)…))) Примеры. ML, LISP, Haskell, F# 3. Языки, основанные на системе правил (языки логического программирования). В основе теория и аппарат математической логики с использованием математических принципов резолюций. Исполнение программы - автоматическое доказательство теорем. Синтаксис: разрешающее условие 1 действие 1 Примеры. Planner, Prolog. 4. Объектно-ориентированные языки. Главное здесь то, что в этой строятся сложные объекты как расширения более простых объектов и наследуют их свойства. Основные синтаксические элементы: классы (наследование, полиморфизм, инкапсуляция) и интерфейсы. Примеры. Smalltalk, C++, Java, Delphi, семейство языков.NET

Виды стандартов Частные стандарты – разработаны конкретными фирмами. Главным недостатком считается то, что часто появляются новые реализации, несовместимые со старыми. Согласительные стандарты (просто стандарты) – разработаны специальными организациями и основаны на соглашении всех заинтересованных участников.

Организации – разработчики стандартов В США: ANSI (American National Standards Institute) комитет X3 ассоциации CBEMA (Computer Business Equipment Manufactures Association) IEEE (Institute of Electrical and Electronic Engineers) NIST (National Institute of Standards and Technology) В Великобритании: BSI (British Standards Institute) Международные организации: ISO (International Standards Organization, штаб- квартира находится в Женеве).

Аспекты стандартизации Своевременность. Стандарт Fortran был создан поздно, в 1966 г., когда уже существовало несколько несовместимых версий. Другая крайность: стандарт Ada был создан слишком рано, в 1983 г., хотя первый эффективный компилятор появился только в 1987 г. Вовремя были созданы стандарты для C и Pascal.

Соответствие : Разные компиляторы компилируют 3-мя разными способами: 1). Вызывает S{1} (Delphi). 2). Вызывает S{3}. 3). Выдаёт ошибку, говоря что пропущено forward-описание. В соответствии со стандартом языка Pascal правильным является вариант 3, но обоснованным является и вариант 2. Совершенно недопустимым является вариант 1. program Anomaly; procedure S{1}; begin writeln(wrong one); end; procedure T; {Здесь пропущено: procedure S; forward; } procedure U; begin S{2} end; procedure S{3}; begin writeln(right one) end; begin U end; begin T end.

Устаревание. Стандарты обычно считается, что должны пересматриваться 1 раз в 5 лет. Обычно делается так, чтобы следующая версия была обратно совместима с предыдущей версией, но при этом язык может стать очень громоздким, т.к. будет накапливать устаревшие конструкции. Поэтому сейчас в стандарты вводится понятие устаревшей (не рекомендуемой) возможности, заранее предупреждающая пользователя, что может быть исключена из языка через 1–2 его последующих пересмотра.

Интернационализация Вопрос интернационализации имеет 2 аспекта: Как можно писать саму программу на этом языке. Как программы на этом языке выполняют ввод/вывод данных.

1. Идеографические системы (кодировка текстов: ANSI-7, ANSI-8, UTF-8, Unicode) 2. Схемы упорядочения: – сортировка нестандартных латинских символов (типа умляутов) и смешанных латинских и нелатинских языков – регистр (некоторые языки не имеют регистров – японский, арабский, тайский, иврит) – направление письма (слева направо, справа налево, сверху вниз) 3. Запись чисел (100000,0 и и ,0 и 100,000.0) 4. Денежные единицы ($10, 10 руб.) 5. Формат даты (Россия и Франция – , Америка – 11/26/06, Англия – 26/11/06, Италия – 26-XI-06) 6. Формат времени (Россия и Япония – 17:40, Америка – 5:40 p.m., Германия – 17.40, Франция – 17h40) 7. Часовые пояса (бывают пояса со сдвигом 15, 30, 45 и 60 мин, разное летнее время в мире и в северном/южном полушарии)

Типы данных Статическая типизация контроль типов осуществляется при компиляции. Динамическая типизация контроль типов осуществляется во время выполнения. Языки без типизации: –Языки с полиморфным типом данных –Языки с неявным определением типов –Языки с типом, определяемым пользователем

Статическая / динамическая типизация Статическая типизация – конечные типы переменных и функций устанавливаются на этапе компиляции. Динамическая типизация – все типы выясняются уже во время выполнения программы. Примеры: Статическая: C, Java, C#; Динамическая: Python, JavaScript, Ruby.

Сильная / слабая типизация Сильная типизация – язык не позволяет смешивать в выражениях различные типы и не выполняет автоматические неявные преобразования (вычитание из строки множество). Слабая типизация предполагает выполнение множества неявных преобразований автоматически, допуская потерю точности. Примеры: Сильная: Java, Python, Haskell, Lisp; Слабая: C, JavaScript, Visual Basic, PHP.

Явная / неявная типизация Явно-типизированные языки отличаются тем, что тип новых переменных / функций / их аргументов нужно задавать явно. Языки с неявной типизацией перекладывают эту задачу на компилятор / интерпретатор. Примеры: Явная: C++, D, C# Неявная: PHP, Lua, JavaScript

Примеры: Язык C - статическая слабая явная типизация Язык Python динамическая сильная неявная типизация Язык Assembler – сильная без типовая типизация(с проверкой размерности регистров) Динамика в статических языках: C# поддерживает псевдо-тип dynamic Delphi посредством специального типа Variant.

Скалярные типы данных Целые (8, 16, 32, 64, знаковые/беззнаковые, двоичное представление или посимвольное – упакованное десятичное BCD, диапазон значений 1..10) Вещественные (фиксированная/плавающая [знак- экспонента-мантисса] точка, IEEE 32, IEEE 64, IEEE 80, Real 48, Currency), комплексные числа Перечисления (enum) Логические (0 и 1 / 0 и –1 / 0 и не 0) Символьные (кодировка AnsiChar/UnicodeChar) Множества (битовые строки и хеш-кодирование)

Составные типы данных Массивы (статические/динамические) Ассоциативные массивы в Perl (ключ-значение) Записи (упакованные/неупакованные, записи с вариантами) Строковые (PChar/string, фиксированная string[30] / переменная string длина, статические/динамические, кодировка) Варианты (Variant, OleVariant) Списки (специальные виды: стеки, очереди, деревья, графы) Файлы (последовательные, текстовые [stdin, stdout, stderr], прямого доступа)

Прочие типы данных Указатели Ссылка Валютный тип Процедурные типы (процедурные, методы объектов, делегаты) Объекты, классы, интерфейсы Параметризированные (записи в Ada и строки в Pascal) и шаблонные типы (C++)

Управление последовательностью действий Управление вычислением выражений: – Запись выражений (инфикс, постфикс) – Правила старшинства (приоритет операций) Формы управления последовательностью выполнения операторов: – Композиция (последовательное выполнение/на основе правил, составные операторы, операторы goto/break/continue/exit). При вызове break/continue/exit реализуется последовательный вызов процедур секций finally. – Ветвление (if-then-else, case) – Повторение (циклы)

Подпрограммы (раннее/позднее связывание, передача параметров, реализация через стек, фактические и формальные параметры, установка соответствия параметров через позицию/по имени, передача параметров по ссылке/значению,) Параллельное программирование (многопоточность, синхронизация) Обработка исключений (raise, try except, try finally)

Управление памятью 1. Статическое выделение в сегменте данных, в стеке и в регистрах (Fortran – только статическое выделение). 2. Явное выделение + освобождение памяти (C, Pascal: New=GetMem, Dispose=FreeMem, AllocMem, ReallocMem) 3. Явное выделение и управление памятью на основе счетчика использования (IUnknown, string): AddRef + Release. 4. Явное выделение + сбор мусора (Алгол,.NET). Момент сбора мусора непредсказуем.