- •Лекция № 1
- •Тема 1.1. Сущность и роль технологии программирования, языки и системы программирования.
- •Учебные вопросы:
- •Тема 1.1. Сущность и роль технологии программирования, языки и системы программирования.
- •Введение
- •1. История программирования от первых автоматов до первых эвм
- •1.1. О терминах
- •1.2. Ранняя история программирования автоматов
- •1.3. Станки с числовым программным управлением
- •1.4. Вычислительные машины
- •1.5. Двоичная система
- •1.6. Архитектура фон Неймана
- •1.7. Машинный код
- •2. Сущность, роль и основные принципы технологии программирования
- •2.1. Этапы решения задач на эвм
- •2.2. Задачи технологии программирования
- •2.3. Основные принципы технологии программирования
- •3. Основные понятия программирования
- •4. Языки и системы программирования, язык JavaScript
- •4.1. Классификация языков программирования
- •4.2. Характеристика систем программирования на языкахJavaScript/Jscript
2. Сущность, роль и основные принципы технологии программирования
2.1. Этапы решения задач на эвм
Как и в любой инженерной области, в программировании процесс решения задачи состоит из следующих этапов:
постановка задачи,
поиск метода решения,
проектирование решающего устройства(системы, технологии),
его конструирование,
внедрение,
эксплуатация
и модернизация.
Спецификой программирования является то, что постановка задачиимеет целью созданиеинформационной моделиэтой задачи,методом решениядолжен бытьалгоритмпроцесса решения задачи (в терминах её модели), аустройством, решающим задачу, должна бытьпрограммадля компьютера. В процессе внедрения, эксплуатации и модернизации осуществляется так называемоесопровождение программ.
2.2. Задачи технологии программирования
Хотя любому человеку присуще алгоритмическое и модельное мышление, но огромное различие между представлением информации и алгоритмов в компьютере и в человеческом сознании создаёт трудности в программировании.
Основные трудности являются следствием сложности машинной архитектуры, внутреннего устройства программ (сотни тысяч команд) и невозможности проследить все действия компьютера (миллиарды операций в секунду). Вся история развития науки и технологии программирования определяется борьбой со сложностью программ и самого процесса их создания. Основное направление этой борьбы – разработка всевозможных средств, позволяющих программистам реализовывать свои проекты не на «низком», машинном уровне, а на более «высоком» уровне, близком человеческому и профессиональному, предоставляя компьютеру самому переводить человеческие представления на машинный уровень с помощью различных средств автоматизации программирования. К таким средствам относятся иязыки программирования ассемблерного типа, высокого и сверхвысокого уровня, и поддерживаемые ими методологии и технологиимодульного,структурного,объектно-ориентированного, доказательногопроектирования и программирования. В основе многих средств автоматизации лежат глубокие математические теории, например, теория графов, реляционная алгебра, теория формальных языков и автоматов, математическая логика.
Кроме того, огромную роль при разработке программ, особенно больших программно-аппаратных проектов, играют системы поддержки управления проектами, в том числе системы автоматизации проектирования, сопровождения программ в процессе внедрения и эксплуатации. Все эти системы, наряду с системами автоматизации программирования, входят в сферу технологии программирования. Благодаря её развитию производительность труда программистов за 60 лет выросла в 1000 раз27(т.е., в среднем она растёт почти в 17 раз за год).
При всех впечатляющих результатах развития технологии и автоматизации программирования программный код, который приходится писать самим программистам является чрезвычайно формализованным текстом, строго подчиняющимся жёсткимсинтаксическимисемантическимправиламязыков программирования. Такой уровень формализации не свойственен обычному человеческому сознанию (хотя и достигается путём усилий и тренировок), что препятствует быстрому овладению навыками программирования широким кругам пользователей. Тем не менее, благодаряпростоте базовых принциповпрограммирования иразвитости и доступности инструментария, практически каждый прилежный студент в состоянии их освоить и научиться создавать собственные, пусть и не очень сложные программы.
Однако здесь невозможно ограничиться формальным заучиванием правил языка и готовых программ. Главное в программировании – это понимание логики алгоритма и программы, т.е. пониманиепричинтого, почему запрограммированная последовательность действий над используемыми в программе структурами данных приводит к решению задачи (или не приводит, если программа неправильная). Такое понимание развивается вместе с изучением языка программирования, в процессе разбора готовых примеров программ (с целью понять их логику), и закрепляется в попытках самостоятельного создания всё более усложняющихся программ. Важнейшую роль играютанализ и отладка составленной программы – поиск и устранение ошибок в программе, постепенно приводящие к обоснованному пониманию правильности логики алгоритма и её реализации в программе. Программирование – это не только (и не столько) кодирование и запуск программы на компьютере, сколько размышление над ней с карандашом и бумагой. Прогон программы на машине (в процессе программирования) только даёт пищу для этих размышлений.