网式过滤器规格山西朔州市网式过滤器供应厂家
К?мекш? (ба?ыны??ы) ба?дарлама (Вспомогательная программа (подпрограмма); subroutine) — бас?а ба?дарламаны? ??рамына к?рет?н, оны? б?р блогы рет?нде ?арастырылатын, ба?дарламалау т?л?н?? ережелер??е с?йкес жазыл?ан ?осал?ы ба?дарлама.[1]
К?ш? (?шк?) ба?дарлама (функция)
[??деу?| ?айнарын ??деу]Компьютерл?к ба?дарламаларда(computer programming) ?шк? ба?дарлама - б?л белг?л? б?р м?ндетт? орындайтын, б?рт?тас ба?дарламалы? н?с?аулы?тарды? ж?йел?л?г?. Б?л блокты ?андай да б?р на?ты м?ндет орындалатын ба?дарламаларда ?олдану?а болады.
К?ш? ба?дарламалар ба?дарламаларды? ?ш?нде немесе программалар к?тапханасы б?лек к?птеген ба?дарламалармен ай?ындалуы м?мк?н. ?р т?рл? ба?дарламалау т?лдер?нде ба?дарлама процедура(procedure), функция(function), ?д?с (method) немесе к?ш? ба?дарлама (subprogram) деп аталуы м?мк?н. Кейде "ша?ырылатын б?рл?к"(callable unit) жалпы термин? ?олданылады.
К?ш? ба?дарлама атауы ек? ма?ына ?сынады:?шк? ба?дарламаны? ?р? ба?дарламада б?р ?адам рет?нде пайдаланылатын компьютерл?к ба?дарлама сия?ты немесе бас?а к?ш? ба?дарламада шамамен б?рдей ?ызмет ат?арады. К?ш? ба?дарлама жи? осындай т?рт?ппен кодталады:б?рнеше рет ж?не ба?дарламаны б?р орындау кез?нде б?рнеше орындардан, соны? ?ш?нде бас?а да к?ш? ба?дарламалардан, ба?дарлама м?ндетт? ж?зеге асырыл?аннан кей?н келес? н?с?ау?а фунция ша?ырыл?аннан со?(function call) кер? ?арай оралуы (return).
К?ш? ба?дарлама идеясы ал?ашында Джон Маучли ENIAC ?ст?нде ж?мыс ?стеу кез?нде ойлап тапты ж?не "EDVAC типт? машиналар?а арнал?ан есептерд? дайындау" та?ырыбы бойынша 1947 жылды? ?а?тарында Гарвард симпозиумында осы туралы жаз?ан.Морис Уилкс, Дэвид Уиллер ж?не Стэнли Джилл ?детте т?жырымдаманы? ресми ?нертабыскерлер? болып есептелед?. Aшы? к?ш? немесе немесе микроба?дарламалау ба?дарлама?а ?ара?анда олар т?жырымды жабы? к?ш? ба?дарлама атауын берген.
Ба?дарлама- ба?дарламалауды? ?уатты ??ралы, ж?не к?птеген ба?дарламалау т?л? синтаксисi оларды жазу мен пайдалануды ?амтиды. К?ш? ба?дарламаларды а?ыл?а ?онымды пайдалану (мысалы, ??рылымдал?ан ба?дарламалау(structured programming) т?с?л? ар?ылы) ?лкен ба?дарламаны ?з?рлеуге ж?не ?ызмет к?рсетуге ж?мсалатын шы?ындарды жи? т?мендетед?, сонымен ?атар оны? сапасы мен сен?мд?л?г?н арттырады. К?тапханаларда жи? жинал?ан к?ш? ба?дарламалар ба?дарламалы? ?амтамасыз етуд? б?рлес?п пайдалану ж?не сату ?ш?н ма?ызды тет?к болып табылады. Объект?ге-ба?ыттал?ан ба?дарламалау(object-oriented programming) п?н? обьект (ба?дарламалау) мен ?д?стерге нег?зделген (б?л объект?лер(objects) немесе объект?лер класстарына(object classes) бек?т?лген к?ш? ба?дарламалар болып табылады).
А?ын коды(threaded code) атауын ал?ан компилятор(compiling) ?д?с?нде орындалатын ба?дарлама нег?з?нен ба?дарлама ша?ыруларыны? т?збег? болып табылады.
Нег?зг? т?жырымдамалар
[??деу?| ?айнарын ??деу]Ба?дарлама мазм?ны оны? денес? болып табылады, ол ба?дарлама ша?ыр?анда немесе ша?ыр?анда орындалатын ба?дарламалы? кодты? фрагмент? болып табылады. Ба?дарлама ша?ырушы ба?дарламалардан (оны? параметрлер?н(parameters) немесе формальды параметрлер?н(formal parameters) ауыстыру ?ш?н) б?р немесе б?рнеше аргументтер(arguments) м?н?н алуды к?туге болатындай жазылуы м?мк?н. Ша?ырушы ба?дарлама аргументтер деп аталатын осы параметрлерге на?ты м?ндерд? беред?. Т?рл? ба?дарламалау т?лдер? аргументтерд? ж?беру ?ш?н т?рл? кел?с?мдерд? пайдалана алады:
Кел?с?м | Сипаттамасы | Жалпы пайдаланымы |
---|---|---|
М?н? бойынша ша?ыру | Аргумент есептелед? ж?не м?н к?ш? ба?дарлама?а бер?лед? | Algol 60 кей?н к?птеген Алгол тектес т?лдер ?депк? бойынша default, мысалы Pascal(Паскаль), Delphi, Similar, CPL, PL/M, Modula, Oberon, Ada ж?не т.б. C, C++, Java (нысандар мен массивтерге с?лтеме м?н? бойынша бер?лед?) |
С?лтеме бойынша ша?ыру | Д?лелге с?лтеме, ?детте, оны? мекенжайы бер?лед? | Algol 68, Pascal, Delphi, Similar, CPL, PL/M, Modula, Oberon, Ada ж?не т.б. сия?ты к?птеген Алгол?а ??сас т?лдер ALGOL 60 кей?н та?далады. C++, Fortran, PL / I |
Н?тиже бойынша ша?ыру | Параметр м?н? функциядан ?айтару кез?нде аргументке кер? к?ш?р?лген | Ada OUT параметрлер? |
Н?тиже-м?н? бойынша ша?ыру | Параметр м?н? к?ш? ба?дарлама к?ргенде ж?не ?айта ?айтарыл?анда к?ш?р?лед? | Algol |
Атауы бойынша ша?ыру | Макро рет?нде – параметрлерд? ба?аланба?ан аргумент ?рнектермен ауыстыру | Algol, Scala |
Т?ра?ты м?н? бойынша ша?ыру | М?н? бойынша ша?ыру сия?ты б?ра? параметр константа рет?нде ?арастырылады | PL/I БА?АЛАНБАЙТЫН параметрлер?, Ada IN параметрлер? |
К?ш? ба?дарлама ша?ырушы объект?ге есептелген м?нд? (оны? ?айтарылатын м?н?н(return value) ) ?айтаруы немесе ?рт?рл? н?тиже берет?н м?ндерд? немесе шы?ыс параметрлер?н беру? м?мк?н. Шын м?н?нде, к?ш? ба?дарламаларды жалпы пайдалану функция (математика) ж?зеге асыру болып табылады, онда к?ш? ба?дарламаны? ма?саты тек б?р немесе б?рнеше н?тижелерд? есептеу болып табылады, оларды? м?ндер? толы? бер?лген к?ш? ба?дарлама?а бер?лет?н аргументтермен ай?ындалады. (Мысалдар санны? логарифм?н немесе матрица (математика) аны?тауыш (математика)(determinant of a matrix) есептеуд? ?амтуы м?мк?н.)
Ба?дарлама ша?ыруы, сондай-а?, компьютерл?к жадында?ы м?л?меттер ??рылымын(data structures) ?згерту, сырт?ы (шал?ай) жабды? (peripheral device) о?у немесе жазу, файлды жасау, ба?дарламаны немесе машинаны то?тату немесе белг?л? б?р уа?ытта ба?дарламаны орындауды к?д?рту сия?ты жанама ?серлер? болуы м?мк?н. Жанама ?серлер? бар к?ш? ба?дарлама ол сол д?лелдермен байланысты болса да, ша?ырыл?ан сайын ?р т?рл? н?тижелерд? ?айтаруы м?мк?н. Мысал рет?нде к?птеген т?лдерде ?ол жет?мд? кездейсо? сандарды? функциясы(random number function) бола алады, ол ?р т?рл? жал?ан кездейсо? сандарды ша??ан сайын ?айтарады. Жанама ?серлер? бар к?ш? ба?дарламаларды ке??нен пайдалану императивт? ба?дарламалау(imperative programming) т?лдер?н?? т?н ерекшел?г? болып табылады.
К?ш? ба?дарлама ?з м?ндеттер?н орындау ?ш?н б?р немесе б?рнеше жерде ?з?н рекурсивт? тудыратындай ет?п кодтау?а болады. Б?л ?д?с математикалы? индукциямен ж?не рекурсивт? алгоритмдермен аны?тал?ан функцияларды(divide and conquer algorithm) т?келей ж?зеге асыру?а м?мк?нд?к беред?. Б?р логикалы? функцияны есептеуге арнал?ан к?ш? ба?дарлама (я?ни "И?/Жо?" с?ра?ына жауап беру ?ш?н) кейде предикат деп аталады. Логикалы? программалау т?лдер?нде жи? [шашыра??ы] барлы? к?ш? ба?дарламалар предикаттар деп аталады, ?йткен? олар б?р?нш? кезекте [шашыра??ы] табыс?а немесе с?тс?зд?кке байланысты.
Т?лд?к ?олдау
[??деу?| ?айнарын ??деу]Жо?ары де?гейл? ба?дарламалау т?лдер? ?детте белг?л? б?р ??рылымдарды ?амтиды:
- К?ш? ба?дарламаны ??райтын ба?дарламаны? б?л?г?н (денес?н) б?лy
- К?ш? идентификатор (аты)
- Оны? параметрлер? мен ?айтарылатын м?ндер деректер?н?? атын ж?не м?л?меттер тип?н к?рсету
- Уа?ытша айнымалы ?ш?н жеке атау айма?ын беру
- ?шк? ?ол жет?мд? ?шк? ба?дарламадан тыс айнымалыларды аны?тау
- К?ш? ба?дарламаны ша?ыру
- Параметрлерге м?н беру
- Нег?зг? ба?дарлама к?ш? ба?дарлама адрес?н ?амтиды
- К?ш? ба?дарлама нег?зг? ба?дарламада?ы функцияларды? келес? ша?ыру н?с?аулы?ыны? адрес?н ?амтиды
- Денеден ?айтарылатын м?ндерд? к?рсету
- Ша?ырушы ба?дарлама?а ?айтару
- Ша?ыру ?айтарылатын м?ндерд? жою
- Ша?ыру кез?нде туында?ан кез келген ерекше жа?дайларды ??деу
- К?ш? ба?дарламаларды модульге, программалар к?тапханасы, обьект (ба?дарламалау) немесе класс?а буып-т?йю
Паскаль (ба?дарламалау т?л?), Фортран, Ада (ADA) сия?ты кейб?р ба?дарламалау т?лдер? ж?не к?птеген BASIC(Бейсик) диалект?лер?, ша?ырушы ба?дарламаны? аны? ?айтарылатын м?н?н берет?н функцияларды немесе функционалды? к?ш? ба?дарламаларды ж?не м?ны жасамайтын к?ш? ба?дарламаларды немесе р?с?мдерд? ажыратады. Б?л т?лдерде функцияларды? ша?ырулары ?детте ?рнектерде орнатыл?ан (мысалы, sqrt функциясы y = z + sqrt(x)). рет?нде туындауы м?мк?н). Процедуралар ша?ырулары немесе операторлар рет?нде синтаксист?к т?рде (мысалы, print процедурасы if x > 0 then print(x) немесе CALL немесе GOSUB (мысалы, call print(x)).) сия?ты оператормен ай?ын ша?ырылуы м?мк?н. C ба?дарламалау т?л? ж?не Lisp сия?ты бас?а т?лдер функциялар мен к?ш? ба?дарламалар арасында айырмашылы?тар жасамайды. Haskell(М?т?нд? автоматты ??деу) сия?ты ?ата? функционалды? ба?дарламалау т?лдер?нде, ба?дарлама еш?андай жанама ?серлер? болуы м?мк?н емес, б?л ба?дарламаны? ?р т?рл? ?шк? к?йлер? ?згерт?лмейд? дегенд? б?лд?ред?. Функциялар ?р?ашан б?рдей д?лелдермен ?айта ?о?ырау шалу кез?нде б?рдей н?тижен? ?айтарады. М?ндай т?лдер, ?детте, тек функцияларды ?ана ?олдайды, себеб? м?н? ?айтарылмайтын к?ш? ба?дарламалар, егер олар жанама ?серд? тудыруы м?мк?н болмаса, еш?андай пайдасы жо?. C, C++ ж?не C#(C Sharp) сия?ты ба?дарламалау т?лдер?нде, сондай-а?, ба?дарламалар жай ?ана функциялармен аталады, ?рт?рл? ??ымдар болып табылатын математикалы? функциялармен(Функция (математика)) немесе функционалды? ба?дарламалармен шатастырмауы ?ажет. K?ш? ба?дарламалар оларды ша?ыратын ба?дарламалардан б?лек компиляциялануы м?мк?н ?ш?н т?л компиляторы ?детте процедуралар ша?ыруларын аударады ж?не ша?ыру туралы на?ты белг?ленген кел?с?мге с?йкес машина н?с?ауларына ?айтарады. Call ж?не return операторларына с?йкес келет?н н?с?ауларды? ретт?л?г? пролог ж?не эпилог процедуралар деп аталады.
Арты?шылы?тары
[??деу?| ?айнарын ??деу]Ба?дарламаны к?ш? ба?дарламалар?а б?лу арты?шылы?тары:
- ?арапайым кезе?дерге ба?дарламалауды? к?рдел? есеб?н?? декомпозициясы(decomposing): б?л м?л?меттер ??рылымымен(data structure) ?атар ??рылымдал?ан ба?дарламалауды?(structured programming) ек? нег?зг? ??ралдарыны? б?р?
- Ба?дарламада?ы код дубликаттарыны?(duplicate code) санын ?ыс?арту
- Б?рнеше ба?дарламаларда кодты ?айта пайдалануды ?осу
- ?р т?рл? ба?дарламашылар немесе жобаны? ?р т?рл? кезе?дер? арасында ?лкен ба?дарламалау есеб?н б?лу
- К?ш? ба?дарламаны пайдаланушылардан ж?зеге асыру б?лшектер?н жасыру
- Код блогыны? функцияны? сипаттамалы? атауы код блогын сипаттау ?ш?н ?ызмет етет?н кодты ша?ырумен ауыстыру ар?ылы кодты? о?ылуын жа?сарту. Б?л функция ?айта пайдалану?а арналма?ан болса да, ?ыс?а ж?не о?ылатын кодты жасайды.
- ?ада?алауды?(traceability) жа?саруы (я?ни к?птеген т?лдер ?ске ?осыл?ан к?ш? ба?дарламаларды? аттарын ж?не файлдар мен жолдар н?м?рлер? сия?ты к?п а?паратты ?амтитын ша?ыруларды тарту т?с?лдер?н ?сынады); егер кодты к?ш? ба?дарламалар?а б?лмесе, баптау(debugging) ?атты б?зылатын болады
Кемш?л?ктер?
[??деу?| ?айнарын ??деу]- ?шк? кодты пайдаланумен салыстыр?анда, к?ш? ба?дарлама ша?ыруы кейб?р есептеу шы?ындарын(computational overhead) ша?ыру механизм?не салады.
- К?ш? ба?дарлама ?детте housekeeping стандартты кодын талап етед?-функция?а к?рген кезде де, одан шы??ан кезде де (функцияны? прологы мен эпилог – ?детте жалпы ма?сатта?ы процессор регистр?(general purpose and registers) ж?не кер? адрест?(return address) са?тау).
Тарихы
[??деу?| ?айнарын ??деу]Ба?дарлама идеясы есептеу машиналары б?раз уа?ыт бойы бол?ан со? ?з?рленд?. Ауысуды? арифметикалы? ж?не шартты н?с?аулары алдын ала жоспарлан?ан ж?не салыстырмалы т?рде аз ?згерд?; б?ра? процедураларды ша?ыру ?ш?н пайдаланылатын арнайы н?с?аулар осы жылдар ?ш?нде ?атты ?згерд?. Manchester Baby ж?не RCA 1802 сия?ты е? ерте компьютерлер мен микропроцессорлар к?ш? ба?дарламаларды ша?ыруды? б?ры??ай н?с?аулы?тары бол?ан жо?. Ба?дарлама ?ске асырылуы м?мк?н, б?ра? олар программистерден ша?ырулар т?збег?н-н?с?аулы?тар сериясын-?рб?р ша?ыру торабында(call site) пайдалануды талап етт?.
К?ш? ба?дарлама Z4 Конрада Зузе 1945 жылы ?ске асырылды. 1946 жылы Алан Тьюринг "жерлеу"(bury) ж?не " ?айта ?азып алу"(unbury) терминдер?н ша?ыру ж?не к?ш? ба?дарламалардан ?айтару ??ралы рет?нде пайдаланды. Джон Маучли 1947 жылды? ?а?тар айында Гарвард университет? ж?не ??рама Штаттарды? ?скери-те??з флотыны? о?-д?р? бюросымен б?рлес?п ?йымдастыр?ан ?р? масштабты санды? есептеу машиналарыны? симпозиумында жалпы ескертулерд? ?сынды. М?нда ол д?йект? ж?не параллель операцияны тал?ылайды. ...машинаны? ??рылымы б?рде-б?р битке к?рделенбеу? ти?с. Б?л процедура?а ?ажетт? барлы? логикалы? сипаттамалар бар бол?анды?тан, машинада белг?л? орындарда жадта к?ш? ба?дарламаларды орналастыру ж?не кодтаушы н?с?ауды о?ай ?олданыла алатындай ?ш?н ?з?рлеуге болатындай ?стед?.
Бас?а с?збен айт?анда, А к?ш? ба?дарламасын б?лу рет?нде, ал В к?ш? ба?дарламасы-к?рдел? к?бейту рет?нде, ал С к?ш? ба?дарламасы-на?ты м?ндет ?ш?н ?ажетт? к?ш? ба?дарламаларды? т?з?м? бойынша сандарды? ретт?л?г?н?? стандартты ?атес?н ба?алау рет?нде белг?леуге болады. ... Барлы? к?ш? ба?дарламалар содан кей?н машинада са?талады, ж?не олар кодтауда к?рсет?лген н?м?р? бойынша олар?а ?ыс?аша с?лтеме жасау керек. Кей Макналти ENIAC командасында Джон Мочлимен ты?ыз байланыста ж?не ек?нш? д?ниеж?з?л?к со?ыс кез?нде ба?дарламалан?ан ENIAC компьютер?не арнал?ан к?ш? ба?дарлама идеясын ?з?рлед?. Ол ж?не ENIAC бас?а программистер? осы к?ш? ба?дарламаларды зымыран траекторияларын есептеу ?ш?н пайдаланды.
Гольдстайн ж?не Джон фон Нейман 1948 жылды? 16 тамызында?ы ма?аланы жазды, онда к?ш? ба?дарламаларды? пайдалылы?ы тал?ыланды. IBM 1620, Intel 4004 ж?не Intel 8008 сия?ты кейб?р ?те ерте компьютерлер мен микропроцессорлар, сондай-а? PIC микроконтроллерлер? кер? адрестерд? са?тау ?ш?н б?л?нген аппаратты? стект? пайдаланатын б?р н?с?аулы?пен к?ш? ба?дарлама ша?ыруы бар-м?ндай жабды? тек б?рнеше к?ш? ба?дарламаларды ?олдайды, б?ра? рекурсивт? к?ш? ба?дарламаларды да ?олдай алады. 1960—шы жылдарды? ортасына дей?нг? машиналар—UNIVAC I, PDP-1 ж?не IBM 1130 сия?ты-?детте ша?ыратын к?ш? ба?дарламаны? б?р?нш? жадында командаларды? санауышын са?тайтын ша?ыру туралы кел?с?мд? пайдаланады. Б?л ба?дарлама к?р?ст?л?г?н?? ерк?н тере? де?гей?н пайдалану?а м?мк?нд?к беред?, б?ра? рекурсивт? к?ш? ба?дарламаларды ?олдамайды. PDP-11(1970) - б?л к?ш? ба?дарламаны? итерг?ш стекаларын ша?ыру н?с?аулы?ы бар ал?аш?ы компьютерлерд?? б?р?; б?л функция к?ш? ба?дарламаларды? ерк?н тере? салынуын да, рекурсивт? к?ш? ба?дарламаларды да ?олдайды.
Т?л ?олдауы
[??деу?| ?айнарын ??деу]Ал?аш?ы ассемблерлерде к?ш? ба?дарламаларды ?олдау шектеул? болды. К?ш? ба?дарламалар б?р-б?р?нен немесе нег?зг? ба?дарламадан аны? б?л?нген жо?, ж?не шын м?н?нде, к?ш? ба?дарламаны? бастап?ы коды бас?а к?ш? ба?дарламаларды? бастап?ы кодымен ауыстырылуы м?мк?н бол?ан. Кейб?р ассемблерлер ша?ыру ж?не ?айтару т?збектер?н жасау ?ш?н алдын ала аны?тал?ан микроба?дарламалауды ?сынады. 1960 жыл?а ?арай ассемблерлер ?детте к?р?кт?р?лген, сондай-а? оларды б?рге байлау?а болатындай ,жеке жинал?ан к?ш? ба?дарламаларды ?лде?айда к?рдел? ?олдау?а ие болды.
К?ш? ба?дарламалар к?тапханалары
[??деу?| ?айнарын ??деу]Т?пт? м?ндай ?иынды? тудыратын т?с?лде к?ш? ба?дарлама ?те пайдалы болды. Б?р?нш?ден, олар к?птеген т?рл? ба?дарламаларда б?рдей кодты пайдалану?а м?мк?нд?к берд?. Сонымен ?атар, жады ерте компьютерлерде ?те тапшы ресурс болды ж?не к?ш? ба?дарламалар ба?дарлама к?лем?н айтарлы?тай ?немдеуге м?мк?нд?к берд?. К?птеген ерте компьютерлер ба?дарлама н?с?ауларын тес?мтаспадан жад?а ж?ктед?. Сонымен ?атар, ?р ба?дарлама нег?зг? ба?дарлама?а (немесе "mainline") дей?н немесе кей?н ж?ктелген немесе жал?астырыл?ан лентаны? жеке бумасымен ?амтамасыз ет?лу? м?мк?н; ж?не де к?ш? ба?дарламаны? сол лентасы к?птеген т?рл? ба?дарламалармен пайдаланылуы м?мк?н. Осындай т?с?л ?з?н?? нег?зг? енг?зу ?ш?н тес?мкарталарды пайдалан?ан компьютерлерде де ?олданылды. "К?ш? ба?дарламалар к?тапханасы" атауы алдымен ?жымды? пайдалану ?ш?н таспаларды? индекстелген коллекцияларын немесе карта колодын са?та?ан к?тапхананы б?лд?ред?.
?айтару жанама ?ту
[??деу?| ?айнарын ??деу]?з бет?нше ?згерет?н кодты?(self-modifying code) ?ажетт?л?г?н жою ?ш?н, компьютерлерд? ?з?рлеуш?лер а?ырында жанама ?ту(indirect jump командасын ?сынды, оны? операндасы кер? адрест??(return address) орнына айнымалы немесе ?айтару адрест? ?амтитын процессор регистр?н??(processor register) орналас?ан жер? болды. Б?л компьютерлерде к?ш? ба?дарламаны? кер? ауысуын ?згертуд?? орнына ша?ырушы ба?дарлама кер? адрест? айнымалы ет?п са?тайды, сонды?тан К?ш? Ба?дарламаны орындау ая?тал?аннан кей?н ол жанама ауысуды орындайды, ол орындауды алдын ала аны?тал?ан айнымалы(predefined variable) бер?лген орын?а ж?беред?.
К?ш? ба?дарлама?а ?ту
[??деу?| ?айнарын ??деу]Сонымен ?атар, ?осымша шы?ындарды барынша азайтып, кер? мекенжайды са?тауды б?р?кт?рген к?ш? ба?дарлама н?с?аулы?ына ауысу ал?а та?ы б?р ?адам болды. Мысалы, процедураларды ша?ыру?а арнал?ан IBM System / 360 bal немесе BALR тарма?тарында?ы н?с?аулар 14 регистр шарты бойынша н?с?аулы?та к?рсет?лген процессорды? регистр?ндег? кер? адрест? са?тап ?алады. Кер? оралу ?ш?н, ба?дарлама тек осы регистр ар?ылы (BR) тарма?тарды? жанама н?с?аулы?ын орындауы ти?с болды. Егер к?ш? ба?дарлама осы регистрге ?андай да б?р бас?а ма?сат ?ш?н ?ажет болса (мысалы, бас?а к?ш? ба?дарламаны ша?ыру ?ш?н), ол регистрд?? мазм?нын жеке жадында немесе регистрлерд?? стек?нде са?тап ?алады. HP 2100 сия?ты ж?йелерде JSB н?с?ауы, кер? мекен-жай тарма?тарды? ма?саты бол?ан жад ?яшы?ында са?тал?анын ?оспа?анда, ??сас тапсырманы орындал?ан ед?. Процедураны орындау келес? жад орнында басталады. Мысалы, HP 2100 ассемблер? т?л?нде жазу?а болады:
... JSB MYSUB (Calls subroutine MYSUB.) BB ... (Will return here after MYSUB is done.)
нег?зг? ба?дарламадан мен?? ?осал?ы ба?дарламам туында?ан к?ш? ба?дарламаны ша?ыру ?ш?н. К?ш? ба?дарлама келес?дей кодталады: MYSUB NOP (Storage for MYSUB's return address.)
AA ... (Start of MYSUB's body.) ... JMP MYSUB,I (Returns to the calling program.)
Ша?ыру стэг?(Call stack)
[??деу?| ?айнарын ??деу]?аз?рг? заман?ы ша?ыруларды ж?зеге асыру к?птеген ба?дарламалар ?о?ырау стек?н, жеке деректер стек ??рылымын пайдаланады, ша?ыруларды ?ске асыру ж?не к?ш? ба?дарламаларды ?айтару ?ш?н. Процедураны? ?рб?р ша?ыруы стек жа?тауы деп аталатын жа?а жазба жасайды; процедура ?айтарыл?анда, оны? стек жа?тауы стектен жойылады ж?не оны? ке??ст?г? процедураны? бас?а ша?ырулары ?ш?н пайдаланылуы м?мк?н. Стект?? ?р кадрында ?детте процедуралар параметрлер? мен ?шк? айнымалыларды, сондай-а? кер? адрест? ?амтитын ти?ст? ша?ыруды? жеке м?л?меттер? бар.
Ша?ырулар т?збег? ?арапайым н?с?ауларды? (reduced instruction set computing (RISC) ж?не very long instruction word (VLIW) с?улет?нде ?л? де пайдаланылатын т?с?л) ретт?л?г?мен ж?зеге асырылуы м?мк?н, б?ра? 1960-шы жылдарды? со?ында ?з?рленген к?птеген д?ст?рл? машиналар осы ма?сат ?ш?н арнайы н?с?ауларды ?амтиды.
?о?ырау стег? ?детте ?зд?кс?з жады айма?ы рет?нде ?ске асырылады. Б?л дизайн ерк?н та?дау, стек т?менг? б?л?г? осы салада?ы е? т?мен немесе е? жо?ары мекен-жайы болып табылады ма, сонды?тан стек жадында ал?а немесе арт?а ?су? м?мк?н; алайда к?птеген с?улет со??ысын та?дады.
Кейб?р конструкцияларда, ?с?ресе кейб?р т?рт?нш? ?ске асыруда ек? б?лек стек пайдаланылды, б?реу? нег?з?нен бас?ару а?паратына (мысалы, кер? адрестер мен циклдерд?? есептеу?штер?), ек?нш?с?-деректер ?ш?н. Б?р?нш? ?о?ырау стек рет?нде ж?мыс ?стед? ж?не бас?а т?л конструкциялары ар?ылы ба?дарламашы жанама ?ол жет?мд? болды, ал ек?нш? т?келей ?ол жет?мд? болды.
Стек нег?з?нде процедураларды? ша?ырулары ал?аш рет пайда бол?ан кезде, ма?ызды ынталандыру ?ымбат жадты са?тау болды.б?л схеманы пайдалану кез?нде компилятор ?рб?р процедураны? жеке деректер? ?ш?н (Параметрлер, кер? мекенжай ж?не жерг?л?кт? айнымалы) жадында?ы жеке ке??ст?кт? резервте са?тау ?ажет емес. Кез келген уа?ытта стек тек жеке ?о?ырау деректер? бар, олар ?аз?рг? уа?ытта белсенд? (атап айт?анда, ша?ырыл?ан, б?ра? ?айта оралма?ан). Ба?дарламалар ?детте к?тапханалардан жинал?ан бол?анды?тан (ж?не ?л? к?нге дей?н ?алады) мы?да?ан к?ш? ба?дарламаларды ?амтитын ба?дарламаларды табу сирек болмады, оларды? тек б?рнешеу? ?аз?рг? уа?ытта белсенд?.м?ндай ба?дарламалар ?ш?н ?о?ырау со?у механизм? жад к?лем?н ?немдеу? м?мк?н. Шын м?н?нде, ?о?ырау стег?н?? механизм?н жадыны автоматты бас?аруды? е? ерте ж?не ?арапайым ?д?с? рет?нде ?арастыру?а болады.
Алайда, ша?ырулар стег?н?? та?ы б?р арты?шылы?ы-ол к?ш? ба?дарламаларды рекурсивт? функция ша?ыру?а жол беред?,?йткен? б?р процедура?а салын?ан ?рб?р ша?ыруды? жеке м?л?меттер?н алады.
Стэк к?д?р?с?(Delayed stacking)
[??деу?| ?айнарын ??деу]Ша?ырулар стек тет?г?н?? кемш?л?ктер?н?? б?р? процедураны ша?ыруды? жо?ары ??ны ж?не оны ти?ст? ?айтару болып табылады.?осымша шы?ындар стек к?рсетк?ш?н ?л?айту ж?не азайту (ж?не, кейб?р архитектураларда, стект?? толып кету?н тексеру), сондай-а? абсолютт?к мекен-жайлар бойынша емес, фреймн?? салыстырмалы мекен-жайлары бойынша жерг?л?кт? айнымалы ж?не параметрлерге ?ол жетк?зуд? ?амтиды. ??ны орындау уа?ытын ?л?айту, немесе процессорды? к?рдел?л?г?н арттыру, немесе ек? жа?дайда да ?ске асырылуы м?мк?н.
Б?л ?стеме шы?ындар е? ай?ын ж?не пара?ты? процедураларда немесе пара?ты? функцияларда ?ажет емес, олар процедураларды? ?з?н?? ?андай да б?р ша?ыруларын орындамай ?айтарылады.осы ?стеме шы?ындарды азайту ?ш?н, к?птеген ?аз?рг? заман?ы компиляторлар ол шын м?н?нде ?ажет бол?анша ша?ыру стег?н пайдалануды к?д?ртуге тырысады.мысалы, p процедурасын ша?ыру процессорды? белг?л? б?р т?ркел?мдер?нде кер? мекен-жайы мен ша?ырылатын процедураны? параметрлер?н са?тай алады ж?не процедураны? денес?н бас?аруды ?арапайым ж?ктеу ар?ылы бере алады. Егер p процедурасы кез келген бас?а ?о?ырауды орындамай ?айтарылса, ?о?ырау белг?шес? м?лдем пайдаланылмайды. Егер P бас?а Q процедурасын ша?ыру ?ажет болса, ол Q ?айтарыл?аннан кей?н ?ажет болатын кез келген регистрлерд?? мазм?нын (мысалы, кер? адрест?) са?тау ?ш?н ?о?ырау стег?н пайдаланатын болады.?осымша шы?ындар стек к?рсетк?ш?н ?л?айту ж?не азайту (ж?не, кейб?р архитектураларда, стект?? толып кету?н тексеру), сондай-а? абсолютт?к мекен-жайлар бойынша емес, фреймн?? салыстырмалы мекен-жайлары бойынша жерг?л?кт? айнымалы ж?не параметрлерге ?ол жетк?зуд? ?амтиды. ??ны орындау уа?ытын ?л?айту, немесе процессорды? к?рдел?л?г?н арттыру, немесе ек? жа?дайда да ?ске асырылуы м?мк?н.
C ж?не C++ ?лг?лер?
[??деу?| ?айнарын ??деу]C ж?не C++ ба?дарламалау т?лдер?нде к?ш? ба?дарлама функциялары деп аталады (б?дан ?р?, олар класпен байланысты бол?ан кезде м?ше функциялар рет?нде немесе бос функциялар болма?ан кезде ж?ктелед?). Б?л т?лдер функциясы еш?андай м?нд? ?айтармайды деп к?рсету ?ш?н арнайы void к?лт с?з?н ?олданады. C/C++ функциясыны? параметрлер? рет?нде бер?лет?н кез келген айнымалыларды ?згертуд? ?оса ал?анда, жанама ?серлер? болуы м?мк?н екен?н ескер???з. Мысалдар: void Function1() { /* some code */ } Функция м?нд? ?айтармайды ж?не автономды функция рет?нде та?далуы керек,мысалы Function1(); int Function2() {
return 5;
} Б?л функция н?тижен? ?айтарады (5 саны) ж?не ша?ыру ?рнект?? б?л?г? болуы м?мк?н,мысалы x + Function2() char Function3(int number) {
char selection[] = {'S', 'M', 'T', 'W', 'T', 'F', 'S'}; return selection[number];
} Б?л функция 0-ден 6-?а дей?нг? санды аптаны? ти?ст? к?н?н?? бастап?ы ?рп?не т?рленд?ред?, атап айт?анда 0-ден "S" - ге, 1-ден "M" - ге дей?н..., 6-дан "С"дей?н. Ша?ыру н?тижес? айнымалы бер?лу? м?мк?н,мысалы: num_day =Function3(number);. void Function4(int* pointer_to_var) {
(*pointer_to_var)++;
} Б?л функция м?нд? ?айтармайды, б?ра? мекен-жайы параметр рет?нде бер?лет?н айнымалыны ?згертед?; ол Function4(&variable_to_increment);. ар?ылы ша?ырылады
Жерг?л?кт? айнымалы, Рекурсия ж?не реентерабельд?л?к
[??деу?| ?айнарын ??деу]К?ш? ба?дарлама бос ке??ст?кт?? белг?л? б?р санын, я?ни аралы? н?тижелерд? са?тау ?ш?н осы К?ш? Ба?дарламаны орындау кез?нде пайдаланылатын жадты пайдалы деп есептеу? м?мк?н. Б?л уа?ытша ке??ст?кте са?тал?ан айнымалылар жерг?л?кт? айнымалы деп аталады,ал уа?ытша ке??ст?к-белсенд?ру жазбасы. ?ске ?осу жазбасында, ?детте, ба?дарлама ая?тал?анда, кер? бас?аруды ?ай жерге ж?беруд? к?рсетет?н ?айтару мекен-жайы бар. К?ш? ба?дарлама кез келген ша?ыру сайттарыны? саны мен сипаты болуы м?мк?н. Егер рекурсия ?олдау к?рсет?лсе, к?ш? ба?дарлама ?з?н тудыруы м?мк?н, соны? н?тижес?нде оны орындау то?татыла т?рады,ал сол к?ш? ба?дарламаны? бас?а салын?ан орындалуы орын алады. Рекурсия кейб?р к?рдел? алгоритмдерд? о?айлату ж?не к?рдел? есептерд? б?лшектеу ?ш?н пайдалы ??рал болып табылады. Рекурсивт? т?лдер ?детте ?рб?р ша?ыруда жерг?л?кт? айнымалыларды? жа?а к?ш?рмес?н ?сынады. Егер ба?дарламашы жерг?л?кт? айнымалыларды? м?н? ?о?ырауларды? арасында ?згер?сс?з ?ал?анын ?ал?ысы келсе, олар кейб?р т?лдерде статикалы? болып жариялануы м?мк?н немесе жа?анды? м?ндер немесе жалпы айма?тар пайдаланылуы м?мк?н. М?нда Фибоначчи сандарды ?здеу ?ш?н C / C++ рекурсивт? ба?дарлама мысалы: int Fib(int n) {
if (n <= 1) { return n; } return Fib(n - 1) + Fib(n - 2);
} Fortran сия?ты ерте т?лдер бастап?ыда рекурсияны ?олдамады, ?йткен? айнымалылар статикалы? т?рде б?л?нген, сондай-а? кер? мекен-жай?а арнал?ан орын. К?птеген компьютерлер 1960 жылдарды? со?ына дей?н PDP-8 сия?ты аппаратты? ?йнек регистрлер?н?? ?олдауына ие бол?ан жо?. М?ндай PL/I ж?не C сия?ты ALGOL(Алгол) кей?н ?аз?рг? заман?ы т?лдер, ?детте ?рб?р К?ш? Ба?дарламаны орындау ?ш?н ?ске ?осуды? жа?а жазбасын ?амтамасыз ету ?ш?н ?аз?рг? заман?ы компьютерл?к командаларды? к?пш?л?г? ?олдайтын стек ?р?ашан дерл?к пайдаланады. Осылайша, салын?ан орындау бас?а то?татыл?ан операциялар?а ?сер ету туралы ала?дамай, ?з?н?? жерг?л?кт? айнымалыларын ерк?н ?згерте алады. Салын?ан ?о?ырауларды? жиналуына ?арай, ?рб?р к?д?рт?лген ба?дарлама ?ш?н б?р ?ске ?осу жазбасынан т?ратын ?о?ырау стег?н?? ??рылымы ?алыптасады. Шын м?н?нде, стект?? б?л ??рылымы барлы? жерде, сонды?тан активтенд?ру жазбалары ?детте стек кадрлары(stack frames) деп аталады. Pascal, PL/I ж?не Ada(Ада) сия?ты кейб?р т?лдер, сондай-а? ?шк? (Бас) к?ш? ба?дарламаны? ?рекет ету аума?ы шег?нде ?ана ша?ырылатын к?ш? ба?дарламалар болып табылатын ?шк? к?ш? ба?дарламаларды ?олдайды. ?шк? к?ш? ба?дарламалар жерг?л?кт? сырт?ы к?ш? айнымалы ?ол жет?мд?, ол оларды тудырды. Б?л ?осу жазбасында ?осымша контекст?к а?паратты са?тау ар?ылы ?ол жетк?з?лед?, сондай-а? дисплей деп аталады.
Егер к?ш? ба?дарлама сол к?ш? ба?дарламаны? бас?а орындалуы орындалса да д?рыс орындалуы м?мк?н болса, онда б?л к?ш? ба?дарлама реентерабельд? деп аталады. Рекурсивт? к?ш? ба?дарлама реентерабельд? болуы ти?с. Реентерабельд? к?ш? ба?дарламалар к?п а?ынды жа?дайларда да пайдалы, ?йткен? б?рнеше а?ын б?р-б?р?не араласудан ?оры?пай, сол б?р К?ш? Ба?дарламаны тудыруы м?мк?н. IBM(International Business Machines) CICS транзакцияларды ??деу ж?йес?нде квази-реентерабельд?л?к б?ршама ?ата?, б?ра? к?птеген а?ындармен б?л?нген ?олданбалы ба?дарламалар ?ш?н ??сас талап болды. К?п а?ынды ортада ?детте б?рнеше стег? бар. Те? ба?дарлама(сопрограмма) немесе жал?ау ба?аны толы?ымен ?олдайтын орта, ?ске ?осу жазбаларын са?тау ?ш?н шыныдан ?згеше деректер ??рылымын пайдалана алады.
Шамадан арты? ж?ктеме(Overloading)
[??деу?| ?айнарын ??деу]?ата? типтелген т?лдерде кейде аты б?рдей, б?ра? ?р т?рл? деректер т?р?нде ж?мыс ?стейт?н немесе ?р т?рл? параметрлер профил? бар б?рнеше функцияларды? болуы ?ажет. Мысалы, квадратты? т?б?рд?? функциясы релелермен, кешенд? м?ндермен немесе матрицалармен ж?мыс ?стеу ?ш?н аны?талуы м?мк?н. ?рб?р жа?дайда ?олданылатын Алгоритм ?рт?рл? ж?не ?айтарылатын н?тиже ?рт?рл? болуы м?мк?н. Б?рдей аты бар ?ш жеке функцияларды жазу ар?ылы программист деректерд?? ?р т?р?не ?р т?рл? аттарды есте са?тау?а ы??айлылы?ы бар. Одан ?р?, егер реалдар ?ш?н о? ж?не тер?с реалдарды б?лу ?ш?н подтипт? аны?тау?а болатын болса, реалдар ?ш?н ек? функцияны жазу?а болады: б?реу? параметр о? бол?ан кезде заттай м?нд?, ал ек?нш?с? параметр тер?с бол?ан кезде кешенд? м?нд? ?айтарады. Объект?л?-ба?ыттал?ан ба?дарламалауда, б?рдей атымен б?рнеше функциялар ?р т?рл? параметрлерд?? профильдер?н немесе ?р т?рл? параметрлерд? ?абылдай алатын болса, функцияларды? ?р?айсысы шамадан тыс ж?ктелген болып саналады. М?нда С++-тег? ба?дарлама шамадан арты? ж?ктеу ?лг?с?:
#include <iostream> double Area(double h, double w) { return h * w; } double Area(double r) { return r * r * 3.14; } int main() { double rectangle_area = Area(3, 4); double circle_area = Area(5); std::cout << "Area of a rectangle is " << rectangle_area << std::endl; std::cout << "Area of a circle is " << circle_area << std::endl; }
Б?л кодта б?рдей аты бар ек? функция бар, б?ра? олар ?рт?рл? параметрлерге ие. Бас?а мысал рет?нде, ба?дарлама ба?ыттарын ?абылдайтын ж?не экранда?ы осы н?ктелерге ?з жолын ?ада?алайтын нысанды ??ра алады. Конструктор?а бер?лу? м?мк?н к?птеген параметрлер бар (трассалау т?с?, X ж?не y бастап?ы координаттары, трассалау жылдамды?ы). Егер программист конструктор тек т?с параметр?н ?абылдай ал?ысы келсе, онда ол бас?а барлы? параметрлер ?ш?н ?депк? м?ндерд? берет?н барлы? параметрлер? бар конструктор ша?ыратын т?с ?ана ?абылдайтын бас?а конструкторды ша?ыруы м?мк?н (X ж?не Y ?детте экранда орталы?тандырылады немесе координаттарды? басына орналастырылады, ал жылдамды? кодерд? та?дау бойынша бас?а м?нге орнатылады). PL / I ?р т?рл? аргументтер типтер?мен ша?ырыл?ан жазбалар?а с?лтемелерд? теру ?ш?н орта? атауды аны?тау ?ш?н GENERIC атрибуты бар. Мысал: DECLARE gen_name GENERIC(
fbname WHEN(FIXED BINARY), flname WHEN(FLOAT), othname OTHERWISE );
?рб?р жазу ?ш?н б?рнеше д?лелдер аны?тамасы бер?лу? м?мк?н. "Gen_name "ша?ыруы" fbname" ша?ыруына ?келед?, егер аргумент FIXED BINARY," filename", FLOAT ж?не т.б. болса.
Жап?ыштар(Closures)
[??деу?| ?айнарын ??деу]Жап?ыш-ол ??рыл?ан ортадан алын?ан кейб?р айнымалы м?ндер?мен б?рге к?ш? ба?дарлама. Т?йы?талу Джон Маккарти енг?зген Lisp ба?дарламалау т?л?н?? ай?ын ерекшел?г? болды. ?ске асыру?а байланысты, жабу жанама ?серлер? ?ш?н механизм? болуы м?мк?н.
Конвенциялар(Conventions)
[??деу?| ?айнарын ??деу]К?ш? ба?дарламаларды кодтау ?ш?н к?птеген шартты белг?лер жасалды. Оларды? аттарына келет?н болса?, к?птеген ?з?рлеуш?лер к?ш? ба?дарлама Атауы белг?л? б?р м?ндетт? орында?ан кезде ет?ст?к болуы ти?с, ол кейб?р с?рау жаса?ан кезде сын ес?м, ж?не ол айнымалы ауыстыру ?ш?н пайдаланыл?ан кезде зат. Кейб?р программистер к?ш? ба?дарлама тек б?р ?ана м?ндетт? орындауы ти?с деп болжайды ж?не егер к?ш? ба?дарлама б?реуден арты? м?ндетт? орындайтын болса, ол б?рнеше к?ш? ба?дарлама?а б?л?ну? ти?с. Олар ба?дарлама код?а ?ызмет к?рсетуд??(code maintenance) нег?зг? компоненттер? болып табылады ж?не оларды? ба?дарламада?ы р?л? ?р т?рл? болуы ти?с. Модульд?к ба?дарламалауды? жа?тастары (modularizing code) ?рб?р к?ш? ба?дарлама кодты? бас?а б?лшектер?не е? аз т?уелд?л?кке ие болуы ти?с деп м?л?мдейд?. Мысалы, жа?анды? айнымалыларды пайдалану, ?детте, б?л к?з?арасты? а?ылсыз жа?тастары болып саналады, ?йткен? ол к?ш? ба?дарлама мен осы жа?анды? айнымалыларды? арасында?ы ты?ыз байланысты ?осады. Егер м?ндай байланыс ?ажет болмаса, оларды? ке?ес? оны? орнына бер?лген параметрлерд? ?абылдау ?ш?н к?ш? ба?дарламаларды рефакторингте т?рады. Алайда, ба?дарлама бойынша бер?лет?н параметрлер саныны? артуы кодты? о?ылуына ?сер ету? м?мк?н.
?айтару кодтары(Return codes)
[??деу?| ?айнарын ??деу]Нег?зг? немесе ?алыпты ?серден бас?а, к?ш? ба?дарлама оны орындау кез?нде туындауы м?мк?н ерекше шарттар туралы ша?ырушы ба?дарлама?а хабарлау талап ет?лу? м?мк?н. Кейб?р т?лдер мен ба?дарламалау стандарттарында б?л жи? ?айтару коды, ?алыпты ж?не ерекше жа?дайларды кодтайтын кейб?р стандартты жерде к?ш? ба?дарлама орналастырыл?ан б?т?н м?н? ар?ылы жасалады. IBM System / 360, м?нда ?айтару коды к?ш? ба?дарламадан к?т?лген, ?айтарылатын м?н жи? 4 есе есептелген—сонды?тан оны ?осымша шартты тесттерд? болдырмау ?ш?н ша?ыру н?с?аулы?ынан кей?н жи? орналас?ан тарма? кестес?не тарма?тарды? т?келей индекс? рет?нде пайдалану?а болады, б?л одан да к?п ти?мд?л?кт? арттырады. Мысалы, асемблерде System / 360 жазу?а болады: BAL 14,SUBRTN01 go to subroutine, storing return address in R14
B TABLE(15) use returned value in reg 15 to index the branch table,
- branching to the appropriate branch instr.
TABLE B OK return code =00 GOOD } B BAD return code =04 Invalid input } Branch table B ERROR return code =08 Unexpected condition }
К?ш? ба?дарламаларды ша?ыруларды о?тайландыру
[??деу?| ?айнарын ??деу]?осымша шы?ындар жи? процессорды? белг?л? б?р регистрлер?н са?тау ж?не ?алпына келт?ру, ?о?ырау кадрларыны? жадын б?лу ж?не ?алпына келт?ру ж?не т. б. ?амтиды.. Кейб?р т?лдерде ?рб?р ба?дарлама ?о?ырауы, сондай-а?, ба?дарлама ?айтару кодын автоматты т?рде тексеруд? немесе ол тудыруы м?мк?н ерекшел?ктерд? ??деуд? б?лд?ред?. Объект?л?-ба?ыттал?ан т?лдерде ?стеме шы?ындарды? ма?ызды к?з? болып ?д?стерд? ша?ыруды? ?ар?ынды ?олданылатын динамикалы? диспетчерлену? табылады. Процедуралар жанама ?серлер? болуы м?мк?н, егер кейб?р ай?ын о?тайландыру процедуралар ?олданылуы м?мк?н емес р?с?мдер бар. Мысалы, м?нде(f(x)-1)/(f(x)+1) f функциясы ек? рет ша?ырылуы ти?с, себеб? б?л ек? ?о?ырау ?р т?рл? н?тижелерд? ?айтаруы м?мк?н. Сонымен ?атар, x м?н? ек?нш? ?о?ырау алдында ?айта алынуы керек, себеб? б?р?нш? ?о?ырау оны ?згерте алады. К?ш? ба?дарламаны? жанама ?сер? болуы м?мк?н бе, ?те ?иын (т?пт? шеш?лмейт?н).осылайша, б?л о?тайландыру таза функционалды? ба?дарламалау т?лдер?нде ?ау?пс?з бол?анымен, типт?к императивт? ба?дарламалау компиляторлары ?детте нашар болуы ти?с.
К?р?ст?ру(Inlining)
[??деу?| ?айнарын ??деу]Осы ?осымша шы?ындарды жою ?ш?н ?олданылатын ?д?с - б?л ?рб?р байланыс торабында к?ш? ба?дарлама денес?н?? к?р?кт?р?лген ке?ею?(inlining expansion) немесе инлайнинг? (к?ш? ба?дарлама тарма?ына ж?не кер? ?айт?ан концептке ?ара?анда). Б?л тек ша?ыру?а арнал?ан ша?ыру шы?ындарды болдырмау ?ана емес, сонымен ?атар компилятор?а ша?ыруда контекст пен д?лелдерд? назар?а ала отырып, процедураны? денес?н ти?мд? о?тайландыру?а(optimize) м?мк?нд?к беред?. Салын?ан денен? компилятор о?тайландыруы м?мк?н. Алайда, к?р?ст?ру ?детте код м?лшер?н арттырады, егер ба?дарлама тек б?р ?ана ба?дарлама ша?ыруын немесе ?шк? ба?дарлама денес?н ?амтымайтын болса, онда ?осымша ша?ыру шы?ынынан аз код жо?.
Дерекк?здер
[??деу?| ?айнарын ??деу]- ↑ ?аза? т?л? терминдер?н?? салалы? ?ылыми т?с?нд?рме с?зд?г?: Информатика ж?не компьютерл?к техника / Жалпы редакциясын бас?ар?ан т?с?нд?рме с?зд?ктер топтамасын шы?ару ж?н?ндег? ?ылыми-баспа ба?дарламасыны? ?ылыми жетекш?с?, педагогика ?ылымдарыны? докторы, профессор, ?аза?стан Республикасы Мемлекетт?к сыйлы?ыны? лауреаты А.?.??сайынов. – Алматы: ?Мектеп? баспасы? ЖА?, 2002 жыл. – 456 бет. ISBN 5-7667-8284-5
![]() | Б?л ма?аланы Уикипедия сапа талаптарына лайы?ты болуы ?ш?н уикиленд?ру ?ажет. |
![]() | Б?л ма?алада еш сурет жо?.
Ма?аланы жет?лд?ру ?ш?н ?ажетт? суретт? енг?з?п к?мек бер???з. Суретт? ?ос?аннан кей?н б?л ?лг?н? ма?аладан аласта?ыз.
|
![]() |
Б?л — ма?аланы? бастамасы. Б?л ма?аланы толы?тырып, дамыту ар?ылы, Уикипедия?а к?мектесе аласыз. Б?л ескертуд? д?лдеп ауыстыру ?ажет. |