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

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

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

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

Тесты

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

  1. Назначение языков программирования и их разнообразие.
  2. Компьютер как средство для выполнения программ. Уровни абстракции программного обеспечения от аппаратуры.
  3. Фон-Неймановская архитектура компьютера. Исполняемые программы для компьютера фон Неймана.
  4. Способ хранения числовых данных в компьютере.
  5. Способ хранения символьных данных в компьютере. Виды кодировок.
  6. Команды компьютера в машинных кодах. Язык ассемблера.
  7. Классификация языков программирования. Императивные и декларативные языки.
  8. Классификация языков программирования по видам типизации.
  9. Этапы развития технологий программирования и критерии качества программного обеспечения.
  10. «Стихийный» подход к программированию. Методы снижения сложности и повышения надежности программ.
  11. Структурный подход к программированию.
  12. Объектно-ориентированный и компонентный подходы к программированию.
  13. Общая структура языков программирования. Лексические, синтаксические и семантические правила.
  14. Описание синтаксиса языков программирования с помощью форм Бэкуса-Наура.
  15. Интерпретация и компиляция программ. Классические и смешанные схемы.
  16. Основные элементы языков программирования: переменные и структуры управления (последовательность, выбор, цикл).
  17. Подпрограммы как базовый элемент языков программирования. Связность подпрограмм.
  18. Языки программирования для управления операционной системой. Эволюция языков сценариев Windows.
  19. История создания и основные концепции языка интерпретатора cmd.exe. Перенаправление ввода/вывода и конвейеризация команд.
  20. Командные файлы и алгоритмические возможности языка cmd.exe.
  21. Объектные модели в операционной системе Windows (COM, WMI, ADSI). Компонентный подход к программированию сценариев.
  22. Языки VBScript и JScript для сценариев Windows. Связь сценариев с внешними объектами через Windows Script Host.
  23. Язык и оболочка Windows PowerShell - причины создания, отличительные черты и основные возможности.
  24. Базовые концепции языка Windows PowerShell. Операторы для управления потоком объектов.

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

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

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

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

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

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

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

5. Объектно-ориентированное программирование. Основные принципы и понятия.

6. Объектно-ориентированное программирование. Основные принципы и понятия (продолжение).

7. Объектно-ориентированное программирование. Принципы использования. Компонентное программирование.

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

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

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

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

12. Языки программированиия для одной предметной области. Языки сценариев Windows.

13. История создания командного интерпретатора cmd.exe. Основные концепции, перенаправление ввода/вывода и конвейеризация команд.

14. Интерпретатор cmd.exe: особенности языка и практическое использование.

15. Объектные модели в операционной системе Windows (COM, WMI, ADSI). Компонентный подход к программированию сценариев. Языки VBScript и JScript для сценариев Windows. Связь интерпретатора языка сценариев с внешними объектами через Windows Script Host.

16. Командная оболочка и сценарии Windows PowerShell. Причины создания, отличительные черты и основные возможности. Базовые концепции языка Windows PowerShell. Операторы для управления потоком объектов.