История развития программирования

Harper | 26.05.2010 15.09

Написал в 2007 году статью.

Содержание

Введение
Заря компьютеров
Основные этапы развития ЭВМ
I этап (1940-е – середина 50-х)
II этап (середина 50-х – середина 60-х)
III этап (середина 60-х – середина 70-х)
IV этап (середина 70-х – настоящее время)
V этап (?? – ??)
Заключение
Библиография

Введение

Программирование как направление деятельности человека возникло одновременно с появлением первых вычислительных машин. Поэтому историю развития программирования нужно рассматривать параллельно с историей развития самих компьютеров. Ведь что у «программиста» эпохи фон Неймана, что у его сегодняшнего современника основная цель – подчинить машину желаниям человека, заставить ее выполнять нужные человеку действия. С течением времени разнились, менялись, эволюционировали только лишь способы достижения этой цели.

Заря компьютеров

Загадка доктора Хауса

Слово «компьютер» означает «вычислитель», т.е. устройство для вычислений [1].

Потребность в вычислениях появилась у людей очень давно. Сначала использовали подручные средства такие, как счетные палочки или камешки, затем – более технологичные «устройства», например, счеты. Постепенно, с ростом технологического уровня цивилизации, росла и сложность таких устройств, и их вычислительная мощность.

В 1642 г. Блез Паскаль изобрел устройство, механически выполняющее сложение чисел, а в 1673 г. Готфрид Вильгельм Лейбниц сконструировал арифмометр, позволяющий механически выполнять четыре арифметических действия. Арифмометры позднее получили широкое распространение, с их помощью выполняли сложные расчеты, например, расчеты баллистических таблиц для артиллерийских стрельб. Была даже такая профессия, счетчик – человек, работающий с арифмометром, быстро и точно соблюдающий определенную последовательность инструкций. Но скорость расчетов была очень низкой – дни, а иногда и месяцы. Объяснялось это просто – выбор действий и запись результатов осуществлялись человеком, а скорость работы человека весьма ограничена.

Пионером компьютеростроения можно считать английского математика и ученого Чарльза Бэббиджа. Именно он в первой половине XIX века изобрел Аналитическую машину – универсальное вычислительное устройство [1]. Она работала без участия человека. Инструкции в нее подавались при помощи перфокарт – карт из плотной бумаги с информацией, наносимой с помощью отверстий. Также у Аналитической машины имелся «склад» для запоминания данных и промежуточных результатов.

Бэббидж не смог до конца завершить свою машину из-за ее сложности для техники того времени, однако выдвинутая им идея программного управления работой вычислительной машиной не была забыта. Спустя столетие она была использована сначала Конрадом Цузе (1941 г.) при создании аналога вычислительной машины Бэббиджа, чуть позже, в 1943 г., Говардом Эйкеном при создании машины «Марк-1», а затем и идеологом современного компьютеростроения, Джоном фон Нейманом.

Как видим, до 1940-х годов программирование, если о нем вообще можно так сказать, было очень тяжелой, кропотливой работой. Вспомним артиллериста-счетчика. Да и сами машины еще были чем-то вроде прототипов, изобретениями отдельных людей. Еще не были сформированы основные принципы ЭВМ и не были достаточно развиты технологии. Однако основные идеи уже витали в воздухе.

Основные этапы развития ЭВМ

Развитие ЭВМ определяется развитием электроники, появлением новых элементов и принципов действия, т.е. развитием элементной базы [2]. В настоящее время насчитывается четыре поколения ЭВМ.

Поколение ЭВМ – это все типы и модели ЭВМ, разработанные различными конструкторскими коллективами, но построенные на одних и тех же научных и технических принципах [2]. Появление каждого нового поколения определялось тем, что появлялись новые электронные элементы, технология изготовления которых принципиально отличилась от предыдущего поколения.

Ниже приводятся характеристики этапов, каждому из которых соответствовало определенное поколение ЭВМ.

I этап (1940-е – середина 50-х)

Точкой, с которой обычно начинают отсчитывать этапы развития ЭВМ, является Вторая Мировая Война. Как это часто бывает, война, с ее ужасами и бедами, тем не менее, послужила катализатором в развитии многих технологий. Потребность в автоматизации вычислений (баллистики, криптографии и т.д.) была так велика, что над созданием машин типа построенных Эйкеном и Цузе трудились одновременно сразу несколько групп исследователей [1].

Начиная с 1943 г. группа специалистов под руководством Джона Мосли и Пресперта Экерта в США начала конструировать ЭВМ на основе электронно-вакуумных ламп. Предыдущие же модели типа эйкеновской основывались на реле. Как результат, созданная ими машина ENIAC (1946 г.) работала в 1000 раз быстрее, чем Марк-1. Однако перед вычислениями машину приходилось долго готовить, на это уходило от нескольких часов до нескольких дней. Для упрощения процесса задания программ решено было сконструировать новую машину, которая могла бы хранить программу в своей памяти [1].

В процессе создания ENIAC в 1945 году к работе был привлечен известный американский математик Джон фон Нейман, который вскоре сумел сформулировать пять основных принципов функционирования универсальных вычислительных устройств:

1. Любую ЭВМ образуют:
a. арифметико-логическое устройство, выполняющее арифметические и логические операции;
b. устройство управления, «дирижирующее» операциями;
c. запоминающее устройство, или память для хранения программ и данных;
d. внешние устройства ввода-вывода информации.

2. ЭВМ работает в двоичной системе счисления;

3. Принцип программного управления: устройство управления автоматически выполняет команды, которые записаны в памяти. Команды выполняются друг за другом в определенной последовательности.

4. Принцип однородности памяти: программы и данные хранятся в одной и той же памяти. Над командами программы можно выполнять те же действия, что и над данными.

5. Принцип адресности: каждая ячейка памяти имеет свой адрес (номер).

На этих принципах, как на фундаменте, основывались в дальнейшем все последующие поколения машин.

Обратим, в частности, внимание на третий пункт, принцип программного управления. Именно из этого принципа вытекает определение программы в ее классическом понимании – как последовательного набора команд, выполняемых процессором. Отсюда возникает и необходимость в подготовке специально обученных людей, которые бы знали, какие команды и в какой последовательности нужно применять для решения определенной задачи. Программирование машин становится направлением деятельности человека.

Первая отечественная ЭВМ – МЭСМ (малая электронная счетная машина) была создана в 1951 г. под руководством академика С.А.Лебедева [2].

Для первых ЭВМ, созданных по принципам фон Неймана, например, машины Мориса Уилкса (1949 г.) программы приходилось писать на машинном языке, то есть в кодах, непосредственно воспринимаемых компьютером. Это, конечно, было гораздо лучше и быстрее, чем работа артиллериста-счетчика, но все же еще оставалось очень тяжелым, малопроизводительным и кропотливым занятием, в ходе которого легко было ошибиться [1]. По сути, программы представляли собой кодированный набор цифр, в котором человеку несведущему разобраться было невозможно в принципе, да и профессионалам приходилось попотеть.

Решением стало изобретение т.н. ассемблеров, или автокодов. Ассемблеры – языки символического кодирования [2]. Для каждого типа ЭВМ существует свой язык символического кодирования, так как его структура, обозначения, операции и т.д. определяются структурой конкретной ЭВМ.

Ассемблеры недалеко шагнули от машинных команд: просто вместо непонятных кодов стали использоваться мнемонические (легко запоминаемые) обозначения. Например, если 07FF – команда сложения на машинном языке, то в ассемблере она представляется мнемокодом ADD. Вследствие этого, программы на ассемблере очень легко переводятся в машинные коды при помощи специальной программы, называемой также ассемблером [1], и занимают крайне мало места (в единицах памяти, но не по размеру самого текста программы). Они обеспечивают большое быстродействие и наиболее полно учитывают особенности компьютера.

Тем не менее, писать программы на ассемблере – дело далеко не тривиальное, так как отсутствует наглядность программы, есть большая вероятность сделать ошибку, нужно хорошо знать и представлять структуру компьютера, взаимосвязь его блоков и элементов. Вот почему, даже несмотря на его плюсы, большинство программистов вместо ассемблера предпочитают использовать языки высокого уровня.

Подводя итог: программирование на данном этапе – трудоемкий процесс, диктующий необходимость знания всех команд ЭВМ и ее структуры, с непосредственной работой математика-программиста за пультом машины [2].

II этап (середина 50-х – середина 60-х)

В 1948 г. был изобретен транзистор. К середине 50-х были найдены очень дешевые способы производства транзисторов, а во второй половине 50-х появились первые транзисторные ЭВМ. Они были в сотни раз меньше ламповых при той же производительности. Первой из них считается модель RCA-501 (1959 г., США) [2].

К середине 60-х появились и более компактные версии внешних устройств. Все это позволило 1965 г. фирме Digital Equipment выпустить первый мини-компьютер PDP-8. Он поступил в продажу по цене в 20 тыс. долларов. Правда, размером он был с холодильник, но по сравнению со шкафами и даже комнатами, занимаемыми ламповыми ЭВМ, смотрелся довольно привлекательно.

В СССР к этому поколению относятся серии «Минск» и БЭСМ, наиболее совершенная из них – БЭСМ-6 [2].

На этом этапе были созданы и более совершенные языки программирования, т.н. языки высокого уровня (ЯВУ). Такой язык – это набор символов и терминов, который в соответствии с правилами синтаксиса описывает алгоритм решения задачи [2]. Своими конструкциями и правилами написания этот язык, с одной стороны, близок к математическому выражению задачи, а с другой стороны, содержит такие выражения, которые близки к естественному языку, чаще всего английскому. Программы, написанные на таких языках, либо преобразуются в машинные команды (это делается с помощью специальных программ, называемых трансляторами или компиляторами) или выполняются построчно (интерпретируются) при помощи программ-интерпретаторов [1].

Первый коммерчески используемый язык программирования высокого уровня FORTRAN (FORmula TRANslator – транслятор формул) был разработан в 1958 г. фирмой IBM под руководством Джона Бэкуса. Он предназначен, прежде всего, для научных вычислений и очень близок по форме к записи математических формул. У Фортрана есть один существенный недостаток: он не обеспечивает надежности программирования (защиты от ошибок) из-за своей громоздкости и несовершенства логических возможностей [2].

Другим ЯВУ стал Алгол-60 (ALGOrithmic Language – алгоритмический язык), который появился в 1960 г. Это более совершенный язык, чем Фортран; он обладает большей гибкостью при проектировании программ, обеспечивает более высокую надежность программирования [2]. В основном использовался в советских ЭВМ.

Именно после создания Алгола началось бурное развитие языков программирования.

Также заслуживающим внимания языком стал разработанный в конце 50-х годов LISP (LISt Processing – обработка списков). Он используется и по сей день для программирования в области искусственного интеллекта [6].

Языки высокого уровня позволили значительно упростить процесс написания программ, так как они ориентированы на удобство описания решаемых с их помощью задач, а не на особенности конкретного компьютера. Разумеется, для каждой программы на языке высокого уровня программист может написать более компактную и быстродействующую программу на ассемблере, но из-за трудоемкости процесса обычно игра не стоит свеч.

Языки высокого уровня и на сегодняшний момент являются основными инструментами, при помощи которых программисты составляют программы.

Тогда же, из-за введения понятия ЯВУ, машинно-ориентированные языки (ассемблеры) стали называть языками низкого уровня.

Итог: появились более совершенные алгоритмические языки, теперь не требовалось присутствия программистов в зале, решении задач стало проводиться в пакетном режиме, а не по-командно, как это было на предыдущем этапе [2].

III этап (середина 60-х – середина 70-х)

На предыдущем этапе развития ЭВМ транзисторы изготовлялись по отдельности, и при сборке их приходилось соединять и спаивать вручную. В 1958 г. Джек Килби придумал, как на одной пластине полупроводника получить несколько транзисторов. В 1959 г. Роберт Нойс (будущий основатель фирмы Intel) изобрел более совершенный метод, позволивший создавать на одной пластине и транзисторы, и все необходимые соединения между ними. Полученные электронные схемы стали именоваться интегральными схемами, или чипами.

Первая ЭВМ, созданная на чипах – результат работы американской фирмы IBM, IBM-360 (1965 г.) [2].

В СССР в данное поколение вошли семейства машин ЕС (1022, 1035, 1060) и СМ (2, 3, 4, 1420) [2].

В 1970 г. фирма Intel начала продавать интегральные схемы памяти [1]. В том же году произошло еще одно знаменательное событие – та же Intel сконструировала интегральную схему, аналогичную по своим функциям центральному процессору большой ЭВМ. Так появился первый микропроцессор Intel-4004. В последующие годы выходили модернизированные версии этой схемы, и апогеем стал микропроцессор Intel-8080 (1974 г.), который до конца 70-х оставался стандартом для микрокомпьютерной индустрии. Здесь начал применяться т.н. принцип программной совместимости – когда программы, разработанные для одной ЭВМ, могут быть использованы для другой ЭВМ этой серии [2]. Каждая новая модель семейства обладает более мощными техническими возможностями, чем предыдущие.

В 1975 г. появился первый коммерчески распространяемый компьютер на основе Intel-8080 под названием Альтаир-8800. Он был выпущен фирмой MITS, и продавался по цене всего в 500 долларов. Несмотря на довольно ограниченные возможности Альтаира, его появление было встречено с энтузиазмом, и в первые месяцы было продано несколько тысяч комплектов машины. В конце 1975 г. Пол Ален и Билл Гейтс (будущие основатели фирмы Microsoft) создали для Альтаира интерпретатор языка Basic, позволявшего пользователям достаточно просто общаться с компьютером и писать для него программы.

Можно сказать, что именно Альтаир-8800 стал первым персональным компьютером.

С этого момента интерес к компьютерам среди широкой массы людей стал расти в геометрической прогрессии.

Этот этап знаменателен также появлением нескольких новых ЯВУ. Первым стал Паскаль, созданный в 1970 г. Он был создан ведущим в то время специалистом в области программирования Н.Виртом. Это очень простой и компактный язык, его понятия близки к фундаментальным понятиям математики [2]. Благодаря этому он завоевал свою популярность, и даже по сей день используется для обучения специалистов программированию как наиболее полно отражающий базовые конструкции любой разновидности ЯВУ.

Другой новинкой стал упомянутый ранее Basic (Beginner’s All-purpose Symbolic Instruction Code – универсальный код символических инструкций для начинающих). Первоначально он был разработан Дж. Келени и Т. Курцем из Дартмутского колледжа (США) в 1965 г. и предназначался для вводного курса по информатике [2]. Однако благодаря своей простоте и возможности работы в диалоговом режиме этот язык быстро нашел призвание среди пользователей-непрограммистов.

Важную роль в дальнейшем сыграет изобретенный в 1972 г. Денисом Ричи и Кеном Томпсоном из Bell Laboratories язык Си. Он похож на Паскаль, но исправляет его некоторые ошибки и содержит новые элементы. Си разрабатывался как мощный и гибкий язык. К сожалению, он не так легко читается как Паскаль, и предназначен скорее для корпоративных приложений. Тем не менее, пользователям он понравился, и был сделан переход от Паскаля к Си. Это ознаменовало собой переход от языков предыдущего поколения к сегодняшним языкам программирования [4]. Также следует отметить, что Си использовался для разработки многих операционных систем в дальнейшем, так как сам разрабатывался для только что появившейся в то время системы UNIX [6].

На этом этапе появляются подвиды ЯВУ: Си и Паскаль относятся к структурным языкам программирования, тогда как ЛИСП – к функциональным. [6]

Структурное программирование – методология программирования, базирующаяся на системном подходе к анализу, проектированию и реализации программного обеспечения. Структурное программирование предполагает точно обозначенные управляющие структуры, программные блоки, отсутствие инструкций безусловного перехода (GOTO), автономные подпрограммы, поддержку рекурсии и локальных переменных [5].

Эта методология оказалась настолько жизнеспособной, что и до сих пор является основной в большом количестве проектов. Основу этой технологии составляют следующие положения:

• Сложная задача разбивается на более мелкие, функционально лучше управляемые задачи. Каждая задача имеет один вход и один выход [8]. В этом случае управляющий поток программы состоит из совокупности элементарных подзадач с ясным функциональным назначением.

• Простота управляющих структур, используемых в задаче. Это положение означает, что логически задача должна состоять из минимальной, функционально полной совокупности достаточно простых управляющих структур [8].

• Разработка программы должна вестись поэтапно. На каждом этапе должно решаться ограниченное число четко поставленных задач с ясным пониманием их значения и роли в контексте всей задачи [8]. Если такого понимания не достигается, это говорит о том, что данный этап слишком велик и его нужно разделить на более мелкие шаги.

Функциональные же языки, как следует из названия, используют функцию как основную программную единицу. Программы на таких языках состоят из последовательного и/или рекурсивного вызова функций, одна из другой. Иногда такой подход является оправданным и более выразительным, нежели структурный.

Итог: технология программирования на данном этапе аналогична применявшейся на предыдущем этапе, однако в самих ЯВУ наблюдается тенденция к упрощению, попытки вывести программирование на новый уровень, лишить его статуса удела лишь избранных профессионалов, создание языков программирования для разработки корпоративных приложений.

IV этап (середина 70-х – настоящее время)

На этом этапе на смену чипам приходят БИС – большие интегральные схемы. Стали появляться многопроцессорные вычислительные системы такие, как B-7770 фирмы Burroughs, ILLIAC IV Иллинойского университета или советский «Эльбрус-2» [2]. Также стали производиться дешевые и компактные мини- и персональные ЭВМ, а на их основе формироваться вычислительные сети.

Успех Альтаир-8800 заставил многие фирмы также заняться производством компьютеров. Нарастающая конкуренция подталкивала производителей искать всё лучшие и лучшие решения. Компьютеры стали продаваться в полной комплектации, с мониторами и внешними устройствами, спрос на них стал составлять десятки, а затем и сотни тысяч штук в год.

Такой ажиотаж привлек внимание фирмы IBM. Было принято решение создать собственный персональный компьютер IBM, и для решения этой задачи было сформировано специальное подразделение. Однако из-за недооценки руководством важности такого исследования денежных ресурсов было выделено не так много, и поэтому был дан «зеленый свет» на использование комплектующих, изготовленных другими производителями. И это сыграло только на руку исследователям: они выбрали новейший в то время процессор Intel-8088, значительно превосходивший все существовавшие тогда аналоги, а разработка программного обеспечения была поручено небольшой фирме Microsoft.

Результатом такой кооперации стало появление в августе 1981 г. нового компьютера IBM PC. Вскоре он приобрел большую популярность у пользователей, а через год – занял ведущее место на рынке, потеснив всех конкурентов.

Фактически IBM PC стал стандартом персонального компьютера [1].

Ключевым моментом жизнеспособности этой машины явилось использование принципа открытой архитектуры – возможности усовершенствования отдельных частей и использования новых устройств [1]. Благодаря этому, на рынке появились сотни устройств и комплектующих для IBM PC. Таким образом, пользователи могли покупать различные платы и устройства сторонних производителей и вставлять их в свой компьютер, никак не привязываясь к самой фирме IBM.

С этого момента производство персональных компьютеров встало на конвейер: им стали заниматься многие фирмы, и IBM вскоре утратила свое ведущее положение. Однако, такая жесткая конкуренция, когда каждый производитель стремится выпустить новый компьютер, при этом сделать его быстрее и дешевле, выгодна конечному потребителю.

В частности, сейчас на рынке ведущую роль заняли производители деталей ЭВМ – такие как Intel и AMD в производстве процессоров или NVidia и ATI в производстве видеоадаптеров. В общем-то, можно сказать, что уже не играет роли фирма-производитель самого компьютера – ведь теперь, обладая всеми необходимыми компонентами, компьютер можно собрать самостоятельно в домашних условиях.

В области языков программирования любопытных новинок тоже появилось немало. Правда, следует уточнить, что эти новинки были скорее продолжениями идей предыдущего этапа [3].

Для начала отметим такой язык, как ADA. Этот ЯВУ был разработан по заказу Министерства обороны США в 1979 г. и назван так в честь первой программистки Ады Лавлейс, дочери Дж. Байрона, которая еще в XIX веке создавала первые программы для машины Бэббиджа. В этом языке использовано много идей из Паскаля и Алгола-68, а также заимствованы лучшие конструкции других языков [2].

ADA является представителем модульных языков программирования.

Так же как и для структурной технологии программирования, концепцию модульного программирования можно сформулировать в виде нескольких ключевых понятий и положений:

• Функциональная декомпозиция задачи – разбиение большой задачи на ряд более мелких, функционально самостоятельных подзадач – модулей [8]. Модули связаны между собой только по входным и выходным данным.

• Модуль – основа концепции модульного программирования. Каждый модуль в функциональной декомпозиции представляет собой «черный ящик» с одним входом и одним выходом [8].

• Реализуемые решения должны быть простыми и ясными. Если назначение модуля непонятно, то это говорит о том, что декомпозиция начальной или промежуточной задачи была проведена недостаточно качественно. В этом случае необходимо еще раз проанализировать задачу и, возможно, провести дополнительное разбиение на подзадачи [8]. При наличии сложных мест в проекте их нужно подробно задокументировать с помощью продуманной системы комментариев. Этот процесс нужно продолжать до тех пор, пока действительно не будет достигнуто ясного понимания назначения всех модулей задачи и их оптимального сочетания.

Модульный подход позволяет безболезненно производить модернизацию программы в процессе ее эксплуатации и облегчает ее сопровождение. Дополнительно модульный подход позволяет разрабатывать части программ одного проекта на разных языках программирования, после чего с помощью компоновочных средств объединять их в единый загрузочный модуль.

Кроме этого подхода, в начале 80-х получил распространение еще один метод программирования – объектно-ориентированное программирование (ООП).

Идея ООП заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое – объект.

ООП основано на трех важнейших принципах, придающих объектам новые свойства. Этими принципами являются инкапсуляция, наследование и полиморфизм.

Инкапсуляция – объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются переменными или полями объекта, а алгоритмы – функциями или методами объекта.

Наследование – свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителей все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.

Полиморфизм – свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами.

Отметим, что на сегодняшний день ООП является одной из ведущих методологий в современных языках программирования.

Бьярн Страуструп оценил этот подход и на его основе разработал язык, получивший название «Си с классами» [6]. Вскоре Си с классами превратился в отдельный язык С++ (Си плюс плюс), который был представлен общественности в 1983 г.

Классы – это такие программные абстракции, которые представляют собой как бы шаблон или тип объекта. Поэтому говорят, что объект является экземпляром того или иного класса. Это позволяет программировать любые объекты реального мира, вкупе со всеми их атрибутами (свойствами) и поведением (функциями, или методами). Ранее, в структурном программировании, приходилось работать с ограниченным набором типов данных, которые ограничивали уровень абстракции и были не очень удобны для представления объектов реального мира.

С++ был разработан как модификация Си при помощи ООП, при этом с сохранением скорости, присущей Си и возможности выполняться на различных платформах (видах компьютеров) [4]. С++ часто используют для создания различных симуляций, в частности, компьютерных игр [4].

Кроме С++, другим не менее ярким новшеством стал язык Java.

В начале 90-х интерактивное телевидение казалось технологией будущего [4]. Sun Microsystems решила, что для интерактивного ТВ понадобится специальный, хорошо переносимый (с одного вида компьютеров на другой) язык программирования. Этим языком стал Java (Джава – сорт кофе; в данной технологии вообще много названий, связанных с этим напитком). В 1994 команде разработчиков пришлось сменить направление разработки – интерактивное ТВ оказалось пустой мечтой. Но Всемирная Сеть росла и развивалась. Решено было использовать Java как веб-язык. Пусть C++ почивает на лаврах эффективного языка, но он не обладает переносимостью Java! В 1995 году компания Netscape лицензирует Java для создания программы-броузера Сети (такой программы, при помощи которой пользователь осуществляет путешествия в Сети). Когда броузер увидел свет, Java показался языком будущего – настолько все было привлекательно и ново [4]. Однако и у него оказались недостатки: проблемы с оптимизацией кода и, следовательно, с быстродействием, упрощение в сравнении с С++, что оттолкнуло от него некоторых серьезных программистов как от «детского языка». Несмотря на это, у Java есть и несомненные плюсы: использование ООП, поддержка интерфейсов, переносимость, автоматическая сборка «мусора», бОльшая простота изучения в сравнении с С++ [4].

Можно сказать, что Java и С++ являются на данный момент основными языками для разработки приложений корпоративного уровня.

Еще одним языком помимо Java, который используется в Сети, является Perl. Perl был разработан Ларри Воллом в 1987 как замена устаревающим утилитам UNIX, использовавшихся для операции с текстом. Как следствие, Perl имеет очень сильные функции анализа текста. Поэтому он, в основном, применяется для создания ядра веб-интерфейсов или в скриптах, которые модифицируют файлы настроек сайта, где анализ текста является важным моментом [4].

Немного другое направление развила фирма Microsoft. Она расширила идеи языка BASIC, выпустив Visual Basic (VB). VB, как и его прародитель – своего рода язык для непрограммистов, хотя при желании на нем можно составлять и комплексные программы. Основная цель VB – без лишних усилий позволить пользователям создавать программы с мощными экранными интерфейсами [6]. Интерфейсы строятся здесь из специальных компонентов, называемых widget. Это могут быть различные меню, картинки, ползунки, иконки и пр. У виджетов есть набор свойств (например, цвет) и событий (например, нажатие на него левой кнопкой мыши), что является основой любого интерфейса пользователя в современной системе [4].

V этап (?? – ??)

Возможно, новый этап развития машин будет связан с нано-технологиями: например, компания Intel недавно сообщила, что ее инженеры работают над процессорами размером 15, 10, 7 и 5 нанометра. Возможность применения подобных процессоров граничит с фантастикой – быть может, когда-нибудь нам доведется увидеть живую клетку с внедренным в нее процессором? А может быть даже запрограммировать ее?

А вспомним тот факт, что белкИ, как говорят ученые, составляют в геноме определенный код. Какие тут открываются возможности для будущих программистов…

Другой областью, которая может вызвать скачок в развитии машин, является искусственный интеллект. Одно из толкований целей этой науки состоит как раз в утверждении, что она должна создавать методы автоматического решения задач, считающихся в человеческом понимании интеллектуальными. В частности, это задача разработки средств автоматического выполнения функций алгоритмиста и программиста, то есть интеллектуальных функций по формализации задач и составлению программ для их решения [8]. Вполне может оказаться, что машины научатся думать за нас, и программисты будут больше не нужны. Человеческий фактор исчезнет. Многие фантасты уже не раз рисовали печальные последствия такого хода событий… Но человеку свойственно всегда с опаской относится к новому, чуждому, неизведанному. Быть может, именно следующий этап развития машин и программирования даст и всему человечеству возможность перейти на качественно новый уровень.

Заключение

Языки программирования имеют богатую историю, на основе которой можно проследить их эволюцию. Наверняка эта эволюция будет продолжаться и в будущем.

Началом программирования были робкие шаги человека в попытке заставить компьютер выполнить определенную задачу. Затем появились первые ЯВУ, которые были предназначены только для очень узкого круга задач. Но современные языки программирования различаются лишь способами (методологиями) программирования, а не классом решаемых задач. При помощи современных ЯВУ программист может решить практически любую задачу; важнее стал вопрос, какой способ программирования применить.

В будущем, с развитием технологий и появлением новых программных концепций само программирование, возможно, перейдет на качественно новый уровень, когда появится возможность создавать программы для процессоров нано-машин или биологических компьютеров.

Библиография

1. В.Э. Фигурнов, «IBM PC для пользователя», 5-е изд., СПб.: Коруна, 1993 г.
2. А.Н.Жигарев, Н.В.Макарова, М.А.Путинцева, «Основы компьютерной грамоты», Ленинград: Машиностроение, 1987 г.
3. http://en.wikipedia.org/wiki/History_of_programming_languages
4. http://www.tcnj.edu/~miranda/classes/interactive/reading/ferguson.html
5. http://ru.wikipedia.org/wiki/История языков программирования
6. http://www2.lv.psu.edu/ojj/courses/ist-240/reports/spring2001/fa-cb-bc-kf/historyindex.html
7. http://www.cs.iastate.edu/~leavens/ComS541Fall97/hw-pages/history/
8. В.В. Фаронов, «TurboPascal 7.0: начальный курс», М: Нолидж, 1998 г.


Лицензионные DVD на OZON.ru всего за 99 рублей


Что еще почитать