Assemblerden Java-ǵa deıin: baǵdarlamalaýdyń qysqasha tarıxy
Alǵashqy kompúter 70 jyldan astam ýaqyt buryn paıda bolǵan, sodan beri baǵdarlamalaý tiliniń júzdegen túri oılap tabyldy. Usynylyp otyrǵan bul maqalada «ınterpretator», «polımorfızm» jáne «ınkapsýlásıa» sıaqty sózder beıtanys ári túsiniksiz bolyp keletin adamdar úshin baǵdarlamalaý tarıxy týraly málimetti qarapaıym tilde jetkizýge tyrystyq.
Alǵashqy baǵdarlamalaý tilderi oılap tabylǵanǵa deıin ne bolǵan
1945 jyly Amerıkada alǵashqy kompúter — ENIAC (Electronic Numerical Integrator And Computer) jasap shyǵaryldy. 17 myń shamnan qurastyrylǵan kompúterdiń salmaǵy 27 tonnany, al quny 480 000 dollardy qurady. Salystyryp kórińiz: quny shamamen 1000 dollar bolǵan jańa iPhone X qaltańyzǵa syıady, ári onyń qýaty 25 myń ese artyq.
Ol zamanda baǵdarlamalaý tilderi áli bolmaǵan jáne ENIAC mashınalyq kodpen (ıaǵnı birlikter men nólderdiń tizbegi túrinde) jazylǵan buıryqtar júıesi arqyly basqarylatyn. Baǵdarlamalardy mashınalyq kodta jazý uzaq ári kúrdeli bolatyn. Sýpermarkettegi sórelerdiń ádette baǵalar kórsetiletin jerinde taýarlardyń aty jazylmaı, tek shtrıxkody men baǵasy ǵana berilgen dep elestetip kórińiz. Sonda, mysaly, ýyldyryqtyń baǵasyn bilý úshin bankadaǵy nomerdi qarap, ony baǵalar kórsetkishimen salystyrý kerek bolady. Bir ǵana sıfrdan qate jiberip alsańyz, qara ýyldyryqty aq nannyń baǵasymen alyp ketýińiz múmkin (al kasaǵa kelgende chektegi somanyń siz oılaǵannan 100 ese artyq bolyp shyqqanyn kóresiz). Osylaısha mashınalyq kodta da bir sıfrdan ketken qateniń ózi búkil baǵdarlama esebiniń qate nátıjesine alyp keletin.
Álemdegi eń alǵashqy kompúter ENIAC
Baǵdarlamalaýshylar kompúter jumysyndaǵy qatelerdi «bagtar» dep ataıdy. Aǵylshyn tilinen aýdarǵanda bug «jándik» nemese «kishkene qońyz» degendi bildiredi. Bul sóz odan buryn da qoldanylǵan — mysaly, radıoınjenerler qurylǵydaǵy tabylýy qıyn texnıkalyq aqaýlardy osylaı ataǵan. Biraq, ańyz boıynsha, tarıxtaǵy eń birinshi kompúterlik bag shynymen de jándik bolǵan! 1947 jyly Garvardta Greıs Hopper esimdi baǵdarlamalaýshy Mark II sýperkompúteriniń jumysyndaǵy qateni izdep júrip, kompúter ishine ushyp kirgen ári júıeni buzǵan kúıe kóbelekti taýyp alady. Skochtyń kómegimen ol kúıe kóbelekti jumys jýrnalyna jabystyryp, «İs júzinde tuńǵysh ret tabylǵan bag» degen jazba qaldyrady.
Assembler — adamnyń tilin mashınalyq tilge aýdarýshy
Kompúter basqarýdy jeńildetýdiń joldary Kembrıdj ýnıversıtetinde profesor Morıs Ýılks EDSAC elektrondy-esepteýish mashınasyn qurý jumysyn bastaǵan kezde qarastyryla bastady. Keıin dál sol mashına úshin alǵashqy kompúterlik oıyn «Tic-tac-toe» oılap tabylǵan.
«Tic-tac-toe» oıyny
Biraq, Ýılkstyń basty sińirgen eńbegi bul emes, árıne. Onyń eńbegi 1949 jyly qurǵan baǵdarlamasynda. Sol baǵdarlama komandalardy adam úshin yńǵaıly formada jazýǵa múmkindik beretin jáne olardy mashınalyq kodqa ózi aýdaratyn.
Baǵdarlamany Ýılks jınaqtaýshy júıe nemese «assembler» dep ataıtyn (aǵylshynsha «assemble» — jınaý/jınaqtaý). Ekilik kodtyń ornyna assembler tilinde áripter, sıfrlar nemese buıryqtyń mán-maǵynasyn ashatyn qysqartýlar qoldanylatyn. Mysaly, «Mov Ax, 6» buıryǵy assembler tilinde «„Ah“ jady uıashyǵyna 6 sanyn jyljyt» degendi bildiretin. Nólder men birlikterdiń uzyn qatarlarynan góri osyndaı buıryqtardy este saqtaý áldeqaıda jeńil emes pe.
Sonda da assembler tiliniń edáýir kemshilikteri bolatyn. Kodtar áli de kompúterdiń buıryqtar júıesine dálme-dál sáıkes kelýi tıis edi jáne árbir naqty esepteýish mashınaǵa óz assembler tili qajet bolatyn. Mundaı tilder mashınaǵa táýeldi nemese tómen deńgeıdegi tilder dep atalady.
Mashınadan táýelsiz tilderdiń alǵashqy túrleri
Alǵashqy joǵary deńgeıdegi til 1957 jyly Amerıkada paıda boldy. Ol Fortran (FORmula TRANslator) dep atalatyn jáne baǵdarlamany naqty kompúterdiń qurylymyn eskermeı-aq jazýǵa múmkindik beretin. Kod «tasymaldanatyn» boldy — endi bir ǵana baǵdarlamany ár túrli qurylǵyda qosa alý múmkindigi týdy.
Buǵan kompılátorlar dep atalatyn arnaıy baǵdarlamalardyń arqasynda qol jetkizildi. Olar Fortrandaǵy mátindi mashınalyq kodqa aınaldyratyn jáne kompúterdiń buıryqtar júıesi men sol kod arasyndaǵy sáıkestikterdi ózderi ornatatyn.
IBM EOS-704 EDPM úshin jasalǵan Fortran avtomatty kodtaý júıesiniń muqabasy (Fortran jaıly alǵashqy kitap bolyp sanalady)
Kodtyń tasymaldana alýy búkil álemdegi baǵdarlamalaýshylardyń kúshin biriktirip, baǵdarlamalardy satýǵa múmkindik berdi. Endi kvadrattyq teńdeýdi sheshý nemese kosınýsty esepteý úshin jańa baǵdarlama jasamaı-aq, basqa baǵdarlamalaýshylarmen jazylyp qoıylǵan baǵdarlamany qoldana alatyn boldy. Osylaısha naqty bir máseleler tobyn sheshetin baǵdarlamalar jıyntyǵy — «kitapxanalar» paıda boldy. Baǵdarlamalaýshylardyń jazǵan kitapxanalaryn satyp alýshy kompanıalar sol kitapxanalardy ózderiniń kúrdeli esepteýlerin júrgizýde (mysaly, zymyrannyń ushý traektorıasyn esepteýde) qoldanatyn.
Fortran ǵylymı-texnıkalyq matematıkalyq esepteýlerge baǵdarlanǵan
Búginde osy tildegi matematıkalyq kitapxanalardyń kóptigi sondaı, tipti ǵalymdar arasynda mynadaı qaljyń sóz taraǵan: «kez kelgen matematıkalyq esep Fortranda áldeqashan sheshilip qoıylǵan». Sondaı-aq, Fortrannyń tabysty bolǵany sonshalyq, monopolıany boldyrmaý maqsatynda Eýropada ALGOL (ALGOrythmic Language) dep atalǵan óz joǵary deńgeıdegi baǵdarlamalaý tili qurastyryldy.
Qurylymdyq baǵdarlamalaý jáne Sı tili
Jyl ótken saıyn baǵdarlamalar kúrdelene berdi, sáıkesinshe qateler sany men olardy anyqtap, durystaý ýaqyty arta tústi. Baǵdarlamalar kodyn artyq qatelerdi boldyrmaıtyndaı jáne sol qatelerdi ońaı tabatyndaı etip uıymdastyrý qajettiligi týdy. Osylaısha 70-inshi jyldary qurylymdyq baǵdarlamalaý paıda boldy.
Qurylymdyq baǵdarlamalaý ıdeıasy — baǵdarlamany bloktar tizbeginen qurýda edi. Baǵdarlamalaýshy bloktarmen kezek-kezegimen jumys jasaıdy jáne bári oıdaǵydaı jumys isteıtinine kózi jetpeıinshe ary qaraı jalǵastyrmaıdy. Bloktardy qurý úshin úsh bazalyq konstrýksıa qoldanylady: tizbektilik, tarmaqtaný jáne sıkl.
Tizbektilik birinen soń biri turǵan nusqaýlyqtar arqyly avtomatty túrde júzege asyrylady: «aldymen kóbeıtý men bólýdi, sosyn qosý men azaıtýdy orynda». Tarmaqtaný sharttarmen jumys jasaýǵa kómektesedi: «eger dıskrımınant nólden artyq bolsa, sheshimderin izde, al eger kem bolsa, onda sheshimderi joq dep jaz». Sıkl sharttyń oryndalýy barysynda is-árekettiń birneshe ret qaıtalanýyna múmkindik beredi: «sebet ishi tolǵansha, jıdekti aǵashtan julyp al da, sebetke sal».
Qurylymdyq baǵdarlamalaý kezderinde Sı tili paıda boldy. Ony amerıkandyq Dennıs Rıchı oılap tapty jáne 1999 jyly texnologıalar men ınovasıalar aıasyndaǵy jetistigi úshin AQSH Ulttyq medalin ıelendi. Til eski Bı tiline negizdelgen, sondyqtan ony aǵylshyn alfavıtiniń kelesi árpimen Sı dep atady. Sı ámbebap ári óte jyldam bolatyn, sondyqtan ol birden keńinen tarady jáne C++, C#, Objective C, Java sekildi qazirgi zamanǵy tilderdiń negizin qalady.
Sı baǵdarlamalaý tilin jasap shyǵarǵan Ken Tompson (sol jaǵynda) jáne Dennıs Rıchı (oń jaǵynda)
Nysanǵa baǵyttalǵan baǵdarlamalaý jáne Java tili
Baǵdarlamalar barǵan saıyn kúrdelene berdi jáne bir ǵana jobany ázirleý jumysyn ondaǵan adam jasaı alatyn. Ár túrli baǵdarlamalaýshylar jazǵan kodty biriktirýdiń ámbebap jolyn tabý qajet boldy. Bul máseleni obektige baǵyttalǵan baǵdarlamalaý (NBB) sheship berdi. Atalǵan baǵdarlamalaý málimetterdiń abstraksıasy aınalasynda qurylǵan. Bul degenimiz, baǵdarlamanyń bazalyq elementi retinde abstraktyly «obekt» alynady. Kez kelgen nárse obekt bola alady — kempirqosaq, kvadrattyq teńdeý, Malevıchtiń «Qara kvadraty». Ár obektiniń sıpattamalar jıyntyǵy bolady. Mysaly, kempirqosaqta bul onyń ıininiń uzyndyǵy, kórinetin tústeriniń qanyqtylyǵy men sany. Sıpattamalar jıyntyǵy birdeı obektiler klastarǵa biriktiriledi. Eger «úı» klasyn alyp, uzyndyq, bıiktik, qabattar sany sıaqty parametrlerdi engizsek, ózińiz turatyn naqty úı — obekt shyǵady. Onyń ústine, jumys isteý prınsıpi bir jáne naqty qandaı málimettermen jumys istep jatqanyńyz mańyzdy emes. Klass obektilerimen qurylymyna jete mán bermeı-aq jumys isteı berýge bolady: úıdi qulatý úshin onyń qansha qabaty men bólmesi bar ekendigin bilý mindet emes.
Alǵashqy keńinen taraǵan nysanǵa baǵyttalǵan til Smalltalk boldy. Ony 1970-inshi jyldary Xerox korporasıasynyń Alan Keı basqarǵan ǵalymdar toby qurastyrdy. Bul amerıkandyq ǵalymdy NBB-nyń negizin qalaýshylardyń biri dep ataıdy —osy jumysy úshin ol Túrıng syılyǵyn ıelendi. Keıinirek, Sı tilin negizge ala otyryp, danıalyq Bórn Straýstrýp S++ oılap tapty. Qazir bul tildi joǵary júktemeli (júktemesi sekýndyna 10 myń paıdalanýshydan bastalatyn) júıelerdi qurý úshin qoldanady.
Alan Keı nysanǵa baǵyttalǵan baǵdarlamalaýdyń negizin qalaýshy bolyp sanalady
1995 jyly sol burynǵy Sı negizinde Java tili paıda boldy. Ol S++ tilindegi kóptegen qıyndyqtardy aınalyp ótti jáne edáýir túsiniktirek boldy. Mysaly, S++ tilinde baǵdarlama jadysynyń tolyp ketýin muqıat qadaǵalaý kerek. Eger siz kóp málimettermen jumys jasap, keıin olardy qoldanýdy toqtatyp, olardyń barlyq siltemesin óshirseńiz — málimetter baǵdarlama jadysynda saqtalyp, qajetsiz bolyp jatady. Java-da mundaı jadyny tazalaýmen «qoqysty avtomatty jınaýshy» aınalysady. Biraq tildiń basty aıyrmashylyǵy baǵdarlamalardy iske qosý ádisinde boldy.
Baǵdarlamalar Java-da kompılátor baǵdarlamasy arqyly arnaıy baıt-kodqa aınalady. Ony JVM (Java Virtual Machine) — Java vırtýaldy mashınasy ornatylǵan kez kelgen qurylǵyda iske qosýǵa bolady. Buryn ár júıe úshin baǵdarlamanyń bir mátinin kompılátor arqyly birneshe ret ótkizý qajet boldy. Java-da kod kompılırátordan bir ret qana ótkiziledi jáne barlyq jerde jumys isteı beredi — onyń kompúterlermen baılanysy úshin JVM jaýap beredi.
Kodtyń tasymaldanýy turǵysynan qaraǵanda bul revolúsıalyq tásil boldy. Baǵdarlamalar krosplatformalyqqa aınaldy — bul degenimiz, JVM-i bar kompúter, tońazytqysh, kofemashına jáne lego roboty úshin bir ǵana kodty jazýǵa bolady, óıtkeni JVM arqasynda olardyń barlyǵy da sol kodty túsine alady.
Qazir Java — Android-qosymshalarynda jáne úlken kólemdi málimettermen (big data) jumys jasaýda qoldanylatyn basty til. Árıne, baǵdarlamalaý tarıxy Java-men aıaqtalmaıdy. Biraq jańa tilderdiń kópshiligi tar sheńberli máseleler aıasynda jobalanady, sondyqtan olardy ózara salystyrý qıyn. Mysalǵa, Swift tilin Apple kompanıasy arnaıy iOS pen Mac qosymshalary úshin qurastyrǵan, al Julia tili úlken kólemdi esepteýlermen jumys isteý kezindegi joǵary ónimdilikti saqtaý maqsatynda paıda bolǵan.