Jump to content

Точка входа

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

В компьютерном программировании точка входа — это место в программе, где начинается выполнение программы и где программа имеет доступ к командной строки . аргументам [ не удалось пройти проверку ] [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 нет 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-скрипта, любой код, не инкапсулированный заголовком функции, выполняется, как только он виден.

Синтаксис в 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 нет основной функции, сначала выполняется код, не входящий в функцию, или подпрограмма, сверху вниз:

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 объект. В обоих случаях основная функция генерируется автоматически и не может быть удалена из проекта.

См. также

[ редактировать ]
  1. ^ «Что такое точка входа в вычислительной технике? (с изображением)» . мудрыйГИК . Архивировано из оригинала 5 августа 2020 г. Проверено 22 января 2020 г.
  2. ^ Декер, Карстен М.; Реманн, Рене М. (1994). Среды программирования для распределенных систем с массовым параллелизмом: Рабочая конференция Ifip Wg 10.3, 25-29 апреля 1994 г. Springer Science & Business Media. ISBN  978-3-7643-5090-1 .
  3. ^ «Основной метод в C#» . Гики для Гиков . 2018-11-30. Архивировано из оригинала 31 июля 2020 г. Проверено 22 января 2020 г.
  4. ^ Вагнер, Билл (01 августа 2017 г.). «Main()/Точки входа (Руководство по программированию на C#) — Сеть разработчиков Microsoft» . docs.microsoft.com . Архивировано из оригинала 11 ноября 2020 г. Проверено 03 декабря 2018 г.
  5. ^ «Функция main()» . IBM.com . ИБМ . Архивировано из оригинала 10 сентября 2017 г. Проверено 8 мая 2014 г.
  6. ^ «Main() и аргументы командной строки (Руководство по программированию на C#)» . Msdn.microsoft.com. Архивировано из оригинала 9 июня 2014 г. Проверено 8 мая 2014 г.
  7. ^ «Основы применения» . Разработка Android . linuxtopia.org. Архивировано из оригинала 31 декабря 2013 г. Проверено 19 февраля 2014 г.
  8. ^ argv: векторный термин в имени этой переменной используется в традиционном смысле для обозначения строк.
  9. ^ «Типы параметров и имена основных» . Архивировано из оригинала 10 ноября 2012 г. Проверено 28 июля 2016 г.
  10. ^ Раздел 3.6.1.2, Стандарт C++, издание 2011 г.
  11. ^ " char *apple Вектор аргумента» . Архивировано из оригинала 22 декабря 2015 г. Проверено 12 мая 2014 г.
  12. ^ «Консольные приложения в .NET, или Обучение новой собаки старым трюкам» . Msdn.microsoft.com. 12 июня 2003 г. Архивировано из оригинала 4 февраля 2008 г. Проверено 19 августа 2013 г.
  13. ^ «Официальный репозиторий разработки языка программирования C#: Dotnet/Csharplan» . Гитхаб . 26 августа 2019 г.
  14. ^ XL FORTRAN для AIX . Справочник по языку. Третье издание, 1994 г. IBM .
  15. ^ «Отчет о Haskell 98: Модули» . Хаскелл.орг. Архивировано из оригинала 19 августа 2013 г. Проверено 19 августа 2013 г.
  16. ^ Некоторые заблуждения о Haskell: идиоматический код, чистота, лень и ввод-вывод. Архивировано 27 июля 2010 г. на Wayback Machine - о монадическом вводе-выводе Haskell>
  17. ^ «Языковая среда Java» . Оракул . Архивировано из оригинала 20 апреля 2019 г. Проверено 14 марта 2020 г. В классе HelloWorld мы объявляем единственный метод main(), который, в свою очередь, содержит единственный вызов метода для отображения строки «Hello world!» на стандартном выходе. Оператор, который печатает «Hello world!» делает это, вызывая метод println объекта out. Объект out — это переменная класса в классе System, которая выполняет операции вывода над файлами.
  18. ^ Шильдт, Герберт (2019). Java: руководство для начинающих . Нью-Йорк: Образование Макгроу-Хилл. п. 46. ​​ИСБН  978-1-260-44022-5 . OCLC   1061561931 . //JAVA-программа начинается с вызова main().
  19. ^ «Привет, мир! — Бесплатное интерактивное руководство по Java» . Изучите Java . Проверено 14 марта 2020 г. В Java каждая строка кода, которая действительно может выполняться, должна находиться внутри класса. «public class Main {}» объявляет класс с именем Main, который является общедоступным, что означает, что любой другой класс может получить к нему доступ.
  20. ^ «Привет, мир! — Бесплатное интерактивное руководство по Java» . Изучите Java . Проверено 14 марта 2020 г. «public static void main(String[] args) {}» — это точка входа в нашу Java-программу. основной метод должен иметь именно эту сигнатуру, чтобы иметь возможность запускать нашу программу.
  21. ^ Гвидо ван Россум (15 мая 2003 г.). «Функции Python main()» . Архивировано из оригинала 11 июля 2015 года . Проверено 29 июня 2015 г. , комментарии.
  22. ^ Код как Pythonista: Идиоматический Python. Архивировано 27 мая 2014 г. в Wayback Machine - о сценариях Python, используемых в качестве модулей.
  23. ^ Нед Батчелдер (6 июня 2003 г.). «Функции Python main()» . Архивировано из оригинала 20 сентября 2015 года . Проверено 29 июня 2015 г.
  24. ^ Программирование на Ruby: Руководство прагматичного программиста, Ruby и его мир. Архивировано 31 августа 2013 г. в Wayback Machine - на Ruby. ARGV
  25. ^ «Releases.md» . Гитхаб Руст. Архивировано из оригинала 15 мая 2015 г. Проверено 15 февраля 2019 г.
  26. ^ Не путать со Swift Playgrounds. Архивировано 8 июля 2022 г. в Wayback Machine , разработанном Apple приложении для iPad для изучения языка программирования Swift.
  27. ^ «UIApplicationMain(_:_:_:_:) — UIKit» . Документация разработчика Apple . Архивировано из оригинала 12 января 2019 г. Проверено 12 января 2019 г.
  28. ^ «UIApplication — UIKit» . Документация разработчика Apple . Архивировано из оригинала 13 января 2019 г. Проверено 12 января 2019 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d84508afddd120eb2a7ecdac98e0e716__1713390780
URL1:https://arc.ask3.ru/arc/aa/d8/16/d84508afddd120eb2a7ecdac98e0e716.html
Заголовок, (Title) документа по адресу, URL1:
Entry point - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)