что такое язык программирования? - PullRequest
3 голосов
/ 15 мая 2009

Википедия говорит:

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

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

Спасибо!

г.

Ответы [ 8 ]

6 голосов
/ 15 мая 2009

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

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

4 голосов
/ 15 мая 2009

Я не вижу, что отличается от того, что вы спрашиваете ...

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

... и определение Википедии.

Ключ в том, что язык программирования - это просто "машиночитаемый искусственный язык".

3 голосов
/ 15 мая 2009

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

Языки программирования не ограничиваются традиционными компьютерами (см. K'NEX Computer ) и даже не обязательно ограничиваются вычислительными устройствами вообще. Например, когда я доволен поведением моей собаки, он получает удовольствие. Когда я недоволен, он ничего не получает. Со временем собака учится программировать лакомство / нет лакомства, и я могу использовать лакомства, чтобы контролировать его поведение (в определенной степени).

3 голосов
/ 15 мая 2009

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

Тем не менее, существует много языков (Привет, PHP!), В которых компилятор является единственной спецификацией языка, которая существует. Эти языки иногда изменяются непредсказуемо, так как ошибки компилятора исправлены или введены.

2 голосов
/ 15 мая 2009

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

1 голос
/ 16 февраля 2016

Это, вероятно, истинное объяснение того, что на самом деле является языком программирования:

Шаг 1. Подумайте о языке и его грамматике, которая представляет собой набор правил для создания синтаксически допустимых утверждений с использованием языка. Например, язык с именем GRID имеет плитки {0,1} в качестве правил алфавита и грамматики, которые гарантируют, что каждый оператор GRID имеет одинаковую длину и высоту.

Шаг 2 (определение программы): пока GRID бесполезен. Я бы осмелился думать о любом действительном утверждении GRID как о просто данных. Нам нужно добавить еще кое-что в GRID: функцию-преемник. Итак, GRID = {Грамматика, алфавит, функция-преемник}. Чтобы сделать это понятным, давайте использовать правила «Игры жизни» в качестве функции преемника.

Шаг 3: Игра Жизни фактически завершена по Тьюрингу, поэтому GRID = {Грамматика, алфавит, функция преемника = GOL} может выполнять любые вычисления, которые можно вычислить.

Язык программирования - это не что иное, как язык с функцией-преемником. Среда, которая оценивает правильное утверждение языка (программы), выполняет только последующие функции. Например, переменные - это вещи, чьи функции-преемники = (ОСТАВАЙТЕСЬ ЖЕ)

Компьютеры - это просто очень быстрая среда;)

1 голос
/ 15 мая 2009

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

0 голосов
/ 30 декабря 2018

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

...