Содержание
- 2. Краткая история развития языков программирования Машинные языки (1940-е гг.) Машинный код - система команд конкретной вычислительной
- 3. FORTRAN (FORmula TRANslator, 1954-57 гг.) Языки высокого уровня (ЯВУ) имитируют машинные языки, используя слова разговорного языка
- 4. COBOL (COmmon Business Oriented Language, 1959 г.) COBOL - язык программирования, предназначенный, в первую очередь, для
- 5. ALGOL (ALGOrithmic Language, 1958-60 гг.) ALGOL - название ряда языков программирования, применяемых при составлении программ для
- 6. BASIC (Beginner's All-purpose Symbolic Instruction Code, 1963 г.) BASIC (многоцелевой язык символических инструкций для начинающих) -
- 7. Pascal (1970 г.) Паскаль (Pascal) - высокоуровневый язык программирования общего назначения, назван в честь выдающегося французского
- 8. C (1972 г.) С - стандартизированный процедурный язык программирования общего назначения, исходно созданный для разработки и
- 9. C++ (1983 г.) С++ - компилируемый статически типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования,
- 10. Java (1995 г.) Java - объектно-ориентированный язык прикладного программирования (обладает преемственностью по отношению к C++ и
- 11. Программа на компилируемом языке при помощи специальной программы - компилятора - преобразуется (компилируется) в набор инструкций
- 12. Парадигмы программирования Парадигма программирования - это устоявшаяся система взглядов, определяющая стиль программирования, некоторый цельный набор идей
- 13. Парадигмы программирования Объектно-ориентированное программирование Объектно-ориентированное программирование (ООП) - это парадигма программирования, при использовании которой главными элементами
- 14. Парадигмы программирования Функциональное программирование Функциональное программирование - парадигма программирования, в которой процесс вычисления трактуется как вычисление
- 15. Парадигмы программирования Логическое программирование Логическое программирование - парадигма программирования, базирующаяся на автоматическом доказательстве теорем с использованием
- 16. Рейтинг языков программирования TIOBE Programming Community (http://www.tiobe.com)
- 17. Рейтинг языков программирования TIOBE Programming Community (http://www.tiobe.com)
- 19. Скачать презентацию
Слайд 2Краткая история развития языков программирования
Машинные языки (1940-е гг.)
Машинный код - система
Краткая история развития языков программирования
Машинные языки (1940-е гг.)
Машинный код - система
Языки ассемблера (машинно-ориентированные языки, 1950-е гг.)
Языки ассемблера предполагают мнемоническое кодирование машинных команд и использование символических меток вместо физических адресов ячеек с данными.
Ассемблер - компьютерная программа, предназначенная для преобразования мнемонических инструкций в исполняемый машинный код.
Программирование на ассемблере требует хорошего знания архитектуры машины, на которой программа будет выполняться, является низкоуровневым (программирование в терминах ячеек памяти, индексных и базовых регистров, указателя стека и т.п.).
Язык ассемблера, вследствие жесткой привязки к архитектуре компьютера определенного класса, делает программы непереносимыми.
Слайд 3 FORTRAN (FORmula TRANslator, 1954-57 гг.)
Языки высокого уровня (ЯВУ) имитируют машинные языки,
FORTRAN (FORmula TRANslator, 1954-57 гг.)
Языки высокого уровня (ЯВУ) имитируют машинные языки,
Стандарты языка: 66 (отступ слева для ввода кода программ с перфокарт), 77 (новые типы данных, условные операторы и др.), 90 (свободный формат записи кода, дополнительные описания и управляющие конструкции, элементы ООП), 95, 2003, 2008.
Компиляторы: VS Fortran, XL Fortran (IBM), Digital Visual Fortran (DVF, DEC), Microsoft Visual Studio (FPS), Lahey, Watcom, Intel Fortran Compiler, Sun Studio Fortran Compiler, GNU (g77, g95). Компиляторы для разных платформ (MS Windows, UNIX). Трансляторы с FORTRAN-а на другие (F2C).
FORTRAN имеет большой набор встроенных математических функций, поддерживает работу с целыми, вещественными и комплексными числами высокой точности, имеет типовые лексические конструкции (условия, циклы), использует операторы безусловного перехода и метки, форматный ввод-вывод, эффективно работает с многомерными массивами.
FORTRAN широко используется для научных и инженерных вычислений, доступно большое количество написанных на нём программ и специализированных библиотек подпрограмм (вычислительные - SCALAPACK, BLAS, IMSL; организация распределенных вычислений - MPI, PVM; построение графических интерфейсов - Quickwin, FORTRAN/Tk).
Слайд 4 COBOL (COmmon Business Oriented Language, 1959 г.)
COBOL - язык программирования, предназначенный,
COBOL (COmmon Business Oriented Language, 1959 г.)
COBOL - язык программирования, предназначенный,
Пример кода программы:
Разработчик языка -
Грейс Хоппер
(Grace Hopper, 1906-1992)
Слайд 5 ALGOL (ALGOrithmic Language, 1958-60 гг.)
ALGOL - название ряда языков программирования, применяемых
ALGOL (ALGOrithmic Language, 1958-60 гг.)
ALGOL - название ряда языков программирования, применяемых
Программа на языке ALGOL - не свободная последовательность команд, а блочная структура, состоящая из четко описанных и отделенных друг от друга частей (первый структурный или процедурный язык). В языке выделены структурные управляющие конструкции: ветвления, циклы, последовательные участки, исполняющие условно или многократно вложенные наборы операторов, что дало возможность описывать логику программы без использования безусловных переходов. Появилась возможность использовать рекурсивные процедуры.
Стандарт языка полностью проигнорировал средства ввода-вывода (каждая реализация языка должна решать этот вопрос самостоятельно, исходя из особенностей целевой машины и потребностей пользователей, что делает несовместимыми программы, написанные для разных компиляторов).
Реализации: ALGOL-58, ALGOL-60, ALGOL-68. Развитие - PL/I (Programming Language I).
Пи́тер На́ур (Peter Naur)
Джон Бэкус (John Backus)
Основные создатели языка
Слайд 6 BASIC (Beginner's All-purpose Symbolic Instruction Code, 1963 г.)
BASIC (многоцелевой язык символических
BASIC (Beginner's All-purpose Symbolic Instruction Code, 1963 г.)
BASIC (многоцелевой язык символических
Синтаксис языка напоминает FORTRAN и многие элементы заимствованы из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Ключевые слова для операторов взяты из английского языка. Основные типы данных: строки и числа.
BASIC традиционно подвергается критике за то, что его простота и бесструктурность поощряют неверные методики и привычки программирования, которые могут быть уместны только при разработке небольших программ.
Развитие языка: Microsoft Visual Basic - средство разработки программного обеспечения, включающее язык программирования и среду разработки. Ориентирован на оперативную разработку Windows-приложений с графическим интерфейсом пользователя.
Томас Курц и Джон Кемени
(Thomas E. Kurtz & John G. Kemeny)
Создатели языка
Слайд 7 Pascal (1970 г.)
Паскаль (Pascal) - высокоуровневый язык программирования общего назначения, назван
Pascal (1970 г.)
Паскаль (Pascal) - высокоуровневый язык программирования общего назначения, назван
Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль включает в себя множество «алголоподобных» структур и конструкций (if, then, else, while, for…), а также возможности для структурирования информации и абстракций (определение типов, записи, указатели, перечисления, множества).
Распространенные реализации: Turbo Pascal, Borland Pascal, GNU Pascal, TMT Pascal, Free Pascal. Объектное расширение языка: Object Pascal, Delphi. Развитие: языки Modula-2 и Oberon.
Никлаус Вирт (Niklaus Wirth)
Создатель языка
Слайд 8 C (1972 г.)
С - стандартизированный процедурный язык программирования общего назначения, исходно
C (1972 г.)
С - стандартизированный процедурный язык программирования общего назначения, исходно
Сегодня C является самым популярным языком для создания как системного программного обеспечения, так и прикладных программ. Отличается высокой эффективностью, экономичностью и переносимостью. При этом многие элементы языка при некорректном использовании представляют потенциальную опасность.
Особенности языка C: - простая языковая база (многие существенные возможности вынесены в библиотеки); - ориентация на процедурное программирование, обеспечивающая удобство применения структурного стиля программирования; - многие операции языка соответствуют машинным кодам и допускают прямую трансляцию в него; - поддержка указателей на функции и статические переменные (возможность непосредственного доступа и манипуляции с адресами памяти); - статическое, автоматическое и динамическое выделение памяти; - содержит препроцессор, который обрабатывает текстовые файлы перед компиляцией (определение программных констант, макросов для замены вызовов функций, включение файлов с исходным кодом...) - возможность использования записей (собирательные типы данных - структуры); - передача параметров в функции по значению, а не по ссылке; - области действия имен…
Стандарты и спецификации: K&R C (1978 г.), ANSI C (1989 г.), С99.
Компиляторы: Borland C++, Intel C/C++ compiler, Microsoft Visual Studio, C++ Builder, GNU Compiler Collection, Open Watcom, Sun Studio.
Кен Томпсон и Деннис Ритчи
(Kenneth Thompson & Dennis M. Ritchie)
Слайд 9 C++ (1983 г.)
С++ - компилируемый статически типизированный язык программирования общего
назначения. Поддерживает
C++ (1983 г.)
С++ - компилируемый статически типизированный язык программирования общего
назначения. Поддерживает
C++ добавляет к языку C объектно-ориентированные возможности: вводит классы, которые обеспечивают три важнейших свойства ООП: инкапсуляцию, наследование и полиморфизм.
C++ широко используется для разработки ПО различного назначения:
системное ПО
драйверы устройств
приложения для встраиваемых систем, высокопроизводительных серверов
прикладные приложения
Стандарты языка: ISO/IEC 14882:1998 «Standard for the C++ Programming Language» (1998 г.), ISO/IEC 14882:2003 (2003 г.).
Стандарт C++ включает описание ядра языка и стандартной библиотеки. Существует большое количество библиотек C++, не входящих в стандарт. Стандартная библиотека C++ состоит из следующих разделов: поддержка языка, средства диагностики, средства общего назначения, работы с текстовыми строками, интернационализации, контейнеры, итераторы, численные алгоритмы, средства ввода-вывода.
Бьёрн Страуструп
(Bjarne Stroustrup)
#include
template
public: Array (T Size=1) : M (new T[Size]), N(Size), n(0) {}
Array (void) { delete [] М;}
T Count (void) const { return n; }
T operator [] (int i) const { return M[i]; }
void Add (Т Data);
int N, n; };
Слайд 10 Java (1995 г.)
Java - объектно-ориентированный язык прикладного программирования (обладает
преемственностью по отношению
Java (1995 г.)
Java - объектно-ориентированный язык прикладного программирования (обладает
преемственностью по отношению
Байт-код является полностью независимым от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Исполнение программы полностью контролируется виртуальной машиной: любые операции, которые превышают установленные полномочия программы вызывают немедленное прерывание.
Исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java (в сравнении с C/С++ - большее время решения задач и потребление памяти).
Основные возможности языка: автоматическое управление памятью;
расширенные возможности обработки исключительных ситуаций;
богатый набор средств фильтрации ввода/вывода;
набор стандартных коллекций, таких как массив, список, стек и т. п.;
наличие простых средств создания сетевых приложений;
наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;
встроенные в язык средства создания многопоточных приложений;
унифицированный доступ к базам данных
поддержка шаблонов;
параллельное выполнение программ.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
Слайд 11 Программа на компилируемом языке при помощи специальной программы - компилятора -
Программа на компилируемом языке при помощи специальной программы - компилятора -
Интерпретируемый язык предполагает хранение программы на исходном языке и перевод ее текста на машинный язык (интерпретацию) непосредственно в момент запуска программы. Программа не может быть запущена без интерпретатора языка программирования.
Примеры компилируемых языков: Fortran, Pascal, C/C++ Примеры интерпретируемых языков: Perl, Python, языки командных оболочек UNIX (sh, bash, tcsh)
Промежуточный вариант предполагает компиляцию программы не в машинный язык, а в машинно-независимый код низкого уровня (байт-код) и последующее выполнение байт-кода «виртуальной машиной». Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету». Примеры языков, использующих байт-код: Java, C#.
Компилируемые и интерпретируемые языки
Слайд 12Парадигмы программирования
Парадигма программирования - это устоявшаяся система взглядов, определяющая стиль программирования, некоторый
Парадигмы программирования
Парадигма программирования - это устоявшаяся система взглядов, определяющая стиль программирования, некоторый
процедурная (императивная)
объектно-ориентированная
функциональная
логическая
Процедурное программирование
Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 1940-х годах.
Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.
Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных данных, в заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.
Примеры процедурных языков: FORTRAN, Pascal, C, Ada.
Процедурное программирование: структурное (C, Pascal), операционное (FORTRAN, BASIC).
Слайд 13Парадигмы программирования
Объектно-ориентированное программирование
Объектно-ориентированное программирование (ООП) - это парадигма программирования, при использовании которой
Парадигмы программирования
Объектно-ориентированное программирование
Объектно-ориентированное программирование (ООП) - это парадигма программирования, при использовании которой
В языках программирования понятие объекта реализовано как совокупность свойств (структур данных, характерных для данного объекта), методов их обработки (подпрограмм изменения их свойств) и событий, на которые данный объект может реагировать и, которые приводят, как правило, к изменению свойств объекта.
Инкапсуляция - объединение данных и свойственных им процедур обработки в одном объекте.
Класс (фундаментальное понятие парадигмы ООП) - это шаблон, на основе которого может быть создан конкретный программный объект, он описывает свойства и методы, определяющие поведение объектов этого класса. Каждый конкретный объект, имеющий структуру этого класса, называется экземпляром класса.
Наследование предусматривает создание новых классов на базе существующих и позволяет классу-потомку иметь (наследовать) все свойства класса-родителя.
Полиморфизм - возможность объектов с одинаковой спецификацией иметь различную реализацию (использовать различные методы обработки для разных объектов).
Модульность: объекты заключают в себе полное определение их характеристик, никакие определения методов и свойств не должны располагаться вне его, это делает возможным свободное копирование и внедрение одного объекта в другие.
Примеры объектно-ориентированных языков: C++, Java, Object Pascal, Python.
Слайд 14Парадигмы программирования
Функциональное программирование
Функциональное программирование - парадигма программирования, в которой процесс вычисления трактуется
Парадигмы программирования
Функциональное программирование
Функциональное программирование - парадигма программирования, в которой процесс вычисления трактуется
Роль основной конструкции в функциональных языках играет выражение, к которым относятся скалярные константы, структурированные объекты, функции, тела функций и вызовы функций. Программа представляет собой совокупность описаний функций и выражения, которые необходимо вычислить. Вычисление выражения описывается как комбинация вызовов функций того же или более низкого уровня (часто рекурсивных). Каждая следующая функция в этой комбинации описывается аналогичным образом, до тех пор, пока описание не сведётся к предопределённым функциям, вычисление которых считается заданным. В отличие от императивного стиля, описывающего шаги, ведущие к достижению цели, функциональный стиль описывает математические отношения между данными и целью.
Функциональное программирование основано на вычислении результатов функций в зависимости от исходных данных и результатов выполнения других функций и не предполагает явного хранения состояния программы (и переменных в памяти).
Операторы присваивания отсутствуют (изменения состояния переменных не производится), вследствие чего переменные обозначают не области памяти, а объекты программы, что полностью соответствует понятию переменной в математике.
Примеры функциональных языков: Lisp, Haskell, ML.
Слайд 15Парадигмы программирования
Логическое программирование
Логическое программирование - парадигма программирования, базирующаяся на автоматическом доказательстве теорем
Парадигмы программирования
Логическое программирование
Логическое программирование - парадигма программирования, базирующаяся на автоматическом доказательстве теорем
Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между объектами (в терминах условий или ограничений) и цели (запроса). При этом нужно только специфицировать факты, на которых основывается алгоритм, а не определять последовательность шагов, которые требуется выполнить.
Программа строится из последовательности фактов и правил, затем формулируется утверждение, которое язык пытается доказать с помощью правил. Язык сам ищет решение с помощью методов поиска и сопоставления, которые в нем заложены. Логические программы не отличаются высоким быстродействием, так как процесс их выполнения сводится к построению прямых и обратных цепочек рассуждений разнообразными методами поиска.
Примеры логических языков: Prolog, Planner, Popler, Mercury.
Пример программы на языке Prolog, вычисляющей числа Фибоначчи:
fib(0) = 1, fib(1) = 1
fib(n) = fib(n-1) + fib(n-2)
Слайд 16Рейтинг языков программирования
TIOBE Programming Community (http://www.tiobe.com)
Рейтинг языков программирования
TIOBE Programming Community (http://www.tiobe.com)
Слайд 17Рейтинг языков программирования
TIOBE Programming Community (http://www.tiobe.com)
Рейтинг языков программирования
TIOBE Programming Community (http://www.tiobe.com)