Высокоуровневый язык программирования
Из Википедии — свободной энциклопедии
Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания.
Высокоуровневые языки программирования были разработаны для платформенной независимости сути алгоритмов. Зависимость от платформы перекладывается на инструментальные программы — трансляторы, компилирующие текст, написанный на языке высокого уровня, в элементарные машинные команды (инструкции). Поэтому, для каждой платформы разрабатывается платформенно-уникальный транслятор для каждого высокоуровневого языка, например, переводящий текст, написанный на Delphi в элементарные команды микропроцессоров семейства x86.
Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами программируемыми устройствами и оборудованием, и, в идеале, не требует модификации исходного кода (текста, написанного на высокоуровневом языке) для любой платформы.
Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования.
Примеры: C++, C#, Delphi, Fortran, Java, JavaScript, Лисп, Паскаль, PHP, также Ruby, Python, Perl, которые иногда называют сверхвысокоуровневыми. Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинстве из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.
Первым языком программирования высокого уровня считается компьютерный язык Plankalkül, разработанный немецким инженером Конрадом Цузе ещё в период 1942—1946 годах. Однако транслятора для него не существовало до 2000 года. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 году. [ источник не указан 690 дней ] Транслятор ПП-2 (1955 год, 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка (1957).
На 2018 год по версии компании TIOBE Software лидирует язык программирования Java.
Уровни языков программирования: краткий обзор
Рассказываю о том, почему языки программирования делятся на уровни, что эти уровни обозначают и с какого уровня стоит начинать обучение.
Язык программирования – это набор инструкций, с помощью которых можно передавать команды процессору и тем самым управлять компьютером. Существует множество языков со своим специфичным синтаксисом и все они позволяют вносить изменения в данные, хранящиеся на компьютере, менять контент, отображающийся на экране, запускать приложения, производить вычисления и т.п.
Разные языки программирования на разных уровнях взаимодействуют с компьютером, потому что машина не понимает английский (или любой другой человеческий язык), и для взаимодействия с ним используется специальная система из нулей и единиц. Но развитие технологий привело к созданию новых языков и деление их на уровни.
Низкоуровневые языки
Как я уже отметил выше, компьютер не умеет разговаривать по-английски. Общение с машиной происходит при помощи нулей и единиц. Мы буквально подаем ток на определенные транзисторы, чтобы превращать импульсы тока в слова, изображения на экране компьютера, сложные программы и видеоигры. Это наиболее рациональный с точки зрения производительности вариант взаимодействия с процессором, потому, используя двоичную систему, вы передаете команды напрямую: управляете памятью, перемещаете данные и т.п.
Но есть низкоуровневые языки, которые немного упрощают процесс общения с «железом» за счет преобразования часто используемых команды из 1011 в более удобоваримые директивы в духе MOV, AAD.
Такие языки строго оптимизируются под конкретные чипы и работают только на тех архитектурах, под которые они изначально разрабатывались.
Машинный язык
Это единственный язык, который понимает компьютер без какой-либо предобработки. Сейчас программисты его не используют, потому что он слишком сложный в восприятии. Есть масса более понятных аналогов, выполняющих те же функции, в то время как машинный язык очень сложный, требует куда больше времени и внимательности от специалиста и вообще никак не помогает в создании новых программ, а только усложняет эту задачу.
Машинный язык – это информация в чистом виде, зачастую представляющая собой набор чисел в двоичной системе исчисления (иногда используются десятичные и другие варианты). Разработчики должны прописывать каждую команду с помощью заранее предусмотренных запросов, четко следуя правилам написания инструкций для конкретного чипа, с которым работает программист.
Написанный машинный код передается в загрузчик программ напрямую, обычно игнорируя любые посреднические программные слои.
Языки ассемблера
Это первый уровень абстракции от машинного языка. Первая надстройка, упрощающая восприятие программного кода и помогающая разработчикам писать более стабильные приложения, практически не теряя в производительности.
Синтаксис языка ассемблера состоит не из нулей и единиц (и даже не из цифр с буквенными значениями, как в десятичной системе), а из вполне читаемых директив, которые похожи на сокращенные английские слова. Например MOV вместо 1011 отвечает за перемещение данных из одного регистра в другой.
Каждый язык ассемблера поставляется с собственным переводчиком, превращающим директивы на английском языке в директивы, которые умеет читать компьютер, то есть в машинный код. Этот переводчик называют ассемблером. И это одна из причин, почему ПО, написанное с использованием ассемблера работает медленнее, – компьютеру требуется время на перевод.
Уровень абстракции языка ассемблера довольно посредственный, потому что информация, которой манипулирует разработчик, хранится в регистрах процессора (специальных ячейках, где может храниться определенный объем данных), из-за чего формируется тесная взаимосвязь между написанным кодом и используемым железом. Без больших затрат по времени ретранслировать этот код под другую платформу или операционную систему не получится.
В отличие от машинного языка, язык ассемблера используется даже в современной разработке. В частности, для создания ПО, требующего очень высокой производительности, низкоуровневых системных компонентов или драйверов для аппаратной части устройств.
Краткое сравнение ассемблера и машинного языка
Машинный код
Язык ассемблера
Нулевой уровень абстракции. Полный контакт с аппаратной составляющей компьютера
Первый уровень абстракции. Есть прослойка в виде переводчика-ассемблера
Трудно понять, что написано в коде
Код больше похож на человеческий язык
Для запуска не нужны дополнительные инструменты
Требуется ассемблер для превращения кода в машинный язык
Синтаксис состоит из нулей и единиц
Синтаксис состоит из английских слов
Высокоуровневые языки
Машинный код сложен для восприятия, и это порождает две большие проблемы в разработке:
Чтобы научиться программировать, нужно потратить много времени на изучение разных директив и понять, как они взаимодействуют друг с другом и с физическими компонентами компьютера.
Синтаксис машинного кода настолько мудреный, что писать программы, не допуская ошибок, почти нереально. Нужно быть крайне внимательным.
В связи с этим инженеры начали создавать дополнительные уровни абстракций для машинного языка, чтобы люди могли выполнять те же операции, но манипулируя куда более понятными для них структурами, отсекая часть задач, ранее возложенных на программиста, и передавая их специализированным компьютерным утилитам.
Высокоуровневые языки куда ближе к английскому языку, чем язык ассемблера и машинный код. Поэтому его проще воспринимать, и новые поколения программистов начали расти куда быстрее за счет использования более простых конструкций в коде.
Особенности высокоуровневых языков
Код, написанный на высокоуровневом языке, впоследствии трансформируется в машинный код при помощи специальных утилит: компиляторов и интерпретаторов. Первый трансформирует программу в понятную для компьютера еще до запуска, а второй делает это постепенно – строка за строкой.
Такой подход позволил создать множество уникальных синтаксисов и надстроек. Каждый вариант позволяет выполнять свои задачи по-разному, взаимодействуя с железом.
Взаимодействуя с высокоуровневыми языками, программист переходит на управление абстрактными структурами. На смену регистрам, адресам памяти и запросам в стек (это список команд, если выражаться максимально примитивно) приходят объекты, массивы данных, переменные, булевы выражения, функции, циклы и другие сущности, знакомые современным разработчикам.
Частицы кода больше напоминают прикладные и «осязаемые» элементы, в которые проще уложить логику сложных современных приложений и веб-сайтов.
Плюсы высокоуровневых языков
Главный плюс – абстракция. Современные разработчики не обязаны знать, как устроен компьютер и как с ним общаться с помощью нулей и единиц. Они могут создавать продвинутые приложения без глубоких познаний в области информатики.
Помимо низкого порога вхождения, высокоуровневые языки обеспечивают более богатый арсенал инструментов. В их числе специальные модули для автоматического выявления ошибок в коде и объединения нескольких видов технологий в одну рабочую среду (несколько фреймворков, сборщики по типу Webpack и т.п.).
ПО стало портативным. Одну базу кода можно использовать сразу на нескольких платформах. Мощные интерпретаторы в полуавтоматическом режиме превращают код на одном языке в код для нескольких отличающихся друг от друга ОС.
Минусы высокоуровневых языков
Низкая производительность. Чем выше уровень абстракции, тем больше времени и ресурсов компьютера тратится на «перевод» одного языка в другой. Поэтому некоторые приложения, даже будучи не слишком функциональными, долго загружаются или работают нестабильно.
Не особо смышленые программисты. Многие разработчики не углубляются в теоретическую базу и остаются на уровне своего языка, что сильно ограничивает их кругозор и не позволяет расти с профессиональной точки зрения. Притупляется внимание, страдают навыки поиска и инженерное мышление.
Избыточное внимание к инструментам. Количество дополнительных слоев абстракции становится избыточным. Регулярно появляются новые фреймворки, редакторы кода, дополнительные вспомогательные приложения, языки, стандарты и т.п. Фокус часто смещается с создания хороших программ на перебор утилит и споры о том, какие из них работают лучше.
Популярные высокоуровневые языки программирования
Их уже довольно много:
C – язык общего назначения, лежащий в основе десятков других языков.
C++ – расширенная версия C. До сих пор в почете и используется в разработке сложных приложений, например музыкальных плагинов и редакторов кода.
Java – мультипрофильный язык, который позволяет запускать единожды написанный код на десятках устройств и систем.
Python – простой в освоении язык общего назначения с «аккуратным» синтаксисом и большим количеством расширений.
JavaScript – скриптовый язык, выросший из эксклюзивной веб-технологии в мощный язык для создания приложений, игр, IDE даже других языков.
Естественно, языков в десятки раз больше, но на всех в этой статье места не хватит. Если интересно, почитайте статью на Википедии со списком всех известных языков программирования.
Степень высокоуровневости
Относительность термина «высокоуровневый» возникла в связи с избыточным ростом количества языков программирования. Причем многие из них базировались друг на друге и семимильными шагами повышали уровень абстракции.
Некоторые языки считаются более низкоуровневыми, чем другие, даже в пространстве высокоуровневых. Например, C++ более тесно взаимодействует с «железом», а потому нередко именуется низкоуровневым языком, хотя таковым и не является.
А все потому что появились языки в духе JavaScript, которые еще больше отдаляют программистов от аппаратных компонентов и создают тепличные условия, в которых разработка все меньше походит на хардкорную борьбу с машиной 30 лет назад.
Также низкоуровневыми начали называть языки, в которых по умолчанию не встроены дополнительные инструменты, облегчающие процесс создания ПО, например «сборщики мусора».
Краткое сравнение высокоуровневых и низкоуровневых языков
Низкоуровневые
Высокоуровневые
Наиболее понятный для компьютера язык с синтаксисом из нулей и единиц или простых команд для взаимодействия напрямую с «железом» компьютера
Наиболее понятный для человека язык. Больше напоминает английский
Позволяет создавать более производительный код.
Генерирует код, который требует больше ресурсов и времени для запуска
Даже при использовании языка ассемблера перевод происходит единожды самим ассемблером
Требует наличие компилятора или интерпретатора для преобразования человекоудобного кода в машинный код
Создает код, который работает на конкретном устройстве
Создает портативный код, который можно запускать на разных устройствах
Эффективен с точки зрения использования памяти
Менее эффективен с точки зрения использования памяти
Поиск и устранение ошибок занимают много времени
Есть инструменты для быстрого автоматического отлова ошибок
Что учить и зачем?
Если вы только начинаете свой путь в мире разработки, то сразу бросаться в языки ассемблера и уж тем более машинный код не стоит. Программирование – тема сложная, и лучше начинать с определенного уровня абстракции. Хотя бы C++, но куда лучше подойдет Python. Последний поможет понять базовые концепции и выучить простейшие алгоритмы. А дальше у вас будет два пути:
Выбрать один из высокоуровневых языков в зависимости от того, какое программное обеспечение вы хотите создавать и для каких операционных систем.
Начать углубленное изучение низкоуровневых языков, чтобы в дальнейшем создавать драйверы и микропрограммы для чипов.
Вместо заключения
Низкоуровневые и высокоуровневые языки хоть и разные, но отлично уживаются в современном мире, выполняя задачи, возложенные конкретно на них. Благодаря повышению уровня абстракции был создан весь современный цифровой мир, поэтому корить разработчиков за то, что они используют только условный Objective-C и игнорируют машинный код, нелепо. Но и совсем отрицать важность изучения основ тоже глупо. Чтобы быть хорошим специалистом, нужно поддерживать баланс и изучать программирование со всех сторон.
Языки программирования высокого уровня
Высокоуровневый язык программирования – язык программирования, разработанный с расчетом на быстроту и удобство использования программистом. Обычно под этим термином подразумеваются универсальные алгоритмические языки третьего поколения, однако сюда можно включить и некоторые языки четвертого поколения. Основная черта высокоуровневых языков – это абстракция, то есть использование смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описание которых на машинном коде (или другом низкоуровневом языке программирования) очень длинно и сложно для понимания.
Кроме того, высокоуровневые языки позволяют упростить перенос программного обеспечения между разными операционными системами. Это достигается использованием разнообразных трансляторов и интерпретаторов, в то время как исходный код остаётся неизменным.
Первым языком программирования высокого уровня считается язык Plankalkül, разработанный немецким инженером Конрадом Цузе в 1942-1946 гг. Однако транслятора для него не существовало вплоть до 2000 года. Поэтому первым компилируемым языком программирования высокого уровня является Fortran.
Язык Fortran создан в середине 50-х гг. группой программистов IBM. Название Fortran является сокращением от FORmula TRANslator (переводчик формул). Основным критерием при разработке компиляторов Фортрана являлась эффективность исполняемого кода. В Фортране впервые был реализован ряд важнейших понятий программирования, но при этом удобство создания программ в целом было принесено в жертву возможности получения эффективного машинного кода.
Фортран широко используется в первую очередь для научных и инженерных вычислений. За почти шесть десятилетий на нем создано огромное количество программ и библиотек подпрограмм, начиная от статистических комплексов и заканчивая пакетами управления спутниками. Многие из современных АСНИ реализованы именно на Фортране.
Одной из причин такой живучести Фортрана является то, что он – жёстко стандартизированный язык, и поэтому легко переносится на различные платформы. Новые стандарты языка в значительной мере сохраняют преемственность с более старыми, что позволяет интенсивно использовать уже разработанные и отлаженные коды, а также модифицировать их.
Языков программирования высокого уровня существует множество. За десятилетия развития информационных технологий ставились различные задачи, для решения которых зачастую оптимальным вариантом было создание языка программирования, ориентированного на задачи подобного рода. Закономерно, что многие из языков по разным причинам не получили дальнейшего развития и сегодня не используются, а ряд других языков по сути определяет развитие информационной индустрии в настоящее время. Более того, новые языки часто создавались под влиянием уже существующих, а удачные идеи, появляющиеся в них, включались в обновления старых языков. Всего насчитывается более 5 тыс. языков программирования, большая часть которых уже нигде не используется.
Сегодня существует около 200 популярных языков программирования высокого уровня. Для оценки популярности часто используют индекс TIOBE. Он вычисляется на основе подсчета результатов поисковых запросов, содержащих название языка, по нескольким информационным системам, таким как Google, Wikipedia, Baidu и др.
Рассмотрим некоторые наиболее популярные языки программирования в порядке их популярности по состоянию на ноябрь 2012 г.
Си (англ. C) – стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би, из этого языка берут начало многие его особенности. Первоначально C не рассматривался как массовый, а планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. Си был создан для использования в операционной системе UNIX, но с тех пор перенесен на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность; он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си разрабатывался не для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков.
Для языка Си характерны лаконичность, современный набор конструкций управления потоком выполнения, структур данных и обширный набор операций. В 70-е годы на нем написано множество прикладных и системных программ, а также ряд операционных систем семейства Unix.
Java
Java – объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems, официально выпущен 23 мая 1995 года.
Язык разработан на основе языка Си++ с целью упрощения разработки приложений путем исключения из него всех низкоуровневых возможностей. Приложения Java обычно компилируются в специальный платформно-независимый байт-код, поэтому они могут работать на любой виртуальной Java-машине (Java Virtual Machine, JVM) независимо от компьютерной архитектуры, главное чтобы существовала соответствующая виртуальная машина. Важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.
Внутри Java существуют три основных семейства технологий:
– J2EE или Java EE (начиная с v1.5) – Java Enterprise Edition, для создания программного обеспечения уровня предприятия;
– J2SE или Java SE (начиная с v1.5) – Java Standard Edition, для создания пользовательских приложений, в первую очередь – для настольных систем;
– J2ME, Java ME или Java Micro Edition, для использования в устройствах, ограниченных по вычислительной мощности, в том числе мобильных телефонах, PDA, встроенных системах
Самыми популярными считаются серверные технологии семейства J2EE.
Objective C
Objective-C, известный также как Objective C, ObjC или Obj-C – компилируемый объектно-ориентированный язык программирования корпорации Apple, построенный на основе языка Си и парадигм Smalltalk. Появился в 1986 г. Язык полностью совместим с Си.
Компилятор Objective-C входит в GCC и доступен на большинстве основных платформ. Язык используется в первую очередь для Mac OS X (Cocoa) и GNUstep – двух реализаций объектно-ориентированного стандарта операционной системы NeXTSTEP.
C++ (Си++) – компилируемый статически типизированный язык программирования общего назначения, был разработан в начале 1980-х годов, стандартом стал в 1998 г. В 1990-х годах язык стал одним из наиболее широко применяемых языков программирования общего назначения.
Наибольшее внимание в этом языке уделено поддержке объектно-ориентированного и обобщённого программирования. Концепция ООП появилась до этого языка, но приобрела популярность именно благодаря ему.
При создании C++ стремились сохранить совместимость с языком Си. Большинство программ на Си будут исправно работать и с компилятором C++. C++ имеет синтаксис, основанный на синтаксисе Си.
PHP (англ. PHP: Hypertext Preprocessor – «PHP: препроцессор гипертекста», англ. Personal Home Page Tools (устар.) – «Инструменты для создания персональных веб-страниц») – скриптовый язык программирования общего назначения, интенсивно применяющийся для разработки веб-приложений. Появился в 1994 году как специализированная версия языка Perl, но довольно быстро обособился. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.
Язык и его интерпретатор разрабатываются группой энтузиастов в рамках проекта с открытым кодом. Проект распространяется под собственной лицензией, несовместимой с GNU GPL.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
Переняв многое от своих предшественников – языков C++, Java, Delphi, Модула и Smalltalk – С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).
BASIC
Бейсик (от BASIC, сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code – универсальный код символических инструкций для начинающих; англ. basic – основной, базовый) – семейство высокоуровневых языков программирования. Был разработан в 1963 году профессорами Дартмутского колледжа Томасом Куртцем (Thomas E. Kurtz) и Джоном Кемени (John G. Kemeny).
Поначалу язык предназначался для обучения программированию и получил широкое распространение в виде различных диалектов, прежде всего, как язык для домашних микрокомпьютеров. Бейсик был спроектирован так, чтобы студенты могли без затруднений писать программы, используя терминалы с разделением времени. Он предназначался для пользователей, не столько заинтересованных в скорости исполнения программ, сколько просто в возможности использовать компьютер для решения своих задач не имея специальной подготовки.
При проектировании языка использовались следующие восемь принципов. Новый язык должен:
– быть простым в использовании для начинающих
– быть языком программирования общего назначения
– предоставлять возможность расширения функциональности, доступную опытным программистам
– предоставлять ясные сообщения об ошибках
– быстро работать на небольших программах
– не требовать понимания работы аппаратного обеспечения
– защищать пользователя от операционной системы
Язык был основан частично на Фортране, частично на Алголе, с некоторыми добавлениями.
Настоящее распространение Бейсика началось с его появления на микрокомпьютере Altair 8800 в 1975 г. Многие языки программирования были слишком большими чтобы поместиться в небольшую память, которую пользователи таких машин могли себе позволить. Для машин с таким медленным носителем как бумажная лента (позднее – аудиокассета) и без подходящего текстового редактора такой небольшой язык как Бейсик был отличной находкой. В 1975 году Microsoft (тогда это были лишь двое – Билл Гейтс и Пол Аллен) выпустила Altair BASIC. Затем его версии появились на другой платформе под лицензией и скоро в использовании были уже миллионы копий и вариантов; один из вариантов, Applesoft BASIC, стал стандартным языком на Apple II. Для операционной системы CP/M был создан диалект BASIC-80, надолго определивший развитие языка.
В 1979 году Microsoft обсуждала с несколькими поставщиками компьютеров (включая IBM) лицензирование интерпретатора Бейсик на их машинах. Одна из версий (ROM BASIC) была включена в ПЗУ IBM PC – компьютер мог автоматически загружаться в Бейсик. Так как IBM не придавала тогда большого значения персональным компьютерам (основным полем её деятельности были мейнфреймы), то, вопреки своим принципам, она разрешила Microsoft продавать интерпретатор отдельно. Это сделало последнюю пионером в выпуске ПО нового поколения – не привязанного к конкретной аппаратуре и поставляемого отдельно от компьютера.
В начале 1990-х был разработан графически-ориентированный вариант языка. Microsoft создала вариант под названием WordBasic и использовала его в MS Word до появления Word 97. Вариант Visual Basic for Applications (VBA) был встроен в Excel 5.0 в 1993 году, затем в Access 95 в 1995 году, а после и во все остальные инструменты, входящие в пакет Microsoft Office. Internet Explorer 3.0 и выше, а также Microsoft Outlook, включали интерпретатор VBScript.
Python
Python – высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.
Разработка языка начата в конце 1980-х, название дано в честь популярного британского комедийного телешоу 1970-х «Воздушный цирк Монти Пайтона».
Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты – динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Питоне организовывается в функции и классы, которые могут объединяться в модули (которые в свою очередь могут быть объединены в пакеты).
Эталонной реализацией Python является интерпретатор CPython, поддерживающий большинство платформ. Он распространяется свободно под лицензией, позволяющей использовать его без ограничений в любых приложениях, включая проприетарные.
Разработчики языка Python придерживаются определённой философии программирования, называемой «Дзэном Питона». Её текст выдаётся интерпретатором Питона по команде import this (работает один раз за сессию). Автором этой философии считается Тим Пейтерс.
Красивое лучше, чем уродливое.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
Плоское лучше, чем вложенное.
Разреженное лучше, чем плотное.
Читабельность имеет значение.
Особые случаи не настолько особые, чтобы нарушать правила.
Хотя практичность побеждает стремление к чистоте.
Ошибки никогда не должны замалчиваться.
Если не замалчиваются явно.
Встретив двусмысленность, отбрось искушение угадать.
Должен существовать один – и, желательно, только один – очевидный способ сделать это.
Хотя он поначалу может быть и не очевиден, если вы не голландец.
Сейчас лучше, чем никогда.
Хотя никогда зачастую лучше, чем прямо сейчас.
Если реализацию сложно объяснить – идея плоха.
Если реализацию легко объяснить – идея, возможно, хороша.
Пространства имён, черт возьми, – отличная штука! Будем делать их побольше!
Perl
Perl – высокоуровневый интерпретируемый динамический язык программирования, созданный в 1987 г. лингвистом Ларри Уоллом. Название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language «практический язык для извлечения данных и составления отчётов». Первоначально аббревиатура состояла из пяти символов и в таком виде в точности совпадала с английским словом pearl, жемчужина. Но затем стало известно, что язык с таким названием уже существует, и букву «а» убрали. Талисманом языка Perl является верблюд – не слишком красивое, но очень выносливое животное, способное выполнять тяжёлую работу.
Согласно Ларри Уоллу, Perl имеет два девиза. Первый – «There’s more than one way to do it» («Есть больше одного способа сделать это», также известный как TMTOWTDI); второй – «Easy things should be easy and hard things should be possible» («Простые вещи должны быть простыми, а сложные вещи – возможными»).
Основной особенностью языка считаются его богатые возможности для работы с текстом, в том числе реализованные при помощи регулярных выражений. Перл унаследовал много свойств от языков Си, shell script, awk.
Узкая специализация Perl, ограниченная в основном обработкой текстовых данных, позволяет отнести его к четвертому поколению языков программирования.
Ruby
Ruby – динамический интерпретируемый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования, появился в 1995 г. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. Ruby близок по особенностям синтаксиса к языкам Perl и Eiffel, по объектно-ориентированному подходу – к Smalltalk. Также некоторые черты языка взяты из Python, Лисп, Dylan и CLU.
Название навеяно языком Perl, многие особенности синтаксиса и семантики из которого заимствовано в Ruby: англ. pearl – «жемчужина», ruby – «рубин».
Целью разработки было создание «настоящего объектно-ориентированного», лёгкого в разработке и понимании, интерпретируемого языка программирования.
JavaScript
JavaScript – объектно-ориентированный скриптовый язык программирования, выпущен в 1995 г. как специальная версия языка Java. JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах в качестве языка сценариев для придания интерактивности веб-страницам.
На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.
Delphi
Delphi – язык программирования, который используется в одноимённой среде разработки. Сначала язык назывался Object Pascal. Появился в 1995 году как результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, добавил объектно-ориентированные свойства, а в Object Pascal – динамическую идентификацию типа данных с возможностью доступа к метаданным классов.
Изначально Delphi был предназначена исключительно для разработки приложений Microsoft Windows, позже был реализован также для платформы Linux.
Pascal
Паскаль (англ. Pascal) – высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко применяется в промышленном программировании, обучении программированию в высшей школе, является базой для большого числа других языков. Был создан Никлаусом Виртом в 1968-69 годах (опубликован в 1970 году) после его участия в работе комитета разработки стандарта языка Алгол-68.
Паскаль был создан как язык для обучения процедурному программированию (хотя, по словам Вирта, язык нельзя считать только учебным, поскольку язык, непригодный для написания реальных программ, для обучения использоваться не должен). Название языку дано в честь выдающегося французского математика, физика, литератора и философа Блеза Паскаля.
Lisp
Лисп (LISP, от англ. LISt Processing language – «язык обработки списков») – семейство языков программирования, программы и данные в которых представляются системами линейных списков символов. Лисп является вторым в истории (после Фортрана) используемым по сей день высокоуровневым языком программирования. Создатель Лиспа Джон Маккарти занимался исследованиями в области искусственного интеллекта (в дальнейшем ИИ) и созданный им язык по сию пору является одним из основных средств моделирования различных аспектов ИИ.
Язык Лисп (так же как и следующий – Ada) прошел процесс фундаментальной стандартизации для использования в военном деле и промышленности, в результате чего появился стандарт Common Lisp. Его реализации существуют для большинства компьютерных платформ.
А́да (Ada) – структурный, модульный, объектно-ориентированный язык программирования, содержащий высокоуровневые средства программирования параллельных процессов, создан в 1975-1980 гг. в результате проекта, предпринятого Министерством обороны США с целью разработать единый язык программирования для встраиваемых систем (то есть систем управления автоматизированными комплексами, работающими в реальном времени). Имелись в виду, прежде всего, бортовые системы управления военными объектами (кораблями, самолётами, танками, ракетами, снарядами и т. п.). Перед разработчиками не стояло задачи создать универсальный язык, поэтому решения, принятые авторами Ады, нужно воспринимать в контексте особенностей выбранной предметной области. Язык назван в честь Ады Лавлэйс.
В СССР в 80-х годах была организована Рабочая Группа по языку Ада при Госкомитете по науке и технике. Группа занималась изучением всех открытых (а также, по слухам, добытых разведкой закрытых) данных по языку Ада и исследовала возможность и целесообразность развития и использования Ады в СССР. Деятельность этой группы привела к концу 80-х годов к разработке компиляторов Ады для практически всех применяемых в СССР компьютеров. Было выпущено несколько книг по языку Ада на русском языке.
PL/SQL
PL/SQL (Procedural Language / Structured Query Language) – язык программирования, процедурное расширение языка SQL. Базируется на языке Ада. Стандартный SQL является специализированным декларативным языком программирования четвертого поколения. На него наложены определённые ограничения, такие как, например, отсутствие прямой поддержки циклов. PL/SQL же позволяет разработчикам обрабатывать реляционную базу данных, используя более привычный стиль программирования. Операторы SQL могут быть легко вызваны непосредственно из PL/SQL-процедуры, функции или из триггера (иногда с некоторыми ограничениями).
MatLab
MATLAB (сокращение от англ. «Matrix Laboratory») – термин, относящийся к пакету прикладных программ для решения задач технических вычислений, а также к используемому в этом пакете высокоуровневому интерпретируемому языку программирования. MATLAB используют более 1 000 000 инженерных и научных работников, он работает на большинстве современных операционных систем, включая GNU/Linux, Mac OS, Solaris и Microsoft Windows.
MATLAB как язык программирования был разработан Кливом Моулером (англ. Cleve Moler) в конце 1970-х годов, когда он был деканом факультета компьютерных наук в Университете Нью-Мексико. Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык распространился среди других университетов и был с большим интересом встречен учёными, работающими в области прикладной математики. До сих пор в Интернете можно найти версию 1982 года, написанную на Фортране, распространяемую с открытым исходным кодом. Инженер Джон Литтл (англ. John N. (Jack) Little) познакомился с этим языком во время визита Клива Моулера в Стэнфордский университет в 1983 году. Поняв, что новый язык обладает большим коммерческим потенциалом, он объединился с Кливом Моулером и Стивом Бангертом (англ. Steve Bangert). Совместными усилиями они переписали MATLAB на C и основали в 1984 компанию The MathWorks для дальнейшего развития. Эти переписанные на С библиотеки долгое время были известны под именем JACKPAC. Первоначально MATLAB предназначался для проектирования систем управления (основная специальность Джона Литтла), но быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался и в образовании, в частности, для преподавания линейной алгебры и численных методов.
Кроме этих языков, важную роль сыграли такие языки, как Algol, Cobol и Smalltalk.
Algol
Компилируемый язык ALGOL создан в 1960 году целым коллективом высококлассных разработчиков, специалистов по языкам программирования, среди которых были разработчик Фортрана Джон Бэкус, автор Лиспа Джон Маккарти, один из создателей структурного программирования Эдсгер Дейкстра и другие. Алгол был призван заменить Фортран, но из-за более сложной структуры Алгола этого не произошло. В 1968 году была создана версия Алгол 68, по своим возможностям даже сегодня опережающая многие языки программирования. Однако из-за отсутствия достаточно эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы, поэтому особую популярность язык не завоевал. Тем не менее, он оказал существенное влияние на развитие всех языков, которые появились после него, в частности, как уже было упомянуто, Pascal является прямым наследником Алгола.
Cobol
Компилируемый язык для применения в экономической области и решения бизнес-задач, разработан в начале 60-х годов. Он отличается большой «многословностью» – его операторы иногда выглядят как обычные английские фразы. В Коболе реализованы очень мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано очень много приложений, которые активно эксплуатируются и сегодня.
Smalltalk
Smalltalk – первый широко распространенный объектно-ориентированный язык программирования с динамической типизацией, разработан в Xerox PARC в 1970-е гг. Оказал большое влияние на развитие многих других языков, таких как: C++, Objective-C, Java. Многие идеи 1980-х и 1990-х по написанию программ появились как результат развития языка Smalltalk.

