ЯЗЫКИ ПРОГРАММИРОВАНИЯ, ЧАСТЬ I
Язык программирования — это инструмент написания компьютерных программ.
Чем лучше понимаешь инструмент — тем точнее можешь его использовать.
Программа — это описание какого-то процесса на языке программирования. Например, робота можно запрограммировать на уборку квартиры, приготовление еды или мытье посуды, написав для робота программу. Без программы робот будет просто стоять, или вообще лежать, потому что держать баланс на двух ногах (если у робота они есть) — это еще одна программа.
Язык программирования — это не закон природы, а простое соглашение между людьми. Люди договорились о порядке и значении слов и символов, чтобы создавать программы для компьютеров и понимать код программ друг друга.
Слова и символы в языке программирования называются токенами. Последовательности токенов, образующие программу, называются исходным кодом (source code). Раньше программы печатали на перфокартах, сейчас код пишут в текстовых файлах. Процессор (CPU) — главный компонент компьютера, отвечающий за выполнение программ — может прочитать программу только в машинном коде. Машинный код — это список инструкций процессора, которые он поддерживает. Исходный код переводится в машинный код с помощью программы-переводчика — компилятора или интерпретатора.
Исходный код на высокоуровневом языке:
function example() {
console.log("HEY 👴🏽");
}
Машинный код:
1000101101010111
1001100011010101
0011010111010101
0010100000011011
…
Как в любом естественном языке, языки программирования также обладают грамматикой, синтаксисом и семантикой. Синтаксис языка определяет в какой последовательности должны стоять токены, чтобы образовать грамматически валидные конструкции, а семантика языка определяет значение токенов.
Например, в языке JavaScript токен function является ключевым словом. Семантика токена function означает объявление функции (function declaration).
Исходный код на любом языке программирования должен соответствовать правилам синтаксиса и грамматики, чтобы его можно было легко перевести в машинный код.
Представьте, если бы программисты писали код, не соблюдая грамматику языка. Тогда программа-переводчик была бы очень сложной, ей бы приходилось перебирать миллионы возможных вариантов написания одного и того же кода, чтобы правильно перевести его в инструкции процессора. Более того, программистам было бы сложнее читать код друг друга, без определенной структуры.
Программы-переводчики также пишут программисты. Программисты не хотят предусматривать миллионы вариантов объявления функции, поэтому в языках программирования строго определена грамматика и синтаксис, это сильно упрощает перевод кода в машинный.
Синтаксис объявления функции в языке JavaScript:
function example() {
// тело функции
}
Синтаксис объявления функции в языке Python:
def example():
# тело функции
Язык программирования сам по себе ничего не умеет, это просто последовательности символов, которые люди наделили смыслом. Когда говорят, например, что «язык медленный» имеют ввиду не сам язык, а конкретную реализацию языка. Реализация языка — это компилятор или интерпретатор — программа, которая переводит язык программирования в машинный код.
Например, CPython — реализация языка Python, написанная на языке C, считается медленнее, чем другая реализация языка — PyPy, написанная на Python. Да, такое тоже бывает. Интерпретатор языка Python может быть написан на языке Python и с помощью другой реализации языка, например на языке С скомпилирован в машинный код. Тогда становится не важно какой язык был использован изначально для реализации языка Python, потому что в результате он становится просто набором инструкций процессора в машинном коде.
У языка JavaScript, как и у любого другого, также множество реализаций (интерпретаторов), их еще называют движками. Самый популярный интерпретатор JavaScript — V8 написанный в Google.
Вне зависимости от реализации языка — синтаксис, грамматика и семантика языка не меняются.
Язык программирования — это инструмент написания компьютерных программ.
Чем лучше понимаешь инструмент — тем точнее можешь его использовать.
Программа — это описание какого-то процесса на языке программирования. Например, робота можно запрограммировать на уборку квартиры, приготовление еды или мытье посуды, написав для робота программу. Без программы робот будет просто стоять, или вообще лежать, потому что держать баланс на двух ногах (если у робота они есть) — это еще одна программа.
Язык программирования — это не закон природы, а простое соглашение между людьми. Люди договорились о порядке и значении слов и символов, чтобы создавать программы для компьютеров и понимать код программ друг друга.
Слова и символы в языке программирования называются токенами. Последовательности токенов, образующие программу, называются исходным кодом (source code). Раньше программы печатали на перфокартах, сейчас код пишут в текстовых файлах. Процессор (CPU) — главный компонент компьютера, отвечающий за выполнение программ — может прочитать программу только в машинном коде. Машинный код — это список инструкций процессора, которые он поддерживает. Исходный код переводится в машинный код с помощью программы-переводчика — компилятора или интерпретатора.
Исходный код на высокоуровневом языке:
function example() {
console.log("HEY 👴🏽");
}
Машинный код:
1000101101010111
1001100011010101
0011010111010101
0010100000011011
…
Как в любом естественном языке, языки программирования также обладают грамматикой, синтаксисом и семантикой. Синтаксис языка определяет в какой последовательности должны стоять токены, чтобы образовать грамматически валидные конструкции, а семантика языка определяет значение токенов.
Например, в языке JavaScript токен function является ключевым словом. Семантика токена function означает объявление функции (function declaration).
Исходный код на любом языке программирования должен соответствовать правилам синтаксиса и грамматики, чтобы его можно было легко перевести в машинный код.
Представьте, если бы программисты писали код, не соблюдая грамматику языка. Тогда программа-переводчик была бы очень сложной, ей бы приходилось перебирать миллионы возможных вариантов написания одного и того же кода, чтобы правильно перевести его в инструкции процессора. Более того, программистам было бы сложнее читать код друг друга, без определенной структуры.
Программы-переводчики также пишут программисты. Программисты не хотят предусматривать миллионы вариантов объявления функции, поэтому в языках программирования строго определена грамматика и синтаксис, это сильно упрощает перевод кода в машинный.
Синтаксис объявления функции в языке JavaScript:
function example() {
// тело функции
}
Синтаксис объявления функции в языке Python:
def example():
# тело функции
Язык программирования сам по себе ничего не умеет, это просто последовательности символов, которые люди наделили смыслом. Когда говорят, например, что «язык медленный» имеют ввиду не сам язык, а конкретную реализацию языка. Реализация языка — это компилятор или интерпретатор — программа, которая переводит язык программирования в машинный код.
Например, CPython — реализация языка Python, написанная на языке C, считается медленнее, чем другая реализация языка — PyPy, написанная на Python. Да, такое тоже бывает. Интерпретатор языка Python может быть написан на языке Python и с помощью другой реализации языка, например на языке С скомпилирован в машинный код. Тогда становится не важно какой язык был использован изначально для реализации языка Python, потому что в результате он становится просто набором инструкций процессора в машинном коде.
У языка JavaScript, как и у любого другого, также множество реализаций (интерпретаторов), их еще называют движками. Самый популярный интерпретатор JavaScript — V8 написанный в Google.
Вне зависимости от реализации языка — синтаксис, грамматика и семантика языка не меняются.