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

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

Для ответа на эти вопросы необходимо в теории понять принцип работы языков. И стоит начать издалека.

Восприятие ЯП машиной

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

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

Существует три вида трансляторов:

  • Компилятор

Конвертирует код в машинный целиком перед его исполнением. Сохраняет результат в файл (обычно это .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)

Итог

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *