C дастурлаш тилидаги "Ҳелло wорлд" дастурининг содда манба коди. Ушбу код дастурлаш оламидаги фундаментал асар ҳисобланган "Тҳе C Программинг Лангуаге" китобидан олинган. Унинг муаллифи Браян Керниган бўлиб, у илк бор 1974-йилда Белл лабораториясида яратилган.[1]

Ҳисоблаш техникаси (cомпутинг) соҳасида манба коди (соурcе cоде) ёки шунчаки код ёки манба деб, якуний натижада компютер хатти-ҳаракатларини бошқаришга имкон берадиган, инсон о'қий оладиган оддий матнга (плаин техт) айтилади. Компютерни бошқариш учун манба коди дастур (cомпутер програм) томонидан қайта ишланиши керак у ёки интерпретатор (интерпретер) орқали бевосита бажарилади, ёки компилятор (cомпилер) ёрдамида компютер исте'моли учун қулайроқ шаклга таржима қилинади (транслатед). Ба'зан код бевосита машина кодига (мачине cоде) компиляция қилинади ва қо'шимча ишловсиз компютернинг она тилида ишга туширилади. Бироқ, ко'плаб замонавий муҳитлар кодни байт-код (бйтеcоде) каби оралиқ ко'ринишга (интермедиате репресентатион) о'тказишни назарда тутади; бу ко'риниш интерпретатор орқали ишлаши ёки жуст-ин-тиме компиляцияси (жуст-ин-тиме cомпилатион) орқали талабга ко'ра машина кодига о'тказилиши мумкин.

Тарихи ва асослари

1940-йилларнинг охирида пайдо бо'лган биринчи дастурланадиган компютерлар[2] машина тилида (мачине лангуаге) (процессор томонидан бевосита бажарилиши мумкин бо'лган оддий ко'рсатмалар) дастурлаштирилган эди. Машина тилидаги хатоларни тузатиш қийин бо'либ, у турли компютер тизимлари о'ртасида портатив (портабле) эмас эди.[3] Дастлаб аппарат ресурслари тақчил ва қиммат бо'лса, инсон ресурслари (ҳуман ресоурcес) нисбатан арзон эди.[4] Дастурлар мураккаблашгани сайин, дастурчи маҳсулдорлиги асосий то'сиққа айланди. Бу 1950-йилларнинг о'рталарида Фортран каби юқори даражали дастурлаш тиллари (ҳигҳ-левел программинг лангуагес) пайдо бо'лишига олиб келди. Ушбу тиллар аппарат та'миноти деталларидан абстраксия (абстраcтион) қилинди ва инсонлар томонидан осонроқ тушуниладиган алгоритмларни ифодалаш учун лойиҳаланди.[5][6] Асосий компютер аппаратурасидан фарқли о'лароқ, дастурий та'минот нисбатан янги соҳа бо'либ, унинг тарихи юқорида тилга олинган Фортран, Лисп ва Cобол каби дастурлаш тилларига бориб тақалади.[6] Юқори даражали дастурлаш тилларининг кашф этилиши манба кодини компютер аппаратурасида бевосита бажариладиган машина кодига автоматик равишда о'тказувчи компиляторларнинг яратилиши билан бир вақтда юз берди.[7]

Манба коди бу инсонлар томонидан бевосита о'згартириладиган код шакли бо'либ, одатда юқори даражали дастурлаш тилида ёзилади. Обект коди (обжеcт cоде) эса машина томонидан бевосита бажарилиши мумкин ва у манба кодидан, ко'пинча ассемблер тили (ассемблй лангуаге) каби оралиқ босқич орқали автоматик равишда ҳосил қилинади. Обект коди фақат ма'лум бир платформада ишласа-да, манба коди бошқа машинага ко'чирилиши ва у ерда қайта компиляция қилиниши мумкин. Бир хил манба коди учун обект коди сезиларли даражада фарқ қилиши мумкин бу нафақат у компиляция қилинаётган машинага, балки компиляторнинг унумдорликни оптималлаштириш хусусиятларига ҳам бог'лиқдир.[8][9]

Ташкил этилиши

Аксарият дастурлар ишлаш учун зарур бо'лган барча ресурсларни о'з ичига олмайди ва ташқи кутубхоналарга (либрариэс) таянади. Компиляторнинг вазифаларидан бири ушбу файлларни дастур аппарат томонидан бажарилиши мумкин бо'лган тарзда бог'лашдан иборатдир.[10]

Жава манба кодининг мураккаброқ мисоли. Обектга ё'налтирилган дастурлаш услубида ёзилган бо'либ, у шаблонли кодни (боилерплате cоде) намойиш этади. Пролог изоҳлари қизил, қатор ичидаги изоҳлар яшил ва дастур амаллари ко'к рангда ко'рсатилган.

Дастурий та'минот ишлаб чиқувчилар ко'пинча манба коди файлларидаги о'згаришларни кузатиб бориш учун конфигурацияни бошқариш (версияларни бошқариш) тизимларидан фойдаланадилар. Конфигурацияни бошқариш тизими, шунингдек, қайси обект коди файли манба кодининг қайси версиясига мос келишини ҳам ҳисобга олиб боради.[11]

Мақсадлари

Баҳолаш

Коднинг манба сатрлари (соурcе линес оф cоде ,СЛОC) сони ко'пинча дастурчилар маҳсулдорлигини, код базасининг иқтисодий қийматини, ишлаб чиқилаётган лойиҳалар учун ҳаракатларни баҳолашни ва маҳсулот чиқарилгандан кейинги дастурий та'минотга хизмат ко'рсатиш харажатларини о'лчашда метрика сифатида қо'лланилади.[12]

Коммуникация

Манба коди томонлар о'ртасида алгоритмларни алмашиш учун ҳам хизмат қилади, масалан, интернетдаги ёки китоблардаги код парчалари (cоде сниппец).[13]

Дастурчилар дастурлаш услубларини о'рганиш учун мавжуд манба кодларини таҳлил қилишни фойдали деб ҳисоблайдилар.[13] Ишлаб чиқувчилар о'ртасида манба коди алмашинуви уларнинг дастурлаш маҳоратини оширишга ёрдам берувчи омил сифатида тез-тез тилга олинади.[13] Ба'зилар манба кодини о'зига хос бадиий восита (артистиc медиум) деб ҳисоблашади.[14]

Манба коди ко'пинча изоҳларни (cомменц) - компилятор э'тиборсиз қолдириши учун белгиланган матн блокларини о'з ичига олади. Ушбу таркиб дастур мантиқининг бир қисми бо'лмасдан, балки о'қувчиларга дастурни тушунишга ёрдам бериш учун мо'лжалланган.[15]

Компаниялар ко'пинча тижорат сири (траде сеcрет) ҳисобланган алгоритмларни яшириш мақсадида манба кодини махфий сақлайдилар. Хусусий ва махфий манба кодлари ҳамда алгоритмлар жиноий одил судлов каби муҳим давлат соҳаларида кенг қо'лланилади, бу эса алгоритм методологиясининг шаффоф эмаслигига ва «қора қути» (блаcк бох) эффектига олиб келади. Натижада, нохолислик каби масалаларнинг жамоатчилик назоратидан четда қолиши кузатилади.[16]

О'згартириш

Манба кодига (нафақат обект кодига) эга бо'лиш уни о'згартириш учун зарурдир.[17] Мавжуд кодни о'згартиришдан олдин унинг қандай ишлашини тушуниш талаб этилади.[18] Тушуниш тезлиги код базасига ҳамда дастурчининг маҳоратига бог'лиқ.[19] Тажрибали дастурчилар коднинг юқори даражада нима вазифани бажаришини осонроқ англайдилар.[20] Ушбу жараённи тезлаштириш учун ба'зан дастурий та'минотни визуаллаштиришдан фойдаланилади.[21]

Ко'пгина дастурчилар о'з маҳсулдорлигини ошириш учун интеграциялашган ишланмалар муҳити (интегратед девелопмент энвиронмент, ИДЕ) дастурларидан фойдаланадилар. ИДЕлар одатда бир нечта о'рнатилган функсияларга эга, жумладан, дастурчини кенг тарқалган хатолардан огоҳлантирувчи манба коди таҳрирчиси ҳам мавжуд.[22] О'згартиришлар ко'пинча код рефакторингини (cоде рефаcторинг) (функсияни о'згартирмасдан тузилмани яхшилаш) ва қайта қуришни (тузилмани ва функсияни бир вақтда яхшилаш) о'з ичига олади.[23] Деярли ҳар бир код о'згариши янги хатоларни ёки кутилмаган то'лқин эффектларини (риппле эффеcц) келтириб чиқаради, бу эса кейинги босқичда тузатишларни талаб қилади.[18]

Лойиҳага қо'шилган янги кодни текшириш учун ко'пинча бошқа ишлаб чиқувчилар томонидан код тақризи (cоде ревиэw) о'тказилади.[24] Ушбу босқичнинг мақсади коднинг услуб ва хизмат ко'рсатиш (маинтаинабилитй) стандартларига мувофиқлигини ҳамда дастурий лойиҳанинг (софтwаре десигн) то'г'ри татбиқ этилганлигини тасдиқлашдан иборат.[25] Ба'зи ҳисоб-китобларга ко'ра, код тақризи дастурий та'минотни синаш якунлангандан кейин сақланиб қолган хатолар сонини сезиларли даражада камайтиради.[24] Кодни бажариш орқали амалга ошириладиган синовлар билан бир қаторда, дастурнинг статик таҳлили (статиc програм аналйсис) манба кодидаги муаммоларни аниқлаш учун автоматлаштирилган воситалардан фойдаланади. Ко'пгина ИДЕлар коднинг аниқлиги ва хизмат ко'рсатиш даражаси бо'йича метрикаларни тақдим этувчи таҳлил воситаларини қо'ллаб-қувватлайди.[26] Созловчилар (дебуггерс) эса дастурчиларга коднинг бажарилишини босқичма-босқич кузатиш ва ҳар бир ҳолат о'згаришига қайси манба коди мос келишини аниқлаш имконини берувчи воситалардир.[27]

Компиляция ва бажариш

Юқори даражали дастурлаш тилидаги манба коди файллари ко'рсатмалар бажарилишидан олдин машина кодига о'тказиш (препроcессинг) босқичидан о'тиши керак.[7] Компиляция қилинганидан со'нг, дастур обект файли сифатида сақланиши мумкин ва юкловчи (лоадер) (операцион тизимнинг бир қисми) ушбу сақланган файлни олиб, уни компютер аппаратурасида жараён (проcесс) сифатида ишга тушириши мумкин.[10] Ба'зи дастурлаш тиллари компилятор о'рнига интерпретатордан фойдаланади. Интерпретатор дастурни бажарилиш вақтида (рун тиме) машина кодига айлантиради, бу эса уларни компиляция қилинадиган тилларга қараганда 10 тадан 100 мартагача секинроқ ишлашига олиб келади.[22][28]

Портативлик

Ко'пгина дастурларнинг бажариладиган бинар файллар ко'ринишида эмас, балки манба коди шаклида тарқатилишининг яна бир сабаби шундаки, ко'пинча битта манба коди файли бир марта ёзилиб, турли хил якуний фойдаланувчи машиналарида (ҳар бири о'зининг маҳаллий компилятори ёки интерпретаторига эга) ишлаши мумкин. Бажариладиган код файли эса одатда фақат деярли бир хил бо'лган машиналарда ишлайди. Манба коди Уних тарихининг бошида Уних операцион тизимини тарқатиш учун, кейинчалик эса скрипт тилларида (хусусан, ЖаваСcрипт мижоз томонидаги скрипт) ёзилган дастурларнинг турли хил машиналарда ишлашини та'минлаш учун фойдаланилган.

Ушбу мақсад ё'лида «минификация қилинган» (минифиэд), «обфускация қилинган» (обфусcатед) ёки «декомпиляция қилинган» манба коди файллари (уларда асл коддаги изоҳлар о'чирилган бо'лади) ҳам асл манба коди файллари каби портативдир. Бироқ, улар о'згартиришлар киритиш учун анча ноқулай бо'либ, ГНУ Генерал Публиc Лиcенсе 2-версиясидаги (ГПЛ2) манба коди та'рифига то'лиқ жавоб бермайди.

Сифат

Дастурий та'минот сифати - бу коднинг то'г'ри ва самарали хулқ-атвори, унинг қайта ишлатилиши ва портативлиги ёки о'згартиришнинг осонлигини англатувчи кенг қамровли тушунчадир.[29] Одатда, сифатни маҳсулотга уни ишлаб чиқиш жараёнининг бошиданоқ киритиш, кейинчалик қо'шишга уринишдан ко'ра тежамкорроқ ҳисобланади.[30] Юқори сифатли код ишончлилик ва хизмат ко'рсатиш даражаси юқори бо'лганлиги сабабли етказиб берувчилар ва мижозлар учун харажатларни камайтиради.[31][32]

Хизмат ко'рсатиш даражаси (маинтаинабилитй) - бу дастурий та'минотнинг мавжуд функсияларини бузмаган ҳолда осонгина о'згартирилиши мумкинлигидир.[33] Кодлаш конвенсияларига риоя қилиш, масалан, функсия ва о'згарувчилар учун уларнинг мақсадига мос келадиган аниқ номлардан фойдаланиш хизмат ко'рсатишни осонлаштиради.[34] Шартли сикл операторларидан фақат код бир неча марта бажарилиши керак бо'лгандагина фойдаланиш ва ҳеч қачон бажарилмайдиган кодларни олиб ташлаш ҳам тушунарлиликни оширади.[35] Ко'пгина дастурий та'минотни ишлаб чиқиш ташкилотлари ишлаб чиқиш босқичида хизмат ко'рсатиш даражасига э'тибор бермайдилар, гарчи бу узоқ муддатли харажатларни оширса ҳам.[32] Техник қарз (течниcал дебт) дастурчилар дангасалик ёки муддатга улгуриш зарурати туфайли хизмат ко'рсатиш даражасини о'йламай, «тезкор ва сифациз» ечимларни танлаганларида юзага келади.[36] Бунинг кенг тарқалган сабаби дастурий та'минотни ишлаб чиқиш ҳаракатларини баҳолашдаги хатоликлар бо'либ, бу ишлаб чиқиш учун етарли ресурслар ажратилмаслигига олиб келади.[37] Яна бир муаммо шундаки, ко'плаб дастурий муҳандислик курсларида хизмат ко'рсатиш даражасига етарлича ург'у берилмайди.[38] Дастурий та'минотга хизмат ко'рсатиш учун мас'ул бо'лмаслигини биладиган муҳандислар эса ушбу сифатни та'минлашдан манфаатдор эмаслар.[18]

Муаллифлик ҳуқуқи ва лицензиялаш

Вазият бутун дунёда турлича бо'лса-да, АҚШда 1974-йилгача дастурий та'минот ва унинг манба коди муаллифлик ҳуқуқи билан ҳимояланмас эди ва шунинг учун ҳар доим жамоат мулки бо'лган дастурий та'минот ҳисобланган.[39] 1974-йилда АҚШнинг Муаллифлик ҳуқуқи билан ҳимояланган асарлардан янги технологик фойдаланиш бо'йича комиссияси (CОНТУ) «компютер дастурлари, муаллифнинг асл ижодини акс эттирган даражада, муаллифлик ҳуқуқининг тегишли обекти ҳисобланади» деган қарорга келди.[40][41]

Хусусий дастурий та'минот (проприэтарй софтwаре) камдан-кам ҳолларда манба коди ко'ринишида тарқатилади.[42] Гарчи очиқ манбали дастурий та'минот (опен-соурcе софтwаре) атамаси со'зма-со'з манба кодига очиқ киришни билдирса-да,[43] очиқ манбали дастурий та'минот қо'шимча талабларга эга: эркин қайта тарқатиш, манба кодини о'згартиришга рухсат бериш ва ҳосилавий асарларни худди шу лицензия остида чиқариш, шунингдек, турли фойдаланиш соҳалари, жумладан тижорат мақсадларида фойдаланиш о'ртасида камситишнинг мавжуд эмаслиги.[44][45] Очиқ манбали дастурий та'минотнинг эркин қайта ишлатилиши ишлаб чиқиш жараёнини сезиларли даражада тезлаштириши мумкин.[46]

Яна қаранг

Манбалар

  1. ↑ Тҳе C Программинг Лангуаге китоби, 1978-йил.
  2. ↑ Габбриэлли & Мартини 2023, с. 519.
  3. ↑ Габбриэлли & Мартини 2023, сс. 520–521.
  4. ↑ Габбриэлли & Мартини 2023, с. 522.
  5. ↑ Габбриэлли & Мартини 2023, с. 521.
  6. ↑ 6,0 6,1 Траcй 2021, с. 1.
  7. ↑ 7,0 7,1 Траcй 2021, с. 121.
  8. ↑ Лин эт ал. 2001, сс. 238–239.
  9. ↑ Катял 2019, с. 1194.
  10. ↑ 10,0 10,1 Траcй 2021, сс. 122–123.
  11. ↑ О'Реган 2022, сс. 230–231, 233, 377.
  12. ↑ Фостер 2014, сс. 249, 274, 280, 305.
  13. ↑ 13,0 13,1 13,2 Спинеллис, Д: Cоде Реадинг: Тҳе Опен Соурcе Перспеcтиве. Аддисон-Wеслей Профессионал, 2003. ИСБН 0-201-79940-5
  14. ↑ "Арт анд Cомпутер Программинг" ОНЛамп.cом (Wайбаcк Мачине сайтида 20 Фебруарй 2018 санасида архивланган), (2005)
  15. ↑ Каcзмарек эт ал. 2018, с. 68.
  16. ↑ Катял 2019, сс. 1186–1187.
  17. ↑ Катял 2019, с. 1195.
  18. ↑ 18,0 18,1 18,2 Оффутт, Жефф „Овервиэw оф Софтwаре Маинтенанcе анд Эволутион“. Георге Масон Университй Департмент оф Cомпутер Сcиэнcе (2018-йил 1-январ). Қаралди: 2024-йил 5-май.
  19. ↑ Трипатҳй & Наик 2014, с. 296.
  20. ↑ Трипатҳй & Наик 2014, с. 297.
  21. ↑ Трипатҳй & Наик 2014, сс. 318–319.
  22. ↑ 22,0 22,1 О'Реган 2022, с. 375.
  23. ↑ Трипатҳй & Наик 2014, с. 94.
  24. ↑ 24,0 24,1 Доолей 2017, с. 272.
  25. ↑ О'Реган 2022, сс. 18, 21.
  26. ↑ О'Реган 2022, с. 133.
  27. ↑ Каcзмарек эт ал. 2018, сс. 348–349.
  28. ↑ Себеста 2012, с. 28.
  29. ↑ Галин 2018, с. 26.
  30. ↑ О'Реган 2022, сс. 68, 117.
  31. ↑ О'Реган 2022, сс. 3, 268.
  32. ↑ 32,0 32,1 Варга 2018, с. 12.
  33. ↑ Варга 2018, с. 5.
  34. ↑ Трипатҳй & Наик 2014, сс. 296–297.
  35. ↑ Трипатҳй & Наик 2014, с. 309.
  36. ↑ Варга 2018, сс. 6–7.
  37. ↑ Варга 2018, с. 7.
  38. ↑ Варга 2018, сс. 7–8.
  39. ↑ Лиу, Жосепҳ П.; Доган, Стаcей Л. (2005). "Cопйригҳт Лаw анд Субжеcт Маттер Спеcифиcитй: Тҳе Cасе оф Cомпутер Софтwаре" (эн). Неw Ёрк Университй Аннуал Сурвей оф Америcан Лаw 61 (2). ҳттпс://лаwдигиталcоммонс.бc.эду/лсфп/536/. 
  40. ↑ Аппле Cомпутер, Инc. в. Франклин Cомпутер Cорпоратион Пуц тҳе Бйте Баcк инто Cопйригҳт Протеcтион фор Cомпутер Програмс (Wайбаcк Мачине сайтида 7 Май 2017 санасида архивланган) ин Голден Гате Университй Лаw Ревиэw Волуме 14, Иссуэ 2, Артиcле 3 бй Жан Л. Нуссбаум (Жануарй 1984)
  41. ↑ Лемлей, Менелл, Мергес анд Самуэлсон. Софтwаре анд Интернет Лаw, п. 34.
  42. ↑ Бойле 2003, с. 45.
  43. ↑ Морин эт ал. 2012, Опен Соурcе версус Cлосед Соурcе.
  44. ↑ Сен эт ал. 2008, с. 209.
  45. ↑ Морин эт ал. 2012, Фреэ анд Опен Соурcе Софтwаре (ФОСС) Лиcенсинг.
  46. ↑ О'Реган 2022, с. 106.

Манба адабиётлар

Ташқи ҳаволалар