Какой язык программирования придуман в бразилии. История языков программирования

Какой язык программирования придуман в бразилии. История языков программирования

В пятидесятые годы двадцатого века с появлением компьютеров на электронных лампах началось бурное развитие языков программирования. Компьютеры, стоившие в то время значительно дороже, чем разработка любой программы, требовали высокоэффективного кода. Такой код разрабатывался вручную на языке Ассемблер . В середине 50-х годов под руководством Джона Бэкуса для фирмы IBM был разработан алгоритмический язык программирования FORTRAN. Несмотря на то, что уже существовали разработки языков, выполняющие преобразование арифметических выражений в машинный код, создание языка FORTRAN (FORmula TRANslator), предоставляющего возможность записи алгоритма вычислений с использованием условных операторов и операторов ввода/вывода, стало точкой отсчета эры алгоритмических языков программирования.

К языку FORTRAN предъявлялись требования cоздания высокоэффективного кода. Поэтому многие конструкции языка первоначально разрабатывались с учетом архитектуры IBM 407. Успех разработки этого языка привел к тому, что производители других вычислительных систем стали создавать свои версии трансляторов. С целью некоторой возможной на тот момент унификации языка язык FORTRAN IV, разработанный в 1966 году, стал первым стандартом, именуемым FORTRAN 66.

Как альтернатива языку FORTRAN, первоначально ориентированному на архитектуру IBM, под руководством Питера Наура в конце 50-х годов был разработан язык ALGOL (ALGOrithmic Language). Основной целью, преследуемой разработчиками этого языка, была независимость от конкретной архитектуры вычислительной системы. Кроме того, создатели языка ALGOL стремились разработать язык, удобный для описания алгоритмов и применяющий систему обозначений, близкую к той, что принята в математике.

Языки FORTRAN и ALGOL были первыми языками, ориентированными на программирование вычислений.

Язык PL/I , первые версии которого появились в начале 60-х годов, был первоначально ориентирован на IBM 360 и расширял возможности языка FORTRAN некоторыми средствами языка COBOL, разработанного в эти же годы. Несмотря на определенную популярность языка PL/I у программистов, работавших на компьютерах IBM и машинах серии ЕС, в настоящее время он представляет чисто теоретический интерес.

В конце 60-х годов под руководством Найарда и Дала был разработан язык Simula-67, использующий концепцию пользовательских типов данных. Фактически это первый язык, применяющий понятие классов.

В середине 70-х годов Вирт предложил язык Pascal , который сразу стал широко использоваться. В это же время по инициативе Министерства обороны США началась работа по созданию языка высокого уровня, получившего название Ada – в честь Ады Лавлейс, программистки и дочери лорда Байрона. Создание языка началось с определения требований и выработки спецификаций. Над проектом работали четыре независимые группы, но все они использовали как основу язык Pascal. В начале 80-х годов был разработан первый промышленный компилятор языка Ada .

Универсальный язык программирования С был разработан в середине 70-х годов Денисом Ритчи и Кеном Томпсоном. Этот язык стал популярным языком системного программирования и в свое время использовался для написания ядра операционной системы UNIX. Стандарт языка С начал разрабатываться рабочей группой института стандартов ANSI в 1982 году. Международный стандарт языка С принят в 1990 году. Язык С лег в основу разработки языков программирования C++ и Java.

Наряду с алгоритмическими языками параллельно развивались и языки, предназначаемые для обработки деловой информации, а также языки искусственного интеллекта. К первым относится язык COBOL (COmmon Business Oriented Language), а ко вторым – языки LISP (LISt Processing) и Prolog . Язык LISP, разработанный в 60-х годах под руководством Дж. Маккарти, был первым функциональным языком обработки списков, который нашел широкое применение в теории игр.

С появлением персональных компьютеров языки стали составными частями интегрированных сред разработки. Появились языки, применяемые в различных офисных программах, например VBA (Visual Basic for Application).

В 90-х годах с распространением сети Интернет расширяется возможность распределенной обработки данных, что отражается и на развитии языков программирования. Появляются языки, ориентированные на создание серверных приложений, такие как Java , Perl и PHP , языки описания документов – HTML и XML . Традиционные языки программирования С++ и Pascal также претерпевают изменения: под языком программирования начинает пониматься не только функциональность самого языка, а также библиотеки классов, предоставляемые средой программирования. Акцент со спецификации самих языков программирования переносится на стандартизацию механизмов взаимодействия распределенных приложений. Появляются новые технологии – COM и CORBA, специфицирующие взаимодействие распределенных объектов.

Позволю себе выделить некоторую общую тенденцию в развитии языков программирования. Проницательный читатель, наверное, уже давно догадался, о чем я собираюсь сказать. Языки развиваются в сторону все большей и большей абстракции. И это сопровождается падением эффективности. Вопрос: а стоит ли этого абстракция? Ответ: стоит. Стоит, так как повышение уровня абстракции влечет за собой повышение уровня надежности программирования. С низкой эффективностью можно бороться путем создания более быстрых компьютеров. Если требования к памяти слишком высоки, можно увеличить ее объем. Это, конечно, требует времени и средств, но это решаемо. А вот с ошибками в программах можно бороться только одним способом: их надо исправлять. А еще лучше - не совершать. А еще лучше максимально затруднить их совершение. И именно на это направлены все исследования в области языков программирования. А с потерей эффективности придется смириться.

Целью данного обзора была попытка дать читателю представление о всем многообразии существующих языков программирования. Среди программистов часто бытует мнение о «всеобщей применимости» того или иного языка (C, C++, Pascal и т.п.). Это мнение возникает по нескольким причинам: недостаток информации, привычка, инертность мышления. Я попытался слегка компенсировать первый фактор. По поводу остальных могу лишь сказать, что настоящий профессионал должен постоянно стремиться повышать свои профессиональную квалификацию. А для этого нужно не бояться экспериментировать. Ну и что, что все вокруг пишут на C/С++/VB/Pascal/Perl/Java/… (нужное подчеркнуть)? А почему бы не попробовать что-нибудь новенькое? А вдруг это окажется эффективнее? Разумеется, прежде чем приниматься использовать новый язык, нужно внимательно изучить все его особенности, включая наличии эффективной реализации, возможности взаимодействия с существующими модулями и т.п., и только после этого принимать решение. Разумеется, всегда есть риск пойти не тем путем, но… Не ошибается лишь тот, кто ничего не делает.

И еще. Мне доводилось слышать, а порой и участвовать в дискуссиях вида «язык A лучше, чем язык B». Я надеюсь, что, прочитав этот обзор, многие убедятся в бессмысленности таких споров. Максимум, о чем может идти речь - это о преимуществах одного языка над другим при решении той или иной задачи в тех или иных условиях. Вот здесь действительно иногда есть о чем поспорить. И решение подчас отнюдь не очевидно. Однако же спорить «вообще» - очевидная глупость.

Эта статья задумывалась как ответ тем, кто кричит «язык X MUST DIE». Надеюсь, что ответ получился достаточно адекватным и убедительным. Надеюсь также, что статья имеет, помимо полемической, и познавательную ценность.

Энергичное развитие новых языков программирования началось сразу же после появления первых компьютеров на электронных лампах. В то время компьютеры стоили немало. Приобретение единственного экземпляра обходилось в десятки, а то и сотни раз дороже, чем стоимость разработки любой программы. Для такой машины требовался высокоэффективный код, который вручную составлялся на Ассемблере.

Лишь в 50-е годы, для личных нужд фирмы IBM был разработан первый алгоритмический язык. Его назвали FORTRAN. Разумеется, к тому времени уже было несколько наработок языков, преобразующих в машинных код арифметические выражения, но именно создание FORTRAN"а считается отсчетом новой эры - переходом на парадигму алгоритмических языков. Что он мог? Он позволял проводить расчеты только при помощи записи алгоритма с применением операторов ввода/вывода и условных. Первоначально язык создавался специально для вычислительной системы IBM 407. Но популярность FORTRAN"а привела к тому, что даже производители других архитектур стали выпускать собственные трансляторы. Вследствие этого, в 1966 году был выпущен общий стандарт FORTRAN 66.

Уже в конце 50-х гг. появилась хорошая альтернатива FORTRAN"у. Питер Наур разработал алгоритмический язык, независимый от архитектуры. Его назвали ALGOL. В данном случае, разработчики также постарались расширить возможности языка, максимально приблизив систему обозначений к математической.

В начале 60-х гг. производители IBM представили не особо популярный язык PL/I. Он работал с архитектурой IBM 360 и служил своеобразным расширением FORTRAN"а при помощи некоторых средств языка COBOL.
Первый язык, в котором было введено понятие класса - Simula-67. Его создали Дал и Найард в конце 60-х.
70-е гг. произвели на свет Pascal. Он быстро завоевал массовую популярность. Чуть позже миноборона США начала разработку языка высокого уровня. Проект разрабатывали 4 независимые группы, причем выработка требований и спецификаций проводилась на основе языка Pascal. Получившийся продукт был выпущен уже в начале 80-х, он получил название Ada.

70-е гг. также подарили нам универсальный язык C. Его авторами были Кен Томпсон и Денис Ритчи. Язык пользовался повышенной популярностью у системных программистов, перво ядро ОС UNIX было разработано именно на нем. В 1982 году стандарт C поступил в разработку в ANSI, получившийся вариант был принят в 1990 году. На основе этого языка были разработаны современные языки Java и C++.

Помимо языков, работающих с алгоритмами, свое развитие получили и языки другой направленности. Для обработки деловой информации был разработан COBOL, языками искусственного интеллекта считаются Prolog и LISP. Кроме того, последний широко применяется и в теории игр.

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

Очень важно знать общую историю языков программирования и историю развития известных и неизвестных языков. В этой статье вы с этим и познакомитесь, но для начала давайте вспомним “Что такое язык программирования?”.

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

50-е годы

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

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

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

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

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

Затем программа на промежуточном языке выполняется специальной программой, которая называется интерпретатором. Возможен также вариант компиляции “на лету”, когда выполняемый фрагмент программы переводится с промежуточного языка на язык машинных команд непосредственно перед выполнением.

В середине 50-х годов под руководством Джона Бэкуса для фирмы IBM был разработан алгоритмический язык программирования высокого уровня FORTRAN. Несмотря на то, что уже существовали разработки языков, выполняющие преобразование арифметических выражений в машинный код, создание языка FORTRAN (FORmula TRANslator), предоставляющего возможность записи алгоритма вычислений с использованием условных операторов и операторов ввода/вывода, стало точкой отсчета эры языков программирования высокого уровня.

Как альтернатива языку FORTRAN, первоначально ориентированному на архитектуру IBM, под руководством Питера Наура в конце 50-х годов был разработан язык ALGOL (ALGOrithmic Language). Основной целью, преследуемой разработчиками этого языка, была независимость от конкретной архитектуры вычислительной системы.

Кроме того, создатели языка ALGOL стремились разработать язык, удобный для описания алгоритмов и применяющий систему обозначений, близкую к той, что принята в математике. Языки FORTRAN и ALGOL были первыми языками, ориентированными на программирование вычислений.

60-е годы

В конце 60-х годов под руководством Найарда и Дала был разработан язык Simula-67, использующий концепцию пользовательских типов данных. Фактически это первый язык, применяющий понятие классов.

70-е годы

В середине 70-х годов Вирт предложил язык Pascal, который сразу стал широко использоваться. В это же время по инициативе Министерства обороны США началась работа по созданию языка высокого уровня, получившего название Ada – в честь Ады Лавлейс, программистки и дочери лорда Байрона.

Создание языка началось с определения требований и выработки спецификаций. Над проектом работали четыре независимые группы, но все они использовали как основу язык Pascal. В начале 80-х годов был разработан первый промышленный компилятор языка Ada.

Расработка Си

Универсальный язык программирования был разработан в середине 70-х годов Денисом Ритчи и Кеном Томпсоном. Этот язык стал популярным языком системного программирования и в свое время использовался для написания ядра операционной системы UNIX.

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

Язык С позволил реально избавиться от Ассемблера при создании операционных систем. Например, практически весь текст операционной системы Unix написан на языке Си и, таким образом, не зависит от конкретного компьютера.

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

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

В настоящее время подавляющая часть программ пишется на языках Си и C++. Интерфейс любой операционной системы (так называемый API – Application Program Interface), т.е. набор системных вызовов, предназначенных для разработчиков прикладных программ, как правило, представляет собой набор функций на языке Си.

Наряду с алгоритмическими языками параллельно развивались и языки, предназначаемые для обработки деловой информации, а также языки искусственного интеллекта. К первым относится язык COBOL (COmmon Business Oriented Language), а ко вторым – языки LISP (LISt Processing) и Prolog.

Язык LISP, разработанный в 60-х годах под руководством Дж. Маккарти, был первым функциональным языком обработки списков, который нашел широкое применение в теории игр.

90-е годы

В 90-х годах с распространением сети Интернет расширились возможности распределенной обработки данных, что отразилось и на развитие языков программирования. Появились языки, ориентированные на создание серверных приложений, такие как , Perl и , языки описания документов – и XML.

Традиционные языки программирования С++ и Pascal также претерпели изменения: под языком программирования начиналось пониматься не только функциональность самого языка, а также библиотеки классов, предоставляемые средой программирования.

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

Области применения языков программирования

В настоящее время языки программирования применяются в самых различных областях человеческой деятельности, таких как:

  • научные вычисления (языки C++, FORTRAN, Java);
  • системное программирование (языки C++, Java);
  • обработка информации (языки C++, COBOL, Java);
  • искусственный интеллект (LISP, Prolog);
  • издательская деятельность (Postscript, TeX);
  • удаленная обработка информации (Perl, PHP, Java, C++);
  • описание документов (HTML, XML).

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

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

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

К первооткрывателям среди языков программирования относится Фортран - это сокращённое сочетание 2 слов: Formula и Translation . Создан уже в середине 50-х. До сих пор язык используется благодаря лёгкости и простоте написания, а также развитой системе библиотек для Фортран. Чаще используется для научных и инженерных подсчётов, а также активно применяется в физичке и остальных науках, связанных с математикой.

Узконаправленные языки

Из-за увеличения сфер использования ЭВМ появились и другие языки для отдельных разработок в новых сферах:

  • экономическое направление оставалось незанятым до появления Кобол;
  • Снобол - обрабатывает алгоритмы, связанные с текстами;
  • Лисп. Работает на основании алгоритмов для отработки символов. Активно используется для формирования искусственного интеллекта.

Уже в 1968 г. был впервые запущен конкурс, в котором главным местом являлось звание лучшего языка программирования для начала карьерного пути. Данные планировалось использовать для обучения специалистов. Победу одержал Алгол-68 , но он остался малоизвестным, о популярности и речь не идёт.

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

Для обучения детей в школах был создан Лого , у истоков стоял Самуэль Пайперт . Достоинства - простота работы и обилие возможностей.

В школах стал преподаваться простой язык Бейсик , он легко взаимодействует с ЭВМ в качестве прямого диалога. Время никак не повлияло на эту сферу, до сих пор Бейсик является самым простым языком для начала изучения большинства распространённых направлений программирования.

Создание языка C

Развитие возможностей вычислительного оборудования привело к необходимости написания ёмких программ для управления ЭВМ . Это место по праву занял язык Си, который стал активно использоваться в 70-х годах. Явным достоинством языка является его универсальность. Он превосходит Паскаль благодаря наличию вложенных возможностей сотрудничества с разными машинными командами и подходящими частями памяти.

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

Пролог и Ада

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

Только в 80-х годах был разработан язык Ада . Он расширяет классическое понимание и свойства языков того периода. Ада могла решать задачи в режиме реального времени и моделировать независимые решения.

Классификация

Сегодня разработаны классификации языков по уровню работы, это распределение самое распространённое. Выделяют 3 основных уровня:

  1. Низкий. Сюда относятся различные машинные языки или разновидности с символическим кодирование типа Ассемблера и Автокода . За основу взяты операторы машинных команд, только разработаны с привязкой к мнемоническому коду. Операндами являются уже не точные адреса, а символьное обозначение имён. Все модели разработаны для отдельных разновидностей ПК , они являются машинно-зависимыми. В подобных языках отмечается сильная зависимость языка от внутренних особенностей системы;
  2. Высокий. Языки встречаются куда чаще, они более удобны в использовании. К ним причисляются: Алгол, С, Пролог, Паскаль, Бейсик, Фортран и другие . Перечисленные языки не имеют жёсткой зависимости от машины, ведь они основываются на возможностях системы операндов, которые подобны для классовых алгоритмов. Недостатками высокого уровня являются большая ресурсоёмкость и медленное исполнение;
  3. Сверхвысокий. Представителей языков крайне мало, только APL и Алгол-68 . Их считают сверхвысокого уровня из-за разработки сверхмощных операторов.

Согласно другой классификации языки делятся на:

  • символьные - Пролог, Лисп и Снобол;
  • вычислительные - Паскаль, С, Алгол, Бейсик, Фортран.

Направления развития

Информатика в современном мире развивается в 3 ключевых направлениях:

  1. Процедурное появилось в период активнейшего развития компьютеров и других вычислительных устройств, с тем пор широко используется. В процедурных направлениях присутствуют выраженные описания действий, необходимых к выполнению. Для получения результата всегда проводится определённая процедура, которую составляют различные последовательности манипуляций. Процедурные языки дополнительно разделяются на:
    • Структурные. В них используется один оператор для записи цельных алгоритмом: циклов, функцию, ветвлений и остального. Более известны: Паскаль, Ада и С.
    • Операционные. Применяют несколько различных действий. Среди самых известных разновидностей: Фокал, Фортран и Бейсик .
  2. Непроцедурные. Языки программирования имеют декларативную структуру, появление которой приходится на 70-е года. Активнее всего начали развиваться в 80-х годах после появления проекта формирования 5 поколения ЭВМ. Основная задача - создание возможностей для построения высокоинтеллектуальных машин. Они также разделяются на:
    • Функциональные. Программа выполняет исчисление определённой функции, которая берёт за основу другие относительно простые алгоритмы и более простые задачи. В основе функционального направления используется основной элемент - рекурсия. Она подразумевает расчёт значений функции с помощью задействования её в других элементах. В языке отсутствуют циклы и методика присваивания значений.
    • Логические. Программа вовсе не требует описание действий, её основу составляют соотношения данных и их значения. Только после расчёта можно получать ответы на вопросы. После перебирания известных параметров выводится ответ. В программе отсутствует метод или порядок обнаружения ответа, он неявным образом устанавливается языком. Ярким представителем является Пролог. Из направления полностью устранено алгоритмическое мышление, только статические отношения между объектами, а вся динамика сокрыта от разработчика и сводится к перебору данных.
  3. Объектно-ориентированные языки , все они являются разновидностью высокого уровня программирования. Подобные языки не нуждаются в описании чёткой последовательности манипуляций для получения результата задачи, но отдельные компоненты процедурного направления присутствуют. Пользователям значительно проще работать с такими языками, так как они обладают доступным и богатым интерфейсом. Лучшим примером подобного направления с визуальным общением является Object Pascal.

Существуют языки для написания сценариев, известными являются Rexx, Tcl, Perl и Python , а также языки оболочек систем Unix. В них разрабатывается индивидуальный стиль написания кода, который отличается от известного принципа системного уровня программирования. Они не используются для создания приложений на нижнем уровне, скорее для комбинирования различных компонентов из разных языков, из которых составляется набор отдельных функций.

Активнее всего стали развиваться по мере распространения интернета, от чего стали широко применяться языки сценариев. Для создания сценариев чаще всего применяется Perl , а для Web-части пользуется популярностью JavaScript .

© 2024 dhmoscow.ru - Компьютер надо изучать