Один из первых языков программирования: Один из первых языков программирования, 6 (шесть) букв

Содержание

Адресный язык программирования — это… Что такое Адресный язык программирования?

Адресный язык программирования — один из первых[1] в мире язык программирования высокого уровня. Автор языка программирования — Е.Л. Ющенко (Украина, г. Киев). Первые идеи и мысли о языке программирования были высказаны в 1955 г. Конструкции данного языка вошли в состав современных языков программирования как классические структуры. В частности, в адресном языке программирования были заложены возможности косвенной адресации и адресации высшего ранга — аналоги указателей.

Подобные средства в программировании в других языках появились только с 1963г.[источник не указан 1086 дней] Адресность в языке программирования явилась основой создания сложных структур данных, классов.[источник не указан 1086 дней] Например, в книге «Адресное программирование» имеются примеры программ в которых фактически присутствуют объекты (хотя и термины объект и классы не употреблялись).[источник не указан 1086 дней] Адресный язык программирования повлиял на архитектуру ЭВМ Киев[2], Днепр, Урал-1 и Стрела.[источник не указан 1086 дней] Адресный язык программирования с его первыми идеями адресации явился основой теоретического программирования и оказал существенное влияние на технологии программирования.[источник не указан 1086 дней] В частности, в Адреснном языке программирования впервые в мире была обеспечена независимость работы программы от места расположения в оперативной памяти.[источник не указан 1086 дней] C этого языка уже в начальный период развития кибернетики в АН УССР созданы трансляторы, облегчившие процесс программирования для имевшихся в то время в СССР ЭВМ первого и второго поколений «Киев», «Урал-1» и М-20. Впоследствии такими трансляторами были снабжены и другие отечественные ЭВМ. [3][4] Наличие и использование Адресного языка программирования позволило успешно решать многие народохозяйственные задачи, включая военную промышленность, космонавтику и самолетостроение.[источник не указан 1086 дней]

Литература

  • Ющенко Е.Л. Адресное программирование / Е.Л. Ющенко. — К. : Техн. лит., 1963. — 286 с.
  • Ющенко Е.Л. Программирующая программа с входным адресным языком для машины Урал -1 / Е.Л. Ющенко, Т.А. Гринченко. — К. : Наук. думка, 1964. — 107 с.

Источники

  • Пам’яті К. Л. Ющенко // Вестник Национальной Академии Наук Украины, 2001 — N 9
  • [1] Киевские ведомости. № 235 от 17 декабря 2009. Оксана ГРИШИНА, «Женщина, которая научила компьютер понимать людей».
  • [2] История развития информационных технологий на Украине. Екатерина Логвиновна Ющенко — основоположник теоретического программирования на Украине
  • [3] История развития информационных технологий на Украине. Дочь «врага народа» (Жизнь Ющенко Е.Л.)
  • [4] Научно-техническая библиотека. К 90-летию со дня рождения Екатерины Логвиновны Ющенко (Рвачевой)
  • [5] Реферат. Роль женщин в развитии вычислительной техники.
  • В.М.Глушков. Из воспоминаний В.М.Глушкова

Примечания

Рейтинг языков программирования 2018, разработка мобильных, корпоративных, десктопных и веб-приложений

1. При выборе языка программирования на проект выбор встает между двумя сторонами — выбрать старый проверенный инструмент или новый, красивый, функциональный, но мало проверенный, а следовательно, ненадежный язык. Как разумнее поступить в этой ситуации? Каковы риски каждого из решений, и как с ними справиться?

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

Для бизнеса понятия «красивого языка» не существует. Сделать ставку на новый непроверенный язык можно только в том случае, если он гарантированно даст проекту какое-то особенное УТП, которое клиенты смогут почувствовать, а главное — захотят за него заплатить. Если это условие выполняется, то выбрать новый язык можно, но при этом придется принять на себя и все связанные с ним риски.

Конечно же, зависит от проекта и зрелости самого языка. Если проект позволяет, или использование языка является необходимым условием, и доступны нужные предметные библиотеки, то вполне можно позволить эксперимент. Риски очевидны: «подводные камни», на которые можно наткнуться на половине пути. Минимизация этих рисков тоже очевидна: по возможности провести исследования до начала проекта и убедиться, что, как минимум, есть активная поддержка языка в форумах или у производителя.

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

Ответ сильно зависит от того, какова планируемая длительность проекта. Если это небольшой проект на заказ, который надо быстро сделать, сдать и забыть о нем — тогда можно выбирать все, что угодно. Если это большой проект на года — то лучше выбрать проверенные технологии, на которые можно будет нанять нужное вам количество специалистов. Для того, чтобы оценить, сколько в вашем регионе есть специалистов по той или иной технологии, достаточно воспользоваться любым разумным сервисом, например, LinkedIn или HeadHunter. А дальше уже нужно смотреть на нефункциональные требования: нагрузка, безопасность, отказоустойчивость и т. п.

2. Какие существенные факторы дают гарантию, что язык можно и нужно использовать на продакшне?

Гарантии в этом мире не дает никто и ничто. Мы полагаемся на свой опыт и распространенные best practice.

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

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

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

Формальная гарантия может быть подкреплена только контрактом. Если есть серьезный вендор (например, Oracle, SAP, IBM), который гарантирует, например, что его технология будет поддерживаться ближайшие 10 лет, и с этим вендором подписан соответствующий Support Contract, то, в принципе, вы можете считать это какой-то гарантией. Проблема в том, что обычно это очень дорого, а качество саппорта у больших вендоров, как правило, отвратительное.

Поэтому в мире в последние годы принята другая практика — open source. Если у вас есть опенсорсный инструмент (язык, фреймворк, база данных или все что угодно) с открытым исходным кодом, то это вам дает некоторую гарантию того, что если в этом инструменте вдруг обнаружится баг, то вы в крайнем случае сможете поправить этот баг своими руками. Именно это свойство opensource-решений я считаю ключевым для сегодняшнего бизнеса.

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

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

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

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

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

Во-первых, следует спросить, чем обоснована идея по смене языка. Что это даст? Каковы плюсы и каковы минусы? Какова стоимость такого перехода и каковы сроки? Каковы риски?

Если полученные ответы вас устраивают с точки зрения бизнеса — вперед. Если не устраивают — нужно постараться донести до разработчиков причины, по которым вы им отказываете.

4. Когда затраты на переход с одного языка на другой стоят того?

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

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

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

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

Когда у вас и ваших коллег есть четкие ответы на обозначенные выше вопросы.

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

Конечно же, есть некоторые типовые сферы применения разных платформ (не языков). Например, Java и .NET для относительно крупных бизнес-приложений или сервисов. Node.js для многопоточной обработки и мессенджинга. Все не перечислить. Однако эти границы очень и очень размыты и зависят так же от региона. В США, например, немного другой опыт использования, «мода» и типовые сферы применения платформ, нежели у нас.

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

В принципе, такое разделение есть: языки C и C++ традиционно используются для низкоуровневой разработки, Java и C# считаются языками общего назначения, подходящими для широкого спектра задач от бизнес-логики до мобильных приложений. Python, Ruby и PHP нацелены, в основном, на веб-разработку, JavaScript — на браузерные приложения. Не думаю, что возможны резкие изменения в этой области, хотя мода на языки и фреймворки иногда меняется — сейчас, например, начинает набирать популярность язык Go.

Да. Некоторые вещи лучше реализуются на разных языках в силу скорости работы и простоты использования, например, в php-проектах в силу «медлительности» языка можно реализовать чат на Node или агрегатор на Java — результат будет лучше.

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

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

Насчет нового языка — да, такой язык появиться может, но, в силу довольно сильной инертности индустрии, я не думаю, что в ближайшие 5 лет кто-то потеснит Java и С/C++ с пьедестала. Если же и выбирать какую-то «лошадку», то я поставил бы на JavaScript. Сегодня мы видим в индустрии огромный рост всего, связанного c JavaScript. Фреймворки рождаются, как грибы после дождя. Хайп в интернете вокруг этой технологии огромен. Посмотрим, к чему это все приведет.

6. Должен ли программист быть DevOps (обладать навыками программиста и системного администратора)? Что делать с тем, что большинство программистов отказываются развивать компетенции и нести ответственность в этой области?

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

7. Стоит ли использовать микросервисы в своих проектах?

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

8. Должен ли разработчик уметь работать с широким спектром современных веб-технологий и языков?

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

Краткая история и классификация языков программирования

Краткая история и классификация языков программирования

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

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

Один из первых языков
программирования – Фортран (Formula
Translation)
был создан в середине 50-х годов. Благодаря своей простоте и тому, что на этом
языке накоплены большие библиотеки программ Фортран и в наши дни остается одним
из самых распространенных. Он используется для инженерных и научных расчетов,
для решения задач физики и других наук с развитым математическим аппаратом.

Для решения
экономических задач был создан язык программирования — Кобол.

Расширение областей
применения ЭВМ влечет за собой создание языков, ориентированных на новые сферы
применения: Снобол – алгоритмический язык для обработки текстовой информации,
Лисп — алгоритмический язык для обработки символов. Лисп находит широкое
применение в исследованиях по созданию искусственного интеллекта.

В 1968 г. был объявлен
конкурс на лучший язык программирования для обучения студентов. Победителем
стал язык Алгол-68, но широкого распространения не получил. Для этого конкурса
Никлаус Вирт создал язык Паскаль, достаточно простой, удобный, с наличием мощных
средств структурирования данных. Хотя Паскаль был разработан как язык для
обучения программированию, он впоследствии получил широкое развитие и в
настоящее время считается одним из самых используемых языков. Для обучения
младших школьников Самуэлем Пайпертом был разработан язык Лого. Он отличается
простотой и богатыми возможностями.

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

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

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

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

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

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

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

 

К языкам сверхвысокого
уровня можно отнести лишь Алгол-68 и APL. Повышение уровня этих языков произошло за счет
введения сверхмощных операций и операторов.

Другая классификация
делит языки на вычислительные и языки символьной обработки. К первому типу
относят Фортран, Паскаль, Алгол, Бейсик, Си, ко второму типу — Лисп, Пролог,
Снобол и др.

В современной
информатике можно выделить два основных направления развития языков
программирования: процедурное и непроцедурное.

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

Среди процедурных
языков выделяют в свою очередь структурные и операционные языки. В структурных
языках одним оператором записываются целые алгоритмические структуры:
ветвления, циклы и т.д. В операционных языках для этого используются несколько
операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада,
ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.

Непроцедрное
(декларативное) программирование появилось в начале 70-х годов 20 века, но
стремительное его развитие началось в 80-е годы, когда был разработан японский
проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы
для создания интеллектуальных машин. К непроцедурному программированию
относятся функциональные и логические языки.

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

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

Можно выделить еще один
класс языков программирования — объектно-ориентированные языки высокого уровня.
На таких языках не описывают подробной последовательности действий для решения
задачи, хотя они содержат элементы процедурного программирования.
Объектно-ориентированные языки, благодаря богатому пользовательскому
интерфейсу, предлагают человеку решить задачу в удобной для него форме.
Примером такого языка может служить язык программирования визуального общения Object Pascal.

Языки описания
сценариев, такие как Perl,
Python,
Rexx,
Tcl
и языки оболочек UNIX,
предполагают стиль программирования, весьма отличный от характерного для языков
системного уровня. Они предназначаются не для написания приложения с нуля, а
для комбинирования компонентов, набор которых создается заранее при помощи других
языков. Развитие и рост популярности Internet также способствовали распространению
языков описания сценариев. Так, для написания сценариев широко употребляется
язык Perl,
а среди разработчиков Web-страниц
популярен JavaScript.

Машинные
команды

Настоящее
программирование в современном понимании началось с момента создания первой
электронной вычислительной машины.

Первые ЭВМ позволяли
выполнять программы на машинном языке, который является единственным языком,
понятным ЭВМ. Он реализуется аппаратно: каждую команду выполняет некоторое
электронное устройство.

Машинные команды
пишутся в двоичном коде. Логику работы подобных программ очень трудно понять
из-за того, программа представляет собой сплошной набор нулей и единиц.
Например, какие-то группы обозначали числа, другие – операции над ними.

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

Мнемокоды

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

Для упрощения работы с
ячейками памяти стали использовать понятие переменной.

Переменная – в
программировании это буквенное обозначение области памяти, в которой хранится
некоторое значение.

Для перевода мнемокодов
в машинные инструкции и имен переменных в адреса ячеек памяти использовалась
специальная программа – транслятор.

Языки мнемокодов
получили название ассемблеров.

Структурное
программирование

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

Появились языки,
основанные на этих базовых операциях, которые стали называть структурными или
языками высокого уровня.

Современное
программирование

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

Широкое распространение
получили объектно-ориентированные языки программирования (ООП), на которых
легче реализовать большие и сложные проекты. Их отличие от языков высокого
уровня заключается в возможности отстранения от алгоритма выполнения программы.
С помощью таких языков разработчик как бы оперирует виртуальными объектами.

1. История развития языков программирования

    Одной из самых революционных
идей, приведших к созданию автоматических цифровых вычислительных машин, была
высказанная в 20-х годах XIX века Ч.Бэббиджем мысль о предварительной записи порядка
действий машины для последующей автоматической реализации вычислений —
программе. И, хотя использованная Бэббиджем запись программы на перфокартах,
придуманная для управления ткацкими станками французским изобретателем Жозефом
Мари-Жаккаром, технически не имеет ничего общего с современными приемами
хранения программ в ЭВМ, принцип здесь по-существу один. С этого момента
начинается история программирования.

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

    Революционным моментом в
истории языков программирования стало появление системы кодирования машинных
команд с помощью специальных символов, предложенной Джоном Моучли, сотрудником
Пенсильванского университета. Система кодирования, предложенная Моучли, увлекла
одну из сотрудниц его компании — Грейс Мюррей Хоппер, которая посвятила всю
свою жизнь компьютерам и программированию. Она вспоминает, что стала «третьим в
мире программистом первого в мире большого цифрового компьютера». Г.Хоппер
доказала, чего она стоит как программист. Впоследствии она писала: «Я имела то
преимущество, что изучала как технику, так и математику и знала, как работает машина
от начала и до конца».

    При работе на компьютере
«Марк-1» Г.Хоппер и ее группе пришлось столкнуться со многими проблемами и все,
что ими придумано, было впервые. В частности, они придумали подпрограммы.
Сейчас любой программист не задумываясь использует аппарат подпрограмм в любом
языке программирования. И еще одно фундаментальное понятие техники
программирования впервые ввели Г.Хоппер и ее группа — «отладка». Однажды жарким
летним днем 1945 г.
неожиданно произошла остановка компьютера «Марк-1». Обнаружилась неисправность
одного реле, контакты которого были заблокированы мотыльком, залетевшим
неизвестно каким образом в помещение вычислительного центра. Вспоминает
Г.Хоппер: «Когда к нам зашел офицер, чтобы узнать, чем мы занимаемся, мы
ответили, что очищаем компьютер от насекомых (debuging)». С тех пор термин «debuging» (отладка)
используется в технических процессах тестирования неисправностей в компьютере,
а также в системах программирования.

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

    В конце 40-х годов, до прихода
Г.Хоппер в фирму Джона Моучли, последний создал систему под названием «Short Code», которая являлась примитивным
языком программирования высокого уровня. В ней программист записывал решаемую
задачу в виде математических формул, а затем, используя специальную таблицу,
переводил символ за символом, преобразовывал эти формулы в двухлитерные коды. В
дальнейшем специальная программа компьютера превращала эти коды в двоичный
машинный код. Система, разработанная Дж. Моучли, была по существу одним из
первых примитивных интерпретаторов.

    Уже в 1951 г. Хоппер создала
первый в мире компилятор и ею же был введен сам этот термин. Компилятор Хоппер
осуществлял функцию объединения команд и в ходе трансляции производил
организацию подпрограмм, выделение памяти компьютера, преобразование команд
высокого уровня (в то время псевдокодов) в машинные команды. «Подпрограммы
находятся в библиотеке (компьютера), а когда вы подбираете материал из
библиотеки — это называется компиляцией» — так она объясняла происхождение
введенного ею термина.

    В 1954 г. группа под
руководством Г.Хоппер разработала систему, включающую язык программирования и
компилятор, которая в дальнейшем получила название MATH-MATIC. После удачного завершения работ по созданию MATH-MATIC Г.Хоппер и ее группа принялись за
разработку нового языка и компилятора, который позволил бы пользователям
программировать на языке, близком к обычному английскому. Необходимость
появления подобной системы Хоппер объясняла следующим образом: «Существует
много различных людей, которым нужно решать разные задачи. Некоторые из них
связаны с обработкой символов, другие — с обработкой слов, и им нужны языки
другого типа, а не наши попытки превратить их всех в математиков». В 1958 г. появился компилятор FLOW-MATIC. В отличие от ФОР-ТРАНа — языка
для научных приложений — FLOW-MATIC был первым языком для задач обработки
коммерческих данных. Работы в этом направлении привели к созданию языка КОБОЛ (COBOL — Common Business Oriented Language). Одним из основных
консультантов при создании этого языка была Грейс Мюррей Хоппер.

    Середина 50-х годов
характеризуется стремительным прогрессом в области программирования. Роль
программирования в машинных командах стала уменьшаться. Начали появляться языки
программирования нового типа, выступающие в роли посредника между машинами и
программистами. Первым и одним из наиболее распространенных был Фортран (FORTRAN, от FORmula TRANslator — переводчик
формул), разработанный группой программистов фирмы IBM в 1954 г. (первая версия).

    В середине 60-х годов
сотрудники математического факультета Дартмутского колледжа Томас Курц и Джон
Кемени создали специализированный язык программирования, который состоял из
простых слов английского языка. Новый язык назвали «универсальным символическим
кодом для начинающих» (Beginners All-Purpose Symbolic Instruction Code, или, сокращенно, BASIC). Годом рождения нового
языка можно считать 1964 г.
Сегодня универсальный язык Бейсик (имеющий множество версий) приобрел большую
популярность и получил широкое распространение среди пользователей ЭВМ
различных категорий во всем мире. В значительной мере этому способствовало то,
что Бейсик начали использовать как встроенный язык персональных компьютеров,
широкое распространение которых началось в конце 70-х годов.

    В начале 60-х годов все
существующие языки программирования высокого уровня можно было пересчитать по
пальцам, однако впоследствии их число достигло трех тысяч. Разумеется,
подавляющая часть языков не получила сколько-нибудь широкого распространения; в
практической деятельности используется не более двух десятков. Разработчики
ориентировали языки на разные классы задач, в той или иной мере привязывали их
к конкретным архитектурам ЭВМ, реализовывали личные вкусы и идеи. В 60-е годы
были предприняты попытки преодолеть эту «разноголосицу» путем создания
универсального языка программирования. Первым детищем этого направления стал PL/I (Programm Language One), 1967 г. Затем на эту роль
претендовал АЛГОЛ-68 (1968 г.).
Предполагалось, что подобные языки будут развиваться и усовершенствоваться и
вытеснят все остальные. Однако ни одна из этих попыток на сегодняшний день не
увенчалась успехом (хотя PL/I в усеченных версиях
использовали многие программисты). Всеохватность языка приводила к
неоправданной, с точки зрения программиста, сложности конструкций,
неэффективности компиляторов.

    Языки программирования служат
разным целям и их выбор определяется
удобностью пользователя, пригодностью для данного компьютера и данной задачи. А
задачи для компьютера бывают самые разнообразные: вычислительные,
экономические, графические, экспертные и т.д. Такая разнотипность решаемых
компьютером задач и определяет многообразие языков программирования. По всей
видимости, в программировании наилучший результат достигается при индивидуальном
подходе, исходящем из. класса задачи, уровня и интересов программиста.
Например, Бейсик широко употребляется при написании простых программ; Фортран
является классическим языком программирования при решении на ЭВМ математических
и инженерных задач; язык Кобол (COBOL,
от Common Business Oriented Language
-общий язык, ориентированный на деловые задачи; создан в 1960 г.) был задуман как основной
язык для массовой обработки данных в сферах управления и бизнеса. Еще более
специализированным является язык ЛОГО (от греческого logos — слово), созданный для обучения
программированию школьников профессором математики и педагогики Сеймуром
Пейпертом из Массачусетского технологического института. Обучаясь программированию
на ЛОГО, дети задают простые команды, которые управляют игрушечной черепашкой,
снабженной карандашиком. Отметим и еще один достаточно популярный специализированный
язык — Пролог (Prolog -PROgramming in LOGic), разработанный как
язык программирования для создания систем искусственного интеллекта.

    В конце 50-х годов плодом
международного сотрудничества в области программирования явился Алгол (ALGOL, от ALGOrithmic Language — алгоритмический
язык). Алгол предназначен для записи алгоритмов, которые строятся в виде
последовательности процедур, применяемых для решения поставленных задач.
Специалисты-практики восприняли этот язык далеко неоднозначно, но, тем не
менее, его влияние на развитие других языков и теорию программирования
оказалось весьма значительным.

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

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

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

    Период с конца 60-х и до
начала 80-х годов характеризуется бурным ростом числа различных языков
программирования, сопровождавшим, как это ни парадоксально, крмзис программного
обеспечения. Этот кризис особо остро переживало военное ведомство США. В январе
1975 г.
Пентагон решил навести порядок в хаосе трансляторов и учредит комитет, которому
было предписано разработать один универсальный язык. На конкурсной основе
комитет проработал сотни проектов и, когда стало ясно, что ни один из
существующих языков не может их удовлетворить, принял два проекта для
окончательного рассмотрения. В мае 1979 г. был объявлен победитeль — группа ученых
во главе с Жаном Ихбиа. Победивший язык окрестили АДА, в честь Огасты Ады
Лавлейс. Язык АДА — прямой наследник языка Паскаль. этот язык предназначен для создания и длительного (многолетнего)
сопровождения больших программных систем, допускает возможность параллельной
обработки, правления процессами в реальном времени и многое другое, чего трудно или невозможно достичь средствами более простых языков.

    Большой отпечаток на
современное программирование наложил язык Си (первая версия — 1972 г.), являющийся очень
популярным в среде разработчиков систем программного обеспечения (включая
операционные системы). Си сочетает в себе черты как языка высокого уровня, так
и машинно-ориентированного языка, допуская программиста ко всем машинным
ресурсам, чего не обеспечивают такие языки, как Бейсик и Паскаль.

    Следует отметить, что многие
языки, первоначально разработанные для больших и малых ЭВМ, в дальнейшем были
приспособлены к персональным компьютерам. Хорошо вписались в «персоналки» не
только Паскаль, Бейсик, Си, Лого, но и ЛИСП, ПРОЛОГ — языки искусственного
интеллекта.

    В течение многих лет
программное обеспечение строилось на основе операциональных и процедурных
языков, таких как Фортран, Бейсик, Паскаль, Ада, Си. И сегодня современные версии
этих и им подобных языков (Модула, Форт и др.) доминируют при разработке
прикладных программных средств. Однако по мере эволюции языков программирования
получили широкое распространение и другие, принципиально иные, подходы к созданию
программ.

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

    Принципиально иное направление
в программировании связано с методологиями (иногда говорят «парадигмами»)
непроцедурного программирования. К ним можно отнести объектно-ориентированное и
декларативное программирование. Объектно-ориентированный язык создает окружение
в виде множества независимых объектов. Каждый объект ведет себя подобно отдельному
компьютеру, их можно использовать
для решения задач как «черные ящики», не вникая во внутренние механизмы их
функционирования. Из языков объектного программирования, популярных среди
профессионалов, следует назвать прежде всего Си++, для более широкого круга
программистов предпочтительны среды типа Delphi и Visual Basic.

                                Рис.1. Классификация языков программирования.

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

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





 



Эволюция языков программирования


 





































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


К написанию этой статьи меня побудила дискуссия, разгоревшаяся на одном из форумов dotSITE после появления там сообщения, резко критикующего C# — одну из основных составляющих новой платформы .NET от Microsoft. Сообщение содержало в себе уже ставшую достаточно банальной критику Microsoft вообще и в частности (я здесь не утверждаю, что критиковать Microsoft не за что, просто эта критика уже порядочно набила оскомину), а также некоторые высказывания конкретно о C#. В ходе развернувшейся дискуссии было высказано несколько любопытных замечаний, некоторые же вопросы остались незатронутыми. Все это и побудило меня написать статью, в которой делается попытка «примирить» в некотором роде носителей мнений об исключительности того или иного языка программирования. Я постараюсь дать некоторый исторический очерк развития различных языков и пояснить на примерах некоторые общие тенденции. Возможно, мне удастся убедить кого-то в бесполезности проведения дискуссий, аналогичных вышеупомянутой. Я не претендую ни на объективность (хотя постараюсь быть таковым), ни на полноту изложения. Это всего лишь попытка «встать на цыпочки и осмотреться»…

1. Первые универсальные языки

Итак, начнем. Обратимся к истокам развития вычислительной техники. Вспомним самые первые компьютеры и программы для них. Это была эра программирования непосредственно в машинных кодах, а основным носителем информации были перфокарты и перфоленты. Программисты обязаны были знать архитектуру машины досконально. Программы были достаточно простыми, что обуславливалось, во-первых, весьма ограниченными возможностями этих машин, и, во-вторых, большой сложностью разработки и, главное, отладки программ непосредственно на машинном языке. Вместе с тем такой способ разработки давал программисту просто невероятную власть над системой. Становилось возможным использование таких хитроумных алгоритмов и способов организации программ, какие и не снились современным разработчикам. Например, могла применяться (и применялась!) такая возможность, как самомодифицирующийся код. Знание двоичного представления команд позволяло иногда не хранить некоторые данные отдельно, а встраивать их в код как команды. И это далеко не полный список приемов, владение хотя бы одним из которых сейчас сразу же продвигает вас до уровня «гуру» экстра-класса.

2. Ассемблер

Первым значительным шагом представляется переход к языку ассемблера (позволим себе маленькое лирическое отступление: английское название assembly language, или assembler, на русский переводят именно тем термином, который был использован выше. При этом у новичка создается впечатление, что язык назван в честь некоего человека по имени ассемблер. Достаточно забавная ситуация, не правда ли?). Не очень заметный, казалось бы, шаг — переход к символическому кодированию машинных команд — имел на самом деле огромное значение. Программисту не надо было больше вникать в хитроумные способы кодирования команд на аппаратном уровне. Более того, зачастую одинаковые по сути команды кодировались совершенно различным образом в зависимости от своих параметров (широко известный пример из мира современных компьютеров — это кодирование инструкции mov в процессорах Intel: существует несколько совершенно по-разному кодируемых вариантов команды; выбор того или иного варианта зависит от операндов, хотя суть выполняемой операции неизменна: поместить содержимое (или значение) второго операнда в первый). Появилась также возможность использования макросов и меток, что также упрощало создание, модификацию и отладку программ. Появилось даже некое подобие переносимости — существовала возможность разработки целого семейства машин со сходной системой команд и некоего общего ассемблера для них, при этом не было нужды обеспечивать двоичную совместимость.


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

3. Фортран

В 1954 году в недрах корпорации IBM группой разработчиков во главе с Джоном Бэкусом
(John Backus) был создан язык программирования Fortran.



Значение этого события трудно переоценить. Это первый язык программирования высокого уровня.
Впервые программист мог по-настоящему абстрагироваться от особенностей машинной
архитектуры. Ключевой идеей, отличающей новый язык от ассемблера, была концепция
подпрограмм. Напомним, что это современные компьютеры поддерживают подпрограммы
на аппаратном уровне, предоставляя соответствующие команды и структуры данных (стек) прямо на уровне ассемблера, в 1954 же году это было совершенно не так. Поэтому компиляция Fortran’а была процессом отнюдь не тривиальным. Кроме того, синтаксическая структура языка была достаточно сложна для машинной обработки в первую очередь из-за того, что пробелы как синтаксические единицы вообще не использовались. Это порождало массу возможностей для скрытых ошибок, таких, например:


В Фортране следующая конструкция описывает «цикл for до метки 10 при изменении индекса от 1 до 100»:

DO 10 I=1,100


Если же здесь заменить запятую на точку, то получится оператор присваивания:


DO10I = 1.100


Говорят, что такая ошибка заставила ракету взорваться во время старта!



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


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

4. Cobol

В 1960 году был создан язык программирования Cobol.



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

5. PL/1

В 1964 году все та же корпорация IBM создала язык PL/1, который был призван заменить Cobol и Fortran в большинстве приложений. Язык обладал исключительным богатством синтаксических конструкций. В нем впервые появилась обработка исключительных ситуаций и поддержка параллелизма. Надо заметить, что синтаксическая структура языка была крайне сложной. Пробелы уже использовались как синтаксические разделители, но ключевые слова не были зарезервированы. В частности, следующая строка — это вполне нормальный оператор на PL/1:


IF ELSE=THEN THEN THEN; ELSE ELSE


В силу таких особенностей разработка компилятора для PL/1 была исключительно сложным делом. Язык так и не стал популярен вне мира IBM.

6. BASIC

В 1963 году в Дартмурском колледже (Dartmouth College) был создан язык программирования BASIC (Beginners’ All-Purpose Symbolic Instruction Code — многоцелевой язык символических инструкций для начинающих). Язык задумывался в первую очередь как средство обучения и как первый изучаемый язык программирования. Он предполагался легко интерпретируемым и компилируемым. Надо сказать, что BASIC действительно стал языком, на котором учатся программировать (по крайней мере, так было еще несколько лет назад; сейчас эта роль отходит к Pascal). Было создано несколько мощных реализаций BASIC, поддерживающих самые современные концепции программирования (ярчайший пример — Microsoft Visual Basic).

7. Algol

В 1960 году командой во главе с Петером Науром (Peter Naur) был создан язык программирования Algol. Этот язык дал начало целому семейству Алгол-подобных языков (важнейший представитель — Pascal). В 1968 году появилась новая версия языка. Она не нашла столь широкого практического применения, как первая версия, но была весьма популярна в кругах теоретиков. Язык был достаточно интересен, так как обладал многими уникальными на так момент характеристиками.

8. Дальнейшее развитие языков программирования

В этом месте я предпочту остановиться и сделать некоторые замечания. Создание каждого из вышеупомянутых языков (за исключением, может быть, Algol’а) было вызвано некоторыми практическими требованиями. Эти языки послужили фундаментом для более поздних разработок. Все они представляют одну и ту же парадигму программирования. Следующие языки пошли существенно дальше в своем развитии, в сторону более глубокого абстрагирования.


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

9. Pascal-подобные языки

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


Отрицательной чертой языка было отсутствие в нем средств для разбиения программы на модули. Вирт осознавал это и разработал язык Modula-2 (1978), в котором идея модуля стала одной из ключевых концепций языка. В 1988 году появилась Modula-3, в которую были добавлены объектно-ориентированные черты. Логическим продолжением Pascal и Modula являются язык Oberon и Oberon-2. Они характеризуются движением в сторону объектно- и компонентно-
ориентированности.

10. C-подобные языки

В 1972 году Керниганом и Ритчи был создан язык программирования C. Он создавался как язык для разработки операционной системы UNIX. C часто называют «переносимым ассемблером», имея в виду то, что он позволяет работать с данными практически так же эффективно, как на ассемблере, предоставляя при этом структурированные управляющие конструкции и абстракции высокого уровня (структуры и массивы). Именно с этим связана его огромная популярность и поныне. И именно это является его ахиллесовой пятой. Компилятор C очень слабо контролирует типы, поэтому очень легко написать внешне совершенно правильную, но логически ошибочную программу.


В 1986 году Бьярн Страуструп создал первую версию языка C++, добавив в язык C объектно-ориентированные черты, взятые из Simula (см. ниже), и исправив некоторые ошибки и неудачные решения языка. C++ продолжает совершенствоваться и в настоящее время, так в 1998 году вышла новая (третья) версия стандарта, содержащая в себе некоторые довольно существенные изменения. Язык стал основой для разработки современных больших и сложных проектов. У него имеются, однако же, и слабые стороны, вытекающие из требований эффективности.


В 1995 году в корпорации Sun Microsystems Кеном Арнольдом и Джеймсом Гослингом был создан язык Java. Он наследовал синтаксис C и C++ и был избавлен от некоторых неприятных черт последнего. Отличительной особенностью языка является компиляция в код некоей абстрактной машины, для которой затем пишется эмулятор (Java Virtual Machine) для реальных систем. Кроме того, в Java нет указателей и множественного наследования, что сильно повышает надежность программирования.


В 1999–2000 годах в корпорации Microsoft был создан язык C#. Он в достаточной степени схож с Java (и задумывался как альтернатива последнему), но имеет и отличительные особенности. Ориентирован, в основном, на разработку многокомпонентных Интернет-приложений.

11. Языки Ada и Ada 95

В 1983 году под эгидой Министерства Обороны США был создан язык Ada. Язык замечателен тем, что очень много ошибок может быть выявлено на этапе компиляции. Кроме того, поддерживаются многие аспекты программирования, которые часто отдаются на откуп операционной системе (параллелизм, обработка исключений). В 1995 году был принят стандарт языка Ada 95, который развивает предыдущую версию, добавляя в нее объекно-
ориентированность и исправляя некоторые неточности. Оба этих языка не получили широкого распространения вне военных и прочих крупномасштабных проектов (авиация, железнодорожные перевозки). Основной причиной является сложность освоения языка и достаточно громоздкий синтаксис (значительно более громоздкий, чем Pascal).

12. Языки обработки данных

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

13. APL

В 1957 году была предпринята попытка создания языка для описания математической обработки данных. Язык был назван APL (Application Programming Language). Его отличительной особенностью было использование математических символов (что затрудняло применение на текстовых терминалах; появление графических интерфейсов сняло эту проблему) и очень мощный синтаксис, который позволял производить множество нетривиальных операций прямо над сложными объектами, не прибегая к разбиению их на компоненты. Широкому применению помешало, как уже отмечалось, использование нестандартных символов как элементов синтаксиса.

14. Snobol и Icon

В 1962 году появился язык Snobol (а в 1974 — его преемник Icon), предназначенный для обработки строк. Синтаксис Icon напоминает С и Pascal одновременно. Отличие заключается в наличии мощных встроенных функций работы со строками и связанная с этими функциями особая семантика. Современным аналогом Icon и Snobol является Perl — язык обработки строк и текстов, в который добавлены некоторые объектно-ориентированные возможности. Считается очень практичным языком, однако ему недостает элегантности.

15. SETL

В 1969 году был создан язык SETL — язык для описания операций над множествами. Основной структурой данных в языке является множество, а операции аналогичны математическим операциям над множествами. Полезен при написании программ, имеющих дело со сложными абстрактными объектами.

16. Lisp и ему подобные языки

В 1958 году появился язык Lisp — язык для обработки списков. Получил достаточно широкое распространение в системах искусственного интеллекта. Имеет несколько потомков: Planner (1967), Scheme (1975), Common Lisp (1984). Многие его черты были унаследованы современными языками функционального программирования.

17. Скриптовые языки

В последнее время в связи развитием Интернет-технологий, широким распространением высокопроизводительных компьютеров и рядом других факторов получили распространение так называемые скриптовые языки. Эта языки первоначально ориентировались на использование в качестве внутренних управляющих языков во всякого рода сложных системах. Многие из них, однако же, вышли за пределы сферы своего изначального применения и используются ныне в совсем иных областях. Характерными особенностями данных языков являются, во-первых, их интерпретируемость (компиляция либо невозможна, либо нежелательна), во-вторых, простота синтаксиса, а в-третьих, легкая расширяемость. Таким образом, они идеально подходят для использования в часто изменяемых программах, очень небольших программах или в случаях, когда для выполнения операторов языка затрачивается время, несопоставимое со временем их разбора. Было создано достаточно большое количество таких языков, перечислим лишь основные и наиболее часто используемые.

18. JavaScript

Язык был создан в компании Netscape Communications в качестве языка для описания сложного поведения веб-страниц. Первоначально назывался LiveScript, причиной смены названия получили маркетинговые соображения. Интерпретируется браузером во время отображения веб-страницы. По синтаксису схож с Java и (отдаленно) с C/C++. Имеет возможность использовать встроенную в браузер объектную функциональность, однако подлинно объектно-ориентированным языком не является.

19. VBScript

Язык был создан в корпорации Microsoft во многом в качестве альтернативы JavaScript. Имеет схожую область применения. Синтаксически схож с языком Visual Basic (и является усеченной версией последнего). Так же, как и JacaScript, исполняется браузером при отображении веб-страниц и имеет ту же степень объектно-
ориентированности.

20. Perl

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

>21. Python

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

22. Объектно-ориентированные языки

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

23. Simula

Первым объектно-ориентрованным языком был язык Simula (1967). Этот язык был предназначен для моделирования различных объектов и процессов, и объектно-ориентированные черты появились в нем именно для описания свойств модельных объектов.

24. Smalltalk

Популярность объектно-ориентированному программированию принес язык Smalltalk, созданный в 1972 году. Язык предназначался для проектирования сложных графических интерфейсов и был первым по-настоящему объектно-ориентированным языком. В нем классы и объекты — это единственные конструкции программирования. Большим недостатком Smalltalk являются большие требования к памяти и низкая производительность полученных программ. Это связано с не очень удачной реализацией объектно-ориентированных особенностей. Популярность языков C++ и Ada 95 связана именно с тем, что объектно-
ориентированность реализована без существенного снижения производительности.

25. Eiffel

Существует язык с очень хорошей реализацией объектно-
ориентированности, не являющийся надстройкой ни над каким другим языком. Это язык Eiffel (1986). Являясь чистым языком объектно-ориентированного программирования, он, кроме того, повышает надежность программы путем использования «контрольных утверждений».

26. Языки параллельного программирования

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

27. Язык Оccam

Язык Оccam был создан в 1982 году и предназначен для программирования транспьютеров — многопроцессорных систем распределенной обработки данных. Он описывает взаимодействие параллельных процессов в виде каналов — способов передачи информации от одного процесса к другому. Отметим особенность синтаксиса языка
Щccam — в нем последовательный и параллельный порядки выполнение операторов равноправны, и их необходимо явно указывать ключевыми словами PAR и SEQ.

28. Модель параллельных вычислений Linda

В 1985 году была предложена модель параллельных вычислений Linda. Основной ее задачей является организация взаимодействия между параллельно выполняющимися процессами. Это достигается за счет использования глобальной кортежной области (tuple space). Процесс может поместить туда кортеж с данными (то есть совокупность нескольких, возможно разнородных, данных), а другой процесс может ожидать появления в кортежной области некоторого кортежа и, после его появления, прочитать кортеж с возможным последующим его удалением. Заметим, что процесс может, например, поместить кортеж в область и завершиться, а другой процесс может через некоторое время воспользоваться этим кортежем. Таким образом обеспечивается возможность асинхронного взаимодействия. Очевидно, что при помощи такой модели может быть сэмулировано и синхронное взаимодействие. Linda — это модель параллельных вычислений, она может быть добавлена в любой язык программирования. Существуют достаточно эффективные реализации Linda, обходящие проблему существования глобальной кортежной области с потенциально неограниченным объемом памяти.

29. Неимперативные языки

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

30. Функциональные языки

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


Из языков с энергичной семантикой упомянем ML и два его современных диалекта — Standard ML (SML) и CaML. Последний имеет объектно-ориентированного потомка — Objective CaML (O’CaML).


Среди языков с ленивой семантикой наиболее распространены два: Haskell и его более простой диалект Clean.



31. Языки логического программирования

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


Родоначальником большинства языков логического программирования является язык Prolog (1971). У него есть ряд потомков — Parlog (1983, ориентирован на параллельные вычисления), Delta Prolog и др. Логическое программирование, как и функциональное, — это отдельная область программирования, и за более подробными сведениями мы отсылаем читателя к специальной литературе.

32.Вместо заключения

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


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


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


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




 


Cравнение языков программирования: Ruby и Python

Двумя наиболее популярными языками программирования, особенно первыми, являются Ruby и Python. Ruby широко используется на таких сайтах, как Airbnb, Hulu, Kickstarter и Github. Python используется для таких веб-сайтов, как Google, YouTube, Spotify и Quora.

Оба языка появились в середине 90-х. Python фактически старше Ruby примерно на четыре года. Они оба пришли, чтобы удовлетворить потребности сообщества программистов, но их философия разная. Оба являются объектно-ориентированными языками. Они оба динамичны. У них обоих много разных функций. Это очень гибкие языки.

Вы часто будете видеть в Ruby, что есть несколько методов для решения одной и той же проблемы, а в Python есть только один подход. Это очень философская разница. Их объединяет цель писать чистый, читаемый, лаконичный код (например, шестнадцатеричный код цвета #00ffff — цвет морской волны).

Вот краткое сравнение Ruby и Python:

Ruby (Рубин)

  • Есть несколько способов сделать то же самое.

  • Ruby — это динамический, рефлексивный, объектно-ориентированный язык программирования общего назначения.

  • Компании, использующие Ruby: Hulu, Twitter, ZenDesk, Basecamp, Shopify, Urban Dictionary, GitHub.


Python (Питон)

  • Есть самый понятный способ что-то сделать, и именно так это нужно делать.

  • Python — это высокоуровневый язык общего назначения, который можно использовать для написания короткого скрипта, создания API или даже создания сложного объектно-ориентированного веб-паука.

  • Компании, использующие Python, — это Google, Yahoo Maps, Dropbox, Venmo, YouTube.


Некоторые языки имеют особенное применение. Они специально созданы для конкретного случая использования. Хорошим примером является язык под названием R, который в основном используется для статистического анализа и широко используется в академическом мире и везде, где вы будете заниматься тяжелой математикой и статистикой. Другой пример — SQL, язык баз данных. В первую очередь он существует для взаимодействия с базой данных. Вы бы не стали писать на нем веб-приложение. И Ruby, и Python являются универсальными, что означает, что они действительно гибкие, и с ними можно делать что угодно. Вы можете взаимодействовать с базой данных или создать веб-приложение, или создать сценарий для запуска на вашем компьютере, или вы можете запустить почти все внутренние инструменты Google.

Глоссарий технических терминов

Language (Язык): напр. Python и Ruby. Язык программирования — это набор правил для предоставления компьютеру инструкций. Разные языки созданы на основе разных философий. Существуют сотни, если не тысячи языков программирования.

Interpreter (Интерпретатор): программа, которая читает и выполняет код. Принимает ваш код и позволяет компьютеру запустить его. И Ruby, и Python являются «интерпретируемыми» языками, поэтому их не нужно переводить для работы.

FrameworkФреймворк): более широкий набор инструментов и методов, созданных с помощью языка. Подумайте о диалекте языка. Разные правила общения, но основанные на одном языке

Object-Oriented (Объектно-ориентированное): парадигма программирования, основанная на концепциях объектов. Доминирующая философия в языковом дизайне. Все в языке состоит из объектов, которые общаются друг с другом. И Python, и Ruby объектно-ориентированы.

Functional ProgrammingФункциональное программирование): парадигма программирования, которая избегает изменения состояния и изменяемых данных.

Imperative Programming (Императивное программирование): парадигма программирования, в которой используются операторы для изменения состояния программы. Python и Ruby сочетают в себе два вида программирования.

Когда вы только начинаете писать код, в нем столько жаргона и модных словечек. Язык против фреймворка — один из первых вопросов, который действительно запутывает.

Что такое Руби?

Создан в 1995 году Юкихиро «Matz» Мацумото.

100% объектно-ориентированный (все является объектом) язык программирования.

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

Основная философия Ruby:

  • Сосредоточен на людях, и на том, как люди заботятся о программировании.

  • Следует принципу наименьшего удивления.

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

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

Я новичок, зачем мне начинать с Руби?

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



URL:coursereport.com/blog/ruby-vs-python-choosing-your-first-programming-language

Названы самые популярные языки программирования. Среди них полумертвый COBOL

|

Поделиться


Институт IEEE опубликовал список самых востребованных языков программирования. Первое место среди них занял Python, и среди всех языков в списке оказался COBOL, многие годы считавшийся мертвым.

Самые популярные языки

Специалисты Института инженеров электротехники и электроники (Institute of Electrical and Electronics Engineers, IEEE) опубликовали рейтиг языков программирования в своем ежемесячном журнале IEEE Spectrum. Он включает 55 позиций, и в нем есть даже COBOL, название которого расшифровывается как COmmon Business Oriented Language. Этот язык был создан более 60 лет назад, и в дальнейшем он был забыт на многие годы, но в новом рейтинге он занимает 43 строчку.

Места в рейтинге составители присваивали, пользуясь собственной оценочной шкалой от 0 до 100 баллов. Итоговые результаты во многом согласуются с аналитикой исследовательской компании RedMonk, ресурса для разработчиков GitHub (принадлежит Microsoft), а также с индексом популярности языков программирования Tiobe.

Python и Java — лидеры среди языков программирования, по версии IEEE

В первую пятерку самых распространенных языков программирования, по версии IEEE Spectrum, входят Python, Java, C, C++ и JavaScript, а вторая пятерка состоит из языков R, Arduino, Go, Swift и Matlab. От рейтинга топ-10 IEEE Spectrum образца 2019 г. данный перечень практически не отличается, разве что Matlab был на одну строчку впереди GO, а седьмую строчку занимал C#, в 2020 г. оказавшийся на 23 месте.

На сайте IEEE Spectrum опубликованы три дополнительных рейтинга языков программирования: по темпам роста популярности, по числу открытых вакансий разработчиков и по популярности на ресурсах для размещения открытого исходно кода. По темпам роста популярности топ-10 языков выглядит так (в порядке убывания): Python, Java, C, C++, Go, JS, Arduino, Dart, HTML, Swift. COBOL в этом списке занял 46 место.

Рейтинг популярности языков программирования

Место в рейтингеНазвание языкаКоличество баллов
1Python100,0
2Java95,3
3C94,6
4C++87,0
5JavaScript79,5
6R78,6
7Arduino73,2
8Go73,1
9Swift70,5
10Matlab68,4

Рейтинг по количеству открытых вакансий, тоже в порядке убывания: Python, C, Java, Go, C++, JS, R, HTML, Swift, SQL и COBOL на 41 строчке. Наконец, перечень языков программирования по популярности на GitHub и ему подобных ресурсах: Python, Java, C, JS, C++, HTML, Dart, Go, R и Arduino. У COBOL в данном случае 47 место.

Причем здесь Arduino

В трех из четырех рейтингов, составленных IEEE Spectrum, присутствует Arduino, аппаратно-программная платформа, предназначенная для создания систем автоматики и робототехники базового уровня. Она ориентирована на непрофессиональных пользователей, но составители рейтинга, по их словам, включили ее в рейтинг не просто так.

По сути, программная часть Arduino базируется на языке C++. «Когда люди ищут информацию о программировании для Arduino, то они пишут в строке поиска именно “код Arduino” или покупают книгу о “программировании для Arduino”, а не, к примеру, «программирование на C», отметил сотрудник IEEE Spectrum Стивен Касс (Stephen Cass).

Популярность COBOL растет

Оценку языкам программирования в своем основном рейтинге сотрудники IEEE Spectrum выставляли, основываясь на частоте упоминаний и запросов о тех или иных языках на различных крупных ресурсах. В данном случае их восемь, и это: CareerBuilder, GitHub, Google, Hacker News, Reddit, Stack Overflow, Twitter, а также сайт института IEEE.

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

Инновации и стартапы

Если сравнивать, к примеру, результаты по популярности в Twitter, то в нем COBOL, считающийся мертвым языком, занял седьмое место. Эксперты портала ZDnet связывают это с недавним всплеском интереса к данному языку.

Язык программирования COBOL восстал из мертвых

Как сообщал CNews, в первых числах апреля 2020 г. в ряде штатов США начались активные поиски программистов, знающих COBOL. Они потребовались с целью обновления программного обеспечения, используемого в американской системе занятости, работающей на устаревшем оборудовании. На фоне роста числа безработных в США из-за пандемии коронавируса COVID-19 это «железо» перестало справляться с нагрузкой.

Напомним, что COBOL входит в число старейших языков программирования в мире, первая его версия увидела свет в 1959 г. Один и его соавторов, Джин Саммет (Jean Sammet), как сообщал CNews, умерла в 2017 г. в возрасте 89 лет.

В середине апреля 2020 г. свою лепту в популяризацию COBOL внесла компания IBM – она объявила о подготовке к проведению обучающих курсов по этому языку для увеличения числа специалистов, разбирающихся в нем.

Инициативу IBM поддержал проект Open Mainframe Project, предназначенный для создания ПО с открытым исходным кодом для запуска на мейнфреймах и курируемый организацией Linux Foundation. Сами IBM хотела сделать полностью бесплатными, а по их завершению она собиралась выложить все материалы на GitHub в профиле Open Mainframe Project.

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

Все форумы запущены на сайте Open Mainframe Project. На одном из них специалисты по COBOL могут совместно обсудить решение того или иного вопроса, связанного с программным кодом, а другой предназначен для поиска специалистов в этом языке. Это своего рода база данных программистов, знающих COBOL и способных прийти на помощь организациям, использующим ПО, написанное на этом языке и по тем или иным причинам не готовым отказаться от него.

История языков программирования — DevSkiller

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

Но с чего все началось? И что стимулировало его рост в ведущую отрасль, существующую сегодня? Прежде всего, почему знание истории языков программирования важно для найма разработчиков?

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

Первый язык программирования

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

История языков программирования: хронология

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

1843: Машинный алгоритм Ады Лавлейс

Ада Лавлейс изобретает первый в истории машинный алгоритм для разностной машины Чарльза Бэббиджа, который закладывает основу для всех языков программирования.

Источник: Wikimedia Commons

1944-45: Plankalkül

Где-то между 1944-45 годами Конрад Цузе разработал первый «настоящий» язык программирования под названием Plankalkül (Расчет плана). Язык Зевса (среди прочего) позволял создавать процедуры, в которых хранятся фрагменты кода, которые можно было вызывать снова и снова для выполнения рутинных операций.

Источник: Wikimedia Commons

1949: Язык ассемблера

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

1949: Короткий код

Shortcode (или сокращенный код) был первым языком высокого уровня (HLL), предложенным Джоном Макколи в 1949 году. Однако именно Уильям Шмитт реализовал его для компьютера BINAC в том же году и для UNIVAC в 1950 году.

1952: Автокод

Автокод был общим термином, используемым для семейства языков программирования.Autocode, впервые разработанный Аликом Гленни для компьютера Mark 1 в Манчестерском университете, был первым в истории скомпилированным языком, который был реализован, что означает, что он может быть переведен непосредственно в машинный код с помощью программы, называемой компилятором. Автокод использовался на первых вычислительных машинах Ferranti Pegasus и Sirius в дополнение к Mark 1.

1957: Фортран

FORmula TRANslation или FORTRAN был создан Джоном Бэкусом и считается самым старым языком программирования, используемым сегодня.Язык программирования был создан для научных, математических и статистических вычислений высокого уровня. FORTRAN до сих пор используется в некоторых из самых передовых суперкомпьютеров в мире.

Источник: Flickr

1958: АЛГОЛ (Алгоритмический язык)

Алгоритмический язык или АЛГОЛ был создан совместным комитетом американских и европейских компьютерных ученых. ALGOL послужил отправной точкой для разработки некоторых из наиболее важных языков программирования, включая Pascal, C, C ++ и Java.

1958: LISP (обработчик списков)

Процессор списков

или LISP был изобретен Джоном Маккарти в Массачусетском технологическом институте (MIT). Первоначально предназначенный для искусственного интеллекта, LISP является одним из старейших языков программирования, которые все еще используются сегодня, и его можно использовать вместо Ruby или Python. Такие компании, как Acceleration, Boeing и Genworks, по-прежнему используют LISP в своих технических стеках.

Источник: WikiMedia

1959: COBOL (Общий бизнес-ориентированный язык)

Common Business Oriented Language (COBOL) — это язык программирования, на котором основаны многие процессоры кредитных карт, банкоматы, телефонные и сотовые звонки, больничные сигналы и системы светофоров (и это лишь некоторые из них).Разработкой языка руководила доктор Грейс Мюррей Хоппер, и он был разработан таким образом, чтобы его можно было использовать на компьютерах всех марок и типов. COBOL до сих пор используется в первую очередь для банковских систем.

Источник: Pixabay

1964: BASIC (Универсальный символический код инструкции для начинающих)

Универсальный символьный код инструкций для начинающих

или BASIC был разработан группой студентов Дартмутского колледжа. Этот язык был написан для студентов, которые плохо разбирались в математике или компьютерах.Этот язык был разработан основателями Microsoft Биллом Гейтсом и Полом Алленом и стал первым товарным продуктом компании.

1970: ПАСКАЛЬ

Названный в честь французского математика Блеза Паскаля, Никлаус Вирт разработал язык программирования в его честь. Он был разработан как средство обучения компьютерному программированию, что означало, что его было легко освоить. В первые годы существования компании Apple предпочитала его из-за простоты использования и мощности.

Источник: Flickr

1972: Smalltalk

Разработанный в исследовательском центре Xerox Пало-Альто Аланом Кей, Адель Голдберг и Дэном Ингаллсом, Smalltalk позволял программистам изменять код на лету.Он представил множество аспектов языка программирования, которые являются видимыми сегодня языками, такими как Python, Java и Ruby. Такие компании, как Leafly, Logitech и CrowdStrike, заявляют, что используют Smalltalk в своих технических стеках.

1972: C

Разработано Деннисом Ричи из Bell Telephone Laboratories для использования с операционной системой Unix. Он был назван C, потому что был основан на более раннем языке под названием «B». Многие из ведущих в настоящее время языков являются производными от C, включая; C #, Java, JavaScript, Perl, PHP и Python.Он также использовался / до сих пор используется такими огромными компаниями, как Google, Facebook и Apple.

1972: SQL (SEQUEL в то время)

SQL был впервые разработан исследователями IBM Рэймондом Бойсом и Дональдом Чемберленом. SEQUEL (как его тогда называли) используется для просмотра и изменения информации, хранящейся в базах данных. В настоящее время язык является аббревиатурой — SQL, что означает язык структурированных запросов. Есть множество компаний, которые используют SQL, и некоторые из них включают Microsoft и Accenture.

1980/81: Ада

Ada был первоначально разработан группой под руководством Джин Ичбиа из CUU Honeywell Bull по контракту с Министерством обороны США. Названный в честь математика середины XIX века Ады Лавлейс, Ada представляет собой структурированный, статически типизированный, императивный, объектно-ориентированный язык программирования высокого уровня с широким спектром возможностей. Ада была расширена из других популярных в то время языков программирования, таких как Паскаль. Ada используется в системах управления воздушным движением в таких странах, как Австралия, Бельгия и Германия, а также во множестве других транспортных и космических проектов.

1983: С ++

Бьярн Страуструп модифицировал язык C в Bell Labs, C ++ — это расширение C с такими улучшениями, как классы, виртуальные функции и шаблоны. Он был включен в 10 лучших языков программирования с 1986 года и получил статус Зала славы в 2003 году. C ++ используется в MS Office, Adobe Photoshop, игровых движках и другом высокопроизводительном программном обеспечении.

1983: Objective-C

Разработанный Брэдом Коксом и Томом Лавом, Objective-C является основным языком программирования, используемым для написания программного обеспечения для macOS и iOS, операционных систем Apple.

Источник: Cleanpng

1987: Perl

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

Источник: Flickr

1990: Haskell

Haskell — это язык программирования общего назначения, названный в честь американского логика и математика Хаскелла Брукса Карри.Это чисто функциональный язык программирования, то есть в первую очередь математический. Он используется во многих отраслях, особенно в тех, которые имеют дело со сложными вычислениями, записями и обработкой чисел. Как и многие другие языки программирования той эпохи, не так уж часто можно увидеть, что Haskell используется для хорошо известных приложений. С учетом сказанного, язык программирования был использован для написания ряда игр, одна из которых — Nikki and the Robots.

Источник: Викимедиа

1991: Python

Названный в честь британской комедийной труппы «Монти Пайтон», Python был разработан Гвидо Ван Россумом.Это универсальный язык программирования высокого уровня, созданный для поддержки множества стилей программирования и приятный в использовании (ряд руководств, примеров и инструкций часто содержат ссылки на Monty Python). Python по сей день является одним из самых популярных языков программирования в мире, который используют такие компании, как Google, Yahoo и Spotify.

Источник: Flickr

1991: Visual Basic

Разработанный Microsoft, Visual Basic позволяет программистам использовать стиль перетаскивания для выбора и изменения предварительно выбранных фрагментов кода через графический интерфейс пользователя (GUI).В наши дни этот язык не используется слишком часто, однако Microsoft частично использовала Visual Basic для ряда своих приложений, таких как Word, Excel и Access.

Источник: Pixabay

1993: Рубин

Ruby, созданный Юкихиро Мацумото, представляет собой интерпретируемый язык программирования высокого уровня. Язык обучения, на который, в частности, повлияли Perl, Ada, Lisp и Smalltalk. В основном Ruby используется для разработки веб-приложений и Ruby on Rails.Twitter, Hulu и Groupon — известные примеры компаний, использующих Ruby.

Источник: Викимедиа

1995: Java

Java — это универсальный язык высокого уровня, созданный Джеймсом Гослингом для проекта интерактивного телевидения. Он обладает кросс-платформенной функциональностью и неизменно входит в число самых популярных языков программирования в мире. Java можно найти везде, от компьютеров до смартфонов и парковочных счетчиков.

Источник: Викимедиа

1995: PHP

Ранее известный как «Персональная домашняя страница», что теперь означает «Препроцессор гипертекста», PHP был разработан Расмусом Лердорфом.Его основное использование включает создание и поддержку динамических веб-страниц, а также разработку на стороне сервера. Некоторые из крупнейших компаний по всему миру используют PHP, включая Facebook, Wikipedia, Digg, WordPress и Joomla.

1995: JavaScript

JavaScript был создан Бренданом Эйхом, этот язык в основном используется для динамической веб-разработки, документов PDF, веб-браузеров и виджетов рабочего стола. Почти каждый крупный веб-сайт использует JavaScript. Gmail, Adobe Photoshop и Mozilla Firefox включают несколько хорошо известных примеров.

2000: С #

Разработанный в Microsoft в надежде объединить вычислительные возможности C ++ с простотой Visual Basic, C # основан на C ++ и имеет много общего с Java. Этот язык используется почти во всех продуктах Microsoft и используется в основном при разработке настольных приложений.

2003: Скала

Разработанный Мартином Одерски, Scala объединяет математическое функциональное программирование и организованное объектно-ориентированное программирование.Совместимость Scala с Java делает его полезным при разработке под Android. Linkedin, Twitter, Foursquare и Netflix — это лишь несколько примеров многих компаний, которые используют Scala в своих технических стеках.

2003: Отличный

Унаследованный от Java, Groovy был разработан Джеймсом Страчаном и Бобом МакВиртером. Язык повышает продуктивность, поскольку он лаконичен и прост в изучении. Некоторые известные компании, которые используют Groovy в своих технических стеках, — это Starbucks, Transferwise и Craftbase.

2009: Вперед

Go был разработан Google для решения проблем, возникающих из-за больших программных систем. Благодаря своей простой и современной структуре Go завоевал популярность среди крупнейших технологических компаний по всему миру, таких как Google, Uber, Twitch и Dropbox.

2014: Swift

Разработанный Apple в качестве замены C, C ++ и Objective-C, Swift был разработан с намерением быть проще, чем вышеупомянутые языки, и допускать меньше места для ошибок.Универсальность Swift означает, что его можно использовать для настольных, мобильных и облачных приложений. Ведущее языковое приложение Duolingo запустило новое приложение, написанное на Swift.

Какие старые языки программирования все еще используются?

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

FORTRAN

Первоначальная версия FORTRAN была предложена в IBM Джоном Бэкусом еще в 1953 году.Это был первый оптимизатор-компилятор, который широко использовался в научной работе, поскольку его оптимизированный код выгодно отличался от рукописного кода ассемблера. Этот язык до сих пор используется на некоторых из самых быстрых суперкомпьютеров в мире. С 1953 года была выпущена серия обновлений, последняя версия которых была выпущена в 2018 году.

КОБОЛ

COBOL был разработан еще в 1959 году и был одним из первых языков программирования высокого уровня. Несмотря на то, что COBOL был изобретен так давно, он по-прежнему широко распространен.В одних только США 43% банковских систем построены на COBOL, что составляет 95% операций с банкоматами и 80% транзакций, совершаемых лично.

Источник: Unsplash

Ранние языки программирования Microsoft и Apple

Microsoft и Apple — две из самых фундаментальных компаний в истории языков программирования. BASIC (впервые выпущенный в 1964 году) был модифицирован основателями Microsoft Биллом Гейтсом и Полом Алленом в 1975 году. Их модифицированная версия стала Altair BASIC, который был первым продаваемым и распространяемым продуктом Microsoft, который привел к созданию компании.

Паскаль был предпочтительным языком программирования на заре Apple. Паскаль, изобретенный в начале 1970-х годов, понравился разработчикам Apple из-за его мощности и простоты использования. Однако, когда Apple приобрела библиотеку кода NeXTSTEP в 1996 году, Objective-C (который был лицензирован под NeXTSTEP) стал популярным языком, выбранным техническим гигантом.

Какой язык программирования сегодня самый популярный?

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

Но какой язык программирования самый популярный?

Отчет DevSkiller 2020 IT Skills Report дает ценную информацию именно по этому вопросу. Отчет содержит данные из более чем 213 000 тестов кодирования, отправленных в 143 страны компаниями, желающими нанять специализированных ИТ-специалистов.

Как вы можете видеть выше, JavaScript был самым популярным языком, протестированным на DevSkiller на основе разосланных тестовых приглашений. Этот вывод подтверждается опросом разработчиков Stack Overflow 2020 года, в котором JavaScript указан как самый популярный язык программирования восьмой год подряд. SQL, Java, HTML / CSS и .NET / C # завершили пятерку лучших по нашим результатам.

Заключение

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

Кредит изображения: Pixabay

10 самых старых языков программирования, которые все еще используются

Хотя они могут быть невидимы для обычного человека, языки программирования буквально помогают современному миру работать, предоставляя инструкции для компьютеров и всех наших электронных устройств.Первым языком программирования высокого уровня был Plankalkül, созданный Конрадом Цузе между 1942 и 1945 годами. С тех пор было разработано бесчисленное количество языков программирования, которых больше нет. Языкам программирования в этом списке несколько десятилетий, и они до сих пор остаются одними из самых популярных языков программирования.

10. MATLAB

Год выпуска: 1984
Разработано: Cleve Moler
[ Разработчик: MathWorks
Основные реализации: Используется в инженерии, науке и экономике 9 Wikimedia Commons Как следует из названия, MATLAB, разработанный MathWorks в начале 1980-х годов, предназначен в первую очередь для численных вычислений и используется миллионами людей с опытом работы в области инженерии, науки и экономики.MATLAB, который начинался как простой интерактивный калькулятор матриц, позволяет манипулировать матрицами, строить графики функций и данных, реализовывать алгоритмы, создавать пользовательские интерфейсы и взаимодействовать с программами, написанными на других языках.

Клив Молер разработал MATLAB, потому что он хотел предоставить своим ученикам доступ к LINPACK и EISPACK (обе библиотеки математического программного обеспечения) без необходимости изучать Фортран. MATLAB имел успех и в течение последних нескольких десятилетий непрерывно использовался во всем мире.

Знаете ли вы?

В 2020 году китайские государственные СМИ сообщили, что MATLAB прекратил предоставлять услуги двум китайским университетам из-за текущих санкций США.


9. Ada

Год выпуска: начало 1980-х
Разработано: Jean Ichbiah
[ Разработчик: Министерство обороны США
Основные реализации: AdaCills Оптимизирующий компилятор Ada 95, PTC, Inc.PTC ApexAda и PTC ObjectAda, DDC-I Score

Источник фото: Wikimedia Commons

Ada была разработана в начале 1980-х Жаном Ичбиа и его командой из CII-Honeywell-Bull во Франции по контракту с Министерством обороны США. Структурированный, статически типизированный, императивный и объектно-ориентированный язык программирования высокого уровня частично основан на Паскале и других более ранних языках. На момент разработки, с 1977 по 1983 год, Министерство обороны использовало сотни языков программирования, и Ада должна была заменить их все.Сегодня Ада все еще используется для разработки очень больших и важных программных систем.

Знаете ли вы?

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


8. SQL

Год выпуска: 1974
Разработано: Дональд Д. Чемберлин и Раймонд Ф. Бойс
[ Разработчик: IBM
Основные реализации: Amazon Aurora, База данных Библиотека управления, Google Fusion Tables, IBM DB2, IBM Lotus Approach, Microsoft Access, OpenLink Virtuoso, Oracle и многие другие Источник фотографий

: Wikimedia Commons

SQL (язык структурированных запросов), был разработан в начале 1970-х годов в IBM Дональдом Д. .Чемберлен и Раймонд Ф. Бойс. SQL был одним из первых коммерческих языков программирования, использовавших реляционную модель Эдгара Ф. Кодда для управления базами данных. Язык программирования был создан для управления и извлечения данных, хранящихся в системе управления базами данных IBM, System R. С тех пор Американский национальный институт стандартов (ANSI) и Международная организация по стандартизации (ISO) считают язык SQL стандартным языком в реляционной базе данных. коммуникация.

Знаете ли вы?

Одной из самых популярных систем управления базами данных SQL является MySQL, которая была разработана Oracle в конце 1970-х, после выпуска IBM SQL.


7. Smalltalk

Год выпуска: 1972
Разработано: Алан Кей, Дэн Ингаллс и Адель Голдберг
[ Разработчик: Алан Кей, Дэн Ингаллс, Адель Голдхлер Дайана Мерри, Скотт Уоллес, Питер Дойч и Xerox PARC
Основные реализации: Amber, Dolphin Smalltalk, GemStone / S, GNU Smalltalk, Pharo, Smalltalk / X, Squeak, VA Smalltalk, VisualWorks

Источник фото: Wikimedia Commons

Smalltalk — это ранний объектно-ориентированный язык программирования, разработанный группой под руководством Алана Кея из Xerox PARC.Частично он был создан для использования в образовательных целях, особенно для конструкционистского обучения (в котором учащиеся конструируют ментальные модели для понимания окружающего мира), в Learning Research Group (LRG) Xerox PARC. Smalltalk не выпускался коммерчески до 1980 года как Smalltalk-80. До этого Smalltalk работал только на компьютерах Xerox Alto. Несмотря на то, что существуют более продвинутые объектно-ориентированные языки программирования, Smalltalk по-прежнему остается одним из самых любимых языков программирования всех времен.

Знаете ли вы?

Почти все объектно-ориентированные языки, появившиеся после — Flavors, Java, Ruby, Python, CLOS, Objective-C и многие другие — находились под влиянием Smalltalk.


6. C

Год выпуска: 1972
Разработано: Деннис Ричи
[ Разработчик: Деннис Ричи и Bell Labs
Основные реализации: KCC, Clang Intel C, C ++ Builder, Microsoft Visual C ++ и Watcom C

Источник фотографий: Wikimedia Commons

C — еще один важный язык программирования, который широко использовался и оказал влияние на несколько более поздних языков программирования.Преемник языка программирования B , C был первоначально разработан в Bell Labs Деннисом Ритчи между 1972 и 1973 годами для новой на то время операционной системы Unix. В течение следующих нескольких лет C использовался во многих проектах в рамках Bell System, а также другими ориентированными на исследования промышленными, академическими и правительственными организациями. В течение 1980-х годов популярность языка C возросла, и он стал одним из наиболее широко используемых языков программирования.

Знаете ли вы?

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


5. Паскаль

Год выпуска: 1970
Разработано: Никлаус Вирт
[ Разработчик: Никлаус Вирт
Основные реализации: CDLCro 6000 Delphi, Embari -P, PDP-11, PDP-10, IBM System / 370, VSI Pascal, Free Pascal, GNU Pascal

Источник фото: Wikimedia Commons

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

Знаете ли вы?

Создатель Никлаус Вирт назвал язык программирования Паскаль в честь известного французского математика, философа и физика Блеза Паскаля.


4. BASIC

Год выпуска: 1964
Разработано: Джон Г. Кемени и Томас Э. Курц
[ Разработчик: Джон Г. Кемени и Томас Э. Курц
Основные реализации: Dartmouth BASIC, Tiny BASIC, Applesoft BASIC, Atari BASIC, Sinclair BASIC, Commodore BASIC, BBC BASIC, TI-BASIC, Casio BASIC, Microsoft BASIC, QB64, Liberty BASIC, PowerBASIC и QBASIC Источник фото:

Commons Commons. Хотя все языки программирования в этом списке изменили мир компьютеров, возможно, ни один из них не был более революционным, чем BASIC (Универсальный код символьных инструкций для начинающих).Впервые выпущенный в 1964 году в Дартмутском колледже Джоном Г. Кемени и Томасом Э. Куртцем, BASIC позволил обычным людям, особенно студентам в областях, отличных от естественных наук и математики, программировать и использовать компьютеры.

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

Знаете ли вы?

Windows Me, выпущенная в 2000 году, была последней операционной системой Microsoft, поставляемой с QBASIC.


3. COBOL

Год выпуска: 1959
Разработано: Говард Бромберг, Норман Дисконт, Вернон Ривз, Жан Э. Саммет, Уильям Селден и Гертруда Тирни
[ Разработчик COD: COD , ANSI и ISO
Основные реализации: GnuCOBOL, IBM COBOL и Micro Focus Visual COBOL

Источник фото: Wikimedia Commons

COBOL, что означает Common Business Oriented Language, был разработан в 1959 году Конференцией по языкам систем данных ( КОДАСИЛ).В то время пользователи и производители компьютеров были обеспокоены ростом стоимости программирования. Было высказано предположение, что если использовать общий бизнес-ориентированный язык, преобразование станет дешевле и быстрее. В результате этих проблем и встречи с Министерством обороны родился COBOL, который с тех пор используется в основном в деловых, финансовых и административных системах для компаний и правительств.

Знаете ли вы?

COBOL был частично основан на языке программирования FLOW-MATIC, разработанном Грейс Хоппер


2.Lisp

Год выпуска: 1958
Разработано: John McCarthy
[ Разработчик: Стив Рассел, Тимоти П. Харт и Майк Левин
Основные реализации: в зависимости от Lisp. используется (некоторые основные диалекты включают: Racket, Common Lisp, Scheme и Clojure)

источник фото: Wikimedia Commons

Выпущенный всего через год после Fortran, Lisp является вторым старейшим языком программирования высокого уровня, все еще широко используемым сегодня.Lisp был разработан Джоном Маккарти, легендарным компьютерным ученым, который считается одним из основателей дисциплины искусственного интеллекта (Маккарти был соавтором документа, в котором был введен термин «искусственный интеллект»).

Маккарти начал разработку идеи для Лисп летом 1956 года во время работы над Дартмутским летним исследовательским проектом по искусственному интеллекту. Lisp, который происходит от процессора LIS t P , был готов к коммерческому выпуску в 1958 году.За прошедшие годы язык программирования много раз трансформировался, и теперь существует большое количество диалектов Лиспа (разновидность исходного языка программирования).

Знаете ли вы?

Самыми известными диалектами Lisp общего назначения являются Racket, Common Lisp, Scheme и Clojure.


1. Fortran

Год выпуска: 1957
Разработано: Джон Бэкус
[ Разработчик: Джон Бэкус и IBM
Основные реализации: Absortran, Cray, GF95 IBM XL Fortran, Intel, Hitachi, Numerical Algorithms Group, Open Watcom, PathScale, PGI, Silverfrost, Oracle Solaris Studio, Visual Fortran

Источник фото: Wikimedia Commons

Fortran , ранее называвшийся FORTRAN, был впервые коммерчески выпущен в 1957 году. , что делает его старейшим языком программирования, который до сих пор используется. Язык программирования изначально был разработан группой программистов IBM во главе с Джоном Бэкусом. В конце 1953 года Бэкус представил своему начальству в IBM предложение разработать более практичную альтернативу языку ассемблера для программирования их мэйнфреймов IBM 704. Год спустя Fortran был готов к использованию и через три года был выпущен для широкой публики. Фортран быстро изменил ландшафт компьютерного программирования, и этот язык непрерывно используется в течение последних шести десятилетий.

Знаете ли вы?

История Год Событие 1843 Ада Лавлейс считается первым человеком, описавшим или написавшим компьютерную программу.В 1843 году она описала алгоритм вычисления чисел Бернулли с помощью аналитической машины. 1889 Табулирующая машина Холлерита была изобретена Германом Холлеритом в 1889 году, позволяя программно подсчитывать и табулировать данные. 1956 Один из первых языков программирования, FORTRAN, был представлен общественности 15 октября 1956 года. Он был разработан Джоном Бэкусом и другими в IBM. 1958 Второй по возрасту язык программирования, LISP был разработан Джоном Маккарти и впервые был использован в 1958 году. 1959 COBOL начали разрабатывать в 1959 году Грейс Хоппер и Боб Бемер. 1964 Оригинальный язык программирования BASIC был разработан Джоном Кемени, Мэри Келлер и Томасом Курцем и был представлен публике 1 мая 1964 года. 1965 Simula считается первым в истории объектно-ориентированным языком программирования, разработанным около 1965 года Оле-Йоханом Далем и Кристен Найгаард. 1966 Мартин Ричардс разработал язык программирования BCPL в 1966 году, который стал популярным благодаря своей портативности. 1966 Язык программирования MUMPS был разработан Нилом Паппалардо в Массачусетской больнице общего профиля в 1966 году.
1967 Логотип, известный своими графическими возможностями, был создан Сеймуром Папертом в 1967 году.
1971 Pascal был разработан в 1971 году Никлаусом Виртом. 1972 Деннис Ричи и Брайан Керниган разработали язык программирования C в Bell Labs в 1972 году. 1972 Язык программирования Prolog был разработан Аленом Колмерауэром и его коллегами в 1972 году в Марсельском университете. 1972 Smalltalk был вторым в истории объектно-ориентированным языком программирования и первой настоящей IDE, разработанным Аланом Кей и другими в Xerox PARC в 1972 году.
1974 SQL — это язык программирования баз данных, который был разработан Эдгаром Коддом в 1974 году и до сих пор играет важную роль в мире языков программирования. 1975 Вариант LISP, язык программирования Scheme, был создан в 1975 году Гаем Стилом и Джерри Сассманом в лаборатории искусственного интеллекта Массачусетского технологического института. 1975 Язык программирования Altair BASIC был разработан Биллом Гейтсом, Полом Алленом и Монте Давидофф и стал доступен для использования 2 января 1975 года. Он использовался для создания программ для компьютеров Altair. 1979 Разработка языка программирования C ++ была начата в 1979 году Бьярном Страуструпом.Первоначально названный «C с классами», C ++ является одним из наиболее широко используемых языков программирования. 1979 Oracle выпустила первую коммерческую версию SQL в 1979 году.
1979 Министерство обороны разработало язык программирования Ada, первоначально названный DoD-1, и назвал его в честь Ады Лавлейс в мае 1979 года.
1984 FoxPro — это язык программирования для разработки приложений баз данных, выпущенный Fox Software в 1984 году. 1984 Клив Молер начал разработку языка программирования MATLAB в конце 1970-х годов, и он был выпущен для общественности вместе с программным пакетом MATLAB в 1984 году.
1987 Язык программирования Perl с открытым исходным кодом, разработанный Ларри Уоллом, был представлен в 1987 году. Он обычно используется для создания сценариев CGI и программирования веб-приложений. 1988 Разработанный в середине 1980-х годов Брэдом Коксом и Томом Лавом, язык программирования Objective-C был официально лицензирован NeXT в 1988 году. 1990 Тим Бернерс-Ли разработал язык разметки HTML в 1990 году. HTML — один из самых популярных и широко используемых языков программирования в мире. 1990 Haskell, язык программирования общего назначения, был представлен в 1990 году. 1990 Инженеры Apple разработали язык программирования Dylan в начале 1990-х годов. Дилан был разработан, чтобы напоминать синтаксис языка программирования АЛГОЛ. 1991 Разработка Python была начата в 1989 году Гвидо ван Россумом и опубликована в 1991 году.
1991 Visual Basic был разработан Аланом Купером и выпущен в мае 1991 года.
1993 Lua был создан в 1993 году инженерами Папского католического университета Рио-де-Жанейро, Бразилия. 1993 R — это язык программирования, созданный Робертом Джентльманом и Россом Ихакой и представленный в 1993 году. 1994 Концепция CSS была начата Хоконом Виумом Ли в 1994 году. W3C представила спецификацию CSS в 1996 году.
1995 Java была разработана Джеймсом Гослингом и другими разработчиками из Sun Microsystems и впервые была представлена ​​публике в 1995 году. 1995 Объектно-ориентированный язык программирования Ruby, разработанный Юкихиро Мацумото, был впервые выпущен в 1995 году.
1995 Экспериментальный мультипарадигмальный язык программирования Карри был представлен Майклом Ханусом, Гербертом Кученом и Хуаном Хосе Морено-Наварро в 1995 году. 1995 Racket — это язык программирования общего назначения, разработанный Маттиасом Фелляйзеном в 1995 году.
1995 PHP, интерпретируемый на стороне сервера язык сценариев, был разработан Расмусом Лердорфом, начиная с 1994 года, и выпущен 8 июня 1995 года.
1995 Первоначально называвшийся LiveScript при выпуске в ноябре 1995 года, JavaScript был разработан Бренданом Эйхом и переименован в декабре 1995 года. 1996 Представленный в 1996 году, OCaml представляет собой объектно-ориентированную версию языка программирования Caml. 1998 XML — это язык разметки, спецификация которого разрабатывается консорциумом W3C и рекомендована 10 февраля 1998 г. 1999 Разработка языка программирования D началась в декабре 1999 года. D — это язык более высокого уровня по сравнению с C ++. 2000 Основанный на C ++ и Java, язык программирования C # был разработан Microsoft и представлен в июне 2000 года. C # стал стандартом ISO в 2003 году. 2003 Объектно-ориентированный язык программирования Scala был представлен в 2003 году. 2005 Дон Сайм разработал язык программирования F #, и Microsoft впервые представила его в 2005 году.
2007 Язык программирования Go был разработан в Google в 2007 году. Он был завершен и представлен публике в 2009 году.
2007 Рич Хики разработал язык программирования Clojure и выпустил первую версию в 2007 году. 2008 Представленный в 2008 году, Nim — это язык программирования, используемый для разработки программного обеспечения, требующего строгих ограничений на использование системной памяти. 2008 Объектно-ориентированный язык программирования Reia был представлен в 2008 году. 2010 Мультипарадигмальный язык программирования CoffeeScript, способный компилироваться в JavaScript, был официально выпущен в 2010 году.
2011 Google разработал веб-язык программирования Dart с открытым исходным кодом и представил его широкой публике в октябре 2011 года. 2012 Julia была разработана Джеффом Безансоном, Аланом Эдельманом, Стефаном Карпински и Виралом Б. Шахом и выпущена в 2012 году. Это язык программирования высокого уровня, используемый для научных вычислений. 2014 Babel — это язык программирования общего назначения, разработанный в 2014 году и используемый для создания программ для экономии заряда батареи и системных ресурсов на устройствах. 2014 Созданный Apple и выпущенный 2 июня 2014 года язык программирования Swift помогает создавать программы и приложения для iOS, macOS, Apple Watch и AppleTV. 2015 Грейдон Хоар начал разработку языка программирования Rust примерно в 2010 году. После участия сотен людей он был официально выпущен в качестве альфа-версии 1.0.0 по результатам исследования Mozilla 9 января 2015 года.

Эволюция языков программирования

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

В компьютерном мире у нас более 500 языков программирования со своим собственным синтаксисом и функциями. И если вы наберете, кто является отцом компьютера, то поисковая система покажет вам результат, как Чарльза Бэббиджа, но отец компьютера не написал первый код.Это была Ада Лавлейс, которая написала первый в мире язык компьютерного программирования, и год был 1883.

1883: Путешествие начинается отсюда … !!

  • Вначале Чарльз Бэббидж создал устройство, но не понимал, как давать инструкции машине, а затем Ада Лавлейс написала инструкции для аналитической машины.
  • Устройство было сделано Чарльзом Бэббиджем, а код был написан Адой Лавлейс для вычисления числа Бернулли.
  • Впервые в истории оценивались возможности компьютерных устройств.

1949: язык ассемблера

  • Это тип языка низкого уровня.
  • Он в основном состоит из инструкций (своего рода символов), которые могут понять только машины.
  • В настоящее время ассемблер также используется в программах реального времени, таких как имитационные системы навигации полета и медицинское оборудование, например, системы Fly-by-wire (FBW).
  • Он также используется для создания компьютерных вирусов.

1952: Автокод

  • Разработано Аликом Гленни.
  • Первый скомпилированный язык компьютерного программирования.
  • COBOL и FORTRAN — это языки, называемые Autocode.

1957: FORTRAN

  • Разработчики — Джон Бэкус и IBM.
  • Он был разработан для числовых вычислений и научных вычислений.
  • Программное обеспечение для зондов НАСА «Вояджер-1» (космический зонд) и «Вояджер-2» (космический зонд) изначально было написано на FORTRAN 5.

1958: АЛГОЛ

  • АЛГОЛ означает АЛГО ритмический язык L .
  • Начальный этап самых популярных языков программирования C, C ++ и JAVA.
  • Это был также первый язык, реализующий вложенную функцию и имеющий более простой синтаксис, чем FORTRAN.
  • Первый язык программирования, имеющий блок кода, такой как «начало», который указывает, что ваша программа запущена, а «конец» означает, что вы завершили свой код.

1959: COBOL

  • Это означает CO mmon B usiness- O riented L anguage.
  • В 1997 году 80% мирового бизнеса работало на Cobol.
  • Служба внутренних доходов США пробилась к МВФ на основе COBOL (индивидуальный мастер-файл), чтобы выплатить десятки миллионов платежей, предусмотренных в рамках помощи, помощи и экономической безопасности в связи с коронавирусом.

1964: BASIC

  • Это означает для начинающих Универсальный символьный код инструкции.
  • В 1991 году Microsoft выпустила Visual Basic, обновленную версию Basic
  • Первая микрокомпьютерная версия Basic была написана в соавторстве Биллом Гейтсом, Полом Алленом и Монте Давидофф для их недавно созданной компании Microsoft.

1972: C

  • Это универсальный процедурный язык программирования и самый популярный язык программирования до сих пор.
  • Весь код, который ранее был написан на языке ассемблера, заменяется языком C, таким как операционная система, ядро ​​и многие другие приложения.
  • Его можно использовать при внедрении операционной системы, встроенной системы, а также на веб-сайте с помощью Common Gateway Interface (CGI).
  • C является родоначальником почти всех языков программирования более высокого уровня, таких как C #, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Python и оболочки C Unix.

Некоторые другие языки программирования, популярные среди программистов, перечислены ниже.

ГОД ВЫПУСКА ЯЗЫКИ ПРОГРАММИРОВАНИЯ ФАКТЫ
1972 SQL SQL был разработан в IBM Дональдом Д.Чемберлен и Раймонд Ф. Бойс. Предыдущее название было SEQUEL (Structured English Query Language).
1978 MATLAB Это означает MATLABoratory. Он используется для обработки матрицы, реализации алгоритма и создания пользовательского интерфейса.
1983 Objective-C, C ++

C ++ — самый быстрый язык программирования высокого уровня.

Ранее Apple Inc использовала Objective-C для создания приложений.

1990 Haskell Это чисто функциональный язык программирования.
1991 Python Язык очень простой для понимания. Известный язык среди специалистов по обработке данных и аналитиков.
1995 JAVA, PHP, JavaScript

JAVA повсюду. JAVA — это независимый от платформы язык.

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

JavaScript позволяет создавать интерактивные веб-страницы. JS — самый популярный язык программирования. JS известен тем, что создает веб-приложения. Это делает нашу страницу интерактивной.

2000 C # C # (C-sharp) в основном используется для создания игр. Движок Unity использует C # для создания потрясающих игр для всех платформ.
2009 GO Язык GO разработан в Google Робертом Гриземером, Робом Пайком и Кеном Томпсоном.
2011 Kotlin Kotlin разработан JetBrains.Он используется для создания приложения для Android.
2014 Swift Язык Swift разработан Apple Inc. Это язык программирования общего назначения.

Топ 5 самых простых и 5 самых сложных языков программирования для изучения

Какой язык программирования самый простой для изучения? А как насчет самого сложного языка программирования?

Спросить программиста о самом легком для изучения языке — все равно что спросить кого-нибудь об их любимом мороженом.У всех есть предпочтения, и нет правильного ответа. Как однажды предположил разработчик и педагог Марек Залуски: «Языки программирования создаются программистами для программистов». Почти как инсайдерский секрет, который знают лишь немногие избранные. Это может напугать новичков в области разработки программного обеспечения.

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

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

1. HTML

Язык гипертекстовой разметки (HTML) — это язык, который используется для кодирования большинства веб-страниц. Он использует теги и элементы, чтобы определить, как могут отображаться текст, изображения и интерактивные формы. HTML часто поддерживается каскадными таблицами стилей (CSS) для определения сложных стилей; и JavaScript для программ-сценариев.Простота использования делает его идеальным языком для начинающих программистов.

Легко выучить, потому что:

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

2. JavaScript

Вместе с HTML и CSS, JavaScript создает Интернет. Фронтенд-разработка им доверяет. Используя библиотеки, такие как React и jQuery, и фреймворки, такие как Angular, вы можете решать самые сложные проблемы в Интернете.Благодаря Node.js у вас также есть код на стороне сервера.

Легко выучить, потому что:

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

3. С

C — это язык общего назначения, который изучают большинство программистов, прежде чем переходить к более сложным языкам.От Unix и Windows до Tic Tac Toe и Photoshop, некоторые из наиболее часто используемых сегодня приложений были построены на C.

.

Легко выучить, потому что:

  • Простой синтаксис всего с 32 ключевыми словами
  • Структуры данных легко понять

4. Python

Преемник языка ABC, Python — это язык программирования общего назначения высокого уровня. Python является фаворитом среди веб-разработчиков, специалистов по обработке данных, специалистов по машинному обучению и искусственному интеллекту и разработчиков встроенных приложений.

Легко выучить, потому что:

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

5. Java

Java — это объектно-ориентированный язык программирования общего назначения на основе классов.Он разработан для работы в разных средах — напиши один раз, запусти где угодно (WORA). Это один из самых популярных языков среди разработчиков серверной части и приложений безопасности.

Легко выучить, потому что:

  • Интуитивно понятный синтаксис, краткий и удобный для новичков
  • Это структурированный язык, оставляющий мало места для отклонений
  • Если у вас уже есть опыт объектно-ориентированного программирования, это еще проще

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

1.С ++

C ++, расширение C, который, как мы сказали, был легким для изучения языком, является языком программирования общего назначения. Браузер Google Chromium, несколько приложений Microsoft и даже финансовое моделирование в Morgan Stanley, как говорят, выполняются с помощью C ++.

Трудно выучить, потому что:

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

2.Пролог

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

Трудно выучить, потому что:

  • Это нетрадиционный язык, его структуры данных не похожи на другие языки программирования
  • Требуется неоправданно грамотный компилятор
  • Это заставляет программиста заранее хорошенько подумать о своей логике.
  • Интернет-ресурсы и код Пролога невозможно без раздумий применить к вашим потребностям

3.LISP

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

Трудно выучить, потому что:

  • Это фрагментированный язык с предметно-ориентированными решениями
  • Синтаксис в LISP широко использует круглые скобки, к которым может быть трудно привыкнуть к

4. Haskell

Haskell — это чисто функциональный язык с полиморфно статической типизацией, основанный на лямбда-исчислении.Названный в честь математика Хаскелла Б. Карри, он в основном используется в исследованиях, промышленных приложениях и обучении.

Трудно выучить, потому что:

  • Он следует 100% функциональной парадигме, в отличие от большинства современных языков, которые принимают императивные команды
  • Сложно разобраться в нюансах компиляции и исправления ошибок в Haskell
  • Это связано с интенсивным использованием жаргона, что может отпугнуть новичков.

5. Мальболге

Названный в честь восьмого круга Ада в Данте Inferno , Мальболге является примером «эзоланга» (эзотерического языка программирования).На написание первой программы Malbolge ушло два года. Другими языками в этой категории являются ИНТЕРКАЛЬНЫЙ и Корова, которые вы можете принять только как вызов.

Трудно выучить, потому что:

  • Используется непонятная нотация
  • Не многие программисты тратят время на его изучение, следовательно, меньше учебных ресурсов
  • Это самомодифицирующийся язык, который приводит к нестабильному поведению

Какой язык программирования лучше всего изучать?

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

Если вы хотите выучить язык программирования, начните с его полезности. Если вы хотите построить карьеру в области разработки программного обеспечения, веб-разработки, разработки мобильных приложений или даже игр, HTML — хорошее место для начала. Для больших данных и науки о данных лучше всего подойдет Python. К счастью, наиболее популярные языки — C, Java и Python — довольно легко выучить.

Готовы переключиться на разработку программного обеспечения?

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

Ознакомьтесь с курсом карьеры Springboard в области разработки программного обеспечения, чтобы узнать, соответствуете ли вы требованиям.

Не совсем готовы погрузиться в учебный курс по разработке программного обеспечения?

Springboard также предлагает подготовительный курс по разработке программного обеспечения, на котором вы можете изучить базовые навыки веб-разработки (HTML, CSS и JavaScript), необходимые для прохождения опроса технических навыков для программы «Карьера в программной инженерии».

Снимок истории языка программирования — Приращение: Языки программирования

  • АЛГОЛ (Алгоритмический язык) 60: ранний стандарт языка высокого уровня; группирует операторы во вложенные блоки; имеет лексическую область для переменных

  • 1960– COBOL (бизнес-ориентированный язык COmmon): язык высокого уровня, разработанный для переносимости и удобочитаемости

  • FORMAC (FORmula Compiler): ранний язык компьютерной алгебры, расширяющий FORTRAN

  • APL (язык программирования): язык обработки массивов со специальной графической нотацией; краткие цепочки операторов действуют на массивы

  • SNOBOL (StriNg Oriented и symBOlic Language): построен на основе шаблонов сопоставления строк; в конечном итоге заменен регулярными выражениями.

  • BASIC (Универсальный символьный код инструкций для начинающих): язык общего назначения, разработанный для простоты использования нетехническими пользователями; станет популярным на домашних компьютерах

  • PL / I (Programming Language One): унифицированный язык в стиле АЛГОЛ для всех пользователей IBM; часть проекта IBM System / 360; вводит классы хранения переменных и обработку исключений

  • Simula 67: — первый объектно-ориентированный язык программирования, предназначенный для моделирования; расширение АЛГОЛА 60; включает классы, подклассы, наследование, сопрограммы

  • Logo: образовательный язык, использующий «черепашью графику» для обучения программированию и математическим понятиям; диалект Лиспа

  • АЛГОЛ 68: новый стандарт включает синтаксис, ориентированный на выражения, систему типов и поддержку перегрузки операторов; никогда полностью не реализован или не принят

  • GRAIL (GRAphical Input Language): ранняя система визуального программирования; программисты рисуют блок-схемы и пишут код от руки на планшете RAND

  • Pascal: образовательный язык на основе ALGOL 60; делает упор на структурное программирование, а не на произвольный поток управления GOTO

  • 1972– Язык системного программирования C: со статическими типами и хорошими средствами для манипулирования необработанной памятью; язык реализации Unix, а также программное обеспечение многих систем до настоящего времени

  • Пролог: один из первых языков логического программирования; программы, состоящие из отношений, а не операторов или выражений

  • Smalltalk: ранний объектно-ориентированный язык программирования; построен на передаче сообщений и позднем связывании; все сущности на языке являются объектами, без пассивных данных

  • ML (метаязык): вводит вывод типа Хиндли-Милнера, модули и «аппликативный» (функциональный) стиль со статическими типами; предок Haskell, F #, OCaml

  • Схема: Потомок Lisp; добавляет лексическую область видимости ALGOL; также добавляет устранение хвостовых вызовов

  • Mesa: язык системного программирования от Xerox Palo Alto Research Center; типизированная модульная система; сначала поддерживал конструкцию синхронизации монитора; имел мощную обработку исключений

  • Ada: процедурный язык программирования, заказанный U.S. Министерство обороны за критически важные для безопасности работы; сложный, со строгой типизацией и полной поддержкой параллелизма

  • % PDF-1.7
    %
    1 0 объект
    >>> / Метаданные 2 0 R / Страницы 3 0 R / Тип / Каталог >>
    эндобдж
    2 0 obj
    > поток
    2018-08-29T11: 51: 30 + 01: 002018-08-29T11: 51: 30 + 01: 002018-08-29T11: 51: 30 + 01: 00Приложение Adobe InDesign CS6 (Macintosh) / pdfuuid: 4c3bb6e2-204b- Библиотека Adobe PDF 10.0,1

    конечный поток
    эндобдж
    3 0 obj
    >
    эндобдж
    5 0 obj
    > / ExtGState> / Font> / ProcSet [/ PDF / Text] / XObject >>> / Rotate 0 / Tabs / W / Thumb 22 0 R / TrimBox [0.0 0,0 595,276 841,89] / Тип / Страница >>
    эндобдж
    6 0 obj
    > / ExtGState> / Font> / ProcSet [/ PDF / Text / ImageC / ImageI] / XObject >>> / Rotate 0 / Tabs / W / Thumb 29 0 R / TrimBox [0.0 0.0 595.276 841.89] / Type / Page >>
    эндобдж
    7 0 объект
    > / ExtGState> / Font> / ProcSet [/ PDF / Text] / Properties> / XObject >>> / Rotate 0 / Tabs / W / Thumb 34 0 R / TrimBox [0.0 0.0 595.276 841.89] / Type / Page >>
    эндобдж
    8 0 объект
    > / ExtGState> / Font> / ProcSet [/ PDF / Text] / XObject >>> / Rotate 0 / Tabs / W / Thumb 39 0 R / TrimBox [0.0 0,0 595,276 841,89] / Тип / Страница >>
    эндобдж
    9 0 объект
    > / ExtGState> / Font> / ProcSet [/ PDF / Text / ImageC] / Properties> / Shading> / XObject >>> / Rotate 0 / Tabs / W / Thumb 54 0 R / TrimBox [0.0 0.0 595.276 841.89] / Type / Страница >>
    эндобдж
    10 0 obj
    > / ExtGState> / Font> / ProcSet [/ PDF / Text] / XObject >>> / Rotate 0 / Tabs / W / Thumb 59 0 R / TrimBox [0.0 0.0 595.276 841.89] / Type / Page >>
    эндобдж
    11 0 объект
    > / ExtGState> / Font> / ProcSet [/ PDF / Text] / XObject >>> / Rotate 0 / Tabs / W / Thumb 62 0 R / TrimBox [0.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *