Обзор языков программирования
Язык программирования - это любой из различных языков для выражения набора подробных инструкций для цифрового компьютера. Такие инструкции могут выполняться непосредственно, когда они представлены в числовой форме, определенной производителем компьютера, известной как машинный язык, после простого процесса подстановки, выраженного на соответствующем языке ассемблера, или после перевода с какого-либо языка “более высокого уровня”. Хотя существует множество компьютерных языков, относительно немногие из них широко используются.
Машинные языки и языки ассемблера являются “низкоуровневыми”, требующими, чтобы программист явно управлял всеми особенностями компьютера, связанными с хранением и работой данных. Напротив, языки высокого уровня защищают программиста от беспокойства по поводу таких соображений и предоставляют обозначения, которые программистам легче писать и читать.
Типы языков
Машинные и ассемблерные языки
Машинный язык состоит из числовых кодов для операций, которые конкретный компьютер может выполнять непосредственно. Коды представляют собой строки из 0 и 1 или двоичных цифр (“битов”), которые часто преобразуются как из шестнадцатеричного, так и в шестнадцатеричное (основание 16) для просмотра и модификации человеком. Инструкции машинного языка обычно используют некоторые биты для представления операций, таких как сложение, а некоторые-для представления операндов или, возможно, расположения следующей инструкции. Машинный язык трудно читать и писать, так как он не похож на обычную математическую нотацию или человеческий язык, а его коды варьируются от компьютера к компьютеру.
Язык ассемблера на один уровень выше машинного языка. Он использует короткие мнемонические коды для инструкций и позволяет программисту вводить имена для блоков памяти, в которых хранятся данные. Таким образом, можно было бы написать “ add pay, total” вместо “0110101100101000” для инструкции, которая добавляет два числа.
Язык ассемблера разработан таким образом, чтобы его можно было легко перевести на машинный язык. Хотя блоки данных могут называться по имени, а не по их машинным адресам, язык ассемблера не предоставляет более сложных средств организации сложной информации. Как и машинный язык, язык ассемблера требует детального знания внутренней архитектуры компьютера. Это полезно, когда такие детали важны, например, при программировании компьютера для взаимодействия с периферийными устройствами (принтерами, сканерами, устройствами хранения и т. д.).
Алгоритмические языки
Алгоритмические языки предназначены для выражения математических или символьных вычислений. Они могут выражать алгебраические операции в нотации, аналогичной математике, и позволяют использовать подпрограммы, которые упаковывают обычно используемые операции для повторного использования. Это были первые языки высокого уровня.
ФОРТРАН
Первым важным алгоритмическим языком был ФОРТРАН (перевод формул), разработанный в 1957 году командой IBM во главе с Джоном Бэкусом. Он был предназначен для научных вычислений с действительными числами и их коллекциями, организованными в виде одномерных или многомерных массивов. Его структуры управления включали условные операторы IF, повторяющиеся циклы (так называемые циклы DO) и оператор GOTO, который позволял выполнять программный код без последовательности. ФОРТРАН сделал удобным наличие подпрограмм для общих математических операций и построил из них библиотеки.
ФОРТРАН также был разработан для перевода на эффективный машинный язык. Она сразу же стала успешной и продолжает развиваться.
АЛГОЛ
АЛГОЛ (алгоритмический язык) был разработан комитетом американских и европейских ученых-компьютерщиков в 1958-60 годах для публикации алгоритмов, а также для выполнения вычислений. Как и LISP (описанный в следующем разделе), ALGOL имел рекурсивные подпрограммы — процедуры, которые могли вызывать себя для решения проблемы, сводя ее к меньшей проблеме того же рода. АЛГОЛ представил блочную структуру, в которой программа состоит из блоков, которые могут содержать как данные, так и инструкции и иметь ту же структуру, что и вся программа. Блочная структура стала мощным инструментом для создания больших программ из небольших компонентов.
АЛГОЛ внес нотацию для описания структуры языка программирования, форму Бэкуса–Наура, которая в некоторых вариациях стала стандартным инструментом для описания синтаксиса (грамматики) языков программирования. АЛГОЛ широко использовался в Европе, и в течение многих лет он оставался языком, на котором публиковались компьютерные алгоритмы. Многие важные языки, такие как Pascal и Ada (оба описаны позже), являются его потомками.
C
Язык программирования C был разработан в 1972 году Деннисом Ричи и Брайаном Керниганом в корпорации AT&T по программированию компьютерных операционных систем. Его способность структурировать данные и программы с помощью более мелких блоков сопоставима с возможностями ALGOL. Он использует компактную нотацию и предоставляет программисту возможность работать с адресами данных, а также с их значениями. Эта способность важна в системном программировании, и C разделяет с языком ассемблера способность использовать все возможности внутренней архитектуры компьютера. C, наряду со своим потомком C++, остается одним из наиболее распространенных языков.
Бизнес-ориентированные языки
COBOL
COBOL (общий бизнес-ориентированный язык) широко используется предприятиями с момента его создания в 1959 году. Комитет производителей и пользователей компьютеров и правительственных организаций США учредил CODASYL (Комитет по системам данных и языкам) для разработки и надзора за языковым стандартом в целях обеспечения его переносимости в различных системах.
При введении COBOL использует англоязычную нотацию-новеллу. Бизнес-вычисления организуют и обрабатывают большие объемы данных, и COBOL представил структуру данных записей для таких задач. Запись объединяет разнородные данные, такие как имя, идентификационный номер, возраст и адрес, в единое целое. Это контрастирует с научными языками, в которых распространены однородные массивы чисел. Записи являются важным примером “объединения” данных в один объект, и они появляются почти на всех современных языках.
SQL
SQL (язык структурированных запросов) - это язык для определения организации баз данных (коллекций записей). Базы данных, организованные с помощью SQL, называются реляционными, поскольку SQL предоставляет возможность запрашивать в базе данных информацию, относящуюся к заданному отношению. Например, запрос может быть “найти все записи как с фамилией Смит, так и с городом Нью-Йорк”. Коммерческие программы баз данных обычно используют для своих запросов язык, подобный SQL. Уроки по SQL.
Языки, ориентированные на образование
BASIC
BASIC (универсальный символический код обучения для начинающих) был разработан в Дартмутском колледже в середине 1960-х годов Джоном Кемени и Томасом Курцем. Он предназначался для того, чтобы новичкам, особенно не изучающим компьютерные науки, было легко его освоить, и он хорошо работал на компьютере с разделением времени со многими пользователями. В нем были простые структуры данных и обозначения, и он был интерпретирован: базовая программа переводилась строка за строкой и выполнялась по мере перевода, что позволяло легко находить ошибки программирования.
Его небольшой размер и простота также сделали BASIC популярным языком для ранних персональных компьютеров. Его последние формы переняли многие структуры данных и управления других современных языков, что делает его более мощным, но менее удобным для начинающих.
Pascal
Около 1970 года Никлаус Вирт из Швейцарии разработал Pascal для обучения структурированному программированию, в котором подчеркивалось упорядоченное использование структур условного и циклического управления без операторов GOTO. Хотя Pascal напоминал ALGOL по нотации, он предоставлял возможность определять типы данных, с помощью которых можно организовать сложную информацию, что выходило за рамки возможностей ALGOL, а также FORTRAN и COBOL. Определяемые пользователем типы данных позволяли программисту вводить имена для сложных данных, которые переводчик языка мог затем проверить на правильность использования перед запуском программы.
В конце 1970-х и 80-х годах Паскаль был одним из наиболее широко используемых языков для обучения программированию. Он был доступен почти на всех компьютерах и, благодаря своей простоте, ясности и безопасности, использовался как для производственного программного обеспечения, так и для обучения.
Logo
Logo возник в конце 1960-х годов как упрощенный диалект лиспа для образования; Сеймур Паперт и другие использовали его в Массачусетском технологическом институте для обучения математическому мышлению школьников. Он имел более традиционный синтаксис, чем LISP, и отличался “черепашьей графикой”, простым методом создания компьютерной графики. (Название пришло из раннего проекта по программированию робота, похожего на водолаза.) Графика черепахи использовала инструкции, ориентированные на тело, в которых объект перемещался по экрану с помощью команд, таких как “влево 90” и “вперед”, которые указывали действия относительно текущего положения и ориентации объекта, а не в терминах фиксированной структуры. Вместе с рекурсивными процедурами эта техника позволяла легко программировать сложные и привлекательные шаблоны.
Hypertalk
Hypertalk был разработан Биллом Аткинсоном как “программирование для всех нас” для Apple Macintosh. Используя простой синтаксис, похожий на английский, Hypertalk позволял любому быстро объединять текст, графику и аудио в “связанные стеки”, по которым можно было перемещаться, щелкая мышью по стандартным кнопкам, поставляемым программой. Hypertalk был особенно популярен среди преподавателей в 1980-х и начале 90-х годов для проведения мультимедийных презентаций в классе.
Хотя Hypertalk обладал многими функциями объектно-ориентированных языков (описанными в следующем разделе), Apple не разрабатывала его для других компьютерных платформ и позволила ему устаревать; поскольку доля рынка Apple сократилась в 1990-х годах, новый кроссплатформенный способ отображения мультимедиа оставил Hypertalk практически устаревшим.
Объектно-ориентированные языки
Объектно-ориентированные языки помогают управлять сложностью в больших программах. Объекты упаковывают данные и операции с ними таким образом, чтобы только операции были общедоступны, а внутренние детали структур данных были скрыты. Это сокрытие информации облегчило масштабное программирование, позволив программисту думать о каждой части программы изолированно. Кроме того, объекты могут быть производными от более общих, “наследуя” их возможности. Такая иерархия объектов позволила определить специализированные объекты, не повторяя всего, что есть в более общих.
Объектно-ориентированное программирование началось с языка Simula (1967), который добавил в ALGOL скрытие информации. Другим влиятельным объектно-ориентированным языком был Smalltalk (1980), в котором программа представляла собой набор объектов, взаимодействующих путем отправки сообщений друг другу.
C++
Язык C++, разработанный Бьярне Страуструпом в AT&T в середине 1980-х годов, расширил язык C, добавив в него объекты, сохранив при этом эффективность программ на языке C. Это был один из самых важных языков как для образования, так и для промышленного программирования. Большая часть многих операционных систем была написана на C++. C++, наряду с Java, стал популярным для разработки коммерческих программных пакетов, включающих множество взаимосвязанных приложений.
C++ считается одним из самых быстрых языков и очень близок к языкам низкого уровня, что позволяет полностью контролировать распределение и управление памятью. Именно эта функция и множество других возможностей также делают его одним из самых сложных языков для изучения и обработки в больших масштабах.
C#
C# (произносится си шарп) был разработан Андерсом Хейлсбергом в Microsoft в 2000 году. C# имеет синтаксис, аналогичный синтаксису C и C++, и часто используется для разработки игр и приложений для операционной системы Microsoft Windows. У меня в блоге есть серия уроков по C#.
Ада
Ада была названа в честь Августы Ады Кинг, графини Лавлейс, которая была помощницей английского изобретателя 19 века Чарльза Бэббиджа и которую иногда называют первым компьютерным программистом. Язык Ada был разработан в начале 1980-х годов для Министерства обороны США для крупномасштабного программирования. Он сочетал нотацию, подобную Паскалю, с возможностью упаковки операций и данных в независимые модули. Его первая форма, Ada 83, не была полностью объектно-ориентированной, но последующая Ada 95 обеспечивала объекты и возможность построения их иерархий. Хотя Ada больше не требуется для использования в работе Министерства обороны, она остается эффективным языком для разработки крупных программ.
Java
В начале 1990-х годов Java была разработана компанией Sun Microsystems, Inc. в качестве языка программирования для Всемирной паутины (WWW). Хотя по внешнему виду он напоминал C++, он был объектно-ориентированным. В частности, Java обошлась без функций более низкого уровня, включая возможность манипулировать адресами данных, возможность, которая не является ни желательной, ни полезной в программах для распределенных систем.
Чтобы быть переносимыми, программы Java переводятся виртуальной машиной Java, специфичной для каждой компьютерной платформы, которая затем выполняет программу Java. В дополнение к добавлению интерактивных возможностей в Интернет с помощью веб - “апплетов”, Java широко используется для программирования небольших и портативных устройств, таких как мобильные телефоны.
У меня в блоге есть серия уроков по Java.
Visual Basic
Visual Basic был разработан Microsoft для расширения возможностей BASIC путем добавления объектов и “событийного” программирования: кнопок, меню и других элементов графических пользовательских интерфейсов (GUI). Visual Basic также может использоваться в рамках другого программного обеспечения Microsoft для программирования небольших подпрограмм. На смену Visual Basic в 2002 году пришел Visual Basic .NET, совершенно другой язык, основанный на C#, языке, похожем на C++.
Python
Язык Python с открытым исходным кодом был разработан голландским программистом Гвидо ван Россумом в 1991 году. Он был разработан как простой в использовании язык с такими функциями, как использование отступов вместо скобок для группирования операторов. Python также является очень компактным языком, разработанным таким образом, что сложные задания могут выполняться всего несколькими операторами. В 2010-х годах Python стал одним из самых популярных языков программирования, наряду с Java и JavaScript.
Декларативные языки
Декларативные языки, также называемые непроцедурными или очень высокого уровня, являются языками программирования, в которых (в идеале) программа определяет, что должно быть сделано, а не как это сделать. В таких языках разница между спецификацией программы и ее реализацией меньше, чем в процедурных языках, описанных до сих пор. Двумя распространенными типами декларативных языков являются логические и функциональные языки.
Языки логического программирования, из которых наиболее известен ПРОЛОГ (программирование в логике), определяют программу как набор логических отношений (например, бабушка и дедушка являются родителями родителей кого-либо). Такие языки аналогичны языку базы данных SQL. Программа выполняется “механизмом вывода”, который отвечает на запрос путем систематического поиска этих отношений, чтобы сделать выводы, которые будут отвечать на запрос. ПРОЛОГ широко используется в обработке естественного языка и других программах искусственного интеллекта.
Функциональные языки имеют математический стиль. Функциональная программа строится путем применения функций к аргументам. Функциональные языки, такие как LISP, ML и Haskell, используются в качестве исследовательских инструментов при разработке языков, в автоматизированных проверках математических теорем и в некоторых коммерческих проектах.
Языки сценариев (скриптов)
Языки сценариев иногда называют маленькими языками. Они предназначены для решения относительно небольших задач программирования, которые не требуют дополнительных затрат на объявления данных и других функций, необходимых для управления большими программами. Скриптовые языки используются для написания утилит операционной системы, для специальных программ для работы с файлами и, поскольку они просты в освоении, иногда для значительно более крупных программ.
Perl был разработан в конце 1980-х годов, первоначально для использования с операционной системой UNIX. Он должен был обладать всеми возможностями более ранних языков сценариев. Perl предоставлял множество способов изложения общих операций и тем самым позволял программисту использовать любой удобный стиль. В 1990-х годах он стал популярным в качестве инструмента системного программирования, как для небольших служебных программ, так и для прототипов более крупных. Вместе с другими языками, обсуждаемыми ниже, он также стал популярным для программирования компьютерных веб - “серверов”.
Языки форматирования документов
Языки форматирования документов определяют организацию печатного текста и графики. Они подразделяются на несколько классов: обозначения форматирования текста, которые могут выполнять те же функции, что и программа обработки текстов, языки описания страниц, которые интерпретируются печатающим устройством, и, как правило, языки разметки, которые описывают предназначенную функцию частей документа.
TeX
TeX был разработан в 1977-86 годах в качестве языка форматирования текста профессором Стэнфордского университета Дональдом Кнутом для улучшения качества математических обозначений в его книгах. Системы форматирования текста, в отличие от текстовых процессоров WYSIWYG (“Что вы видите, то и получаете”), встраивают в документ команды форматирования обычного текста, которые затем интерпретируются языковым процессором для создания отформатированного документа для отображения или печати. Текст помечается курсивом, например, как {\это выделено курсивом}, который затем отображается как выделено курсивом.
TeX в значительной степени заменил более ранние языки форматирования текста. Его мощные и гибкие возможности давали эксперту точный контроль над такими вещами, как выбор шрифтов, компоновка таблиц, математическая нотация и включение графики в документ. Он обычно используется с помощью пакетов “макросов”, которые определяют простые команды для обычных операций, таких как начало нового абзаца; LaTeX является широко используемым пакетом. TeX содержит множество стандартных “таблиц стилей” для различных типов документов, и они могут быть дополнительно адаптированы каждым пользователем. Существуют также соответствующие программы, такие как BibTeX, которая управляет библиографиями и имеет таблицы стилей для всех распространенных стилей библиографии, а также версии TeX для языков с различными алфавитами.
PostScript
PostScript - это язык описания страниц, разработанный в начале 1980-х годов компанией Adobe Systems Incorporated на основе работы в Xerox PARC (Исследовательский центр в Пало-Альто). Такие языки описывают документы в терминах, которые могут быть интерпретированы персональным компьютером для отображения документа на его экране или микропроцессором в принтере или наборном устройстве.
Команды PostScript могут, например, точно позиционировать текст различными шрифтами и размерами, рисовать математически описанные изображения и указывать цвет или затенение. PostScript использует постфикс, также называемый обратной польской нотацией, в которой имя операции следует за ее аргументами. Таким образом, "300 600 20 270 arc stroke" означает: нарисуйте ("ход") дугу 270 градусов радиусом 20 в месте (300, 600). Хотя PostScript может быть прочитан и написан программистом, он обычно создается программами форматирования текста, текстовыми процессорами или средствами графического отображения.
Успех PostScript обусловлен тем, что его спецификация является общедоступной и хорошо подходит для лазерных принтеров с высоким разрешением. Это повлияло на развитие печатных шрифтов, и производители выпускают большое разнообразие шрифтов PostScript.
SGML
SGML (стандартный обобщенный язык разметки) - это международный стандарт для определения языков разметки; то есть это метаязык. Разметка состоит из обозначений, называемых тегами, которые определяют функцию фрагмента текста или способ его отображения. SGML подчеркивает описательную разметку, в которой тег может быть “<акцент>". Такая разметка обозначает функцию документа, и ее можно интерпретировать как обратное видео на экране компьютера, подчеркивание пишущей машинкой или курсив в набранном тексте.
SGML используется для указания DTD (определений типов документов). DTD определяет вид документа, такого как отчет, указывая, какие элементы должны отображаться в документе—например, <Заголовок>—и устанавливая правила использования элементов документа, например, что абзац может отображаться в записи таблицы, но таблица может не отображаться в абзаце. Выделенный текст может быть проанализирован программой синтаксического анализа, чтобы определить, соответствует ли он DTD. Другая программа может прочитать пометки, чтобы подготовить индекс или перевести документ в PostScript для печати. Еще один может генерировать большой шрифт или аудио для читателей с нарушениями зрения или слуха.
Языки отображения во всемирной паутине
HTML
Всемирная паутина - это система для отображения текста, графики и аудио, полученных через Интернет, на мониторе компьютера. Каждая единица поиска известна как веб-страница, и такие страницы часто содержат “ссылки”, позволяющие извлекать связанные страницы. HTML (язык разметки гипертекста) - это язык разметки для кодирования веб-страниц. Он был разработан Тимом Бернерсом-Ли в лаборатории ядерной физики ЦЕРНА в Швейцарии в 1980-х годах и определен с помощью SGML DTD. Теги HTML-разметки определяют элементы документа, такие как заголовки, абзацы и таблицы. Они помечают документ для отображения компьютерной программой, известной как веб-браузер. Браузер интерпретирует теги, отображая заголовки, абзацы и таблицы в макете, адаптированном к размеру экрана и доступным шрифтам.
HTML-документы также содержат якоря, которые являются тегами, указывающими ссылки на другие веб - страницы. Якорь имеет вид <A HREF= "http://upread.ru">Блог читающего программиста</A>, где строка в кавычках-это URL (единый локатор ресурсов), на который указывает ссылка (веб-адрес), а текст, следующий за ним, отображается в веб-браузере, подчеркнуто, чтобы показать, что это ссылка на другую страницу. То, что отображается в виде одной страницы, также может быть сформировано из нескольких URL-адресов, некоторые из которых содержат текст, а другие-графику.
XML
HTML не позволяет определять новые текстовые элементы; то есть он не является расширяемым. XML (расширяемый язык разметки) - это упрощенная форма SGML, предназначенная для документов, публикуемых в Интернете. Как и SGML, XML использует DTD для определения типов документов и значений используемых в них тегов. XML использует соглашения, которые упрощают синтаксический анализ, например, что объекты документа помечены как начальным, так и конечным тегом, например <BEGIN>.…<</BEGIN>. XML предоставляет больше видов гипертекстовых ссылок, чем HTML, таких как двунаправленные ссылки и ссылки, относящиеся к подразделу документа.
Поскольку автор может определять новые теги, XML DTD также должен содержать правила, которые указывают веб—браузеру, как их интерпретировать-как должна отображаться сущность или как она должна генерировать действие, такое как подготовка сообщения электронной почты.
Веб-скрипты
Веб-страницы, помеченные HTML или XML, в основном являются статическими документами. Веб-сценарии могут добавлять информацию на страницу по мере ее использования читателем или позволять читателю вводить информацию, которая может, например, передаваться в отдел заказов онлайн-бизнеса. CGI (общий интерфейс шлюза) обеспечивает один механизм; он передает запросы и ответы между веб-браузером читателя и веб-сервером, предоставляющим страницу.
Компонент CGI на сервере содержит небольшие программы, называемые сценариями, которые берут информацию из системы браузера или предоставляют ее для отображения. Простой скрипт может запросить имя читателя, определить интернет-адрес системы, которую использует читатель, и распечатать приветствие. Скрипты могут быть написаны на любом языке программирования, но, поскольку они, как правило, являются простыми процедурами обработки текста, языки сценариев, такие как PERL, особенно подходят.
Другой подход заключается в использовании языка, предназначенного для выполнения веб-сценариев браузером. JavaScript-один из таких языков, разработанный корпорацией Netscape Communications, который может использоваться как с браузерами Netscape, так и с браузерами Microsoft. JavaScript-это простой язык, сильно отличающийся от Java. Программа JavaScript может быть встроена в веб-страницу с тегом HTML <script>.
Инструкции JavaScript, следующие за этим тегом, будут выполняться браузером при выборе страницы. Для ускорения отображения динамических (интерактивных) страниц JavaScript часто комбинируется с XML или каким-либо другим языком для обмена информацией между сервером и браузером клиента. В частности, команда XMLHttpRequest позволяет выполнять асинхронные запросы данных с сервера, не требуя от сервера повторной отправки всей веб-страницы. Этот подход, или “философия” программирования, называется Ajax (асинхронный JavaScript и XML).
Сценарий VB является подмножеством Visual Basic. Первоначально разработанный для пакета офисных программ Microsoft, он позже также использовался для веб-сценариев. Его возможности аналогичны возможностям JavaScript, и он может быть встроен в HTML таким же образом.
За использованием таких языков сценариев для веб-программирования лежит идея компонентного программирования, в котором программы создаются путем объединения независимых ранее написанных компонентов без какой-либо дальнейшей языковой обработки. Программы скриптов JavaScript и VB были разработаны как компоненты, которые могут быть подключены к веб-браузерам для управления тем, как они отображают информацию.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.