Языки программирования, 01 лекция (от 05 сентября)

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

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

Предыдущая лекция | Следующая лекция

Содержание

Языки программирования

Лектор: Головин Игорь Геннадьевич

Курс читается с 1983 года

Учебники и интересная литература

  • Языки Программирования
    • В.Ш.Кауфман «Языки программирования: концепция и примеры»
    • М. Бен-Ари «Языки программирования. Практический сравнительный анализ»
    • Р. У. Себеста «Основные концепции языков программирования»
    • М. Зелкович, Т. Пратт «Языки программирования: разработка и реализация»
  • С++
    • Б. Страуструп «Дизайн и эволюция языка С++»
  • Ada 83
    • Н. Джехани «Язык Ada»
  • Ada 95
    • -
  • Modula-2
    • Н. Вирт «Программирование на Модуле 2»
  • Oberon-2
    • -
  • Java
    • Т. Шилдт, А. Нотон «Справочник по Java»
    • Дж. Гослинг, К. Арнольд «Язык программирования Java»
  • C#
    • Гумерсон «»
    • Робинсон «»
  • Delphi
    • -

Программа Курса

  1. Введение
    1. Определение Языка Программирования (далее — ЯП)
    2. Исторический очерк развития ЯП
    3. Концептуальная схема рассмотрения ЯП
    4. Основные понятия (данные, операции, связывание, виртуальная машина языка)
  2. Традиционные ЯП
    1. Парадигмы программирования
      1. Процедурная парадигма (машина Фон-Неймана)
      2. Объектна-процедурная парадигма
    2. Основные понятия (классы)
    3. Абстрактные типы данных, родовое программирование
  3. Объектно-ориентированное программирование

О чем не будет сказано и почему

  • Параллельное программирование — слишком интересно, поэтому ему посвящен отдельный курс
  • Функциональная парадигма (LISP) — не используется в индустриальном программировании
  • Логическое программирование (PROLOG) — не используется в индустриальном программировании

Виды программирования

  • Игровое программирование
    • Типичный язык — BASIC
    • Число программистов — 1
    • Число пользователей — 0 или 1
    • Цель — для развлечения и поддержания навыков, фактически — беcцельно
    • Интерфейс — понятный себе
  • Научное программирование
    • Типичный язык — FORTRAN
    • Число программистов — 1
    • Число пользователей — 1 или 2
    • Цель — для решения конкретной задачии или очень узкого круга однотипных задач
    • Интерфейс — такой, чтоб можно было подойти и объяснить
  • Индустриальное программирование (зародилось лишь в 1980х)
    • Типичного языка нет
    • Число программистов — много
    • Число пользователей — невообразимо много
    • Цель — для решения чужих задач, т.е. происходит отчуждение программы
    • Интерфейс — поясненный обширной документацией, понятный интуитивно

Курс посвящён именно индустриальному программированию с учётом его особенностей

Определение ЯП

Есть мнение, что ЯП — язык написания компьютерных программ. Но.

  • APL — первый широко известный ЯП, придуманный задолго до BASIC и не для компьютера, а просто как математическая нотация. Дело в том, что автору в его научных статьях было тяжело записывать сложные вычисления с матрицами.
  • PLANNER — еще одна похожая нотация.

Эти примеры не просто не предназначились для компьютерной реализации, они вообще машинно с полной мере не реализуемы.

  • Algol-60 — реализован на компьютере, но основное предназначение — публикация алгоритмов в журналах
  • HTML — язык разметки текста с уклоном в последующее отображение

Язык Программирования — инструмент для планирования поведения исполнителя, в точности выполняющего предписания.

Это подразумевает однозначную трактовку текста на языке исполнителем (будь то ОС компьютера, веб-сервер Apache или миллион китайцев) с целью выполнения поставленной цели. И здесь мы встречаем важное отличие искусственных языков от естественных — однозначность.

  • Привет Освободителям Востока от Ф. Э. Дзержинского
  • Тощая торговка вяленой рыбой сидела за прилавком


Языки Программирования


01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28


Календарь

чт вт чт вт чт вт чт вт чт вт
Сентябрь
  05 07 12 14 19 21 26 28
Октябрь
  03 05 10 12 17 19 24 26 31
Ноябрь
02 14 16 21 23 28 30
Декабрь
05 07 12 14

Материалы к экзамену
Сравнение языков программирования


Эта статья является конспектом лекции.



Лекции

10 семестр История развития вычислительных технологий в СССР, России | Современные проблемы прикладной математики
9 семестр Формальная спецификация и верификация программ | Теория игры и исследования операций | История и методология прикладной математики | Основы российского права | История религии | Параллельная обработка данных
8 семестр Верификация программ на моделях | Математические основы теории прогнозирования | Основы квантовой физики и квантовых вычислений | Методы оптимизации | Распределённые операционные системы
7 семестр Вычислительные Системы | Объектно-ориентированные Анализ и Проектирование | Искусственный Интеллект | Математическая Логика | Функциональный Анализ | Социология | Параллельная Обработка Данных
6 семестр Основы Кибернетики | Численные Методы | Конструирование Компиляторов | Компьютерные Сети
5 семестр Базы Данных | Языки Программирования | Экономические Науки
3 семестр Операционные системы

Спецкурсы
Осень 2013 Современная криптография | Дизайн и реализация ОС FreeBSD
Весна 2011 Практические аспекты сетевой безопасности | Сетевое администрирование в UNIX
Осень 2010 UNИX | Теория функционального программирования. Язык Haskell | Введение в информационную безопасность | Информационный поиск
Весна 2010 UNИX | Архитектура и программирование массивно-параллельных вычислительных систем | Язык Ада
Осень 2009 UNИX | Введение в парадигмы программирования
Весна 2009 UNИX | Архитектура и программирование массивно-параллельных вычислительных систем
Осень 2008 UNИX | Структурные методы обработки изображений и сигналов
Весна 2008 UNИX | Вопросы организации вычислительных кластеров на основе UNIX-серверов | Философия математики
Осень 2007 UNИX
Весна 2007 UNИX | Практика мультипарадигмального программирования
Осень 2006 Введение в теорию построения оптимизирующих компиляторов

Отдельные лекции Bruce Eckel, The State of The Java Union | Richard Stallman: Free software: ethics and practice, Copyright vs Community in the Age of Computer Networks | Наану Александр, Vim | Erinn Clark, The Tor Project: Anonymity Online
Личные инструменты
Разделы