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

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

Языки программирования восходят почти к изобретению цифрового компьютера в 1940-х годах. Первые сборочные языки появились в конце 1950-х годов с внедрением коммерческих компьютеров.

Первые процедурные языки были разработаны в конце 1950-х – начале 1960-х годов: Fortran (Формула перевода), созданный Джоном Бэкусом, а затем COBOL (Общий, ориентированный на бизнес, Язык), созданный Грейс Хоппер.

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

В конце 1960-х годов появились первые объектно-ориентированные языки, такие как SIMULA. Логические языки стали известны в середине 1970-х с введением PROLOG, языка, используемого для программирования программного обеспечения искусственного интеллекта. В течение 1970-х годов процедурные языки продолжали развиваться вместе с ALGOL, BASIC, PASCAL, C и Ada.
SMALLTALK был очень влиятельным объектно-ориентированным языком, который привел к слиянию объектно-ориентированных и процедурных языков в C++ и совсем недавно в JAVA. Хотя чистые логические языки снизились в популярности, вариации стали жизненно важными в виде реляционных языков для современных баз данных, таких как SQL (Язык структурированных запросов).

Алгоритмический язык

Алгоритмический язык

Язык программирования в информатике – искусственный язык, используемый для написания последовательности инструкций (компьютерной программы), которые могут выполняться компьютером.
Подобно естественным языкам, таким как английский, языки программирования имеют словарный запас, грамматику и синтаксис. Но, естественные языки не подходят для программирования компьютеров, потому что слова в них, словосочетания и выражения имеют разное значения (неоднозначны) и их словарный запас, и грамматическая структура могут быть интерпретированы несколькими способами, а тогда машина их попросту не сможет понять и выполнить непонятные поставленные задачи.
Языки, используемые для программирования компьютеров, должны иметь простые, понятные для машины, команды, точно передавать логические структуры, соблюдать правила грамматики, орфографии и пунктуации.
Языки программирования сильно различаются по своей сложности и степени универсальности. Некоторые языки программирования написаны для решения определенного вида вычислительной проблемы или для использования на конкретной модели компьютерной системы. Например, языки программирования, такие как Fortran и COBOL, были написаны для решения некоторых общих типов задач программирования—Fortran для научных приложений и COBOL для бизнес-приложений.
Хотя эти языки были разработаны для решения конкретных категорий компьютерных проблем, они очень портативны, а это означает, что они могут быть использованы для программирования многих типов компьютеров. Другие языки, такие как языки машины, конструированы быть использованным одной специфической моделью компьютерной системы, или даже одним специфическим компьютером в некоторых применениях исследования. Наиболее часто используемые языки программирования очень портативны и могут быть использованы для эффективного решения различных типов вычислительных задач. Такие языки как C, PASCAL и BASIC попадают в эту категорию.

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

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

Языки программирования можно классифицировать как языки низкого уровня или языки высокого уровня. Низкоуровневые языки программирования (языки машины) – это самый основной тип языков программирования и могут быть поняты сразу компьютером. Языки машин различаются в зависимости от производителя и модели компьютера.
Языки высокого уровня – это языки программирования, которые сначала должны быть переведены на машинный язык специальными программами – компиляторами, а затем они будут поняты и обработаны компьютером.
Примерами языков высокого уровня являются Фортран, Си, Си++, Си#, Java, JavaScript, PHP.
Языки сборки являются промежуточными языками, которые очень близки к машинному языку, и не имеют уровня языковой сложности, проявляемой другими языками высокого уровня, но все же они тоже должны быть скомпилированы, то есть переведены на машинный язык.
Иногда сборка может быть быстрее, чем скомпилированный язык или, напротив, скомпилированный язык часто быстрее сборки, так как программисты, пишущие компиляторы грамотно владеют архитектурой ЦП, намного шире, чем обычные программисты.
Профессиональный программист по сборке может написать очень эффективный и более емкий код сборки (меньше инструкций, больше функциональных инструкций, simd), чем автоматически генерирующий компилятор.

Машинные языки

В машинных языках инструкции записываются как последовательности 1s и 0s, называемые битами, которые компьютер может понять непосредственно.
Инструкция на машинном языке обычно указывает компьютеру четыре вещи:

  1. где найти одно или два числа, или просто куски данных в основной памяти компьютера (ОЗУ);
  2. простая операция в исполнении, например, добавить два числа вместе;
  3. где в основной памяти поставить ответ в результате этой нехитрой операции;
  4. где искать инструкции для выполнения следующих команд или задач.

В то время как все исполняемые программы в конечном итоге считываются компьютером на машинном языке, они не все запрограммированы только лишь на машинном языке. Очень долго и трудно писать код на чистом машинном языке, потому что инструкции представляют собой последовательности только 1s и 0s, программы получаются огромными, громоздкими. Типичная инструкция на машинном языке может читать 10010 1100 1011 и означать добавление содержимого регистра хранения А к содержимому регистра хранения B.

Языки высокого уровня

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

Ассемблер

Ассемблер

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

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

Языки высокого уровня обычно классифицируются как процедурно ориентированные, функциональные, объектно-ориентированные или логические языки. Наиболее распространенными языками высокого уровня на сегодняшний день являются процедурно ориентированные языки. В этих языках, один или больше связанных блоков с заявлениями, которые выполняют некоторые полные функции, группируются в программу модуля или процедуры, и дают имя, такое как «процедура А». Если же некая последовательность операций необходимые в любом месте программы, то может использоваться простое заявление, чтобы обратиться к процедуре. По сути, процедура – это просто мини программа. Большая программа может быть построена путем объединения процедур, которые выполняют различные задачи. Процедурные языки позволяют программам быть короче и легче для чтения компьютером, но они требуют, чтобы программист конструировал каждую процедуру для достаточного использования в различных ситуациях.
Функциональные языки относятся к процедурам – математическим функциям, и позволяют их обрабатывать, как и любые другие данные в программе. Это более высокий и более неукоснительный уровень конструкции программы.
Функциональные языки также позволяют переменным символам для данных определять и изменяться пользователем. Во время работы программ значения можно поменять один раз, не прибегая к этому постоянно. Это упрощает программирование, уменьшая необходимость быть связанным с точным порядком выполнения оператора, так как переменная не должна быть переопределена или пересчитана, каждый раз, когда она используется в программном операторе.
Большинство идей функциональных языков стали ключевыми частями многих современных процедурных языков.

Объектно-ориентированные языки произошли из функциональных языков.

В объектно-ориентированных языках код, используемый для записи программы, и данные, обрабатываемые программой, сгруппированы в единицы, называемые объектами.
Далее объекты группируются в классы, определяющие атрибуты, которые должны иметь объекты. Бывают новые и короткие объекты класса.
Объекты также имеют определенные связанные с ними функции, называемые методами. Компьютер обращается к объекту с помощью одного из методов объекта. Метод выполняет определенные действия с данными в объекте и возвращает это значение в компьютер.
Классы объектов также можно группировать в иерархии, в которых объекты одного класса могут наследовать методы другого класса. Структура, представленная в объектно-ориентированных языках, делает их очень полезными для сложных задач программирования.
Логические языки используют логику в качестве своей математической базы. Логическая программа состоит из наборов фактов и правил if-then, которые определяют, как один набор фактов может быть выведен из других, например:
Если высказывание X истинно, то утверждение Y является ложным.
При выполнении такой программы оператор ввода может логически выводиться из других операторов в программе. Многие программы искусственного интеллекта написаны на таких языках.

Языковая структура и компоненты

Языки программирования используют определенные типы инструкций или инструкций для обеспечения функциональной структуры программы. Заявление в программе является основным предложением, которое выражает простую идею – его цель состоит в том, чтобы дать компьютеру базовую инструкцию. Инструкции определяют типы разрешенных данных, порядок обработки данных и способы работы процедур и функций. Программисты используют операторов для управления общими компонентами языков программирования, такими как переменные и макросы (мини программы в программе).
Операторы, известные как объявления данных, дают имена и свойства элементам программы, называемой переменными. Переменным могут быть присвоены различные значения внутри программы. Переменные каких-либо свойств могут иметь типы, и они включают возможные значения, которые могут быть сохранены в переменных, сколько числовой точности будет использоваться в значениях и как одна переменная может представлять коллекцию более простых значений организованным образом, например, таблицу или массив. Во многих языках программирования ключевым типом данных является указатель.
Переменные указатели сами по себе не имеют значения; они имеют информацию о том, что компьютер могут использовать для поиска какой-то другой переменной, то есть они указывают на другую переменную.
Выражение является частью инструкции, описывающую серию вычислений для выполнения на некоторых переменных или частью программ, таких как X + Y / Z, в котором переменные X, Y и Z и вычисления сложения и деления. Инструкция присваивания: присваивает переменной значение производное от некоторого выражения, а условные операторы указывают выражения для тестирования и использования дальнейших действий и выбора нужных операторов.
Инструкции Procedure и function выполняют определенные блоки кода как процедуры или функции, которые затем могут быть возвращены позже в программе. Эти операторы также определяют типы переменных, параметров, и тип значения, которые программист может выбрать. А код их возвращает, когда выражение обращается к процедуре или функции.
Многие языки программирования также позволяют программы minitranslation, называемые макросами. Макросы переводят сегменты кода, написанные программистом в определенной языковой структуре в операторы, которых понимает язык программирования.

Роман
Оцените автора
Безопасник
Добавить комментарий

  1. рика

    Привет

    Ответить