Сегодня разберемся немного в теории языков программирования.
Какие языки программирования для чего лучше использовать?
Как подходить к изучению первого языка программирования?
Я думаю вы уже слышали о многих языках программирования:
С, С++, Python, Java, Golang, Assembler и другие.
Я попробую структурировать у вас в чем их отличие, и какой для чего лучше применять. Как программистов, наша цель - чтобы компьютеры нас понимали. Вот почему мы выражаем наши задачи на языке программирования -это язык, который машина понимает. Как, вы уже знаете, c прошлой статьи, процессор понимает, только заготовленный заранее и ограниченный набор микрокоманд. Теоретически мы могли бы использовать их напрямую, но это не совсем удобно для человека, хотя так и было раньше. Мы думаем наборами идей и объектов, которыми манипулируем в своей голове, а не сухим набором цифр.
Давайте, для начала, посмотрим вглубь, что такое язык?
Язык — это сложная знаковая система, естественно или искусственно созданная и соотносящая содержание и звучание или написание.
То есть, любой язык состоит из двух частей:
1. Cинтаксис - это привила написания.
2. Семантика - это смысла написанного или сказанного. Обозначает что вы делаете, назначение вашего кода. Выделить память, создать массив, записать в файл. Это семантика языка. По сути, семантика несет контекст, того что вы делаете. Например, вы создаете игру, автоматизируете расчеты или пишите веб-сайт.
Давайте также посмотрим в историю.
На первом этапе, при первых ЕВМ. Программисты использовали машинные коды напрямую. Набор нулей и единиц. Минусами этого подхода была непереносимость на другие архитектуры, по этому для различных машин, программу надо было переписывать, а так же это было сложно читать и писать людям.
Позже были изобретены ассемблеры.
Появились команды, в виде мнемоник, а также названия адресов памяти.
Но их использования несло определенные минусы, из-за их сложности, писать большие приложения было невероятно трудно. Потому что, ассемблеры - были ближе к машинному коду, чем к человеческому языку. И они тоже были архитектурно зависимы.
Дальше появились более высокоуровневые языки, типа FORTRAN, COBOL (COmmon Business Oriented Language), LISP(LISt Processing language — «язык обработки списков»; современное написание: Lisp)
Они уже не были привязаны к конкретной архитектуре и были ближе к человеческим языкам, чем к компьютеру. Кстати, эти языки до сих пор используются в реальном мире. Например, COBOL до сих пор можно встретить в американских банках. А LISP используют в научных расчетах и при обучении.
В дальнейшем языки эволюционировали и впитывали различные новые парадигмы, которые были необходимы программистам для решения задач. Я думал сразу расcказать о различных парадигмах. Но решил что без должной базы - это слишком рано.
Что ж, какой вывод мы можем сделать?
Языки можно условно разделить на два вида:
Низкоуровневые(который ближе к компьютеру);
Высокоуровеные (которые больше похожи на человеческий язык);
Код мы пишем для людей.
Главная качество хорошего кода - он понятен для других программистов.
Языки отличаются в зависимости от реализации.
Первый вариант, это компиляция.
Компиляция - превращение написанного исходного кода в машинный код. И запуск, как отдельная программа.
Превращением в машинный код занимается компилятор.
Еще современные компиляторы занимаются оптимизацией вашего кода. Если что-то можно не исполнять или упростить. Компилятор упрощает. Потому и нельзя жертвовать простотой и чистотой кода в целях микрооптимизаций.
Второй вариант интерпретация.
Интерпретация - это означает, что исходный код выполняется непосредственно, без прямого превращение в машинный код, команда за командой с помощью специальной программы интерпретатора.
Чаще скрипты написанные для интерпретатора работают медленнее скомпилированного кода. Но за то, вам не надо ждать окончания компиляции программы, код выполняется сразу шаг за шагом.
Третий вариант
Смешанные модели, когда ваш код компилируется в некий байт-код, который выполняется уже виртуальной машиной или интерпретатором, но пока это не важно.
Обычно язык программирования можно реализовать по-разному, как интерпретатор, так и как компилятор. На данном, этапе можете не переживать какую реализацию использовать, а брать стандартную, подходящую для вашей платформы.
Поговорим, о современном программировании и о самых популярных языках.
Для чего какие языки обычно используют на практике:
Для мобильной разработки - это java, swift, obj-c
Для написания игр и микроконтроллеров: C++, C, Rust
Потому что эти языки близки к железу и вы можете писать очень быстрый оптимизированный код.
Веб-разработку, можно разбить на две части:
Frontend - то что вы видите в браузере используют JavaScript, TypeScript, Dart
Которые в итоге компилируются в JavaScript который интерпретируется движком браузера
Backend -это Python, Ruby, Java, PHP, Go.
Тут ваш выбор зависит от личных предпочтений и требований бизнеса.
Какой же язык использовать для обучения?
Я предлагаю использовать Python - потому что он очень простой и близок к английскому языку.
С помощью него, легко заложить основы программирования, выучить алгоритмы и структуры данных. Он один из самых популярных. И если вы захотите сменить на другой, то у вас это легко получится. Это высокоуровневый интерпретируемый язык программирования. Стандартная реализация которого - это интерпретатор Cpython.
Дальше возможно стоит посмотреть на С или С++, чтобы, понимать как работает память, что происходить в Python под капотом.
Подписывайтесь на канал, дальше будет больше мануалов и полезного контента.