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

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

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

Первый машинный язык был придуман в 1941 году Конрадом Цузе, который является изобретателем аналитической машины. Чуть позже, в 1943 г., Говард Эйкен создал машину "Марк-1", способную считывать инструкцию на уровне машинного кода.

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

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

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

  • Аспектно-ориентированные (основная идея - разделение функциональности для увеличения эффективности программных модулей).
  • Структурные (в основе лежит идея создания иерархической структуры отдельных блоков программы).
  • Логические (в основе лежит теория аппарата математической логики и правил резолюции).
  • Объектно-ориентированные (в таком программировании используются уже не алгоритмы, а объекты, которые принадлежат определенному классу).
  • Мультипарадигмальные (сочетают в себе несколько парадигм, и программист сам решает, каким языком воспользоваться в том или ином случае).
  • Функциональные (в качестве основных элементов выступают функции, которые меняют значение в зависимости от результатов вычислений исходных данных).

Программирование для начинающих

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

  • Basic придуман в 1964 году, относится к семейству высокоуровневых языков и используется для написания прикладных программ.
  • Python ("Питон") довольно легко выучить благодаря простому читаемому синтаксису, преимущество же в том, что на нем можно создавать как обычные десктопные программы, так и веб-приложения.
  • Pascal ("Паскаль") - один из древнейших языков (1969 г.), созданных для обучения студентов. Его современная модификация имеет строгую типизацию и структурированность, однако "Паскаль" - вполне логичный язык, который понятен на интуитивном уровне.

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

Новички имеют возможность ускорить изучение программирования и его основ благодаря специальным инструментам. Основной помощник - это интегрированная среда разработки программ и приложений Visual Basic («Визуал Бейсик» одновременно является и языком программирования, который унаследовал стиль языка Basic 1970-х годов).

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

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

Низкоуровневые языки предназначены для создания машинных команд для процессоров. Главное их преимущество в том, что они используют мнемонические обозначения, т. е. вместо последовательности нулей и единиц (из двоичной системы счисления) компьютер запоминает осмысленное сокращенное слово из английского языка. Самые известные языки низкого уровня - это "Ассемблер" (существует несколько подвидов этого языка, каждый из которых имеет много общего, а отличается лишь набором дополнительных директив и макросов), CIL (доступен в платформе.Net) и Байт-код JAVA.

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

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

Следующий список языков программирования: C ("Си"), C# ("Си-шарп"), "Фортран", "Паскаль", Java ("Ява") - входит в число самых используемых высокоуровневых синтаксисов. Он обладает следующими свойствами: эти языки работают с комплексными структурами, поддерживают строковые типы данных и операции с файлами ввода-вывода информации, а также имеют преимущество - с ними гораздо проще работать благодаря читабельности и понятному синтаксису.

Самые используемые языки программирования

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

  • языки ООП: Java, C++, Python, PHP, VisualBasic и JavaScript;
  • группа структурных языков: Basic, Fortran и Pascal;
  • мультипарадигмальные: C#, Delphi, Curry и Scala.

Область применения программ и приложений

Выбор языка, на котором написана та или иная программа, во многом зависит от области ее применения. Так, например, для работы с самим "железом" компьютера (написания драйверов и поддерживающих программ) лучшим вариантом станет C ("Си") или С++, которые входят в основные языки программирования (список смотрите выше). А для разработки мобильных приложений, в том числе игр, следует выбрать Java или С# ("Си-шарп").

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

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

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

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

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

JavaScript хорош для добавления базовых элементов интерактивности веб-страницам, но когда код ваших веб-приложений состоит из тысяч строк, слабые места этого языка становятся заметны. Вот почему Google создала Dart - язык, который, как полагает компания, станет новым "родным" языком веб-программирования .

Как и в JavaScript, в Dart используются синтаксисы и ключевые слова, похожие на те, которые используются в языке C. Однако одним существенным различием является то, что в то время как JavaScript основывается на прототипах, объекты в Dart определяются с помощью классов и интерфейсов, как в C++ или Java . Также Dart позволяет программистам дополнительно задавать переменные со статическими типами. Идея заключается в том, чтобы сделать Dart таким же привычным, динамичным и гибким языком, как и JavaScript, который в то же время позволяет разработчикам писать коды, быстрые и лёгкие в выполнении, и в которых сложно сделать труднонаходимые ошибки.

Сегодня Dart мало где можно использовать. Он разработан для запуска либо на клиенте, либо на сервере (а-ля Node.js), но единственным способом запустить клиентскую версию Dart-кода является его кросскомпиляция в JavaScript. Однако и после этого он не будет запускаться во всех браузерах. Но так как Dart выпускается по бесплатной лицензии типа BSD , то любой продавец, который согласен с условиями Google, может свободно использовать этот язык в своих продуктах. Всё, что осталось сделать Google, - это убедить всю индустрию.

Код F# чем-то похож на код OCaml, но содержит свой собственный интересный синтаксис. Например, для облегчения проведения научных расчётов числовыми типами данных в F# могут являться единицы измерения. Также в F# имеются конструкции для облегчения асинхронных вводов/выводов, параллелизации ЦПУ и вывода процессов на графический процессор.

После длительного периода созревания в Microsoft Research, на сегодняшний день F# поставляется вместе с Visual Studio 2010 . Что ещё лучше, но не характерно для корпорации, Microsoft создала F# компилятор и корневую библиотеку, доступную по открытой лицензии Apache. Вы можете начать работу с ним бесплатно и даже использовать его на системах Mac и Linux (с помощью Mono runtime).

Естественно, с такого рода интегрированной системой в конце должно получиться что-то волшебное. Среда выполнения Opa объединяет собственный веб-сервер и систему управления базой данных , которые не могут быть заменены самостоятельными альтернативами. Как бы то ни было, это может быть не так уж и важно, учитывая возможность разработки современных веб-приложений , управляемых данными, с помощью всего лишь нескольких десятков строк кода. Opa поставляется бесплатно и на данный момент доступен для 64-х битных Linux и Mac OS X платформ, другие же порты пока разрабатываются.

Fantom распространяется бесплатно в соответствии с Academic Free License 3.0 и доступен для Windows и Unix-подобных платформ (в том числе и Mac OS X).

Исследуемый язык программирования №7: Zimbu

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

Единственной проблемой является портативность. Хотя Zimbu и является компилируемым языком, его компилятор выдаёт ANSI C код, а двоичные файлы могут быть созданы лишь на платформах со встроенным C-компилятором.

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

Исследуемый язык программирования №8: X10

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

Параллелизм в X10 возможен благодаря PGAS модели программирования (модели разделённого глобального адресного пространства). Код и данные выделяются в блоки и распределяются по разным "пространствам", тем самым облегчая шкалирование программы от однопотокового прототипа (одно пространство) до многопотокового, выполняемого на одном или более многоядерном процессоре (несколько пространств) в высокопроизводительном кластере .

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

А пока язык развивается, хотя он уже довольно разработан. Компилятор и среда выполнения доступны для различных платформ, в том числе Linux, Mac OS X и Windows. В качестве дополнительных утилит выступают интерактивная среда разработки (IDE), основанная на Eclipse, и отладчик, которые распространяются по лицензии Eclipse Public License.

Исследуемый язык программирования №9: haXe

Многие языки можно использовать для написания переносимого кода. C-компиляторы доступны практически для всех ЦПУ архитектур, а Java-байткод будет выполняться везде, где есть JVM. Но haXe (произносится как "хекс") является более чем просто переносимым. Это мультиплатформенный язык, который может использоваться в различных операционных средах, начиная от встроенных

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

Один из достаточно популярных языков Web-программирования, который, в прочем, на белорусском рынке труда не всегда способен обеспечить своего носителя топовым по заработной плате рабочим местом. Курсы Ruby вряд ли стоит изучать для освоения первого языка программирования, потому что с высокой долей вероятности поиски работодателя затянутся, ведь вакансии для junoir’ов на Ruby появляются довольно редко.

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

Рассказывает программист Вильям В. Вольд

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

Введение

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

Тем не менее, я написал абсолютно новый язык. И он работает. Наверное, я что-то делаю правильно.

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

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

Первые шаги

«А с чего вообще начинать?» - вопрос, который другие разработчики часто задают, узнав, что я пишу свой язык. В этой части постараюсь подробно на него ответить.

Компилируемый или интерпретируемый?

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

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

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

Прим. перев. Кстати, у нас есть краткий обзор - это отличное упражнение для тех, кто изучает Python.

Выбор языка

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

Но в целом совет можно дать такой:

  • интерпретируемый ЯП крайне рекомендуется писать на компилируемом ЯП (C, C++, Swift). Иначе потери производительности будут расти как снежный ком, пока мета-интерпретатор интерпретирует ваш интерпретатор;
  • компилируемый ЯП можно писать на интерпретируемом ЯП (Python, JS). Возрастёт время компиляции, но не время выполнения программы.

Проектирование архитектуры

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

Лексический анализатор / лексер

Строка исходного кода проходит через лексер и превращается в список токенов.

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

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

Flex

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

Одним из основных таких инструментов является Flex - генератор лексических анализаторов. Он принимает на вход файл с описанием грамматики языка, а потом создаёт программу на C, которая в свою очередь анализирует строку и выдаёт нужный результат.

Моё решение

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

Синтаксический анализатор / парсер

Список токенов проходит через парсер и превращается в дерево.

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

Bison

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

Преимущества кастомных программ

С лексером моё решение писать и использовать свой код (длиной около 200 строк) было довольно очевидным: я люблю задачки, а эта к тому же относительно тривиальная. С парсером другая история: сейчас длина кода для него - 750 строк, и это уже третья попытка (первые две были просто ужасны).

Тем не менее, я решил делать парсер сам. Вот основные причины:

  • минимизация переключения контекста ;
  • упрощение сборки;
  • желание справиться с задачей самостоятельно.

В целесообразности решения меня убедило высказывание Уолтера Брайта (создателя языка D) в одной из его статей :

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

Абстрактный семантический граф

Переход от синтаксического дерева к семантическому графу

В этой части я реализовал структуру, по своей сути наиболее близкую к «промежуточному представлению» (intermediate representation) в LLVM. Существует небольшая, но важная разница между абстрактным синтаксическим деревом (АСД) и абстрактным семантическим графом (АСГ).

АСГ vs АСД

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

Запуск

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

Варианты компиляции

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

Написать свой компилятор

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

2) Что такое язык программирования стр. 2

3) Для чего нужны языки программирования стр. 3

4) Какие существуют языки программирования стр. 4 – 7

5) Что такое компилятор и интерпретатор стр. 8

6) Список использованной литературы стр. 9

Введение

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

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

Однако в течение 60-х цена на компьютеры стала падать так, что даже небольшие компании могли их себе позволить; скорость компьютеров всё увеличивалась и наступило время, когда они стали часто простаивать без задач. Чтобы этого не происходило, стали вводить системы с разделением времени (time-sharing).

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

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

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

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

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

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

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

Для чего нужны языки программирования

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

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

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

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

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

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

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

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

Фортран

Языки программирования стали появляться уже с середины 50-х годов. Одним из первых языков такого типа стал язык Фортран (англ. FORTRAN от FORmulaTRANslator – переводчик формул), разработанный в 1957 году. Фортран применяется для описания алгоритма решения научно-технических задач с помощью ЦВМ. Так же, как и первые вычислительные машины, этот язык предназначался, в основном, для проведения естественно-научных и математических расчётов. В усовершенствованном виде этот язык сохранился до нашего времени. Среди современных языков высокого уровня он является одним из наиболее используемых при проведении научных исследований. Наиболее распространены варианты Фортран-II, Фортран-IV, EASICFortran и их обобщения.

Алгол

После Фортрана в 1958-1960 годах появился язык Алгол (Алгол-58, Алгол-60) (англ. ALGOL от ALGOrithmicLanguage – алгоритмический язык).Алгол был усовершенствован в 1964-1968 годах – Алгол-68.Алгол был разработан комитетом, в который входили европейские и американские учёные.Он относится к языкам высокого уровня (high-level language) и позволяет легко переводить алгебраические формулы в программные команды. Алгол был популярен в Европе, в том числе СССР, в то время как сравнимый с ним Фортран был распространен в США и Канаде. Алгол оказал заметное влияние на все разработанные позднее языки программирования, и, в частности, на язык Pascal. Этот язык так же, как и Фортран, предназначался для решения научно-технических задач. Кроме того, этот язык применялся как средство обучения основам программирования – искусства составления программ.

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

Кобол

В 1959 – 1960 годах был разработан язык Кобол (англ. COBOL от COmmom Business Oriented Language – общий язык, ориентированный на бизнес). Это язык программирования третьего поколения, предназначенный, в первую очередь, для разработки бизнес приложений.Также Кобол предназначался для решения экономических задач, обработки данных для банков, страховых компаний и других учреждений подобного рода. Разработчиком первого единого стандарта Кобола являлась Грейс Хоппер (бабушка Кобола ).

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




Top