Здравствуй, дорогой читатель. Сегодня у нас с вами очень простая, но важная тема. Автор попробует объяснить одну ключевую вещь, на которой держится весь цифровой мир. Мы поговорим о языках программирования.
Но не волнуйтесь — никакой сложной математики и страшных терминов не будет. Только образы, истории и простые сравнения. Если вы когда-либо включали компьютер или заказывали такси через телефон, эта статья для вас.
Давайте начнём с самого начала, с одной очень старой проблемы.
История: Разговор со стеной
Давным-давно, когда компьютеры были размером с комнату, люди общались с ними очень странно. Представьте, что перед вами стена с тысячами тумблеров — маленьких переключателей. Один тумблер вверх — это «да», или «1». Тумблер вниз — это «нет», или «0».
Чтобы попросить такую машину просто сложить два числа, человек должен был вручную щёлкать эти тумблеры, составляя из «1» и «0» длинную-длинную инструкцию. Это был единственный язык, который понимало «железо» — процессор (если интересно, как он устроен внутри, у Автора есть отдельный простой разговор на эту тему).
Можно ли так работать? Технически — да. Но это всё равно что общаться с иностранцем, зная только два слова: «хлеб» и «вода». Вы сможете выжить, но рассказать ему красивую историю или попросить приготовить сложное блюдо — никогда. Нужен был способ сделать общение проще.
Что же это такое, если говорить просто?
Представьте, что язык программирования — это очень строгий рецепт и волшебный переводчик в одном флаконе.
Вы — повар (программист). У вас есть кухонный робот (процессор), который умеет только кипятить воду, включать таймер и перемешивать. Но он понимает команды только на тарабарском языке, который состоит из звуков «бип» и «буп».
Что делать? Вы берёте особую книгу рецептов (это и есть язык программирования). В этой книге правила: «Чтобы сказать "взять", напиши TAKE. Чтобы сказать "вода", напиши WATER». Вы пишете по этим правилам: TAKE WATER. BOIL.
Затем вы отдаёте эту записку волшебному переводчику (он называется компилятор или интерпретатор). Переводчик — верный помощник. Он смотрит в вашу записку, сверяется с правилами из книги и переводит её в длинную, идеальную последовательность «бип» и «буп»: «БИП-БУП-БИП-БИП-БУП...».
Робот слышит знакомые «бипы» и «бупы» и сразу понимает: ага, нужно взять воду и вскипятить. И выполняет.
Вот и весь секрет. Язык программирования — это и есть та самая книга строгих правил, которая позволяет человеку писать команды на понятном ему языке (похожем на английский), а волшебному переводчику — превращать эти команды в «бип-буп» для машины.
Сказка про Алису и Илью
Давайте оживим эту историю. У Автора есть два старых знакомых:
- Алиса — она умеет объяснять задачи.
- Илья (в рамках данной статьи периодически это будет робот) — он умеет их выполнять, но понимает только команды, похожие на шифровку из нулей и единиц.
Однажды Алисе понадобилось, чтобы Илья запомнил, сколько будет 5 + 3.
1. Неудача. Алиса сказала: «Илья, дорогой, сложи, пожалуйста, 5 и 3 и запомни результат». Илья посмотрел на неё пустым взглядом. Он её не понял. Совсем. Как будто она говорила на марсианском.
2. Находка. Тогда Алиса вспомнила про волшебного помощника — Робота-Переводчика. Она взяла блокнот с правилами (язык Python) и написала там очень чётко:
ответ = 5 + 3
3. Перевод. Она дала эту записку Роботу-Переводчику и сказала: «Сделай так, чтобы Илья это выполнил». Робот — дело знает. Он прочитал записку, проверил, всё ли по правилам, и превратил её в длинную-предлинную инструкцию, состоящую только из «0» и «1». Эту инструкцию он передал Илье.
4. Чудо. Илья, получив знакомый набор нулей и единиц, тут же щёлкнул своими внутренними переключателями (их, кстати, зовут транзисторы, а логика сложения живёт в сумматоре), нашёл число 8 и отложил его в свою память в ячейку с именем «ответ».
Проблема решена! Алиса и Илья нашли общий язык благодаря правилам из блокнота (языку программирования) и Роботу-Переводчику.
Почему этих языков много? Неужели одного мало?
Отличный вопрос. Представьте, что вам нужно:
- Починить крошечные часики. Вам понадобится лупа, тонкие пинцеты и отвёртки.
- Построить дом. Нужны бетономешалка, грузовик, большой молоток и пила.
Задачи разные — инструменты нужны разные. Так и с компьютерами.
- Есть задачи «близко к железу». Например, написать программу для кардиостимулятора или для двигателя современного самолёта. Здесь важна каждая миллисекунда, каждое движение тока. Для этого нужны «тонкие» и строгие языки (как C или C++). Они как инструменты часовщика.
- А есть задачи «далеко от железа». Например, создать сайт с фотографиями котиков, написать программу для расчёта скидок в магазине или для умной ленты в соцсети. Здесь важно сделать всё быстро и понятно. Для этого нужны языки «попроще» (как Python или JavaScript). Они как большой и удобный экскаватор — копает быстро, управлять им легче.
Языки ещё и помогают избегать ошибок. Например, хороший язык не даст вам перепутать число и слово. Это как если бы на склаке у вас были чётко подписанные коробки: «Только цифры» и «Только буквы». Вы не сможете случайно положить яблоко в коробку с гвоздями. Про эти правила — типы данных — Автор уже рассказывал отдельно, это интересно.
Самый главный миф, который нужно забыть
Миф: «А вот мне сказали, что язык *** — самый крутой, а остальные ерунда».
Автор просит вас запомнить одну простую вещь. Языки программирования — это просто инструменты. Как в любом хозяйстве.
- Python/JavaScript — это как универсальный швейцарский нож. Им много чего можно сделать: открыть банку, открутить винтик, порезать хлеб. Удобно, всегда под рукой. Но им не распилить дрова.
- Java/C# — это как большой заводской станок с конвейером. Он создан, чтобы делать миллионы одинаковых, надёжных деталей. На нём делают большие банковские системы и корпоративные программы. Запускать его для того, чтобы сделать одну табуретку, — странно.
- C/C++ — это как скальпель хирурга или мощная бензопила. Инструменты для виртуозов и для очень конкретных, сложных задач. Ими можно сделать невероятно точную вещь (игру, драйвер, систему для ракеты), но ими же очень легко пораниться, если не знать, как обращаться.
- SQL — это как специальный штопор для винных бутылок. Он делает только одно, но делает это идеально. Ним нельзя забить гвоздь, но если у вас есть бутылка (база данных), лучшего инструмента не найти.
Спросите у плотника, какой инструмент самый лучший? Он удивится. Потому что для гвоздя нужен молоток, для доски — пила, а для шлифовки — наждачка. Всё просто.
Так что же это всё значит?
Язык программирования — это мост. Мост между нашим, человеческим, миром идей, задач и «хочу» — и безупречно точным, но очень простым миром микросхем, где есть только «да» и «нет».
Мы придумали эти мосты, чтобы поручить компьютерам скучную, сложную или невыполнимую для нас работу: от управления полётом самолёта до показа смешного видео с котиком.
Их много не потому, что программисты не могут договориться. Их много потому, что и задач в нашем мире — бесконечно много. И это прекрасно.
Если такое объяснение оказалось для вас полезным и вы хотите и дальше без страха смотреть на технологии, Автор будет рад видеть вас среди подписчиков. Вместе мы сможем разобрать что угодно — от работы интернета до магии искусственного интеллекта. Обещаю, будет просто и интересно.
UPD
Чтобы не перегружать рассказ, Автор сознательно спрятал под ковёр умные слова. Но если вам интересно, вот что они значат:
- Компилятор / Интерпретатор: Те самые «роботы-переводчики». Разница в том, что первый переводит весь рецепт сразу, а второй — по одной строчке, прямо по ходу готовки.
- Высокоуровневый / Низкоуровневый язык: «Высокий» — значит, далёкий от «железа», более человечный (Python). «Низкий» — значит, близкий к «железу», более машинный (Ассемблер).
- Синтаксис: Те самые «правила из блокнота». Как в русском языке: «жи» и «ши» пиши с буквой «и».
- Парадигма (ООП и др.): Философия языка. Один язык учит думать «объектами» (как будто всё вокруг — предметы с инструкциями), другой — «действиями» (как будто всё вокруг — рецепты).
- Запись ответ = 5 + 3 — это пример кода на языке Python, одном из самых простых и дружелюбных для начала.