Точка входа
Эта статья нуждается в дополнительных цитатах для проверки . ( февраль 2018 г. ) |
В компьютерном программировании точка входа — это место в программе, где начинается выполнение программы и где программа имеет доступ к командной строки . аргументам [ не удалось пройти проверку ] [1]
программы Чтобы начать выполнение , загрузчик или операционная система передает управление ее точке входа. (Во время загрузки программой является сама операционная система). Это отмечает переход от времени загрузки (и времени динамической компоновки , если оно присутствует) ко времени выполнения .
Для некоторых операционных систем и языков программирования точкой входа является библиотека времени выполнения — набор функций поддержки языка. Код библиотеки инициализирует программу, а затем передает управление самой программе. В других случаях программа может сама инициализировать библиотеку времени выполнения. [2]
В простых системах выполнение начинается с первого оператора, что часто встречается в интерпретируемых языках , простых исполняемых форматах и загрузчиках . В других случаях точка входа находится по другому известному адресу памяти , который может быть абсолютным или относительным адресом ( смещение ).
Альтернативно, выполнение программы может начаться в именованной точке либо с обычным именем, определенным языком программирования или операционной системой, либо с именем, указанным вызывающей стороной. Во многих языках семейства C эта функция называется main
; в результате точку входа часто называют основной функцией . [3]
В языках JVM , таких как Java , точкой входа является статический метод, называемый main
; в языках CLI, таких как 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 также в некоторой степени использовал это. Например, альтернативная точка входа в BASIC Apple I сохранит полезность программы BASIC при случайном нажатии кнопки сброса. [ нужны разъяснения ]
Точка выхода
[ редактировать ]В общем, программы могут выйти в любой момент, вернувшись в операционную систему или вылетев . Программы на интерпретируемых языках возвращают управление интерпретатору, но программы на компилируемых языках должны возвращаться операционной системе, иначе процессор просто продолжит выполнение после окончания программы, что приведет к неопределенному поведению .
Обычно в программе не указывается ни одна точка выхода. Однако в других случаях среды выполнения гарантируют, что программы всегда завершаются структурированным образом через единственную точку выхода, что гарантировано, если только сама среда выполнения не выйдет из строя; это позволяет запустить код очистки, например atexit
обработчики. Это можно сделать либо потребовав, чтобы программы завершали работу при возврате из основной функции, либо путем вызова определенной функции выхода, либо путем перехвата исключений или сигналов операционной системы во время выполнения.
Языки программирования
[ редактировать ]Во многих языках программирования main
Функция — это то место, где программа начинает свое выполнение. Он обеспечивает высокоуровневую организацию функциональности программы и обычно имеет доступ к аргументам команды, передаваемым программе при ее выполнении.
Основная функция обычно является первой функцией , написанной программистом , которая запускается при запуске программы и вызывается непосредственно из системной инициализации, содержащейся в среде выполнения ( crt0 или эквивалент). Однако некоторые языки могут выполнять написанные пользователем функции перед основным выполнением, например конструкторы глобальных объектов C++ .
В других языках, особенно во многих интерпретируемых языках , выполнение начинается с первого оператора программы.
Ниже приводится неисчерпывающий список языков программирования, описывающий способ определения основной точки входа:
АПЛ
[ редактировать ]В APL при загрузке рабочей области содержимое переменной «quad LX» (скрытое выражение) интерпретируется как выражение APL и выполняется.
С и С++
[ редактировать ]В C и C++ прототип функции main должен быть эквивалентен одному из следующих:
int main(void);
int main();
int main(int argc, char **argv);
int main(int argc, char *argv[]);
int main(int argc, char **argv, char **env);
// more specifically in C
// NOT according to the ISO C standard 5.1.2.2.1
// BUT in embedded programming depending on the µC, this form is also used
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[0]
, обычно с помощью exec
системный вызов.
The main()
функция особенная; обычно каждая программа C и C++ должна определять его ровно один раз.
Если объявлено, main()
должен быть объявлен так, как если бы он имел внешнюю связь; это не может быть объявлено static
или inline
.
В С++ main()
должно находиться в глобальном пространстве имен (т.е. ::main
), не может быть перегружен и не может быть функцией-членом , хотя имя иначе не зарезервировано и может использоваться для функций-членов, классов, перечислений или функций, не являющихся членами, в других пространствах имен. В C++ (в отличие от C) main()
не может быть вызван рекурсивно и не может получить его адрес.
С#
[ редактировать ]При выполнении программы, написанной на C# , CLR ищет статический метод, отмеченный значком .entrypoint
Директива IL, которая либо не принимает аргументов, либо принимает один аргумент типа string[]
и имеет возвращаемый тип void
или int
, и выполняет его. [12]
static void Main();
static void Main(string[] args);
static int Main();
static int Main(string[] args);
Аргументы командной строки передаются args
, аналогично тому, как это делается в Java. Для версий Main()
возвращая целое число, аналогично C и C++, оно передается обратно в среду как статус завершения процесса.
Начиная с C#7.1 существует еще четыре возможных сигнатуры точки входа, которые позволяют асинхронное выполнение в Main()
Метод. [13]
static async Task Main()
static async Task<int> Main()
static async Task Main(string[])
static async Task<int> Main(string[])
The Task
и Task<int>
типы являются асинхронными эквивалентами void
и int
. async
требуется, чтобы разрешить использование асинхронности ( await
ключевое слово) внутри метода.
Чистый
[ редактировать ]Clean — функциональный язык программирования, основанный на переписывании графов. Начальный узел называется Start
и имеет тип *World -> *World
если он меняет мир или какой-то фиксированный тип, если программа печатает результат только после сокращения Start
.
Start :: *World -> *World
Start world = startIO ...
Или даже проще
Start :: String
Start = "Hello, world!"
Один сообщает компилятору, какую опцию использовать для создания исполняемого файла.
Общий Лисп
[ редактировать ]ANSI Common Lisp не определяет главную функцию; вместо этого код читается и оценивается сверху вниз в исходном файле. Однако следующий код будет эмулировать функцию main.
(defun hello-main ()
(format t "Hello World!~%"))
(hello-main)
Д
[ редактировать ]В D прототип функции main выглядит следующим образом:
void main();
void main(string[] args);
int main();
int main(string[] args);
Аргументы командной строки передаются args
, аналогично тому, как это делается в C# или Java. Для версий main()
возвращая целое число, аналогично C и C++, оно передается обратно в среду как статус завершения процесса.
Дарт
[ редактировать ]Dart — это язык программирования общего назначения , который часто используется для создания веб-приложений и мобильных приложений. Как и во многих других языках программирования, в Dart есть точка входа, которая служит отправной точкой для программы Dart. Точка входа — это первая функция, которая выполняется при запуске программы. В Dart точкой входа обычно является функция с именем main
. Когда запускается программа Dart, среда выполнения Dart ищет функцию с именем main
и выполняет его. Любой код Dart, который должен выполняться при запуске программы, должен быть включен в файл. main
функция. Вот пример простого main
функция в Дарт:
void main() {
print("Hello, world!");
}
В этом примере main
функция просто печатает текст Hello, world!
на консоль при запуске программы. Этот код будет выполняться автоматически при запуске программы Dart.
Важно отметить, что, хотя main
Функция является точкой входа по умолчанию для программы Dart, при необходимости можно указать другую точку входа. Это можно сделать с помощью @pragma("vm:entry-point")
аннотация в Dart. Однако в большинстве случаев main
Функция — это точка входа, которую следует использовать для программ Dart.
ФОРТРАН
[ редактировать ]В FORTRAN нет основной подпрограммы или функции. Вместо этого PROGRAM
Оператор в первой строке может использоваться для указания того, что программный модуль является основной программой, как показано ниже. PROGRAM
оператор нельзя использовать для рекурсивных вызовов. [14]
PROGRAM HELLO
PRINT *, "Cint!"
END PROGRAM HELLO
Некоторые версии Фортрана, например версии IBM System/360 и последующих мэйнфреймов, не поддерживают оператор PROGRAM. Многие компиляторы других производителей программного обеспечения позволяют компилировать программу на языке Фортран без оператора PROGRAM. В этих случаях любой модуль, который имеет какой-либо оператор без комментариев, в котором не встречается оператор SUBROUTINE, FUNCTION или BLOCK DATA, считается основной программой.
ГНАТ
[ редактировать ]Используя GNAT , программисту не требуется писать функцию с именем main
; исходный файл, содержащий одну подпрограмму, может быть скомпилирован в исполняемый файл. Однако связующее создаст пакет ada_main
, который будет содержать и экспортировать основную функцию в стиле C.
Идти
[ редактировать ]В языке программирования Go выполнение программы начинается с main
функция package main
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Невозможно получить доступ к аргументам или коду возврата за пределами стандартной библиотеки Go. Доступ к ним можно получить через os.Args
и os.Exit
соответственно, оба из которых включены в "os"
упаковка.
Хаскелл
[ редактировать ]Программа на Haskell должна содержать имя main
привязано к значению типа IO t
, для некоторого типа t
; [15] что обычно IO ()
. IO
— это монада , которая организует побочные эффекты в виде чисто функционального кода. [16] main
Значение представляет собой вычисления с учетом побочных эффектов, выполняемые программой. Результат вычислений, представленный main
отбрасывается; поэтому main
обычно имеет тип IO ()
, что указывает на то, что тип результата вычисления ()
, тип единицы , не содержащий информации.
main :: IO ()
main = putStrLn "Hello, World!"
Аргументы командной строки не передаются 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[])
void main()
Аргументы командной строки передаются args
. Как и в C и C++, имя " main()
" является особенным. Основные методы Java не возвращают значение напрямую, но его можно передать с помощью System.exit()
метод.
В отличие от C, имя программы не включается в args
, поскольку это имя класса, содержащего основной метод, поэтому оно уже известно. Кроме того, в отличие от C, количество аргументов включать не нужно, поскольку массивы в Java имеют поле, которое отслеживает количество элементов.
Основная функция должна быть включена в класс. Это связано с тем, что в Java все должно содержаться в классе. Например, программа hello world на Java может выглядеть так:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
Чтобы запустить эту программу, необходимо вызвать java HelloWorld
в каталоге, где находится скомпилированный файл класса HelloWorld.class
) существует. Альтернативно, исполняемые файлы JAR используют файл манифеста для указания точки входа способом, независимым от файловой системы с точки зрения пользователя.
ЛОГОТИП
[ редактировать ]В FMSLogo процедуры при загрузке не выполняются. Чтобы заставить их выполниться, необходимо использовать этот код:
to procname ... ; Startup commands (such as print [Welcome]) end
make "startup [procname]
Переменная startup
используется для запуска списка действий, но соглашение заключается в том, что он вызывает процедуру, которая запускает действия. Эта процедура может иметь любое имя.
OCaml
[ редактировать ]В OCaml нет main
функция. Программы оцениваются сверху вниз.
Аргументы командной строки доступны в массиве с именем Sys.argv
и статус выхода по умолчанию равен 0.
Пример:
print_endline "Hello World"
Паскаль
[ редактировать ]В языке Паскаль основная процедура — это единственный безымянный блок в программе. Поскольку программы на языке Pascal определяют процедуры и функции в более строгом порядке снизу вверх, чем программы на C, C++ или Java, основной процедурой обычно является последний блок программы. Pascal не имеет особого значения для имени" main
"или любое похожее имя.
program Hello(Output);
begin
writeln('Hello, world!');
end.
Аргументы командной строки учитываются в ParamCount
и доступны как строки с помощью ParamStr(n)
, с n между 0 и ParamCount
.
Версии Pascal, поддерживающие модули или модули, также могут содержать в каждой из них безымянный блок, который используется для инициализации модуля. Эти блоки выполняются до вызова основной точки входа в программу.
Перл
[ редактировать ]В Perl нет функции main. Операторы выполняются сверху вниз, хотя операторы в BEGIN
блок выполняется перед обычными операторами.
Аргументы командной строки доступны в специальном массиве @ARGV
. В отличие от С, @ARGV
не содержит названия программы, которая $0
.
PHP
[ редактировать ]PHP не имеет «основной» функции. Начиная с первой строки PHP-скрипта, любой код, не инкапсулированный заголовком функции, выполняется, как только он виден.
Щука
[ редактировать ]Синтаксис в Pike аналогичен синтаксису C и C++. Исполнение начинается в main
. " argc
" Переменная хранит количество аргументов, переданных программе. " argv
" Переменная содержит значение, связанное с аргументами, переданными в программу.
Пример:
int main(int argc, array(string) argv)
Питон
[ редактировать ]Программы Python оцениваются сверху вниз, как это обычно бывает в языках сценариев: точкой входа является начало исходного кода. Поскольку определения должны предшествовать использованию, программы обычно имеют структуру с определениями вверху и кодом для выполнения внизу (без отступов), аналогично коду для однопроходного компилятора , такого как в Pascal.
Альтернативно, программа может быть структурирована с явным main
функция, содержащая код, который будет выполняться при непосредственном выполнении программы, но которую также можно вызвать, импортировав программу как модуль и вызвав функцию. Это можно сделать с помощью следующей идиомы, основанной на внутренней переменной __name__
настроен на __main__
когда программа выполняется, но не когда она импортируется как модуль (в этом случае вместо этого устанавливается имя модуля); существует множество вариантов этой конструкции: [21] [22] [23]
import sys
def main(argv):
n = int(argv[1])
print(n + 1)
if __name__ == '__main__':
sys.exit(main(sys.argv))
В этой идиоме вызов именованной точки входа main
является явным, а взаимодействие с операционной системой (получение аргументов, вызов выхода из системы) осуществляется явно посредством вызовов библиотеки, которые в конечном итоге обрабатываются средой выполнения Python. Это контрастирует с C, где это делается неявно во время выполнения, на основе соглашения.
QB64
[ редактировать ]В языке QB64 нет основной функции, сначала выполняется код, не входящий в функцию, или подпрограмма, сверху вниз:
print "Hello World! a =";
a = getInteger(1.8d): print a
function getInteger(n as double)
getInteger = int(n)
end function
Аргументы командной строки (если есть) можно прочитать с помощью команды КОМАНДА $ функция:
dim shared commandline as string
commandline = COMMAND$
'Several space-separated command line arguments can be read using COMMAND$(n)
commandline1 = COMMAND$(2)
Руби
[ редактировать ]В Ruby нет отдельной основной функции. Вместо этого код, написанный вне каких-либо class .. end
или module .. end
область действия выполняется в контексте специального " main
" объект. Доступ к этому объекту можно получить с помощью self
:
irb(main):001:0> self
=> main
Он имеет следующие свойства:
irb(main):002:0> self.class
=> Object
irb(main):003:0> self.class.ancestors
=> [Object, Kernel, BasicObject]
Методы, определенные вне 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: private method `foo' called for []:Array
from (irb):8
from /usr/bin/irb:12:in `<main>'
irb(main):009:0> false.foo
NoMethodError: private method `foo' called for false:FalseClass
from (irb):9
from /usr/bin/irb:12:in `<main>'
Количество и значения аргументов командной строки можно определить с помощью ARGV
постоянный массив:
$ irb /dev/tty foo bar
tty(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
# Put "main" code here
end
выполнять некоторый код только в том случае, если его файл указан в ruby
призыв.
Ржавчина
[ редактировать ]В Rust точкой входа в программу является функция с именем main
. Обычно эта функция находится в файле с именем main.rs
или lib.rs
.
// In `main.rs`
fn main() {
println!("Hello, World!");
}
Кроме того, начиная с Rust 1.26.0, функция main может возвращать Result
: [25]
fn main() -> Result<(), std::io::Error> {
println!("Hello, World!");
Ok(()) // Return a type `Result` of value `Ok` with the content `()`, i.e. an empty tuple.
}
Быстрый
[ редактировать ]При запуске на Xcode игровой площадке [26] Swift ведет себя как язык сценариев, выполняя инструкции сверху вниз; разрешен код верхнего уровня.
// HelloWorld.playground
let hello = "hello"
let world = "world"
let helloWorld = hello + " " + world
print(helloWorld) // hello world
Приложения на основе Cocoa и Cocoa Touch , написанные на Swift, обычно инициализируются с помощью @NSApplicationMain
и @UIApplicationMain
атрибуты соответственно. Эти атрибуты по своему назначению эквивалентны main.m
файл в проектах Objective-C : они неявно объявляют main
функция, которая вызывает UIApplicationMain(_:_:_:_:)
[27] который создает экземпляр UIApplication
. [28]
Следующий код — это способ по умолчанию инициализировать приложение iOS на базе Cocoa Touch и объявить его делегата приложения.
// AppDelegate.swift
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
return true
}
}
Визуальный Бейсик
[ редактировать ]В Visual Basic , если проект не содержит форм, объектом запуска может быть Main()
процедура. Command$
Функция может быть дополнительно использована для доступа к аргументной части командной строки, используемой для запуска программы:
Sub Main()
Debug.Print "Hello World!"
MsgBox "Arguments if any are: " & Command$
End Sub
Хохо
[ редактировать ]В Xojo есть два разных типа проектов, каждый со своей основной точкой входа. Настольные приложения (GUI) начинаются с App.Open
мероприятие проекта Application
объект. Консольные приложения начинаются с App.Run
мероприятие проекта ConsoleApplication
объект. В обоих случаях основная функция генерируется автоматически и не может быть удалена из проекта.
См. также
[ редактировать ]- crt0 , набор процедур запуска выполнения, связанных с программой C.
- Система выполнения
Ссылки
[ редактировать ]- ^ «Что такое точка входа в вычислительной технике? (с изображением)» . мудрыйГИК . Архивировано из оригинала 5 августа 2020 г. Проверено 22 января 2020 г.
- ^ Декер, Карстен М.; Реманн, Рене М. (1994). Среды программирования для распределенных систем с массовым параллелизмом: Рабочая конференция Ifip Wg 10.3, 25-29 апреля 1994 г. Springer Science & Business Media. ISBN 978-3-7643-5090-1 .
- ^ «Основной метод в C#» . Гики для гиков . 2018-11-30. Архивировано из оригинала 31 июля 2020 г. Проверено 22 января 2020 г.
- ^ Вагнер, Билл (01 августа 2017 г.). «Main()/Точки входа (Руководство по программированию на C#) — Microsoft Developer Network» . docs.microsoft.com . Архивировано из оригинала 11 ноября 2020 г. Проверено 03 декабря 2018 г.
- ^ «Функция main()» . IBM.com . ИБМ . Архивировано из оригинала 10 сентября 2017 г. Проверено 8 мая 2014 г.
- ^ «Main() и аргументы командной строки (Руководство по программированию на C#)» . Msdn.microsoft.com. Архивировано из оригинала 9 июня 2014 г. Проверено 8 мая 2014 г.
- ^ «Основы применения» . Разработка Android . linuxtopia.org. Архивировано из оригинала 31 декабря 2013 г. Проверено 19 февраля 2014 г.
- ^ argv: векторный термин в имени этой переменной используется в традиционном смысле для обозначения строк.
- ^ «Типы параметров и имена основных» . Архивировано из оригинала 10 ноября 2012 г. Проверено 28 июля 2016 г.
- ^ Раздел 3.6.1.2, Стандарт C++, издание 2011 г.
- ^ "
char *apple
Вектор аргумента» . Архивировано из оригинала 22 декабря 2015 г. Проверено 12 мая 2014 г. - ^ «Консольные приложения в .NET, или Обучение новой собаки старым трюкам» . Msdn.microsoft.com. 12 июня 2003 г. Архивировано из оригинала 4 февраля 2008 г. Проверено 19 августа 2013 г.
- ^ «Официальный репозиторий разработки языка программирования C#: Dotnet/Csharplan» . Гитхаб . 26 августа 2019 г.
- ^ XL FORTRAN для AIX . Справочник по языку. Третье издание, 1994 г. IBM .
- ^ «Отчет о Haskell 98: Модули» . Хаскелл.орг. Архивировано из оригинала 19 августа 2013 г. Проверено 19 августа 2013 г.
- ^ Некоторые заблуждения о Haskell: идиоматический код, чистота, лень и ввод-вывод. Архивировано 27 июля 2010 г. на Wayback Machine - о монадическом вводе-выводе Haskell>
- ^ «Языковая среда Java» . Оракул . Архивировано из оригинала 20 апреля 2019 г. Проверено 14 марта 2020 г.
В классе HelloWorld мы объявляем единственный метод main(), который, в свою очередь, содержит единственный вызов метода для отображения строки «Hello world!» на стандартном выходе. Оператор, который печатает «Hello world!» делает это, вызывая метод println объекта out. Объект out — это переменная класса в классе System, которая выполняет операции вывода над файлами.
- ^ Шильдт, Герберт (2019). Java: руководство для начинающих . Нью-Йорк: Образование Макгроу-Хилл. п. 46. ИСБН 978-1-260-44022-5 . OCLC 1061561931 .
//JAVA-программа начинается с вызова main().
- ^ «Привет, мир! — Бесплатное интерактивное руководство по Java» . Изучите Java . Проверено 14 марта 2020 г.
В Java каждая строка кода, которая действительно может выполняться, должна находиться внутри класса. «public class Main {}» объявляет класс с именем Main, который является общедоступным, что означает, что любой другой класс может получить к нему доступ.
- ^ «Привет, мир! — Бесплатное интерактивное руководство по Java» . Изучите Java . Проверено 14 марта 2020 г.
«public static void main(String[] args) {}» — это точка входа в нашу Java-программу. основной метод должен иметь именно эту сигнатуру, чтобы иметь возможность запускать нашу программу.
- ^ Гвидо ван Россум (15 мая 2003 г.). «Функции Python main()» . Архивировано из оригинала 11 июля 2015 года . Проверено 29 июня 2015 г. , комментарии.
- ^ Код как Pythonista: Идиоматический Python. Архивировано 27 мая 2014 г. в Wayback Machine - о сценариях Python, используемых в качестве модулей.
- ^ Нед Батчелдер (6 июня 2003 г.). «Функции Python main()» . Архивировано из оригинала 20 сентября 2015 года . Проверено 29 июня 2015 г.
- ^ Программирование на Ruby: Руководство прагматичного программиста, Ruby и его мир. Архивировано 31 августа 2013 г. в Wayback Machine - на Ruby.
ARGV
- ^ «Releases.md» . Гитхаб Руст. Архивировано из оригинала 15 мая 2015 г. Проверено 15 февраля 2019 г.
- ^ Не путать со Swift Playgrounds. Архивировано 8 июля 2022 г. в Wayback Machine , разработанном Apple приложении для iPad для изучения языка программирования Swift.
- ^ «UIApplicationMain(_:_:_:_:) — UIKit» . Документация разработчика Apple . Архивировано из оригинала 12 января 2019 г. Проверено 12 января 2019 г.
- ^ «UIApplication — UIKit» . Документация разработчика Apple . Архивировано из оригинала 13 января 2019 г. Проверено 12 января 2019 г.
Внешние ссылки
[ редактировать ]- Привет из мира, свободного от libc! (Часть 1). Архивировано 17 ноября 2016 г. в Wayback Machine , 16 марта 2010 г.
- Как работает основной метод в Java