Source — dastur, hujjat yoki artifact yaratiladigan asosiy boshlang‘ich material. Dasturlash kontekstida bu odatda inson o‘qishi va tahrirlashi mumkin bo‘lgan source codeni bildiradi.
Source code compiler, interpreter, transpiler yoki build tizimi orqali executable, library, package, documentation va boshqa natijalarga aylantiriladi.
Source code
Source code dasturlash tili sintaksisida yoziladi.
Unda:
bo‘lishi mumkin.
Source code’ning ma’nosi faqat matnga emas, til specificationi va dependencylarga ham bog‘liq.
Source file
Source odatda fayllarga ajratiladi.
File extension til yoki formatni ko‘rsatishi mumkin:
.c;.py;.java;.js;.rs;.go;.md;.sql.
Extension platformaga formatni tanishga yordam beradi, ammo fayl ichidagi mazmunning to‘g‘riligini kafolatlamaydi.
Source tree
Loyiha source fayllari kataloglar daraxtida joylashadi.
Keng tarqalgan qismlar:
src/
tests/
docs/
assets/
config/
scripts/
Tuzilma module, package va ownershipni ifodalaydi.
Generated output source katalogiga aralashmasa, clean build va version control soddalashadi.
Source repository
Source version control repository’da saqlanadi.
Repository quyidagilarni qayd etadi:
Artifact qaysi source commitdan yaratilgani metadata bilan bog‘lanadi.
Source of truth
Bir ma’lumotning rasmiy va asosiy nusxasi source of truth deb ataladi.
Masalan:
- database schema migrationlari;
- infrastructure code;
- API specification;
- translation katalogi;
- build manifest.
Bir xil ma’lumot bir nechta joyda qo‘lda saqlansa, ular orasida farq paydo bo‘lishi mumkin.
Generated source
Ba’zi source fayllar generator orqali yaratiladi.
Manbalar:
Generated source qo‘lda tahrir qilinmaydi, chunki keyingi generation o‘zgarishni yo‘qotadi.
Fayl boshida generation manbasi va vosita versiyasi ko‘rsatiladi.
Source distribution
Package source archive ko‘rinishida tarqatilishi mumkin.
Kamchiligi — toolchain, dependency va build vaqti talab qilinadi.
Binary distribution
Binary distribution oldindan build qilingan artifact beradi.
Source distributiondan farqli:
- tez o‘rnatiladi;
- targetga bog‘liq;
- compile talab qilmaydi;
- ichki code to‘liq ko‘rinmasligi mumkin.
Bir loyiha ikkalasini ham tarqatishi mumkin.
Open source
Open-source dastur source code’ni ma’lum litsenziya asosida ko‘rish, o‘zgartirish va tarqatish huquqini beradi.
“Source ko‘rinadi” va “open source” bir xil emas. Litsenziya huquqlarni aniq belgilashi kerak.
Open-source license:
- attribution;
- notice;
- source tarqatish;
- patent;
- copyleft
shartlariga ega bo‘lishi mumkin.
Source availability
Source-available license kodni ko‘rishga ruxsat berib, ayrim tijoriy foydalanish yoki tarqatishni cheklashi mumkin.
U Open Source Definition talablariga har doim mos kelmaydi.
Huquqiy status repository ochiqligi bilan emas, litsenziya matni bilan belgilanadi.
Source map
Transpiler yoki minifier hosil qilgan kodni asl source bilan bog‘lash uchun source map ishlatiladi.
- asl fayl;
- qator;
- ustun;
- symbol
bilan xaritalaydi.
Production source map maxfiy source’ni ochishi mumkin, shuning uchun access siyosati belgilanadi.
Source encoding
Source fayl belgilar encodingiga ega.
UTF-8 keng tarqalgan.
ni til qoidalariga ko‘ra talqin qiladi.
Noto‘g‘ri encoding comment, string yoki identifierni buzishi mumkin.
Comment
Comment source ichidagi inson uchun izoh.
Yaxshi comment:
ni tushuntiradi.
Kodning o‘zi aniq ko‘rsatib turgan “nima”ni takrorlash commentni eskirishga moyil qiladi.
Source va configuration
Configuration source bilan birga versionlanishi yoki environmentdan alohida berilishi mumkin.
Source ichiga:
- parol;
- private key;
- production token;
- maxfiy endpoint
qo‘shilmaydi.
Git tarixidan secretni faqat oxirgi commitdan o‘chirish yetarli emas; credential ham almashtiriladi.
Source transformation
Build jarayonida source:
- preprocess;
- macro expansion;
- transpilation;
- code generation;
- compilation;
- minification
bosqichlaridan o‘tadi.
Xato qaysi bosqichda paydo bo‘lganini bilish uchun intermediate output ko‘rilishi mumkin.
Reproducibility
Faqat source commit buildni to‘liq takrorlash uchun yetmasligi mumkin.
Kerak bo‘ladi:
- dependency lock;
- compiler;
- SDK;
- build flag;
- environment;
- generated source;
- external asset.
Source va build metadata birga provenance hosil qiladi.
Source compatibility
Eski source yangi library yoki compiler bilan qayta build bo‘lsa source-compatible hisoblanadi.
Bu binary compatibility’dan farq qiladi.
Yangi overload, stricter warning yoki til qoidasi oldingi source’ni buzishi mumkin.
Source review
Code review source o‘zgarishini:
- correctness;
- security;
- readability;
- test;
- performance;
- API;
- migration
bo‘yicha tekshiradi.
Generated yoki vendored source alohida belgilansa review shovqini kamayadi.
Source provenance
Tashqi source nusxasi qayerdan olingani, qaysi commit yoki release ekani va lokal patchlar mavjudligi qayd etiladi. Bu ayniqsa vendored dependency va firmware source’i uchun muhim.
Source generation tartibi
Generated source builddan oldin deterministik vosita bilan yaratiladi. Generator versiyasi o‘zgarsa output ham o‘zgarishi mumkin, shuning uchun schema va generator birgalikda pin qilinadi.
Source arxivi
Release uchun source archive Git working tree’dan tasodifiy fayllarni emas, tagga tegishli kuzatiladigan fayllarni oladi. Submodule va generated komponentlar arxiv tarkibida aniq ko‘rsatiladi.
Bog‘liq tushunchalar
Source code, Repository, Version control, Generated code, Source distribution, Binary distribution, Open source, Source map, Build, Compiler