« Привет , мир!» Программа обычно представляет собой простую компьютерную программу , которая выводит (или отображает) на экран (часто консоль ) сообщение, похожее на «Hello, World!» игнорируя любой ввод пользователя. Небольшой фрагмент кода на большинстве языков программирования общего назначения . Эта программа используется для иллюстрации основного синтаксиса языка . «Привет, мир!» Программа часто является первой, написанной изучающим новый язык программирования, [1] но такую программу также можно использовать для проверки работоспособности , чтобы убедиться, что компьютерное программное обеспечение , предназначенное для компиляции или запуска исходного кода , правильно установлено и что его оператор понимает, как им пользоваться.
Хотя небольшие тестовые программы существовали со времен разработки программируемых компьютеров , традиция использования фразы «Hello, World!» поскольку тестовое сообщение было создано под влиянием примера программы из книги « Язык программирования C» 1978 года [2] и , вероятно, более раннего использования в BCPL . Пример программы из книги печатает"Привет, мир"и был унаследован из внутреннего меморандума Bell Laboratories 1974 года Брайана Кернигана « Программирование на C: Учебное пособие» : [3]
main ( ) { printf ( «привет, мир» ); }
В приведенном выше примереосновной( ) Функция определяет, где программа должна начать выполнение . Тело функции состоит из одного оператора — вызова методапечатьф()функция, которая расшифровывается как « формат печати »; он выводит на консоль все, что передается ему в качестве параметра , в данном случае строку "Привет, мир".
Версии на языке C предшествовала собственная книга Кернигана 1972 года « Введение в язык B» , [4] , где первая известная версия программы находится в примере, используемом для иллюстрации внешних переменных:
main ( ) { extern a , b , c ; путчар ( а ); путчар ( б ); путчар ( с ); putchar ( ' !* n ' ); } ' ад ' ; _ поклон ' ; _ _ _ _ c ' мир ' ;
Программа выше печатаетПривет, мир!на терминале, включая символ новой строки . Фраза разделена на несколько переменных, поскольку в B символьная константа ограничена четырьмя символами ASCII . Предыдущий пример в руководстве напечатанпривет!на терминале и фразаПривет, мир!было представлено как немного более длинное приветствие, для выражения которого требовалось несколько символьных констант.
В The Jargon File сообщается, что слово «hello, world» возникло в 1967 году на языке BCPL . [5] За пределами вычислений использование этой фразы началось более десяти лет назад; это была крылатая фраза диск-жокея нью-йоркского радио Уильяма Б. Уильямса, начиная с 1950-х годов. [6]
"Привет, мир!" программы различаются по сложности на разных языках. В некоторых языках, особенно в языках сценариев , надпись «Hello, World!» Программа может быть написана как один оператор, в то время как в других (особенно во многих языках низкого уровня ) может потребоваться гораздо больше операторов. Например, в Python для печати строкиПривет, мир!за которым следует новая строка, нужно только написать . Напротив, эквивалентный код в C++ [7] требует импорта библиотеки программного обеспечения ввода-вывода , ручного объявления точки входа и явной инструкции о том, что выходная строка должна быть отправлена в стандартный поток вывода .print("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!» Таким образом, его можно заменить мигающим светодиодом , который демонстрирует синхронизацию и взаимодействие между компонентами. [10] [11] [12] [13] [14]
Дистрибутивы Debian и Ubuntu Linux предоставляют функцию « Hello, World!» программу через свои системы менеджера пакетов программного обеспечения , которые можно вызвать с помощью команды привет. Он служит проверкой работоспособности и простым примером установки программного пакета. Для разработчиков здесь приведен пример создания пакета .deb традиционным способом или с использованием debhelper , а также версияприветИспользуемый GNU Hello служит примером написания программы GNU . [15]
Вариации «Привет, мир!» Также были показаны программы, которые производят графический вывод (в отличие от текстового вывода). Сан продемонстрировал «Привет, мир!» Программа на Java , основанная на масштабируемой векторной графике [16] и языке программирования XL , имеет вращающуюся Землю «Hello, World!» с использованием 3D компьютерной графики . [17] Марк Гуздиал и Эллиот Солоуэй предположили, что тестовое сообщение «Привет, мир» может устареть теперь, когда графикой и звуком можно манипулировать так же легко, как и текстом. [18]
«Время привет, мир» (TTHW) — это время, необходимое для написания «Привет, мир!» программу на заданном языке программирования. Это один из показателей простоты использования языка программирования; поскольку программа задумана как введение для людей, незнакомых с языком, более сложная программа «Hello, World!» программа может указывать на то, что язык программирования менее доступен. [19] Эта концепция была расширена за пределы языков программирования до API , как мера того, насколько просто новому разработчику заставить работать базовый пример; более короткое время указывает на более простой API для внедрения разработчиками. [20] [21]