Языки программирования
Скорее всего вы просматриваете эту статью через браузер и, конечно же, этот браузер написан на каком-то языке программирования. Но как машина понимает этот язык, и то, что человек, пишущий свою программу, имел в виду? Да и какие вообще бывают языки и для чего они предназначены?
Для ответа на эти вопросы необходимо в теории понять принцип работы языков. И стоит начать издалека.
Восприятие ЯП машиной
На самом деле для компьютера любая информация записывается нулями и единицами, это называют машинным кодом. Только такой язык понимает процессор. Такой код не читабелен, да и в понимании он тоже не прост. Потому и были разработаны языки программирования, которые являются договоренностью между программистом и машиной. Но и здесь не всё гладко.
Пусть это и компромисс, но процессор всё равно не поймет эту запись. Потому для этого были созданы специальные конвертеры, которые называются трансляторами. Они переводят код высокоуровневого языка на машинный.
Существует три вида трансляторов:
- Компилятор
Конвертирует код в машинный целиком перед его исполнением. Сохраняет результат в файл (обычно это .exe файл). Этот файл может быть запущен на любом другом компьютере без транслятора.
Процесс компиляции довольно длительный, так как транслятор переводит конструкции и проверяет, будет ли понимать их процессор. В отличие от интерпретатора(о нем пойдет дальше) использует больше памяти, но быстрее запускает программу.
- Интерпретатор
Переводит лишь одну инструкцию кода за раз. Выполнение и конвертация происходят перед выполнением блока кода. Принцип такой работы называется «line by line». Использует куда меньше памяти в отличие от компилятора. Программа работает медленнее.
Основной причиной использования интерпретатора — это тестирование на этапе разработки. Программисты быстро могут выявить ошибки и исправить их. Для запуска программы необходимо участие самого транслятора.
- Ассемблер
Данный тип написан специально для языка Ассемблер(Не путать понятие языка и транслятора!). Синтаксис языка называется мнемоникой, и Ассемблер его переводит в машинный код. Получается, что для удобства написания программ, создали языки программирования и трансляторы. Но вернемся к браузеру.
Тот же браузер является обычной программой. Известно, что программа — это набор определенных инструкций, которые реализованы в виде кода. Код любого языка программирования является его синтаксисом. И этот синтаксис понятен человеку.
Классификация языков
Мы уже знаем, как компьютер понимает языки, но что насчет квалификации языков? Итак, языки программирования разделяются на уровни. Их всего два:
- языки низкого уровня;
- языки высокого уровня.
К языкам низкого уровня относятся машинные языки и машинно-ориентированные (промежуточные). Их синтаксисом будут являться мнемоники, произошедшие от сокращений человеческих слов. Использовать такое намного комфортабельнее, нежели запоминать последовательности нулей и единиц.
Кстати, разные процессоры используют разные версии языка, так как имеют разную архитектуру. К ним относятся:
- Assembler
Языки высокого уровня созданы для работы с абстракциями, потому они довольно просты в освоении и использовании. Так как синтаксис компьютеру непонятен, то используют различные трансляторы.
Также языки высокого уровня делятся на три подкатегории:
- Процедурные (алгоритмические) — 1С, Pascal, C и другие
- Логические — Prolog, Lisp и так далее
- Объектно-ориентированные — С++, C#, Java, Python, Kotlin и остальные
К ним относятся:
- C++
- C#
- Python
- Ruby
- Java
- Kotling
- PHP
- Swift 4
Вот так работает компьютер с языками программирования, теперь разберем несколько популярных языков.
Обзор некоторых популярных языков
C++
С++ — это высокопроизводительный язык программирования, который появился в 80-х годах благодаря скрещиванию C и Simula. И все тепло восприняли этот язык, так как он быстрый, объектно-ориентированный, упрощает работу с крупными программами, а также имеет потенциал в разработках и развитии. Скорость исполнения кода очень высока.
Он имеет высокую скорость исполнения кода, что делает конечный продукт таким же, с другой стороны такая скорость забирает время на написание, что делает разработку проекта более медленной. На интерпретируемых языках же типа Java или C# с этим куда проще. На них можно писать сложные программы и делать это быстро из-за обилия синтаксического сахара. Но падает скорость.
Этот язык очень универсален, на нем можно создавать практически все:
- игры,
- десктопные приложения,
- тяжелые программы,
- веб-приложения,
- мобильные приложения,
- нейронные сети,
- микроконтроллеры,
- роботы.
Этот язык быстро развивается и имеет большое сообщество, а это означает, что есть множество полезных библиотек, шаблонов и других готовых решений, и не нужно изобретать «велосипед» или костыли.
C#
С# — объектно-ориентированный язык, который был создан в 2000-ом году компанией Microsoft. Многие конструкции в нем повторяют конструкции из языков C++ и Java. И язык обзавелся своим большим комьюнити. Он довольно прост в изучении, и подойдет как первый язык для начинающего.
Из плюсов можно отметить то, что он работает на технологии .NET Framework, она позволяет писать один и тот же проект на разных языках, так как C# интерпретируется в промежуточный язык IL. Также у языка очень много синтаксического сахара, что делает разработку намного быстрее, да и кроме того, код также становится более удобочитаемым. На этом языке также не придется изобретать велосипеды или костыли, так как есть уже множество готовых решений — шаблоны, библиотеки.
Также из-за своей популярности в интернете можно найти очень много учебного материала, или ответ на свой вопрос. У языка есть довольно функциональный инструментарий, речь идет о Visual Studio. Ну и так как это ООП язык, то объектный подход здесь во всем.
На этом языке также можно делать кучу проектов разного плана:
- десктопные приложения,
- мобильные приложения,
- веб-приложения и сервисы,
- игры.
Python
Python — скриптовой язык, который так же как и два предыдущих является универсальным. Решает широкий спектр задач, связанные с большим количеством данных, созданием мобильных приложений или десктопных программ, а также веб-приложений.
Он очень прост, и отлично подходит как первый язык. У него очень низкий порог вхождения. Чтобы понять насколько, стоит глянуть хотя бы банальный вывод в консоль.
C++:
#include <iostream>
int main() {
std::cout << «Привет Мир!»;
return 0;
}
Python:
print «Привет!»
И последнюю запись поймет даже тот, у кого нет технического образования. Большие проекты выглядят, конечно же, не так просто, но в понимании это язык все равно очень легок.
На этом языке сделано немало популярных проектов, например, Google Chrome на десктопе, Gimp полностью написан на нем. Также он использовался в разработке AAA-проектов: BattleField 2, EVE online.
Конечно на нем не создавали всю игру, обычно питон используют для разработки отдельных компонентов, как в случае с BattleField 2 создавали лишь серверную часть.
Java
Язык выпущен в 1995 году. Так же как и все языки выше он объектно-ориентированный. Он является кроссплатформенным, так как работает на большинстве операционных систем. Язык так же как и C++/C# имеет огромное комьюнити и можно найти либо ответ на свой вопрос с реализацией в коде, либо найти много учебного материала, что позволяет изучить язык самостоятельно с нуля. C# во многом схож с Java, потому перейти с C# на Java или наоборот будет довольно просто.
Из недостатков: языку не хватает скорости и синтаксического сахара. Есть моменты, где одна строка кода на C++ может заменить 5 строк на Java.
Но в чем огромный плюс Java перед остальными, так это в том, что процесс компиляции под разные системы очень прост, так как у него есть виртуальная машина. Если же для компиляции на C++ (Перевод из языка программирования в машинный код) нужно учитывать особенности разных операционных систем, конфигураций, процессоров, но на Java есть виртуальная машина. Она знает, как оптимизировать абсолютно любую команду на Java под любые операционные системы. А значит, такой код можно запустить и на телефоне, и на мобильном устройстве.
Также огромным плюсом языка является то, что он не зависит от архитектуры и платформы. Java-разработчик пишет только логику работы, а всю грязную работу сделает JVM(Java Virtual Machine)
Итог
Языки программирования хоть и являются компромиссом между компьютером и человеком, но компьютер все равно не может его понять, потому были созданы трансляторы. Они переводят ЯП в инструкции, понятные процессору. Языки же делятся на низкоуровневые и высокоуровневые.
Высокоуровневые языки различаются между собой спектром задач, которые они решают. Один и тот же язык может выполнить одну задачу, но у одного из них это получится быстрее, либо менее затратно, потому что второй язык разработан для этих процессов.