Почему программисты пишут «Hello, World!» - хотя компьютеру всё равно

mr. Cooper 10 часов назад Технологии
Почему программисты пишут «Hello, World!» - хотя компьютеру всё равно

Есть строка, которую, кажется, успел написать почти каждый программист:

//python

print("Hello, World!")

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

Причём никто не заставляет писать именно её.

Компьютеру совершенно всё равно, что окажется внутри кавычек. Можно вывести Test, 123 или «Привет, мир». Результат с технической точки зрения будет тем же.

Тогда почему программисты десятилетиями продолжают писать именно Hello, World!?

Ответ оказался гораздо прозаичнее, чем можно подумать.

Это не был великий замысел

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

В начале 1970-х Брайан Керниган, работавший в Bell Labs, использовал пример с hello, world! в учебном материале по языку B. Сам пример был совсем не таким коротким и красивым, как сегодняшняя строка.

В B существовало ограничение на размер символьных констант, поэтому фразу приходилось собирать из нескольких частей:

//text

hell
o, w
orld

То есть знаменитое приветствие появилось вовсе не как попытка создать исторический символ программирования.

Нужно было всего лишь показать работу с текстом.

И это, пожалуй, самая забавная часть всей истории.

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

Почему именно эти слова - неизвестно

Можно было бы ожидать, что у Hello, World! есть какая-нибудь красивая история.

Например, что Керниган специально искал максимально универсальное приветствие или хотел показать взаимодействие человека с компьютером.

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

И здесь история становится даже интереснее.

У фразы, которая пережила несколько поколений языков программирования, похоже, не было какого-то особенного первоначального смысла.

Она просто оказалась удачным примером.

Позже выражение появилось и в материалах по C, а в 1978 году Керниган вместе с Деннисом Ритчи выпустил книгу The C Programming Language.

В ней читателю показывали уже знакомую конструкцию:

//c

printf("hello, world\n");

Книга стала одним из важнейших учебных материалов по C, и пример получил огромную аудиторию.

Это важное различие: K&R не придумали Hello, World! с нуля. Они помогли сделать этот пример широко известным.

При этом история выражения не ограничивается только Керниганом: существуют свидетельства более раннего употребления hello, world в материалах, связанных с языком BCPL.

Поэтому утверждение «Керниган придумал Hello, World!» слишком категорично.

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

Почему пример вообще оказался удобным

Причина довольно скучная - и именно поэтому она хорошо объясняет его успех.

Для первой программы нужен результат, который легко проверить глазами.

Не требуется база данных. Не нужен интернет. Не надо читать файл или разбираться с пользовательским вводом.

Программа должна запуститься и что-нибудь вывести.

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

Для первого знакомства этого достаточно.

Но Hello, World! не стоит путать с полноценной проверкой программы.

Компьютер может без проблем вывести эту строку и при этом иметь проблемы с сетью, базой данных или какой-нибудь библиотекой.

Это всего лишь минимальная проверка того, что код выполняется и способен показать результат.

Именно минимальность и сделала пример удобным.

Почему его не заменили на что-нибудь другое

Вот здесь начинается самое интересное.

В какой-то момент Hello, World! уже не пришлось защищать.

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

Причём менять её особого смысла не было.

Если программист видит:

//javascript

console.log("Hello, World!");

ему не нужно объяснять, что происходит.

Он сразу понимает: перед ним самый простой пример вывода текста.

В Python используется одна команда:

//python

print("Hello, World!")

В C - другая:

//c

printf("Hello, World!");

Языки разные, синтаксис разный, а пример остаётся узнаваемым.

Получается любопытная вещь: значение фразы постепенно стало важнее её технического содержания.

Компьютер видит обычную строку.

Программист видит начало примера.

Так появляются неофициальные стандарты

Никто не объявлял Hello, World! обязательным.

Нет стандарта, который требует от каждого нового языка вывести именно эту фразу.

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

Просто так сложилось.

И в этом есть довольно хороший урок о программировании вообще.

Мы привыкли думать, что стандарты появляются после официального решения: кто-то написал документ, утвердил правило, остальные начали ему следовать.

Но в реальной разработке немало вещей закрепляется иначе.

Кому-то оказывается удобно использовать определённый подход. Другие его повторяют. Потом он становится привычным. А спустя годы уже трудно вспомнить, почему вообще начали делать именно так.

С Hello, World! произошло примерно это.

Один учебный пример превратился в общепонятный знак начала работы с новым языком.

И всё это продолжается

Сегодня начинающий программист может открыть Python, JavaScript, C++, Go или другой язык и снова увидеть знакомое приветствие.

Хотя за прошедшие десятилетия изменилось практически всё вокруг него.

Другие компьютеры.

Другие операционные системы.

Другие редакторы.

Другие языки и инструменты.

А пример остался.

Причём не потому, что Hello, World! каким-то образом нужен компьютеру.

Он нужен людям - как короткий и всем понятный маркер: «здесь начинается знакомство с языком».

Наверное, поэтому эта строчка и оказалась такой живучей.

Её никто специально не сохранял.

Её просто продолжали писать.

Снова и снова.

А спустя больше пятидесяти лет мы всё ещё запускаем новую среду, пишем несколько символов и смотрим, появится ли на экране:

Hello, World!

Компьютеру всё равно.

Нам - почему-то нет.

Комментарии

Пока нет комментариев. Будьте первым, кто напишет.

Чтобы оставить комментарий, войдите в аккаунт.

Похожие статьи