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

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

Естественная речь допускает разные толкования, а формальная инструкция ведёт к одному результату

Человеческая речь — невероятно сложный и гибкий инструмент. Мы пользуемся им каждый день и даже не замечаем, насколько сильно он опирается на общий контекст, культурный фон и здравый смысл. Когда вы говорите коллеге «перешли мне тот вчерашний отчёт», он понимает, о каком документе речь, какой канал связи использовать и что значит «тот самый». Если вы скажете «поставь чайник», никто не пойдёт ставить пустой металлический сосуд на стол — человек автоматически добавит пропущенные шаги: налить воду, включить в розетку, нажать кнопку.

Человеческий язык устроен так, чтобы передавать максимум смысла минимумом слов, полагаясь на способность собеседника достраивать недостающее. У вычислительной машины нет здравого смысла. У неё нет жизненного опыта, она не умеет читать между строк и не способна догадываться о ваших намерениях. Если инструкция допускает двойное толкование, машина либо выполнит её не так, как вы ожидали, либо вовсе откажется работать.

Именно поэтому естественные языки категорически не подходят для программирования. Нам нужен формальный язык — искусственно созданная система знаков и правил, в которой каждое слово имеет только одно значение, а структура предложений (синтаксис) строго регламентирована. В формальном языке невозможно сказать фразу «ну, ты понимаешь, о чём я».

Почему языков программирования так много

Если задача языка программирования — просто быть строгим и однозначным, почему инженеры не придумали один универсальный язык раз и навсегда? На сегодняшний день существуют сотни языков, и десятки из них активно используются в индустрии. Ответ кроется в инженерных компромиссах. Невозможно создать инструмент, который будет идеальным для всего.

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

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

Иллюзия написания кода

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

Для разных инженерных задач используются разные специализированные инструменты

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

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

Инженерный компромисс Гвидо ван Россума

В конце 1980-х годов нидерландский программист Гвидо ван Россум работал в исследовательском центре CWI. Ему не хватало простого и расширяемого языка для текущих задач, а опыт работы над языком ABC подсказал, какие идеи стоит сохранить и каких ограничений лучше избежать. Так он начал создавать Python.

Разработчик внимательно читает и анализирует значительно больше кода, чем пишет

Гвидо заложил в основу Python ту самую идею, о которой мы говорили выше: код читается гораздо чаще, чем пишется. Он спроектировал язык так, чтобы его внешний вид был максимально чистым, минималистичным и визуально напоминал обычный английский текст с чёткой структурой. В Python постарались сократить количество служебных символов, которые могут захламлять код. Сама структура языка принуждает разработчика писать аккуратно.

Компромисс Python заключается в следующем: он берет на себя часть технической работы, которую в других языках программисту приходится контролировать вручную. Из-за этого программы на Python могут выполняться медленнее программ на языках, спроектированных для максимальной производительности. Но для огромного класса задач эта разница в скорости не критична, а вот сэкономленные часы, дни и месяцы работы живых людей — критичны.

Экосистема и границы применимости

Сегодня Python широко используется далеко за пределами учебных примеров. Но выбирают его не только из-за чистоты текста.

Вокруг успешных языков со временем формируется экосистема. Представьте себе гигантский строительный супермаркет. Если вы решите построить дом, вам не нужно самостоятельно добывать руду, чтобы выплавить гвозди, или изобретать состав цемента. Вы берёте готовые, проверенные инструменты и материалы. В мире Python тысячи инженеров годами создавали готовые решения для типовых задач. Анализ огромных массивов данных, обучение нейросетей, автоматизация рутины, разработка серверной части веб-сайтов — для всего этого уже есть надёжные инструменты. Индустрия использует Python потому, что он позволяет быстро собирать сложные системы из качественных деталей.

Экосистема Python объединяет инструменты для данных, нейросетей, веба и автоматизации, оставляя предельно скоростные задачи специализированным решениям

Однако важно сохранять трезвый взгляд. Python — не универсальная панацея и не лучший язык на свете. Для задач, где критичны предсказуемое время реакции, минимальный расход памяти или предельная производительность, чаще выбирают другие языки. Это не означает, что Python там вообще не встречается: его могут использовать для вспомогательных инструментов и отдельных частей системы. Но для старта в программировании, понимания алгоритмов и решения огромного спектра прикладных бизнес-задач выбор Python сегодня вполне оправдан.

Естественные языки слишком зависят от контекста и допускают неоднозначность, поэтому для общения с машиной нужны формальные языки со строгими правилами. Существует множество языков программирования, потому что разные задачи требуют разных инженерных приоритетов. Python был спроектирован с упором на читаемость и ясность, так как в реальной разработке код гораздо чаще читают и обслуживают, чем пишут с нуля. Благодаря этому, а также огромной экосистеме готовых инструментов Python широко используется в анализе данных, разработке веб-приложений и автоматизации, хотя он и не подходит для задач, требующих предельной скорости выполнения.

Практическая работа. Знакомство с Python

Сейчас закрепим первое представление о Python: зачем он нужен, почему его часто выбирают для старта и как по коротким фрагментам кода понимать намерение программы. Здесь не нужно знать весь синтаксис заранее — достаточно внимательно смотреть на смысл команд.

Зачем нужен Python

Начнём с главного: Python — не только учебный язык для первых примеров, а настоящий рабочий инструмент. Проверим, как вы уловили его роль для новичка.

Какое утверждение лучше всего описывает Python для новичка?

Почему команду print("Hello!") можно примерно понять даже до подробного изучения синтаксиса?

Выберите все варианты, где Python действительно может использоваться.

Обсуждение урока

0
Комментарии видны всем. Чтобы участвовать в обсуждении, войдите или зарегистрируйтесь.
Модерация сообщества

Пожаловаться на комментарий

Расскажите модераторам, что именно требует внимания.