Программа «Hello, World!» — это, как правило, простая компьютерная программа , которая выводит (или отображает) на экране (часто на консоли ) сообщение, похожее на «Hello, World!». Небольшой фрагмент кода в большинстве языков программирования общего назначения , эта программа используется для иллюстрации базового синтаксиса языка . Программа «Hello, World!» часто является первой, написанной студентом нового языка программирования, [1] но такая программа также может использоваться в качестве проверки работоспособности , чтобы убедиться, что компьютерное программное обеспечение, предназначенное для компиляции или запуска исходного кода, установлено правильно, и что его оператор понимает, как его использовать.
Хотя небольшие тестовые программы существовали с момента разработки программируемых компьютеров , традиция использования фразы «Hello, World!» в качестве тестового сообщения возникла под влиянием примера программы из книги 1978 года «Язык программирования C» [2] , с вероятным более ранним использованием в BCPL . Пример программы из книги печатает"Привет, мир"и был унаследован из внутреннего меморандума Bell Laboratories 1974 года Брайана Кернигана , Программирование на языке C: Учебное пособие : [3]
main ( ) { printf ( "привет, мир" ); }
В приведенном выше примереосновной( ) Функция определяет, где программа должна начать выполнение . Тело функции состоит из одного оператора , вызоваprintf()функция, которая означает « отформатировать печать »; она выводит на консоль то, что ей передано в качестве параметра , в данном случае строку "Привет, мир".
Версии на языке C предшествовала собственная работа Кернигана 1972 года «Учебное введение в язык B» [ 4] , где первая известная версия программы находится в примере, используемом для иллюстрации внешних переменных:
основной( ) { внешн. а, б, в; putchar(a); putchar(b); putchar(c); putchar('!*n');} «ад»;поклон';c 'мир';
Программа выше печатаетПривет, мир!на терминале, включая символ новой строки . Фраза разделена на несколько переменных, поскольку в B константа символа ограничена четырьмя символами ASCII . Предыдущий пример в учебнике напечаталпривет!на терминале, и фразаПривет, мир!было введено как немного более длинное приветствие, для выражения которого требовалось несколько символьных констант.
Jargon File сообщает, что «hello, world» вместо этого возникло в 1967 году с языком BCPL . [5] За пределами вычислительной техники использование точной фразы началось более десяти лет назад; это была крылатая фраза нью-йоркского радио-диск-жокея Уильяма Б. Уильямса , начиная с 1950-х годов. [6]
Программы "Hello, World!" различаются по сложности в зависимости от языка. В некоторых языках, особенно в скриптовых языках , программа "Hello, World!" может быть записана в виде одного оператора, в то время как в других (тем более во многих низкоуровневых языках ) может потребоваться гораздо больше операторов. Например, в Python для печати строкиПривет, мир!за которым следует новая строка, нужно написать только . Напротив, эквивалентный код на C++ [7] требует импорта библиотеки программного обеспечения ввода/вывода (I/O) , ручного объявления точки входа и явного указания, что выходная строка должна быть отправлена в стандартный поток вывода .print("Hello, World!")
Фраза «Hello, World!» имела различные отклонения в регистре и пунктуации, такие как заглавные буквы в начале H и W , а также наличие запятой или восклицательного знака. Некоторые устройства ограничивают формат определенными вариациями, такими как версии со всеми заглавными буквами в системах, которые поддерживают только заглавные буквы, в то время как некоторые эзотерические языки программирования могут печатать слегка измененную строку. Например, первая нетривиальная программа Malbolge напечатала «HEllO WORld», что было определено как достаточно хорошее . [8] [ ненадежный источник? ] В качестве выходных данных использовались другие человеческие языки; например, учебник по языку Go выдавал как английские, так и китайские или японские символы, демонстрируя встроенную поддержку Unicode в языке. [9] Другим примечательным примером является язык Rust , чья система управления автоматически вставляет программу «Hello, World» при создании новых проектов.
Некоторые языки изменяют функцию программы "Hello, World!", сохраняя при этом дух демонстрации простого примера. Функциональные языки программирования, такие как Lisp , ML и Haskell , имеют тенденцию заменять "Hello, World!" факториальной программой, поскольку функциональное программирование подчеркивает рекурсивные методы, тогда как исходные примеры подчеркивают ввод-вывод, что нарушает дух чистого функционального программирования, производя побочные эффекты . Языки, которые в противном случае могли бы напечатать "Hello, World!" ( язык ассемблера , C , VHDL ), также могут использоваться во встраиваемых системах , где вывод текста либо затруднен (требует дополнительных компонентов или связи с другим компьютером), либо отсутствует. Для таких устройств, как микроконтроллеры , программируемые пользователем вентильные матрицы и сложные программируемые логические устройства (CPLD), "Hello, World!" может быть заменено мигающим светодиодом ( LED), который демонстрирует синхронизацию и взаимодействие между компонентами. [10] [11] [12] [13] [14]
Дистрибутивы Debian и Ubuntu Linux предоставляют программу «Hello, World!» через свои системы менеджеров пакетов программного обеспечения , которые можно вызвать с помощью командыпривет. Он служит проверкой работоспособности и простым примером установки программного пакета. Для разработчиков он предоставляет пример создания пакета .deb , как традиционным способом, так и с использованием debhelper , а также версиюприветиспользуется GNU Hello , служит примером написания программы GNU . [15]
Также были показаны вариации программы "Hello, World!", которые производят графический вывод (в отличие от текстового вывода). Sun продемонстрировала программу "Hello, World!" на Java , основанную на масштабируемой векторной графике , [16] а язык программирования XL представляет собой вращающуюся Землю "Hello, World!" с использованием трехмерной компьютерной графики . [17] Марк Гуздиал и Эллиот Солоуэй предположили, что тестовое сообщение "hello, world" может быть устаревшим теперь, когда графикой и звуком можно манипулировать так же легко, как и текстом. [18]
«Время до hello world» (TTHW) — это время, необходимое для написания программы «Hello, World!» на данном языке программирования. Это один из показателей простоты использования языка программирования; поскольку программа предназначена как введение для людей, незнакомых с языком, более сложная программа «Hello, World!» может указывать на то, что язык программирования менее доступен. [19] Например, первой публично известной программе «Hello, World!» на языке Malbolge (которая фактически вывела «HEllO WORld») потребовалось два года, чтобы быть объявленной, и она была создана не человеком, а генератором кода, написанным на Common Lisp .
Эта концепция была расширена за пределы языков программирования до API , как мера того, насколько просто новому разработчику заставить работать базовый пример; более короткое время указывает на более простой API для разработчиков. [20] [21]