Языки и методы программирования
Односеместровый курс (36 часов лекций) состоит из двух частей:- Общие вопросы, связанных с языками программирования:
- Почему языков программирования так много и они такие разные?
- Как появлялись и развивались языки и технологии программированиия?
- В чем сходство и различие языков друг от друга, как их можно классифицировать?
- Базовые элементы языков программирования.
- Появление и эволюция языков программирования на примере одной предметной области (языки сценариев для операционной системы Windows).
Тесты
Вопросы к экзамену
- Назначение языков программирования и их разнообразие.
- Компьютер как средство для выполнения программ. Уровни абстракции программного обеспечения от аппаратуры.
- Фон-Неймановская архитектура компьютера. Исполняемые программы для компьютера фон Неймана.
- Способ хранения числовых данных в компьютере.
- Способ хранения символьных данных в компьютере. Виды кодировок.
- Команды компьютера в машинных кодах. Язык ассемблера.
- Классификация языков программирования. Императивные и декларативные языки.
- Классификация языков программирования по видам типизации.
- Этапы развития технологий программирования и критерии качества программного обеспечения.
- «Стихийный» подход к программированию. Методы снижения сложности и повышения надежности программ.
- Структурный подход к программированию.
- Объектно-ориентированный и компонентный подходы к программированию.
- Общая структура языков программирования. Лексические, синтаксические и семантические правила.
- Описание синтаксиса языков программирования с помощью форм Бэкуса-Наура.
- Интерпретация и компиляция программ. Классические и смешанные схемы.
- Основные элементы языков программирования: переменные и структуры управления (последовательность, выбор, цикл).
- Подпрограммы как базовый элемент языков программирования. Связность подпрограмм.
- Языки программирования для управления операционной системой. Эволюция языков сценариев Windows.
- История создания и основные концепции языка интерпретатора cmd.exe. Перенаправление ввода/вывода и конвейеризация команд.
- Командные файлы и алгоритмические возможности языка cmd.exe.
- Объектные модели в операционной системе Windows (COM, WMI, ADSI). Компонентный подход к программированию сценариев.
- Языки VBScript и JScript для сценариев Windows. Связь сценариев с внешними объектами через Windows Script Host.
- Язык и оболочка Windows PowerShell - причины создания, отличительные черты и основные возможности.
- Базовые концепции языка Windows PowerShell. Операторы для управления потоком объектов.
Литература, материалы
- Оптимальный язык программированиия для своих задач. Интерактивный гайд.
- Обзорная лекция по языкам программирования Е.А. Зуева (кандидат физико-математических наук, ведущий программист Исследовательского центра Samsung). Доступны видео-запись лекции и презентация для нее.
- М. Густокашин "Разные языки программирования и их области применения". Лекция в Яндексе.
- Б. Мейер "Основы программирования", курс на сайте Intuit.ru
- Б. Мейер "Инструменты, алгоритмы и структуры данных", курс на сайте Intuit.ru
- Х. Абельсон, Д.Д. Сассман при участии Д. Сассман "Структура и интерпретация компьютерных программ". Добросвет, 2006 г. Классическая книга о программировании на основе вводного курса по программированию, читавшегося студентам Массачусетского технологического института. Данный курс отличается тем, что фокусируется на обучении тому, как составлять сложные программы, и на фундаментальных основах программирования.
- С. Макконнелл "Совершенный код. Мастер-класс". "Русская редакция", 2010 г. Одно из лучших практических руководств по методикам и технологиям программирования.
- Б. Книттель "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. Операторы для управления потоком объектов.