В компьютерном программировании , точка входа , где начинается выполнение инструкций программы, и , если программа имеет доступ к командной строке аргументов. [1]
Для запуска программы выполнения , то загрузчик или операционная система передает управление своей точкой входа. (Во время загрузки сама операционная система является программой). Это отмечает переход от времени загрузки (и времени динамической компоновки , если оно есть) к времени выполнения .
Для некоторых операционных систем и языков программирования точкой входа является библиотека времени выполнения , набор функций поддержки для языка. Код библиотеки инициализирует программу, а затем передает управление самой программе. В других случаях программа может инициализировать саму библиотеку времени выполнения. [2]
В простых системах выполнение начинается с первого оператора, что является обычным для интерпретируемых языков , простых исполняемых форматов и загрузчиков . В других случаях точка входа находится по другому известному адресу памяти, который может быть абсолютным или относительным адресом ( смещением ).
В качестве альтернативы выполнение программы может начинаться с именованной точки, либо с обычного имени, определенного языком программирования или операционной системой, либо с имени, указанного вызывающей стороной. Во многих языках семейства C это функция с именем main
; в результате точку входа часто называют главной функцией . [3]
В языках JVM, таких как Java, точкой входа является статический метод с именем main
; в языках интерфейса командной строки, таких как C #, точкой входа является статический метод с именем Main
. [4]
Применение
Точки входа применяются как к исходному коду, так и к исполняемым файлам. Однако при повседневной разработке программного обеспечения программисты указывают точки входа только в исходном коде, что делает их гораздо более известными. Точки входа в исполняемые файлы зависят от двоичного интерфейса приложения (ABI) реальной операционной системы и генерируются компилятором или компоновщиком (если не исправлены ABI). Другие связанные объектные файлы также могут иметь точки входа, которые позже используются компоновщиком при создании точек входа исполняемого файла.
Точки входа могут передавать аргументы команды, переменные или другую информацию в качестве локальной переменной, используемой Main()
методом. Таким образом, при выполнении программы могут быть установлены определенные параметры, которые затем интерпретируются программой. Многие программы используют это как альтернативный способ настройки различных параметров или выполнения набора различных действий с помощью одной программы.
Современный
В большинстве популярных сегодня языков программирования и операционных систем компьютерная программа обычно имеет только одну точку входа .
В программах на C , C ++ , D , Zig , Rust и Kotlin это функция с именем main
; в Java это статический метод с именем main
(хотя класс должен быть указан во время вызова), а в C # это статический метод с именем Main
. [5] [6]
Во многих основных операционных системах стандартный исполняемый формат имеет единственную точку входа. В формате исполняемых и связываемых файлов (ELF), используемом в Unix и Unix-подобных системах, таких как Linux , точка входа указывается в e_entry
поле заголовка ELF. В коллекции компиляторов GNU (gcc) точкой входа, используемой компоновщиком, является _start
символ. Точно так же в формате Portable Executable , используемом в Microsoft Windows , точка входа определяется AddressOfEntryPoint
полем, унаследованным от COFF . В файлах COM точка входа находится на фиксированном смещении 0100h.
Единственным исключением из парадигмы единой точки входа является Android . У Android-приложений нет единой точки входа - нет специальной main
функции. Вместо этого у них есть важные компоненты (действия и службы), которые система может загружать и запускать по мере необходимости. [7]
Иногда используется толстый двоичный файл , который состоит из нескольких исполняемых файлов для разных целей, упакованных в один файл. Чаще всего это реализуется с помощью единой общей точки входа, которая совместима со всеми целями и ветвями к целевой точке входа. Альтернативные методы включают хранение отдельных исполняемых файлов в отдельных ветвях , каждый со своей собственной точкой входа, которая затем выбирается операционной системой.
Исторический
Исторически сложилось так, что и в некоторых современных устаревших системах , таких как VMS и OS / 400 , компьютерные программы имеют множество точек входа , каждая из которых соответствует различным функциям программы. Обычный способ обозначения точек входа, который используется в системе VMS, а также в программах PL / I и MACRO , заключается в добавлении их в конец имени исполняемого образа , разделенного знаком доллара ($), например directory.exe$make
.
Apple I компьютер также использовал это в какой - то степени. Например, альтернативная точка входа в Apple I BASIC сохранит программу BASIC полезной при случайном нажатии кнопки сброса. [ требуется разъяснение ]
Точка выхода
Как правило, программы могут завершиться в любой момент, вернувшись в операционную систему или завершив работу . Программы на интерпретируемых языках возвращают управление интерпретатору, но программы на скомпилированных языках должны возвращаться операционной системе, иначе процессор просто продолжит выполнение после завершения программы, что приведет к неопределенному поведению .
Обычно в программе не указывается ни одной точки выхода. Однако в других случаях среды выполнения гарантируют, что программы всегда завершаются структурированным образом через единственную точку выхода, что гарантируется, если сама среда выполнения не выйдет из строя; это позволяет запускать код очистки, например atexit
обработчики. Это можно сделать, потребовав завершения программы путем возврата из основной функции, путем вызова определенной функции выхода или путем перехвата исключений во время выполнения или сигналов операционной системы.
Языки программирования
Во многих языках программирования main
функция - это то место, где программа начинает свое выполнение. Он обеспечивает высокоуровневую организацию функциональности программы и обычно имеет доступ к аргументам команд, передаваемым программе при ее выполнении.
Основная функция обычно является первой написанной программистом функцией, которая запускается при запуске программы и вызывается непосредственно из системной инициализации, содержащейся в среде выполнения ( crt0 или эквивалент). Однако некоторые языки могут выполнять написанные пользователем функции перед основным запуском, например конструкторы глобальных объектов C ++ .
В других языках, особенно во многих интерпретируемых языках , выполнение начинается с первого оператора программы.
Ниже следует неполный список языков программирования с описанием их способа определения основной точки входа:
APL
В APL при загрузке рабочего пространства содержимое переменной "quad LX" (скрытое выражение) интерпретируется как выражение APL и выполняется.
C и C ++
В C и C ++ , в прототипе функции основных функций выглядит как одно из следующих:
int main ( пусто ); int main ();int main ( int argc , char ** argv ); int main ( int argc , char * argv []); int main ( int argc , char ** argv , char ** env );// более конкретно в C // НЕ в соответствии со стандартом ISO C 5.1.2.2.1 // НО во встроенном программировании в зависимости от микроконтроллера эта форма также используется void main ( void );
Основная функция выглядит как точка входа для прикладных программистов (точка входа приложения или основная точка входа). Системное программирование раскрывает больше информации о программе и указывает точку входа в другом месте (в процедуре инициализации или в векторе прерывания сброса для автономных программ).
Эти параметры argc
, количество аргументов , и argv
, аргумент вектор , [8] , соответственно , дают номер и значение программы аргументов командной строки . Имена argc
и argv
могут быть любым допустимым идентификатором в C, но это общепринятое соглашение использовать эти имена. В C ++ имена следует понимать буквально, а «void» в списке параметров следует опускать, если требуется строгое соответствие. [9] Другие платформенно-зависимые форматы также разрешены стандартами C и C ++, за исключением того, что в C ++ тип возвращаемого значения всегда должен быть int
; [10] , например, Unix (хотя и не POSIX.1 ) и Windows , есть третий аргумент , дающие программы окружающей среды , в противном случае доступен через getenv
в stdlib.h
:
int main ( int argc , char ** argv , char ** envp );
Операционные системы на основе Дарвина , такие как macOS , имеют четвертый параметр, содержащий произвольную информацию, предоставляемую ОС, такую как путь к исполняемому двоичному файлу: [11]
int main ( int argc , char ** argv , char ** envp , char ** apple );
Значение, возвращаемое основной функцией, становится статусом завершения процесса, хотя стандарт C приписывает конкретное значение только двум значениям: EXIT_SUCCESS
(традиционно 0) и EXIT_FAILURE
. Значение других возможных возвращаемых значений определяется реализацией. В случае, если возвращаемое значение не определено программистом, неявное значение return 0;
в конце main()
функции вставляется компилятором; такое поведение требуется стандартом C ++.
Гарантируется, что argc
он неотрицателен и argv[argc]
является нулевым указателем . По соглашению, аргументы командной строки, указанные в argc
и argv
включают имя программы в качестве первого элемента, если argc
оно больше 0; если пользователь набирает команду " rm file
", оболочка инициализирует rm
процесс с помощью argc = 2
и argv = {"rm", "file", NULL}
. Как argv[0]
это имя , что процессы появляются при в ps
, и top
т.д., некоторые программы, такие как демоны или тех , кто работает в пределах интерпретатора или виртуальной машины (где argv[0]
бы имя хоста исполняемого файла), может выбрать , чтобы изменить их ARGV , чтобы дать более описательный argv[0]
, обычно с помощью exec
системного вызова.
main()
Функция является особенным; обычно каждая программа на C и C ++ должна определять его ровно один раз.
Если объявлен, main()
должен быть объявлен как имеющий внешнюю связь; это не может быть объявлено static
или inline
.
В C ++ он main()
должен находиться в глобальном пространстве имен (т. Е. ::main
), Не может быть перегружен и не может быть функцией-членом , хотя имя иначе не зарезервировано и может использоваться для функций-членов, классов, перечислений или функций, не являющихся членами в другие пространства имен. В C ++ (в отличие от C) main()
не может быть вызван рекурсивно и не может быть взят его адрес.
C #
При выполнении программы, написанной на C # , среда CLR ищет статический метод, помеченный .entrypoint
директивой IL, который либо не принимает аргументов, либо имеет один аргумент типа string[]
и имеет тип возвращаемого значения void
или int
, и выполняет его. [12]
static void Main (); static void Main ( строка [] аргументы ); статический int Main (); static int Main ( строка [] аргументы );
Передаются аргументы командной строки args
, аналогично тому, как это делается в Java. Для версий Main()
возврата целого числа, подобных как C, так и C ++, оно передается обратно в среду как статус завершения процесса.
Начиная с C # 7.1 существует еще четыре возможных сигнатуры точки входа, которые разрешают асинхронное выполнение в Main()
методе. [13]
static Task Main () static Task < int > Main () static Task Main ( string []) static Task < int > Main ( string [])
Task
И Task
типы асинхронных эквиваленты void
и int
.
Чистый
Clean - это функциональный язык программирования, основанный на переписывании графов. Начальный узел имеет имя Start
и тип, *World -> *World
если он изменяет мир, или какой-то фиксированный тип, если программа печатает результат только после сокращения Start
.
Начало :: * Мир -> * Мир Начальный мир = startIO ...
Или даже проще
Начало :: Строка Start = "Привет, мир!"
Один сообщает компилятору, какую опцию использовать для создания исполняемого файла.
Common Lisp
ANSI Common Lisp не определяет главную функцию; вместо этого код читается и оценивается сверху вниз в исходном файле. Однако следующий код будет имитировать основную функцию.
( defun hello-main () ( формат t «Hello World! ~%» ))( привет-главный )
D
В D , то прототип функции основных функций выглядит как одно из следующих:
void main (); void main ( string [] args ); int main (); int main ( строка [] аргументы );
Передаются аргументы командной строки args
, аналогично тому, как это делается в C # или Java. Для версий main()
возврата целого числа, подобных как C, так и C ++, оно передается обратно в среду как статус завершения процесса.
FORTRAN
FORTRAN не имеет основной подпрограммы или функции. Вместо этого можно использовать PROGRAM
оператор в первой строке, чтобы указать, что программный модуль является главной программой, как показано ниже. Оператор PROGRAM
не может использоваться для рекурсивных вызовов. [14]
ПРОГРАММА HELLO PRINT * , "Синт!" КОНЕЦ ПРОГРАММЫ ПРИВЕТ
Некоторые версии Fortran, например, в IBM System / 360 и последующих мэйнфреймах, не поддерживают оператор PROGRAM. Многие компиляторы от других производителей программного обеспечения позволяют компилировать программу fortran без оператора PROGRAM. В этих случаях любой модуль, который имеет любой оператор, не являющийся комментарием, в котором нет оператора SUBROUTINE, FUNCTION или BLOCK DATA, считается основной программой.
GNAT
Используя GNAT , программисту не требуется писать функцию с именем main
; исходный файл, содержащий одну подпрограмму, может быть скомпилирован в исполняемый файл. Однако связыватель создаст пакет ada_main
, который будет содержать и экспортировать основную функцию в стиле C.
Идти
В языке программирования Go выполнение программы начинается с main
функцииpackage main
основной пакетимпорт "FMT"func main () { fmt . Println ( "Привет, мир!" ) }
В Go нет возможности получить доступ к аргументам или коду возврата за пределами стандартной библиотеки. К ним можно получить доступ через os.Args
и, os.Exit
соответственно, оба из которых включены в "os"
пакет.
Haskell
Программа на Haskell должна содержать имя, main
привязанное к значению типа IO t
для некоторого типа t
; [15] что обычно бывает IO ()
. IO
это монада , которая организует побочные эффекты в терминах чисто функционального кода. [16]main
значение представляет собой вычисление побочных эффектов-Ful сделана программой. Результат вычисления, представленный main
как, отбрасывается; поэтому main
обычно имеет тип IO ()
, который указывает на то, что тип результата вычисления - ()
это тип единицы , который не содержит информации.
main :: IO () main = putStrLn "Привет, мир!"
Аргументы командной строки не передаются main
; они должны быть получены с помощью другого действия ввода-вывода, например System.Environment.getArgs
.
Ява
Программы Java начинают выполняться в основном методе класса [17] [18] [19] [20], который имеет один из следующих заголовков метода :
public static void main ( String [] args ) public static void main ( String ... args ) public static void main ( String args [] )
Передаются аргументы командной строки args
. Как и в C и C ++, имя " main()
" особенное. Основные методы Java не возвращают значение напрямую, но его можно передать с помощью System.exit()
метода.
В отличие от C, имя программы не включается args
, потому что это имя класса, содержащего основной метод, поэтому оно уже известно. Также, в отличие от C, количество аргументов указывать не нужно, поскольку в массивах Java есть поле, в котором отслеживается количество элементов.
Основная функция должна быть включена в класс. Это потому, что в Java все должно содержаться в классе. Например, программа hello world на Java может выглядеть так:
открытый класс HelloWorld { public static void main ( String [] args ) { System . из . println ( "Привет, мир!" ); } }
Чтобы запустить эту программу, необходимо вызвать java HelloWorld
каталог, в котором существует скомпилированный файл класса HelloWorld.class
). В качестве альтернативы исполняемые файлы JAR используют файл манифеста для указания точки входа способом, который не зависит от файловой системы с точки зрения пользователя.
ЛОГОТИП
В FMSLogo процедуры при загрузке не выполняются. Чтобы они выполнялись, необходимо использовать этот код:
называть ...; Команды запуска (например, print [Welcome])конец
сделать "запуск [procname]
Переменная startup
используется для запуска списка действий, но по соглашению это вызывает другую процедуру, которая запускает действия. Эта процедура может иметь любое название.
OCaml
OCaml не имеет main
функции. Программы оцениваются сверху вниз.
Аргументы командной строки доступны в массиве с именем, Sys.argv
а статус выхода по умолчанию равен 0.
Пример:
print_endline "Привет, мир"
Паскаль
В Паскале основная процедура - единственный безымянный блок в программе. Поскольку программы на языке Pascal определяют процедуры и функции в более строгом порядке снизу вверх, чем программы на C, C ++ или Java, основная процедура обычно является последним блоком программы. Паскаль не имеет особого значения для имени " main
" или другого подобного имени.
программа Hello ( Вывод ) ; begin writingeln ( 'Привет, мир!' ) ; конец .
Аргументы командной строки подсчитываются ParamCount
и доступны в виде строк по ParamStr(n)
, с n от 0 до ParamCount
.
Версии Pascal, поддерживающие модули или модули, также могут содержать в каждой безымянный блок, который используется для инициализации модуля. Эти блоки выполняются до вызова точки входа в основную программу.
Perl
В Perl нет основной функции. Заявления выполняются сверху вниз.
Аргументы командной строки доступны в специальном массиве @ARGV
. В отличие от C, @ARGV
не содержит названия программы, которое есть $0
.
PHP
В PHP нет «основной» функции. Начиная с первой строки сценария PHP, любой код, не инкапсулированный заголовком функции, выполняется, как только он обнаруживается.
Щука
В Pike синтаксис аналогичен синтаксису C и C ++. Казнь начинается в main
. argc
Переменная " " сохраняет количество аргументов, переданных программе. argv
Переменная " " содержит значение, связанное с аргументами, переданными программе.
Пример:
int main ( int argc , массив ( строка ) argv )
Python
Программы Python оцениваются сверху вниз, как это обычно бывает в языках сценариев: точка входа - это начало исходного кода. Поскольку определения должны предшествовать использованию, программы обычно структурированы с определениями вверху и кодом для выполнения внизу (без отступов), аналогично коду для однопроходного компилятора , например, в Паскале.
В качестве альтернативы, программа может быть структурирована с помощью явной main
функции, содержащей код, который будет выполняться при прямом выполнении программы, но который также может быть вызван путем импорта программы как модуля и вызова функции. Это можно сделать с помощью следующей идиомы, которая полагается на то, что для внутренней переменной __name__
устанавливается значение __main__
при выполнении программы, но не при ее импорте как модуль (в этом случае вместо этого устанавливается имя модуля); существует множество вариантов этой структуры: [21] [22] [23]
import sysdef main ( argv ): n = int ( argv [ 1 ]) print ( n + 1 )если __name__ == '__main__' : sys . выход ( основной ( sys . argv ))
В этой идиоме вызов названной точки входа main
является явным, а взаимодействие с операционной системой (получение аргументов, вызов системы выхода) осуществляется явно с помощью библиотечных вызовов, которые в конечном итоге обрабатываются средой выполнения Python. Это контрастирует с C, где это делается неявно средой выполнения на основе соглашения.
QB64
В языке QB64 нет основной функции, кода, не входящего в функцию, или подпрограммы, которая выполняется сначала сверху вниз:
print "Hello World! a =" ; a = getInteger ( 1.8 d ): распечатать aфункция getInteger ( n как double ) getInteger = int ( n ) конечная функция
Аргументы командной строки (если есть) можно прочитать с помощью функции COMMAND $:
dim общая командная строка как строка commandline = COMMAND $'Несколько аргументов командной строки, разделенных пробелами, можно прочитать с помощью COMMAND $ (n) commandline1 = COMMAND $ ( 2 )
Рубин
В Ruby нет отдельной основной функции. Вместо этого код, написанный вне любой области class .. end
или, module .. end
выполняется в контексте специального main
объекта. Доступ к этому объекту можно получить с помощью self
:
irb (основной): 001: 0> self => main
Обладает следующими свойствами:
irb (main): 002: 0> self . class => Object irb (main): 003: 0> self . класс . ancestors => [Объект, Ядро, Базовый объект]
Методы, определенные вне области действия class
или module
, определяются как частные методы объекта " main
". Поскольку класс " main
" есть Object
, такие методы становятся частными методами почти каждого объекта:
irb (main): 004: 0> def foo irb (main): 005: 1> 42 irb (main): 006: 1> end => nil irb (main): 007: 0> foo => 42 irb (main ): 008: 0> []. foo NoMethodError: закрытый метод `foo 'вызван для []: Массив из (irb): 8 из / usr / bin / irb: 12: в` ' irb (main): 009: 0> false . foo NoMethodError: закрытый метод `foo 'вызван для false: FalseClass из (irb): 9 из / usr / bin / irb: 12: в` '
Количество и значения аргументов командной строки можно определить с помощью ARGV
массива констант:
$ irb / dev / tty foo bartty (main): 001: 0> ARGV ARGV => ["foo", "bar"] tty (main): 002: 0> ARGV.size ARGV.size => 2
Первый элемент ARGV
, ARGV[0]
содержит первый аргумент командной строки, а не имя программы выполняется, как в C. названия программы доступно с помощью $0
или $PROGRAM_NAME
. [24]
Подобно Python, можно использовать:
if __FILE__ == $ PROGRAM_NAME # Поместите здесь "основной" код в конец
выполнить некоторый код, только если его файл был указан в ruby
вызове.
Ржавчина
В Rust точкой входа в программу является функция с именем main
. Обычно эта функция находится в файле с именем main.rs
или lib.rs
.
// В `main.rs` fn main () { println! ( «Привет, мир!» );}
Кроме того, начиная с Rust 1.26.0, функция main может возвращать Result
: [25]
fn main () -> Результат < (), std :: io :: Error > { println! ( «Привет, мир!» ); Ok (()) // Возвращаем тип `Result` значения` Ok` с содержимым `()`, то есть пустой кортеж. }
Быстрый
При запуске в Xcode Playground [26] Swift ведет себя как язык сценариев, выполняя операторы сверху вниз; допускается код верхнего уровня.
// HelloWorld.playgroundlet hello = "hello" let world = "world"пусть helloWorld = привет + "" + мирprint ( helloWorld ) // привет, мир
Какао - и Cocoa Touch -Ы приложение , написанное на Swift, как правило , инициализируется @NSApplicationMain
и @UIApplicationMain
атрибутами, соответственно. Эти атрибуты по своему назначению эквивалентны main.m
файлу в проектах Objective-C : они неявно объявляют main
функцию, вызывающую UIApplicationMain(_:_:_:_:)
[27], которая создает экземпляр UIApplication
. [28] Следующий код является способом по умолчанию для инициализации приложения iOS на основе Cocoa Touch и объявления его делегата приложения.
// AppDelegate.swiftимпорт UIKit@UIApplicationMain класс AppDelegate : UIResponder , UIApplicationDelegate { var window : UIWindow ? func application ( _ application : UIApplication , didFinishLaunchingWithOptions launchOptions : [ UIApplication . LaunchOptionsKey : Any ]?) -> Bool { return true } }
Visual Basic
В Visual Basic , когда проект не содержит форм, запускаемым объектом может быть Main()
процедура. Command$
Функция может дополнительно использоваться для доступа к аргумент части командной строки , используемой для запуска программы:
Sub Main () Отладка . Распечатать "Hello World!" MsgBox "Аргументы, если есть:" & Command $ End Sub
Xojo
В Xojo есть два разных типа проектов, каждый из которых имеет свою основную точку входа. Настольные (GUI) приложения запускаются с App.Open
события объекта проекта Application
. Консольные приложения запускаются с App.Run
события объекта проекта ConsoleApplication
. В обоих случаях функция main создается автоматически и не может быть удалена из проекта.
Смотрите также
- crt0 , набор процедур запуска выполнения, связанных с программой C
- Система выполнения
Рекомендации
- ^ «Что такое точка входа в вычислительной технике? (С изображением)» . мудрыйGEEK . Проверено 22 января 2020 .
- ^ Decker, Karsten M .; Реманн, Рене М. (1994). Программирование Среды для массивно - параллельных распределенных систем: Рабочая конференция ИФИП Wg 10.3, 25-29 апреля 1994 года . Springer Science & Business Media. ISBN 978-3-7643-5090-1.
- ^ «Основной метод в C #» . GeeksforGeeks . 2018-11-30 . Проверено 22 января 2020 .
- ^ Вагнер, Билл (2017-08-01). «Main () / Entry Points (Руководство по программированию C #) - Microsoft Developer Network» . docs.microsoft.com . Проверено 3 декабря 2018 .
- ^ «Функция main ()» . ibm.com . IBM . Проверено 8 мая 2014 .
- ^ «Аргументы Main () и командной строки (Руководство по программированию на C #)» . Msdn.microsoft.com . Проверено 8 мая 2014 .
- ^ «Основы приложения» . Разработка под Android . linuxtopia.org . Проверено 19 февраля 2014 .
- ^ argv: векторный термин в имени этой переменной используется в традиционном смысле для обозначения строк.
- ^ Типы параметров и названия основных
- ^ Раздел 3.6.1.2, Стандартное издание C ++ 2011.
- ^ « char *appleВектор аргумента» . Архивировано из оригинала на 2015-12-22 . Проверено 12 мая 2014 .
- ^ «Консольные приложения в .NET, или научим новую собаку старым трюкам» . Msdn.microsoft.com. 2003-06-12. Архивировано из оригинала на 2008-02-04 . Проверено 19 августа 2013 .
- ^ «Официальное репо для дизайна языка программирования C #: Dotnet / Csharplang» . 2019-08-26.
- ^ XL FORTRAN для AIX . Справочник по языку. Третье издание, 1994 г. IBM
- ^ «Отчет Haskell 98: Модули» . Haskell.org . Проверено 19 августа 2013 .
- ^ Некоторые заблуждения Haskell: идиоматический код, чистота, лень и ввод-вывод - на монадическом вводе-выводе Haskell>
- ^ «Языковая среда Java» . Oracle . Проверено 14 марта 2020 .
В классе HelloWorld мы объявляем единственный метод с именем main (), который, в свою очередь, содержит вызов одного метода для отображения строки «Hello world!». на стандартный вывод. Заявление, которое печатает "Hello world!" делает это, вызывая метод println объекта out. Объект out - это переменная класса в классе System, которая выполняет операции вывода с файлами.
- ^ Шильдт, Герберт (2019). Java: руководство для новичков . Нью-Йорк: McGraw-Hill Education. п. 46. ISBN 978-1-260-44022-5. OCLC 1061561931 .
// Программа JAVA начинается с вызова main ().
- ^ «Hello, World! - Бесплатное интерактивное учебное пособие по Java» . Изучите Java . Проверено 14 марта 2020 .
В Java каждая строка кода, которая действительно может выполняться, должна находиться внутри класса. "public class Main {}" объявляет класс с именем Main, который является общедоступным, что означает, что любой другой класс может получить к нему доступ.
- ^ «Hello, World! - Бесплатное интерактивное учебное пособие по Java» . Изучите Java . Проверено 14 марта 2020 .
"public static void main (String [] args) {}" - это точка входа в нашу программу Java. у основного метода должна быть эта точная подпись, чтобы иметь возможность запускать нашу программу.
- ^ Гвидо ван Россум (15 мая 2003 г.). «Функции Python main ()» , комментарииCS1 maint: postscript ( ссылка )
- ^ Code Like a Pythonista: Idiomatic Python, архивированный 27 мая 2014 г. на Wayback Machine - на скриптах Python, используемых в качестве модулей.
- ^ Нед Батчелдер (6 июня 2003 г.). «Функции Python main ()» .
- ↑ Programming Ruby: The Pragmatic Programmer's Guide, Ruby and its World - on Ruby
ARGV
- ^ "Releases.md" . GitHub Rust . Проверено 15 февраля 2019 .
- ^ Не путать со Swift Playgrounds , разработанным Apple приложением для iPad для изучения языка программирования Swift.
- ^ «UIApplicationMain (_: _: _: _ :) - UIKit» . Документация для разработчиков Apple . Проверено 12 января 2019 .
- ^ «МАУПриложение - УИКит» . Документация для разработчиков Apple . Проверено 12 января 2019 .
Внешние ссылки
- Привет из мира без libc! (Часть 1) , 16 марта 2010 г.
- Как основной метод работает в Java