Кіріспе

Компьютерлік бағдарламада нұсқаулар орындала бастайтын нүкте, сондай-ақ "Кіру нүктесі" және "Кіру орны" терминдерінің басқа қолданыстары.

Компьютерлік бағдарламалауда кіру нүктесі – бағдарламаның орындалуы басталатын және бағдарламаның командалық жол аргументтеріне қол жеткізе алатын орны. Бағдарламаны орындауды бастау үшін жүктеуші немесе операциялық жүйе басқаруды оның кіру нүктесіне жібереді. (Жүктелу кезінде операциялық жүйе өзі бағдарлама болып табылады). Бұл жүктелу уақытынан (және динамикалық байланыс уақытынан, егер болса) орындалу уақытына өтуді белгілейді. Кейбір операциялық жүйелер мен бағдарламалау тілдері үшін кіру нүктесі тілге арналған қолдау функциялары жиынтығынан – орындалу уақыты кітапханасында орналасқан. Кітапхана коды бағдарламаны инициализациялайды, содан кейін басқаруды бағдарламаның өзіне береді. Басқа жағдайларда бағдарлама өзі орындалу уақыты кітапханасын инициализациялай алады. Қарапайым жүйелерде орындалу бірінші оператордан басталады, бұл интерпретацияланған тілдерде, қарапайым орындалатын форматтарда және жүктеушілерде кең таралған. Басқа жағдайларда кіру нүктесі абсолюттік немесе салыстырмалы мекенжай (оффсет) болатын, белгілі бір жад адресінде орналасуы мүмкін. Сондай-ақ, бағдарламаның орындалуы атаулы нүктеден басталуы мүмкін, ол бағдарламалау тілі немесе операциялық жүйемен анықталған, немесе шақырушымен көрсетілген атауға ие болуы мүмкін. Көптеген C тілдері отбасында бұл main деп аталатын функция; нәтижесінде кіру нүктесі көбінесе main функциясы деп аталады. JVM тілдерінде, мысалы Java, кіру нүктесі main деп аталатын статикалық әдіс, ал C# сияқты CLI тілдерінде кіру нүктесі Main деп аталатын статикалық әдіс болып табылады.

Қолданылуы

Кіру нүктелері бастапқы кодқа да, орындалатын файлдарға да қатысты. Дегенмен, күнделікті бағдарламалауда бағдарламашылар кіру нүктелерін көбінесе бастапқы кодта ғана көрсетеді, бұл оларды жақсырақ білуге мүмкіндік береді. Орындалатын файлдардағы кіру нүктелері нақты операциялық жүйенің қолданбалық бинарлық интерфейсіне (ABI) тәуелді және компилятор немесе байланыстырғыш (сілтеуіш) жасайды, егер ABI оларды анықтамаса. Басқа байланыстырылған объект файлдарында да кіру нүктелері болуы мүмкін, оларды байланыстырғыш орындалатын файлдың кіру нүктелерін жасау кезінде пайдаланады. Кіру нүктелері командалық аргументтерді, айнымалыларды немесе басқа да ақпаратты Main әдісінде қолданылатын жергілікті айнымалы ретінде жіберуге қабілетті. Осы арқылы бағдарлама орындалғанда нақты параметрлерді орнатуға болады, содан кейін бағдарлама оларды түсіндіреді. Көптеген бағдарламалар осы мүмкіндікті әртүрлі параметрлерді конфигурациялаудың немесе бір бағдарлама арқылы әртүрлі тапсырмаларды орындаудың балама жолы ретінде пайдаланады.

Қазіргі заманғы

Қазіргі кездегі танымал бағдарламалау тілдері мен операциялық жүйелердің көпшілігінде компьютерлік бағдарламаның әдетте бір ғана кіру нүктесі болады. C, C++, D, Zig, Rust және Kotlin бағдарламаларында бұл main деп аталатын функция; Java-да бұл main деп аталатын статикалық әдіс (бірақ сыныпты шақыру кезінде көрсету қажет), ал C#-да Main деп аталатын статикалық әдіс. Көптеген негізгі операциялық жүйелерде стандартты орындалатын форматтың бір кіру нүктесі бар. Unix және Unix-қа ұқсас жүйелерде, мысалы Linux-та қолданылатын Executable and Linkable Format (ELF) форматында кіру нүктесі ELF баслығының e кіру өрісінде көрсетіледі. GNU Compiler Collection (gcc) -да сілтемелеуші қолданатын кіру нүктесі – бастау символы. Microsoft Windows-та қолданылатын Portable Executable форматында кіру нүктесі COFF-тан мұраланған AddressOfEntryPoint өрісімен анықталады. COM файлдарында кіру нүктесі 0100h белгіленген смещениесінде орналасқан. Бір кіру нүктесі қағидасына бір ерекшелік – Android. Android қосымшаларында бірыңғай кіру нүктесі жоқ, арнайы main функциясы да жоқ. Керісінше, оларда жүйе қажет болған жағдайда жүктей алатын және іске қоса алатын маңызды компоненттер (әрекеттер мен қызметтер) бар. Кейде қолданылатын техника – майлы бинарлық файл, ол бір файлда әртүрлі мақсаттарға арналған бірнеше орындалатын файлдан тұрады. Көбінесе, бұл барлық мақсаттармен үйлесімді жалпы кіру нүктесі арқылы іске асырылады, ол мақсатқа қарай кіру нүктесіне бағытталды. Баламалы техникаларға жеке орындалатын файлдарды жеке форктарда сақтау жатады, әрқайсысының өз кіру нүктесі болады, содан кейін оны операциялық жүйе таңдайды.

Тарихи

Тарихи тұрғыдан және кейбір қазіргі заманғы ескі жүйелерде, мысалы VMS және OS/400, компьютерлік бағдарламалардың көптеген кіру нүктелері болады, олардың әрқайсысы бағдарламаның әртүрлі функцияларына сәйкес келеді. VMS және PL/I және MACRO бағдарламаларында жүйелік деңгейде кеңінен қолданылатын кіру нүктелерін көрсетудің қалыпты жолы – оларды доллар белгісімен ($) бөлінген орындалатын файлдың атына қосу, мысалы, directory.exe$make. Apple I компьютері де осыны белгілі бір деңгейде қолданды. Мысалы, Apple I-дің BASIC-індегі балама кіру нүктесі, қайта орнату түймесіне кездейсоқ басқанда BASIC бағдарламасын пайдалы күйде сақтап тұратын еді.

Шығу нүктесі

Жалпы, бағдарламалар операциялық жүйеге қайта оралу арқылы немесе қателікке ұшырау арқылы кез келген уақытта аяқталуы мүмкін. Интерпретацияланған тілдердегі бағдарламалар басқаруды интерпретаторға қайтарады, ал компиляцияланған тілдердегі бағдарламалар операциялық жүйеге қайтаруы керек, әйтпесе процессор бағдарламаның соңына жеткеннен кейін де орындалуын жалғастыра береді, бұл белгісіз мінез-құлыққа әкеледі. Көбінесе бағдарламада бір ғана аяқталу нүктесі белгіленбеген. Дегенмен, кейбір жағдайларда орындалу ортасы бағдарламалардың әрқашан бір аяқталу нүктесі арқылы құрылымдалған түрде аяқталуын қамтамасыз етеді, бұл орындалу ортасының өзі қателікке ұшырамаса кепілдік беріледі; мұның арқасында тазалау коды, мысалы, atexit өңдеушілері орындалуы мүмкін. Мұны бағдарламалардың негізгі функциядан қайтып оралуы арқылы, белгілі бір аяқтау функциясын шақыру арқылы немесе орындалу ортасының ерекше жағдайларды немесе операциялық жүйе сигналдарын ұстауы арқылы іске асыруға болады.

АПЛ

APL-де жұмыс кеңістігі жүктелген кезде "quad LX" (жасырын өрнек) айнымалысының мазмұны APL өрнегі ретінде қарастырылып, орындалады.

GNAT

GNAT қолданғанда бағдарламашыға main деп аталатын функцияны жазу міндетті емес; бір ғана кіші бағдарламадан тұратын бастапқы файлды орындалатын файлға компиляциялауға болады. Бірақ, байланыстырушы (binder) C үлгісіндегі main функциясын қамтитын және экспорттайтын ada main деген пакетті жасайды.

Perl (жазу)

Perl-де басты функция жоқ. Операторлар жоғарыдан төмен қарай орындалады, бірақ BEGIN блогындағы операторлар әдеттегі операторлардан бұрын орындалады. Командалық жол аргументтері @ARGV атты арнайы массивте қолжетімді. C-дан өзгеше, @ARGV бағдарламаның атын қамтымайды, ол $0 арқылы белгіленеді.

PHP-де

PHP-де "main" функциясы жоқ. PHP скриптісінің бірінші жолынан бастап, функция тақырыбымен шектелмеген кез келген код, осы дереу орындалады.

Қожа

Xojo-да екі түрлі жоба түрі бар, олардың әрқайсысының бастапқы нүктесі өзгеше. Жұмыс үстелі (GUI) қолданбалары жобаның Application нысанының App.Open оқиғасымен басталады. Консольдік қолданбалар жобаның ConsoleApplication нысанының App.Run оқиғасымен басталады. Екі жағдайда да негізгі функция автоматты түрде жасалады және оны жобадан жоюға болмайды.