Андрей Попов. Доцент.

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

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

В коротком курсе (9 лекций) обсуждаются следующие вопросы, связанные с языками программирования:
  • Почему языков программирования так много и они такие разные?
  • Как появлялись и развивались языки и технологии программированиия?
  • В чем сходство и различие языков друг от друга, как их можно классифицировать?
  • Базовые элементы языков программирования.

Домашние задания

  1. Выяснить, какие языки программирования доступны в вашей операционной системе "из коробки".
    Отвечать здесь. Результаты публикуются (после одобрения) здесь.

Тесты

Статистика групп 201-203

Вопросы к экзамену

  1. Назначение языков программирования и их разнообразие.
  2. Компьютер как средство для выполнения программ. Уровни абстракции программного обеспечения от аппаратуры.
  3. Фон-Неймановская архитектура компьютера. Исполняемые программы для компьютера фон Неймана.
  4. Способ хранения числовых данных в компьютере.
  5. Способ хранения символьных данных в компьютере. Виды кодировок.
  6. Команды компьютера в машинных кодах. Язык ассемблера.
  7. Классификация языков программирования. Императивные и декларативные языки.
  8. Классификация языков программирования по видам типизации.
  9. Этапы развития технологий программирования и критерии качества программного обеспечения.
  10. «Стихийный» подход к программированию. Методы снижения сложности и повышения надежности программ.
  11. Структурный подход к программированию.
  12. Объектно-ориентированный и компонентный подходы к программированию.
  13. Общая структура языков программирования. Лексические, синтаксические и семантические правила.
  14. Описание синтаксиса языков программирования с помощью форм Бэкуса-Наура.
  15. Интерпретация и компиляция программ. Классические и смешанные схемы.
  16. Основные элементы языков программирования: переменные и структуры управления (последовательность, выбор, цикл).
  17. Подпрограммы как базовый элемент языков программирования. Связность подпрограмм.

Литература, материалы

  1. Обзорная лекция по языкам программирования Е.А. Зуева (кандидат физико-математических наук, ведущий программист Исследовательского центра Samsung). Доступны видео-запись лекции и презентация для нее.
  2. М. Густокашин "Разные языки программирования и их области применения". Лекция в Яндексе.
  3. Б. Мейер "Основы программирования", курс на сайте Intuit.ru
  4. Б. Мейер "Инструменты, алгоритмы и структуры данных", курс на сайте Intuit.ru
  5. Х. Абельсон, Д.Д. Сассман при участии Д. Сассман "Структура и интерпретация компьютерных программ". Добросвет, 2006 г. Классическая книга о программировании на основе вводного курса по программированию, читавшегося студентам Массачусетского технологического института. Данный курс отличается тем, что фокусируется на обучении тому, как составлять сложные программы, и на фундаментальных основах программирования.
  6. С. Макконнелл "Совершенный код. Мастер-класс". "Русская редакция", 2010 г. Одно из лучших практических руководств по методикам и технологиям программирования.

Презентации к лекциям

1. Назначение языков программирования и их разнообразие.

2. Двойная природа компьютера: математическая база и электронная реализация. Принципы и архитектура фон Неймана. Способы представления целых и вещественных чисел в памяти компьютера. Символьные данные и бинарный формат (символы ASCII, кодовые страницы, Unicode, кодировка UTF-8).

3. Классификация языков программирования. Низкоуровневные и высокоуровневые языки. Императивный и декларативный подходы к программированию. Типизация в языках программирования.

4. Технологии программирования: цели и этапы развития. Критерии качества ПО. Структурный подход к программированию.

5. Объектно-ориентированное программирование и компонентный подход.

6. Общая структура языков программирования. Лексические, синтаксические и семантические правила. Формы Бекуса-Наура, абстрактное синтаксическое дерево.

7. Интерпретация и комплиляция программ. Классические и смешанные схемы.

8. Базовые элементы языков программирования. Переменные и структуры управления.

9. Базовые элементы языков программирования. Подпрограммы.

Видеолекции (2017 год)

1. Популярные языки программирования. Три уровня абстракции программ от аппаратуры. Применимость языков к разным платформам (02.09.2017).


2. Принципы фон Неймана. Способы представления целых и вещественных чисел в памяти компьютера. Символьные данные и бинарный формат (символы ASCII, кодовые страницы, Unicode, кодировка UTF-8) (09.09.2017).