Точка входа - Википедия - Entry point

Пример основной функции на C #.
Как Главный() может заглянуть в C # исходный код. Различные части помечены для справки.

В компьютерное программирование, входная точка где выполняются первые инструкции программы и где программа имеет доступ к командная строка аргументы. [1]

Чтобы запустить программу исполнение, то погрузчик или же Операционная система передает управление своей точке входа. (В течение загрузка, сама операционная система - это программа). Это знаменует переход от время загрузки (и динамичный время ссылки, если есть) на время выполнения.

Для некоторых операционных систем и языки программирования, точка входа находится в библиотека времени исполнения, набор функций поддержки языка. Код библиотеки инициализирует программу, а затем передает управление самой программе. В других случаях программа может инициализировать саму библиотеку времени выполнения.[2]

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

В качестве альтернативы выполнение программы может начинаться с именованной точки, либо с обычного имени, определенного языком программирования или операционной системой, либо с имени, указанного вызывающей стороной. Во многих C-семейства языков, это функция с именем главный; в результате точку входа часто называют основная функция.[3]

В Языки JVM Такие как Ява точка входа - это статический метод с именем главный; в Языки интерфейса командной строки например, C #, точка входа - это статический метод с именем Главный.[4]

использование

Точки входа применяются как к исходному коду, так и к исполняемый файл файлы. Однако в повседневной разработка программного обеспечения, программисты указывают точки входа только в исходном коде, что делает их более известными. Точки входа в исполняемые файлы зависят от двоичный интерфейс приложения (ABI) реальной операционной системы и генерируются компилятором или компоновщиком (если не исправлены ABI). Другие связанные объектные файлы также могут иметь точки входа, которые позже используются компоновщиком при создании точек входа исполняемого файла.

Точки входа могут передавать аргументы команды, переменные или другую информацию в качестве локальной переменной, используемой Главный() метод. Таким образом, при выполнении программы могут быть установлены определенные параметры, которые затем интерпретируются программой. Многие программы используют это как альтернативный способ настройки различных параметров или выполнения набора различных действий с помощью одной программы.

Современный

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

В C, C ++, D, Ржавчина и Котлин программы это функция названный главный; в Ява это статический метод названный главный (хотя класс должен быть указан во время вызова), а в C # это статический метод с именем Главный.[5][6]

Во многих основных операционных системах стандартный исполняемый формат имеет единственную точку входа. в Исполняемый и связываемый формат (ELF), используется в Unix и Unix-подобный такие системы как Linux, точка входа указана в e_entry поле заголовка ELF. в Коллекция компиляторов GNU (gcc), точка входа, используемая компоновщиком, - это _Начните символ. Точно так же в Переносимый исполняемый файл формат, используемый в Майкрософт Виндоус, точка входа задается AddressOfEntryPoint поле, которое унаследовано от COFF. В COM файлы, точка входа находится на фиксированной компенсировать 01:00 ч.

Одним из исключений из парадигмы единой точки входа является Android. Android-приложения не имеют единой точки входа - нет особой главный функция. Вместо этого у них есть основные компоненты (действия и услуги), которые система может загружать и запускать по мере необходимости.[7]

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

Исторический

Исторически и в некоторых современных унаследованные системы, Такие как VMS и OS / 400, компьютерные программы имеют множество точки входа, каждый из которых соответствует разным функциям программы. Обычный способ обозначения точек входа, используемый в системе VMS и в PL / I и МАКРОС программ, заключается в том, чтобы добавить их в конце имени исполняемый образ, ограниченный знак доллара ($), например directory.exe $ make.

В Яблоко I компьютер тоже использовал это в некоторой степени. Например, альтернативная точка входа в Apple I БАЗОВЫЙ сохранит программу BASIC полезной, когда кнопка сброса была случайно нажата.[требуется разъяснение ]

Точка выхода

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

Обычно в программе не указывается ни одной точки выхода. Однако в других случаях среды выполнения гарантируют, что программы всегда завершаются структурированным образом через единственную точку выхода, что гарантируется, если сама среда выполнения не выйдет из строя; это позволяет запускать код очистки, например атексит обработчики. Это можно сделать, потребовав завершения программ путем возврата из основной функции, путем вызова определенной функции выхода или путем перехвата исключений во время выполнения или сигналов операционной системы.

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

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

Основная функция обычно написана первым программистом. функция который запускается при запуске программы и вызывается непосредственно из системной инициализации, содержащейся в среда выполнения (crt0 или эквивалент). Однако некоторые языки могут выполнять написанные пользователем функции перед основным запуском, например, конструкторы C ++ глобальные объекты.

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

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

APL

В APL, когда рабочая область загружена, содержимое переменной "quad LX" (скрытое выражение) интерпретируется как выражение APL и выполняется.

C и C ++

В C и C ++, то прототип функции функции main выглядит следующим образом:

int главный(пустота);int главный();int главный(int argc, char **argv);int главный(int argc, char *argv[]);int главный(int argc, char **argv, char **env);// более конкретно в C// НЕ соответствует стандарту ISO C 5.1.2.2.1// НО во встроенном программировании в зависимости от микроконтроллера эта форма также используетсяпустота главный (пустота);

Основная функция выглядит как точка входа для прикладных программистов (точка входа приложения или основная точка входа). Системное программирование раскрывает больше информации о программе и указывает точку входа в другом месте (в процедуре инициализации или в векторе прерывания сброса для автономных программ).

В параметры argc, количество аргументов, и argv, вектор аргумента,[8] соответственно укажите количество и значения программных аргументы командной строки. Имена argc и argv может быть любым допустимым идентификатором в C, но обычно используются эти имена. В C ++ имена следует понимать буквально, а «void» в списке параметров следует опускать, если требуется строгое соответствие.[9] Другие платформенно-зависимые форматы также разрешены стандартами C и C ++, за исключением того, что в C ++ тип возвращаемого значения всегда должен быть int;[10] Например, Unix (хотя не POSIX.1 ) и Windows есть третий аргумент, дающий программе среда, иначе доступный через getenv в stdlib.h:

int главный(int argc, char **argv, char **envp);

Дарвин -основанные операционные системы, такие как macOS, имеют четвертый параметр, содержащий произвольную информацию, предоставленную ОС, такую ​​как путь к исполняемому двоичному файлу:[11]

int главный(int argc, char **argv, char **envp, char **яблоко);

Значение, возвращаемое основной функцией, становится статус выхода процесса, хотя стандарт C приписывает конкретное значение только двум значениям: EXIT_SUCCESS (традиционно 0) и EXIT_FAILURE. Значение других возможных возвращаемых значений определяется реализацией. В случае, если возвращаемое значение не определено программистом, неявное возврат 0; в конце главный() функция вставлена ​​компилятором; такое поведение требуется стандартом C ++.

Гарантируется, что argc неотрицательно и что argv [argc] это нулевой указатель. По соглашению аргументы командной строки, указанные в argc и argv включите название программы в качестве первого элемента, если argc больше 0; если пользователь набирает команду "rm файл", ракушка инициализирует rm процесс с argc = 2 и argv = {"rm", "file", NULL}. В качестве argv [0] это имя, под которым появляются процессы в пс, верх и т. д., некоторые программы, например демоны или тех, кто работает в устный переводчик или же виртуальная машина (куда argv [0] будет именем исполняемого файла хоста), может изменить их argv, чтобы дать более информативный argv [0], обычно с помощью exec системный вызов.

В главный() функция особенная; обычно каждая программа на C и C ++ должна определять его ровно один раз.

Если заявлено, главный() должен быть объявлен как имеющий внешнюю связь; это не может быть объявлено статический или же в соответствии.

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

C #

При выполнении программы, написанной на C #, то CLR ищет статический метод, отмеченный .входная точка Директива IL, которая не принимает аргументов или имеет один аргумент типа нить[], и имеет возвращаемый тип пустота или же int, и выполняет его.[12]

статический пустота Главный();статический пустота Главный(нить[] аргументы);статический int Главный();статический int Главный(нить[] аргументы);

Аргументы командной строки передаются в аргументы, аналогично тому, как это делается в Java. Для версий Главный() возвращая целое число, как в C, так и в C ++, оно передается обратно в среду как статус завершения процесса.

Начиная с C # 7.1, существует еще четыре возможных сигнатуры точки входа, которые позволяют асинхронное выполнение в Главный() Метод.[13]

статический Задача Главный()статический Задача<int> Главный()статический Задача Главный(нить[])статический Задача<int> Главный(нить[])

В Задача и Задача типы являются асинхронными эквивалентами пустота и int.

Чистый

Чистый это функциональный язык программирования, основанный на перезаписи графов. Начальный узел называется Начинать и имеет тип * Мир -> * Мир если оно изменения мир или какой-то фиксированный тип, если программа выводит результат только после сокращение Начинать.

Начинать::*Мир->*МирНачинатьМир=startIO...

Или даже проще

Начинать::НитьНачинать="Привет, мир!"

Один сообщает компилятору, какую опцию использовать для создания исполняемого файла.

Common Lisp

ANSI Common Lisp не определяет главную функцию; вместо этого код читается и оценивается сверху вниз в исходном файле. Однако следующий код будет подражать основная функция.

(defun привет-главный ()  (формат т "Привет, мир! ~%"))(привет-главный)

D

В D, то прототип функции функции main выглядит следующим образом:

пустота главный();пустота главный(нить[] аргументы);int главный();int главный(нить[] аргументы);

Аргументы командной строки передаются в аргументыаналогично тому, как это делается в C # или Java. Для версий главный() возвращая целое число, подобное как в C, так и в C ++, оно передается обратно в среду как статус завершения процесса.

FORTRAN

FORTRAN не имеет основной подпрограммы или функции. Вместо этого ПРОГРАММА Оператор в качестве первой строки может использоваться, чтобы указать, что программный модуль является основной программой, как показано ниже. В ПРОГРАММА оператор не может использоваться для рекурсивных вызовов.[14]

      ПРОГРАММА ПРИВЕТ      РАСПЕЧАТАТЬ *, "Синт!"      КОНЕЦ ПРОГРАММЫ ПРИВЕТ

Некоторые версии Фортрана, например, на IBM System / 360 и последующие мэйнфреймы, не поддерживают оператор PROGRAM. Многие компиляторы от других производителей программного обеспечения позволяют компилировать программу fortran без оператора PROGRAM. В этих случаях любой модуль, который имеет любой оператор, не являющийся комментарием, в котором нет оператора SUBROUTINE, FUNCTION или BLOCK DATA, считается главной программой.

GNAT

С помощью GNAT, программисту не требуется писать функцию с именем главный; исходный файл, содержащий одну подпрограмму, может быть скомпилирован в исполняемый файл. Однако связыватель создаст пакет ada_main, который будет содержать и экспортировать основную функцию в стиле C.

Идти

В Идти язык программирования, выполнение программы начинается с главный функция основной пакет

упаковка главныйимпорт "fmt"func главный() { fmt.Println("Привет, мир!")}

В Go нет возможности получить доступ к аргументам или коду возврата за пределами стандартной библиотеки. Доступ к ним можно получить через os.Args и os.Exit соответственно, оба из которых включены в "Операционные системы" упаковка.

Haskell

А Haskell программа должна содержать имя главный привязан к значению типа IO t, для какого-то типа т;[15] что обычно IO (). IO это монада, который организует побочные эффекты с точки зрения чисто функциональный код.[16] В главный value представляет собой побочные вычисления, выполняемые программой. Результат вычисления, представленный главный сбрасывается; поэтому главный обычно имеет тип IO (), что указывает на то, что тип результата вычисления (), то тип единицы, который не содержит информации.

главный :: IO ()главный = putStrLn "Привет, мир!"

Аргументы командной строки не передаются главный; они должны быть получены с помощью другого действия ввода-вывода, например System.Environment.getArgs.

Ява

Ява программы начинают выполняться в основном метод класса,[17][18][19][20] который имеет одно из следующих заголовки методов:

общественный статический пустота главный(Нить[] аргументы)общественный статический пустота главный(Нить... аргументы)общественный статический пустота главный(Нить аргументы[])

Аргументы командной строки передаются в аргументы. Как и в C и C ++, имя "главный()"является особенным. Основные методы Java не возвращают значение напрямую, но его можно передать с помощью System.exit () метод.

В отличие от C, название программы не входит в аргументы, потому что это имя класса, содержащего основной метод, поэтому он уже известен. Также, в отличие от C, количество аргументов указывать не нужно, поскольку массивы в Java имеют поле, отслеживающее количество элементов.

Основная функция должна быть включена в класс. Это потому, что в Java все должно содержаться в классе. Например, Привет, мир программа на Java может выглядеть так:

общественный учебный класс Привет, мир {    общественный статический пустота главный(Нить[] аргументы) {        Система.из.println("Привет, мир!");    }}

Для запуска этой программы необходимо вызвать Java HelloWorld в каталоге, где скомпилирован файл класса HelloWorld.class) существуют. В качестве альтернативы исполняемый БАНКА файлы используют файл манифеста для указания точки входа способом, независимым от файловой системы с точки зрения пользователя.

В FMSLogo, процедуры при загрузке не выполняются. Чтобы они выполнялись, необходимо использовать этот код:

для procname ...; Команды запуска (такие как print [Welcome]) завершаются
сделать "запуск [procname]

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

OCaml

OCaml не имеет главный функция. Программы оцениваются сверху вниз.

Аргументы командной строки доступны в массиве с именем Sys.argv и статус выхода по умолчанию равен 0.

Пример:

print_endline "Привет, мир"

Паскаль

В Паскаль, основная процедура - единственная безымянная блокировать в программе. Поскольку программы на языке Pascal определяют процедуры и функции в более строгом порядке снизу вверх, чем программы на C, C ++ или Java, основная процедура обычно является последним блоком в программе. Паскаль не имеет особого значения для имени "главный"или любое подобное имя.

программа Привет(Выход);начинать  Writeln('Привет, мир!');конец.

Аргументы командной строки подсчитываются в ParamCount и доступны как строки ParamStr (n), с n от 0 до ParamCount.

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

Perl

В Perl, нет основной функции. Заявления выполняются сверху вниз.

Аргументы командной строки доступны в специальном массиве @ARGV. В отличие от C, @ARGV не содержит названия программы, которое $0.

PHP

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

Щука

В Щука синтаксис аналогичен синтаксису C и C ++. Казнь начинается в главный. "argc"переменная сохраняет количество аргументы перешли в программу. "argv"переменная содержит значение, связанное с аргументами, переданными программе.

Пример:

 int главный(int argc, множество(нить) argv)

Python

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

В качестве альтернативы, программа может быть структурирована с явным главный функция, содержащая код, который будет выполняться при прямом выполнении программы, но который также может быть вызван путем импорта программы как модуля и вызова функции. Это можно сделать с помощью следующей идиомы, которая использует внутреннюю переменную __имя__ установлен на __главный__ когда программа выполняется, но не когда она импортируется как модуль (в этом случае вместо этого устанавливается имя модуля); Вариантов такой конструкции много:[21][22][23]

импорт sysdef главный(argv):    п = int(argv[1])    Распечатать(п + 1)если __имя__ == '__главный__':    sys.выход(главный(sys.argv))

В этой идиоме вызов названной точки входа главный является явным, а взаимодействие с операционной системой (получение аргументов, вызов системы выхода) осуществляется явно посредством библиотечных вызовов, которые в конечном итоге обрабатываются средой выполнения Python. Этот контраст с C, где это сделано неявно по времени выполнения, на основе соглашения.

QB64

В QB64 язык не имеет основной функции, код, который не входит в функцию или подпрограмму, выполняется сначала сверху вниз:

Распечатать "Привет, мир! A =";а = getInteger(1.8d): Распечатать афункция getInteger(п в качестве двойной)    getInteger = int(п)конец функция

Аргументы командной строки (если есть) можно прочитать с помощью функции COMMAND $:

тусклый общий командная строка в качестве нитькомандная строка = КОМАНДА $'Несколько аргументов командной строки, разделенных пробелами, можно прочитать с помощью КОМАНДА $ (n)commandline1 = КОМАНДА $(2)

Рубин

В Рубин, нет четкой основной функции. Код написан без дополнительных "класс .. конец", "модуль .. конец«Оформление выполняется напрямую, поэтапно, в разрезе специальных»главный"объект. На этот объект можно ссылаться, используя:

irb (основной): 001: 0>себя=> основной

и содержат следующие свойства:

irb (основной): 002: 0>себя.учебный класс=> Объектirb (основной): 003: 0>себя.учебный класс.предки=> [Объект, Ядро, Базовый объект]

Методы, определенные без дополнительных классов / модулей, определяются как частные методы "главный"объект, и, следовательно, как частные методы почти любого другого объекта в Ruby:

irb (основной): 004: 0>def фуirb (основной): 005: 1>  42irb (основной): 006: 1>конец=> нольirb (основной): 007: 0>фу=> 42irb (основной): 008: 0>[].фуNoMethodError: закрытый метод `foo 'вызван для []: Arrayот (irb): 8из / usr / bin / irb: 12: в `<основной> 'irb (основной): 009: 0>ложный.фуNoMethodError: закрытый метод `foo 'вызван для false: FalseClassот (irb): 9из / usr / bin / irb: 12: в `<основной> '

Количество и значения аргументов командной строки можно определить с помощью единственного ARGV постоянный массив:

$ irb / dev / tty foo bartty (основной): 001: 0> ARGVARGV=> ["фу", "бар"]tty (основной): 002: 0> ARGV.sizeARGV.size=> 2

Первый элемент ARGV, ARGV [0], содержит первый аргумент командной строки, а не имя выполняемой программы, как в C. Имя программы доступно с помощью $0 или же $ PROGRAM_NAME.[24]

Подобно Python, можно использовать:

если __ФАЙЛ__ == $ PROGRAM_NAME  # Поместите сюда "основной" кодконец

Ржавчина

В Rust точкой входа в программу является функция с именем главный. Обычно эта функция находится в файле с именем main.rs или же lib.rs.

// В `main.rs`fn главный(){println!("Привет, мир!");}

Кроме того, начиная с Rust 1.26.0, функция main может возвращать Результат:[25]

fn главный()-> Результат<(),стандартное::io::Ошибка>{println!("Привет, мир!");Ok(())// Возвращаем тип `Result` значения` Ok` с содержимым `()`, то есть пустой кортеж.}

Быстрый

При запуске в Xcode Детская площадка,[26] Быстрый ведет себя как язык сценариев, выполняя операторы сверху вниз; допускается код верхнего уровня.

// HelloWorld.playgroundпозволять Привет = "Привет"позволять Мир = "Мир"позволять Привет, мир = Привет + " " + МирРаспечатать(Привет, мир) // Привет, мир

Какао - и Какао Touch приложения, написанные на Swift, обычно инициализируются @NSApplicationMain и @UIApplicationMain атрибуты соответственно. Эти атрибуты по своему назначению эквивалентны main.m файл в Цель-C проекты: они неявно объявляют главный функция, которая вызывает UIApplicationMain (_: _: _: _ :)[27] который создает экземпляр UIAapplication.[28]Следующий код является способом по умолчанию для инициализации Cocoa Touch-based iOS app и объявите его делегатом приложения.

// AppDelegate.swiftимпорт UIKit@UIApplicationMainучебный класс AppDelegate: UIResponder, UIApplicationDelegate {        вар окно: UIWindow?        func заявление(_ заявление: UIAapplication, didFinishLaunchingWithOptions launchOptions: [UIAapplication.LaunchOptionsKey: Любой]?) -> Bool {        возвращаться истинный    }    }

Visual Basic

В Visual Basic, когда проект не содержит форм, запускаемый объект может быть Главный() процедура. В Команда $ Функция может быть дополнительно использована для доступа к аргументной части командной строки, используемой для запуска программы:

Sub Главный()    Отлаживать.Распечатать "Привет, мир!"    MsgBox «Аргументы, если таковые имеются:» & Команда $Конец Sub

Xojo

В Xojo, существует два разных типа проектов, каждый из которых имеет свою основную точку входа. Настольные (GUI) приложения начинаются с App.Open событие проекта Заявление объект. Консольные приложения начинаются с App.Run событие проекта ConsoleApplication объект. В обоих случаях функция main создается автоматически и не может быть удалена из проекта.

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

Рекомендации

  1. ^ «Что такое точка входа в вычислительной технике? (С изображением)». мудрый. Получено 2020-01-22.
  2. ^ Decker, Karsten M .; Реманн, Рене М. (1994). Среды программирования для массово-параллельных распределенных систем: рабочая конференция Ifip Wg 10.3, 25-29 апреля 1994 г.. Springer Science & Business Media. ISBN  978-3-7643-5090-1.
  3. ^ «Основной метод в C #». Гики. 2018-11-30. Получено 2020-01-22.
  4. ^ Вагнер, Билл (2017-08-01). «Main () / Entry Points (Руководство по программированию на C #) - Microsoft Developer Network». docs.microsoft.com. Получено 2018-12-03.
  5. ^ «Функция main ()». ibm.com. IBM. Получено 2014-05-08.
  6. ^ «Аргументы Main () и командной строки (Руководство по программированию на C #)». Msdn.microsoft.com. Получено 2014-05-08.
  7. ^ «Основы приложения». Android-разработка. linuxtopia.org. Получено 2014-02-19.
  8. ^ argv: векторный термин в имени этой переменной используется в традиционном смысле для обозначения строк.
  9. ^ Типы параметров и названия основных
  10. ^ Раздел 3.6.1.2, Стандартное издание C ++ 2011.
  11. ^ "The char * яблоко Вектор аргумента ". Архивировано из оригинал на 2015-12-22. Получено 2014-05-12.
  12. ^ "Консольные приложения в .NET, или научим новую собаку старым трюкам". Msdn.microsoft.com. 2003-06-12. Архивировано из оригинал на 2008-02-04. Получено 2013-08-19.
  13. ^ "Официальный репозиторий проекта языка программирования C #: Dotnet / Csharplang". 2019-08-26.
  14. ^ XL FORTRAN для AIX. Справочник по языку. Третье издание, 1994. IBM
  15. ^ "Отчет Haskell 98: Модули". Haskell.org. Получено 2013-08-19.
  16. ^ Некоторые заблуждения Haskell: идиоматический код, чистота, лень и ввод-вывод - на монадическом IO Haskell>
  17. ^ «Языковая среда Java». Oracle. Получено 2020-03-14. Внутри класса HelloWorld мы объявляем единственный метод с именем main (), который, в свою очередь, содержит вызов одного метода для отображения строки «Hello world!» на стандартный вывод. Заявление, которое печатает "Hello world!" делает это путем вызова метода println объекта out. Объект out - это переменная класса в классе System, которая выполняет операции вывода с файлами.
  18. ^ Шильдт, Герберт (2019). Java: руководство для начинающих. Нью-Йорк: McGraw-Hill Education. п. 46. ISBN  978-1-260-44022-5. OCLC  1061561931. // Программа JAVA начинается с вызова main ().
  19. ^ «Hello, World! - Бесплатное интерактивное руководство по Java». Изучить Java. Получено 2020-03-14. В Java каждая строка кода, которая действительно может выполняться, должна находиться внутри класса. "public class Main {}" объявляет класс с именем Main, который является общедоступным, что означает, что любой другой класс может получить к нему доступ.
  20. ^ «Hello, World! - Бесплатное интерактивное руководство по Java». Изучить Java. Получено 2020-03-14. "public static void main (String [] args) {}" - это точка входа в нашу программу Java. основной метод должен иметь эту точную подпись, чтобы иметь возможность запускать нашу программу.
  21. ^ Гвидо ван Россум (15 мая 2003 г.). "Функции Python main ()", Комментарии
  22. ^ Код как Pythonista: идиоматический Python В архиве 2014-05-27 в Wayback Machine —На скриптах Python, используемых в качестве модулей
  23. ^ Нед Батчелдер (6 июня 2003 г.). "Функции Python main ()".
  24. ^ Программирование на Ruby: Руководство программиста-прагматика, Ruby и его мир - на Ruby ARGV
  25. ^ "Releases.md". GitHub Rust. Получено 15 февраля 2019.
  26. ^ Не путать с Swift Детские площадки, разработанное Apple приложение для iPad для изучения языка программирования Swift.
  27. ^ "UIApplicationMain (_: _: _: _ :) - UIKit". Документация для разработчиков Apple. Получено 2019-01-12.
  28. ^ «МАУПриложение - УИКит». Документация для разработчиков Apple. Получено 2019-01-12.

внешняя ссылка