- Lektsia - бесплатные рефераты, доклады, курсовые работы, контрольные и дипломы для студентов - https://lektsia.info -

О языках программирования

Когда мы по-русски говорим "компьютер", то представляем себе некоторое устройство, которое нужно запрограммировать, чтобы оно заработало. Американцы, которые, естественно, ду­мают на своем английском, представляют себе компьютер сразу состоящим из двух частей – "твердой" ("хардуэр") и "мягкой" ("софтуэр"), что на русский язык казенно переводится как ап­паратные и программные средства вычислительной машины. Это различие в понимании отражает и некоторую реальную ситуацию: у нас первая составляющая компьютера стоит во много раз дороже второй. У них наоборот. Умственный труд они ценят много дороже промышленного, что обычно для развитых стран.
В наши дни особое внимание уделяют составлению текстовых описаний к новым программам, поскольку освоение этих программ требует большого труда и занимает много времени. Возникла на­сущная проблема составления таких описаний к программам, кото­рые были бы понятны обычному или даже начинающему пользователю. Она достигла столь большой остроты, что появилась специальная профессия "технических писателей", так как программисты не мо­гут понять, что именно затрудняет пользователей при освоении их программ.
Не будучи специалистом, трудно говорить о вычислительных машинах, но еще труднее об их программировании. Дело в том, что сама сущность программирования, кажущаяся такой простой на элементарном уровне машинных кодов, оказывается крайне сложной для формулирования. Может быть, поэтому авторы, попу­ляризирующие искусство (или науку, как полагают некоторые) программирования, так любят прибегать к аналогиям, которыми сами почти всегда остаются недовольны.
Сравнение компьютера с автомобилем, а программирования – с управлением механистично и мало что объясняет, компьютера с телевизором, а программы – с передачей, которую он принимает, тоже отражает лишь внешнюю сторону дела. Пожа­луй, ближе всего к существу отношений компьютера с его прог­раммой сравнение их с музыкальным инструментом и нотами. Дей­ствительно, комбинацией нескольких нотных знаков можно записать любое музыкальное произведение, а пределов для творчест­ва композиторов и исполнителей не существует. Так и програм­ма, написанная на одном из специальных языков, в котором ис­пользуется ограниченный набор символов, служит для решения многих творческих задач, от простых вычислений до игры в шах­маты. Но и здесь сходство сводится к идеальности и многооб­разию содержания информации и материальности и ограниченно­сти средств ее фиксации и воспроизведения.
Любая, самая сложная программа формальна и определяется алгоритмом решения задачи. Вместе с тем, возможность или границы формализации человеческого мышления, которое стремятся моделировать при помощи компьютера, пока еще не поддаются определению. В преодолении этого противоречия, в нахождении пу­тей его разрешения скрыт важный фактор дальнейшего развития данной проблемной области. По всей вероятности, задача такого уровня должна решаться не одними программистами и информати­ками, но всем научным сообществом. Это один из серьезных сти­мулов достижения всеобщей компьютерной грамотности. А. Кэй, из статьи которого взяты некоторые сведения о языках программиро­вания, писал об этом в следующих выражениях:
"Грамотность применительно к компьютерам – это проникнове­ние в суть процессов программирования, причем достаточно глубокое, чтобы было легко и приятно производить вычисления и ре­шать различные задачи на ЭВМ, подобно тому, как истинно грамот­ный человек может свободно читать и писать. Как и в любом ис­кусстве, здесь необходимо хорошо знать и любить материал. Ес­ли мы полагаем важным овладеть литературой и искусством для развития человека и общества, то имеем ли мы право меньше уси­лий тратить на то, чтобы сделать вычислительные средства и методы частью нашей жизни"[50].
История современных языков программирования насчитывает всего лишь пять десятилетий, если считать от момента создания языка Планкалкюль немецким инженером К. Цузе в 1946 г. С тех пор появились сотни языков программирования, а с вариан­тами, возможно, тысячи. Конечно, не все они употребляются на практике, и если бы их развитие шло другим путем, их могло бы быть и меньше. Но их многообразие оправдано, так как нель­зя создать язык, пригодный для всех случаев. Язык должен быть пригоден для решения данной задачи на данном компьютере и удо­бен для программиста.
При всех различиях языков программирования все они, в ко­нечном счете, сводятся к высоким и низким уровням электриче­ского напряжения, соответствующим единицам и нулям двоичного кода. Комбинации единиц и нулей могут интерпретироваться ком­пьютером как адрес в его памяти, фрагмент обрабатываемых дан­ных или команда выполнить определенное действие. Язык самой машины – машинный код – очевиден и однозначен для каждого ви­да компьютеров. Но эта последовательность нулей и единиц противоестественна для памяти человека, хотя несколько поколений программистов работали толь­ко в машинных кодах. Программа мо­жет состоять из миллионов комбинаций единиц и нулей, и ошиб­ка лишь в одном знаке приведет к неправильной работе всей программы.
Это повело к созданию языков ассемблера, в кото­рых двоичные последовательности были заменены символами и сло­вами. Первым таким языком был ассемблер компьютера "Эдсак", созданный в 1949 г. английским математиком М. Уилксом. Разуме­ется, ассемблеры проще и мнемоничнее машинных кодов, в них можно создавать инструкции для определенных действий. Однако каждая команда должна определяться отдельно и за ее прохожде­нием в машине нужно следить, Кроме того, ассемблер жестко связан с типом компьютера, для которого он создан.
Ограниченность ассемблеров была преодолена в языках более высокого уровня. Первым распространенным языком высокого уро­вня явился Фортран, разработанный в 1954–1957 гг. Дж. Бекусом в фирме IBM и до сих пор применяемый для научных рас­четов. Поскольку его применение занимало много времени "тихо­ходных" в то время машин, для него был создан компилятор, пе­реводивший его программы в машинный код. Это положило начало особым видам программ – т р а н с л я т о р а м, которые для каждого типа компьютеров переводят программы, написанные на языке высокого уровня, в их машинный код.
Они бывают двух видов – компиляторы и интерпретаторы. При использовании к о м п и л я т о р а весь цикл трансляции завершается до начала выполнения программы, так что прохожде­ние этой программы требует меньше времени. Программа, состав­ленная на интерпретаторе, записывается в опе­ративную память в виде команд на языке высокого уровня, каж­дая из которых транслируется в машинный код по мере прохождения программы. Это требует больше времени, но дает оператору возможность контролировать результат каждой операции.
Все исследования в области программирования с 1957 г. сти­мулировались стремлением усовершенствовать Фортран, который подвергался неоднократным переделкам. Стало появляться боль­шое число языков, что беспокоило программистов, которые создали Международный комитет для выработки единого языка прог­раммирования (КОДАСИЛ). Результатом работы комитета явились два языка, до сих пор широко распространенные у пользовате­лей, эксплуатирующих большие машины. Один из них, К о б о л был разработан для выполнении однородных операций над боль­шими массивами чисел. Он применяется в сфере бизнеса и эффек­тивен при простых арифметических вычислениях. Две трети кон­торских программ на Западе все еще написаны на Коболе. Но как универсальный язык, к которому по тем временам все стре­мились, он был неудовлетворителен. Вторым языком стала пер­вая версия А л г о л а (1956 г.), который хотя и не стал же­ланным универсальным языком, но в последующих версиях сохра­няет значение многоцелевого средства.
Тогда же Дж. Маккарти из Массачусетского технологического института создал язык Л и с п, в котором программы и данные представляются в виде списков. Его простота и сила определяются тем, что в нем применяется только один вид команд – вызов функции, а ее значением может быть другая функция. С тех пор он стал популярным в исследованиях по искусственному интеллекту и послужил моделью для многих других языков. Для персональных компьютеров чаще всего используется Б е й с и к, разработанный в 1965 г. Дж. Кемени и Т. Курцем из Дартмутского колледжа в США. Он предназначался для изучения вводного курса программирования, но затем стал популярным среди программист­ов-непрофессионалов. Каждая строка программы на этом языке обозначается номером, а управление прохождением программы в основном осуществляется путем указания этих номеров.
Близок к нему и язык П а с к а л ь, также первоначально созданный для обучения студентов в 1970 г. Н. Виртом, препода­вателем Федерального технологического института в Цюрихе. В отличие от Бейсика в нем необходимо объявлять каждую перемен­ную и указывать ее тип, а процедуры и функции обозначать не номерами строк, а именами функций, что облегчает чтение прог­раммы. Решая какую-либо задачу, специалист не может опериро­вать двоичными кодами, регистрами и адресами машинной памяти. Он мыслит формулами своей науки, например,
"Площадь = длина X ширина",