ЯЗЫКИ ПРОГРАММИРОВАНИЯ
Система программирования — это язык и средства разработки прикладных программ.
Современное инструментальное средство для разработки программ представляет собой интегрированную среду, которая строится на интерактивном принципе, обеспечи- вающем повышение эффективности программирования и полный набор действий для разработки программы и анализа результатов ее выполнения.В состав современной интегрированной среды разработки про- грамм входят: текстовый редактор, транслятор, редактор связей, библиотеки подпрограмм, программа-отладчик, развитая систе- ма помощи и подсказок.
Существующие системы программирования подразделяются на компилирующие и интерпретирующие, в соответствии с типом их трансляторов.
Трансляторы — это программы, которые переводят текст с язы- ка программирования на машинный.
Они могут быть двух типов: компиляторы и интерпретаторы.
Компилятор — это транслятор, в котором трансляция и вы- полнение пр01раммы разнесены во времени: сначала весь текст транслируется без выполнения программы, а затем полученная программа выполняется (Паскаль, Си).
Интерпретаторы — это трансляторы, в которых текст трансли- руется и выполняется пооператорно, т.е. трансляция и выполне- ние программы совмещены во времени (интерпретатор команд ОС).
Основные этапы разработки программы в интегрированной среде: написание текста исходных данных и программы, трансля- ция пр01раммы, редактирование связей программы с подпрог- раммами, выполнение программы, анализ полученных результа- тов.
Наиболее общей классификацией языков программирования является классификация по степени зависимости от машинного языка (рис. 8.1).
Машинный язык — это система команд компьютера.
Програм- мы, написанные на машинном языке, не требуют компиляции. Машинно-ориентированные языки — это мнемокоды, автокоды, языки ассемблера. В них коды операции и адреса операндов пред- ставляются идентификаторами и числами, т.е. используются сим- волические адреса и мнемокоды. На ассемблере можно писать про- граммы более эффективные, чем программы, полученные в ре- зультате трансляции с языка высокого уровня.Проблемные языки предназначены для пользователей, не уме- ющих программировать, и направлены на решение узкого круга задач. На них определяется, что делать, а не как это делать, в терминах, характерных для данной проблемной области. Для ра-
Рис. 8.1. Классификация языков программирования |
боты с проблемно-ориентированным языком должны быть разра- ботаны программы для анализа запросов пользователя, контроля допустимости вводимых данных и для решения поставленной за- дачи.
Процедурные языки — это машинно-независимые языки для описания алгоритмов решения задачи. С их помощью описывается процесс обработки данных в терминах языка. Тексты на этих язы- ках определяют, как реализуется алгоритм обработки данных в виде процедур обработки данных. Такие языки применяют специ- алисты, знающие математическую модель решения задачи, мето- ды ее решения и программирование.
Объектно-ориентированные языки основаны на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы об- разуют иерархию с наследованием свойств.
На практике языки программирования не являются чисто про- цедурными, проблемными или объектно-ориентированными, они содержат в себе черты различных языков, поэтому зачастую на процедурном языке можно разработать объектно-ориентирован- ную программу.
На протяжении всех лет существования практика программи- рования требовала совершенствования технологических приемов и создания на их основе таких средств программирования, кото- рые упростили бы процесс разработки программ, позволяя созда- вать все более сложные программные системы.
Первые програм- мы были организованы очень просто. Они состояли из собственно программы на машинном языке и обрабатываемых данных. Слож- ность программ ограничивалась способностью программиста од- новременно мысленно отслеживать последовательность выполня- емых операций и местонахождение большого числа данных. Со- здание сначала ассемблеров, а потом и языков высокого уровня сделало программу более обозримой и, естественно, позволило увеличить ее сложность. Появление в языках средств, позволяю- щих оперировать подпрограммами, существенно снизило трудо- емкость разработки программ.Подпрограммы — это программы небольшого объема, к кото- рым возможно многоразовое обращение в программе. Подпрог- раммы можно было сохранять и использовать в других програм- мах. В результате были накоплены огромные библиотеки расчет- ных и служебных программ, которые по мере надобности вызыва- лись из разрабатываемой программы.
Типичная программа того времени состояла из основной про- граммы, области глобальных данных и набора подпрограмм (см. подразд. 7.2), выполняющих обработку всех данных или их части.
Недостатком такой технологии было то, что при увеличении числа подпрограмм возрастала вероятность искажения части гло-
бальных данных какой-либо подпрограммой (рис. 8.2). Необходимость исключения таких ошибок привела к идее использования в подпрограммах локальных данных. И вновь сложность разрабатываемой программы стала ограничиваться возможностью программи- ста отслеживать процессы обработки данных уже на новом уровне. К этому добавились проблемы согласования интерфейса при ве- дении разработки несколькими программи- стами.
В настоящее время многие среды програм- мирования используют элементы интерфей- са, близкие к интерфейсу Windows: коман- дные кнопки, флажки, окна сообщений и диалога и т.д. В ре- зультате встал вопрос создания технологии разработки слож- ных программных продуктов, снижающей вероятность появле- ния ошибок.
Усилиями многих программистов такая технология была создана и получила название «структурное программиро- вание».В основе структурного программирования лежит разбиение на части сложных систем с целью последующей реализации в виде отдельных небольших подпрограмм. Поддержка принципов струк- турного программирования была заложена в основу так называе- мых процедурных языков программирования. Наиболее известны- ми языками этой группы являются PL/1, Pascal, Си.
Рост сложности и размеров разрабатываемого программного обеспечения потребовал развития структурирования данных и, соответственно, в языках появилась возможность определения пользовательских типов данных. Одновременно усилилось стрем- ление разграничить доступ к глобальным данным программы для уменьшения числа ошибок. Результатом стало появление и разви- тие технологии модульного программирования.
Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные перемен- ные, в отдельные модули (библиотеки подпрограмм). Связи меж- ду модулями осуществляются через специальный интерфейс. Эту технологию поддерживают современные версии языков Pascal и Си (C++), языки Ada и Modula. Использование модульного про- граммирования существенно упрощает ведение разработки про- грамм несколькими программистами, каждый из которых разра- батывает свои модули.
Практика программирования показывает, что структурный подход в сочетании с модульным программированием позволяет получать достаточно надежные программы, размер которых не превышает 100000 операторов.
Под надежностью программы понимается вероятность безотказ- ной ее работы в течение определенного промежутка времени.
Стремление уменьшить число связей между отдельными частя- ми программ привело к появлению объектно-ориентрованного программирования (ООП). По своей сути ООП — это создание программ из объектов, подобно тому, как их блоков и различных деталей строятся дома. Одни объекты приходится полностью со- здавать самостоятельно, тогда как другие можно позаимствовать в готовом виде из разнообразных библиотек.
В последнее время стала развиваться еще одна технология про- граммирования — case-технология.
Case-технология — программный комплекс, автоматизирующий весь технологический процесс анализа, проектирования, разра- ботки и сопровождения сложных программных систем. Основное достоинство case-технологии — поддержка коллективной работы над проектом за счет возможности работы в локальной сети раз- работчиков, экспорта/импорта любых фрагментов проекта, орга- низационного управления проектом.
Контрольные вопросы
1. Какие технологии программирования являются наиболее востребо- ванными в настоящее время?
2. Что представляет собой технология структурного программирова- ния?
3. Что такое транслятор?
4. Назовите основное отличие компилятора от интерпретатора.
5. Зачем человечеству необходима технология программирования?
8.2.
Еще по теме ЯЗЫКИ ПРОГРАММИРОВАНИЯ:
- О. Л. Голицына, Т. Л. Партыка, И. И. Попов. ЯЗЫКИ ПРОГРАММИРОВАНИЯ, 2008
- Перевод и иностранные языки
- Предложение №35 Осваивай новые Языки
- Основной курс (Программирование)
- Иванова Г.С. Основы программирования, 2002
- Эстетика программирования
- Г.С.Иванова, Т.Н.Ничушкина, Е.К.Пугачев. Объектно- ориентированное программирование, 2001
- Сергей Александрович Орлов. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения, 2013
- Часть вторая Родительское программирование
- Программирование телевизионного вещания
- Часть вторая Родительское программирование СУДЬБА ЧЕЛОВЕКА
- Нейро-лингвистическое программирование
- ПРОГРАММИРОВАНИЕ НА УСПЕХ
- Научное программирование телевидения
- Программирования основные понятия
- Глава 2 Отрицательное и положительное программирование
- 3 Используйте активное программирование, «подключая» к работе голос и движение.
- 5 Лучшим временем для программирования является последний час перед сном.
- Креншоу Джек. Давайте создадим компилятор!, 1999