stringtranslate.com

Программа «Привет, мир!»

Программа «Hello, World!» — это, как правило, простая компьютерная программа , которая выводит (или отображает) на экране (часто на консоли ) сообщение, похожее на «Hello, World!». Небольшой фрагмент кода в большинстве языков программирования общего назначения , эта программа используется для иллюстрации базового синтаксиса языка . Программа «Hello, World!» часто является первой, написанной студентом нового языка программирования, [1] но такая программа также может использоваться в качестве проверки работоспособности , чтобы убедиться, что компьютерное программное обеспечение, предназначенное для компиляции или запуска исходного кода, установлено правильно, и что его оператор понимает, как его использовать.

История

Программа «Hello, World!», написанная от руки на языке Си и подписанная Брайаном Керниганом (1978)

Хотя небольшие тестовые программы существовали с момента разработки программируемых компьютеров , традиция использования фразы «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!», запущенная на PlayStation Portable от Sony в качестве доказательства концепции

Программы "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!

«Время до hello world» (TTHW) — это время, необходимое для написания программы «Hello, World!» на данном языке программирования. Это один из показателей простоты использования языка программирования; поскольку программа предназначена как введение для людей, незнакомых с языком, более сложная программа «Hello, World!» может указывать на то, что язык программирования менее доступен. [19] Например, первой публично известной программе «Hello, World!» на языке Malbolge (которая фактически вывела «HEllO WORld») потребовалось два года, чтобы быть объявленной, и она была создана не человеком, а генератором кода, написанным на Common Lisp (см. § Вариации выше) .

Эта концепция была расширена за пределы языков программирования до API , как мера того, насколько просто новому разработчику заставить работать базовый пример; более короткое время указывает на более простой API для разработчиков. [20] [21]

Статьи Википедии, содержащие программы «Hello, World!»

Смотрите также

Ссылки

  1. ^ Лэнгбридж, Джеймс А. (3 декабря 2013 г.). Профессиональная разработка встраиваемых ARM-решений. John Wiley & Sons. ISBN 9781118887820.
  2. ^ Керниган, Брайан В .; Ритчи, Деннис М. (1978). Язык программирования C (1-е изд.). Энглвуд Клиффс, Нью-Джерси : Prentice Hall . ISBN 0-13-110163-3.
  3. ^ Керниган, Брайан (1974). "Программирование на языке C: Учебное пособие" (PDF) . Bell Labs. Архивировано (PDF) из оригинала 22 марта 2022 г. . Получено 9 января 2019 г. .
  4. ^ Джонсон, SC; Керниган, BW Язык программирования B. Bell Labs. Архивировано из оригинала 11 июня 2015 г. Получено 8 августа 2024 г.
  5. ^ "BCPL". Файл жаргона . Архивировано из оригинала 3 апреля 2018 года . Получено 21 апреля 2013 года .
  6. ^ "Умер Уильям Б. Уильямс, радиоведущий". The New York Times . 4 августа 1986 г.
  7. ^ "Программирование на C++/Примеры/Hello world". Wikibooks . Архивировано из оригинала 28 марта 2022 г. Получено 16 марта 2022 г.
  8. ^ "Malbolge". Esolang . esolangs-wiki. Архивировано из оригинала 27 августа 2022 г. Получено 28 октября 2016 г.
  9. Учебник по языку программирования Go. Архивировано 26 июля 2010 г. на Wayback Machine The Go Programming Language. Получено 26 июля 2011 г.
  10. ^ Сильва, Майк (11 сентября 2013 г.). «Введение в микроконтроллеры — Hello World». EmbeddedRelated.com . Архивировано из оригинала 22 мая 2015 г. . Получено 19 мая 2015 г. .
  11. ^ Джордж, Лиго (8 мая 2013 г.). "Мигание светодиода с использованием микроконтроллера Atmega32 и Atmel Studio". electroSome . Архивировано из оригинала 5 ноября 2014 г. . Получено 19 мая 2015 г. .
  12. ^ PT, Ranjeeth. "2. AVR Microcontrollers in Linux HOWTO". Linux Documentation Project . Архивировано из оригинала 2 мая 2015 г. Получено 19 мая 2015 г.
  13. Андерссон, Свен-Оке (2 апреля 2012 г.). «3.2 Первая конструкция Altera FPGA». Райдио Тейлифис Эйрианн. Архивировано из оригинала 21 мая 2015 года . Проверено 19 мая 2015 г.
  14. ^ Фабио, Адам (6 апреля 2014 г.). "Учебник CPLD: Изучаем программируемую логику простым способом". Hackaday . Архивировано из оригинала 20 мая 2015 г. Получено 19 мая 2015 г.
  15. ^ "Hello". GNU Project . Free Software Foundation. Архивировано из оригинала 29 мая 2014 года . Получено 7 июля 2017 года .
  16. ^ Джолиф, Кристоф (январь 2003 г.). «Использование возможностей SVG в приложениях Java». Sun Developer Network .
  17. де Динешен, Кристоф (24 июля 2010 г.). "Привет, мир!". Гренуй Буйи.
  18. ^ "Teaching the Nintendo Generation to Program" (PDF) . bfoit.org . Архивировано из оригинала (PDF) 5 мая 2016 года . Получено 27 декабря 2015 года .
  19. ^ О'Двайер, Артур (сентябрь 2017 г.). Освоение C++17 STL: Полное использование компонентов стандартной библиотеки в C++17. Packt Publishing Ltd. стр. 251. ISBN 978-1-78728-823-2. Получено 4 декабря 2019 г. .
  20. ^ Wiegers, Harold (28 июня 2018 г.). «Важность «Time to First Hello, World!» эффективной программы API». Архивировано из оригинала 19 февраля 2020 г. Получено 19 февраля 2020 г.
  21. ^ Джин, Бренда; Сахни, Саурабх; Шеват, Амир (29 августа 2018 г.). Проектирование веб-API: создание API, которые любят разработчики. O'Reilly Media. ISBN 9781492026877. Получено 19 февраля 2020 г. .

Внешние ссылки