Целью программирования является описание процессов обработки данных.
Данные - это представление фактов и идей в формализованном виде, пригодном для передачи и переработке в некоем процессе, а информация - это смысл, который придается данным при их представлении.
Обработка данных - это выполнение систематической последовательности действий с данными.
Данные представляются и хранятся на т.н. носителях данных. Совокупность носителей данных, используемых при какой-либо обработке данных, будем называть информационной средой.
Набор данных, содержащихся в какой-либо момент в информационной среде, будем называть состоянием этой информационной среды. Процесс можно определить как последовательность сменяющих друг друга состояний некоторой информационной среды.
Описать процесс - значит, определить последовательность состояний заданной информационной среды.
Если мы хотим, чтобы по заданному описанию требуемый процесс порождался автоматически на каком-либо компьютере, необходимо, чтобы это описание было формализованным. Такое описание называется программой. С другой стороны, программа должна быть понятной и человеку, так как и при разработке программ, и при их использовании часто приходится выяснять, какой именно процесс она порождает. Поэтому программа составляется на удобном для человека формализованном языке программирования, с которого она автоматически переводится на язык соответствующего компьютера с помощью другой программы, называемой транслятором.
Человеку (программисту), прежде чем составить программу на удобном для него языке программирования, приходится проделывать большую подготовительную работу по уточнению постановки задачи, выбору метода ее решения, выяснению специфики применения требуемой программы и многое другое.
Обычно программы разрабатываются в расчете на то, чтобы ими могли пользоваться люди, не участвующие в их разработке (их называют пользователями). Для освоения программы пользователем помимо ее текста требуется определенная дополнительная документация. Программа или логически связанная совокупность программ на носителях данных, снабженная программной документацией, называется программным средством (ПС). Программа позволяет осуществлять некоторую автоматическую обработку данных на компьютере. Программная документация позволяет понять, какие функции выполняет та или иная программа ПС, как подготовить исходные данные и запустить требуемую программу в процесс ее выполнения, а также: что означают получаемые результаты (или каков эффект выполнения этой программы).
1.1 Технология программирования и информатизация общества
Технологии программирования играло разную роль на разных этапах развития программирования. По мере повышения мощности компьютеров и развития средств и методологии программирования росла и сложность решаемых на компьютерах задач, что привело к повышенному вниманию к технологии программирования. Резкое удешевление стоимости компьютеров и, в особенности, стоимости хранения информации на компьютерных носителях привело к широкому внедрению компьютеров практически во все сферы человеческой деятельности, что существенно изменило направленность технологии программирования. Человеческий фактор стал играть в ней решающую роль.
Сформировалось достаточно глубокое понятие качества ПС, в котором акценты стали ставится не столько на его эффективности, сколько на удобстве работы с ним для пользователей (не говоря уже о его надежности). Широкое использование компьютерных сетей привело к интенсивному развитию распределенных вычислений, дистанционного доступа к информации и электронного способа обмена сообщениями между людьми. Начинается этап глубокой и полной информатизации (компьютеризации) человеческого общества. Все это ставит перед технологией программирования новые и достаточно трудные проблемы.
Сделаем краткую характеристику развития программирования по десятилетиям.
В 50-е годы мощность компьютеров была невелика (компьютеры первого поколения), а программирование для них велось, в основном, в машинном коде. Решались главным образом научно-технические задачи (счет по формулам), задание на программирование уже содержало, как правило, достаточно точную постановку задачи. Использовалась интуитивная технология программирования: почти сразу приступали к составлению программы по заданию, минимальная документация оформлялась уже после того, как программа начинала работать. Тем не менее именно в этот период родилась фундаментальная для технологии программирования концепция модульного программирования (для преодоления трудностей программирования в машинном коде). Появились первые языки программирования высокого уровня, из которых только ФОРТРАН пробился для использования в следующие десятилетия.
В 60-е годы можно было наблюдать бурное развитие и широкое использование языков программирования высокого уровня (АЛГОЛ 60, ФОРТРАН, КОБОЛ и др.), роль которых в технологии программирования, явно преувеличивалась. Надежда на то, что эти языки решат все проблемы при разработки больших программ, не оправдалась. В результате повышения мощности компьютеров и накопления опыта программирования на языках высокого уровня быстро росла сложность решаемых на компьютерах задач, в результате чего обнаружилась ограниченность языков, проигнорировавших модульную организацию программ. И только ФОРТРАН, бережно сохранивший возможность модульного программирования, гордо прошествовал в следующие десятилетия. Кроме того, было понято, что важно не только то, на каком языке мы программируем, но и то, как мы программируем. Это было уже началом серьезных размышлений над методологией и технологией программирования.
Появление в компьютерах 2-го поколения прерываний привело к развитию мультипрограммирования и созданию больших программных систем. Последнее стало возможным с использования коллективной разработки, которая поставила ряд серьезных технологических проблем.
В 70-е годы получили широкое распространение информационные системы и базы данных. Этому способствовало очень важное событие, происшедшее в середине 70- ых годов: стоимость хранения одного бита информации на компьютерных носителях стала меньше, чем на традиционных.
80-е годы характеризуются широким внедрением персональных компьютеров во все сферы человеческой деятельности и тем самым созданием обширного и разнообразного контингента пользователей ПС. Это привело к бурному развитию пользовательских интерфейсов и созданию четкой концепции качества. Появляются языки программирования (например, Ада), учитывающие требования технологии программирования. Развиваются методы и языки спецификации ПС. Выходит на передовые позиции объектный подход к разработке ПС. Создаются различные инструментальные среды разработки и сопровождения ПС. Развивается концепция компьютерных сетей.
90-е годы знаменательны широким охватом всего человеческого общества международной компьютерной сетью, персональные компьютеры стали подключаться к ней как терминалы. Это поставило ряд проблем регулирования доступа к компьютерно- сетевой информации (как технологического, так и юридического и этического характера). Остро встала проблема защиты компьютерной информации и передаваемых по сети сообщений. Стали бурно развиваться компьютерная технология (CASE-технология) разработки ПС и связанные с ней формальные методы спецификации программ. Начался решающий этап полной информатизации и компьютеризации) общества.
1.2 Программное обеспечение ПЭВМ
Программное обеспечение компьютера – это все используемые в компьютере программы. Программное обеспечение состоит из нескольких совместно работающих программ (программных модулей), объединенных в программный комплекс, и документов, необходимых для разработки, сопровождения и эксплуатации программного комплекса. В простейшем случае программный комплекс может включать только одну программу, но второй компонент программного обеспечения – документация – должен присутствовать всегда.
1.3 Машинный язык и языки высокого уровня
Как известно, ЭВМ способна выполнять программу, написанную на машинном языке, который представляет собой последовательность нулей и единиц. Такие программы пишутся на языках программирования низкого уровня.
Язык программирования низкого уровня – это язык программирования, структура команд которого определяется форматом команд и данных машинного языка, а также архитектурой ЭВМ.
Ярким представителем языка программирования низкого уровня является Ассемблер, который был разработан в 50-е годы прошлого века и позволяет писать программы с использованием специальных обозначений машинных кодов – мнемоники. Ассемблер широко применяется в программах, где необходимо высокое быстродействие.
Однако составлять программы на таком языке – дело очень хлопотное и неблагодарное. Поэтому были созданы языки программирования высокого уровня.
Язык программирования высокого уровня – это язык программирования, средства которого допускают описание задачи в наглядном, легко воспринимаемом виде.
Каждый язык высокого уровня определяется системой записи и набором правил, определяющих синтаксис. Грубо говоря, это набор слов и правил составления предложений.
Языки программирования высокого уровня освобождают пользователя от программирования в машинных кодах. Однако такую программу не понимает ЭВМ, ей доступен только машинный язык. Поэтому для трансляции (перевода) программ с языка высокого уровня в машинные коды используются программы компиляции или интерпретации. При этом отличие компилятора от интерпретатора заключается в том, что компилятор вначале переводит все команды исходной программы, записанной на языке высокого уровня, в машинные инструкции, а затем выполняет ее, а интерпретатор осуществляет покомандную обработку и исполнение исходной программы. Можно сделать такое сравнение: компилятор подобен переводчику книг, а интерпретатор похож на переводчика устной речи. Переводчик берет книгу на одном языке и создает новую книгу на другом. А переводчик устной речи переводит предложения сразу после их произношения.
Каждый язык программирования высокого уровня имеет свой стиль, свои правила и свою область применения
К основным языкам программирования высокого уровня относят:
Алгол- алгоритмический язык- универсальный язык для программирования вычислительных задач. Ему свойственны близость к математической символике.
Бейсик– для начинающих - язык для создания программ и их решения ЭВМ в режиме диалога. Бейсик является одним из самых простых и распространенных в мире языков программирования. С появлением Windows и моды на визуальные средства разработки изменился и Basic. Его новая версия, названная Visual Basic, была отлично приспособлена для написания несложных программ с развитым пользовательским интерфейсом.
Делфи оказался одним из первых продуктов, который сделал процесс программирования простым и понятным даже начинающим разработчикам.
Паскаль- этот язык был разработан швейцарским ученым Никлаусом Виртом в 1969 году как учебный язык, но спустя некоторое время приобрел популярность как отличный инструмент для решения серьезных задач.
Си- язык, специально разработан для написания системных программ и переноса записи программного обеспечения с одной ЭВМ на другую.
Фортран– в основном он используется для программ, выполняющих естественнонаучные и математические расчеты.
Когда возникает необходимость создания программной системы или составления программы для решения какой-либо задачи, встает вопрос о выборе для этой цели наиболее подходящего языка программирования. Во многих случаях такой выбор диктуется доступностью того или иного транслятора и умение составлять программы на том или ином языке. Часто выбор определяется тем, на каком языке программируют коллеги. Поэтому еще раз повторим, что выбор языка программирования является достаточно сложной задачей, которая в большей мере носит творческий характер