Bosh sahifa Wiki Source

Source

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.

Consumer:

  • source’ni ko‘radi;
  • target platformada build qiladi;
  • compiler option tanlaydi;
  • patch qo‘llaydi.

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.

Debugger runtime qatorini:

  • 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.

Compiler:

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:

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:

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:

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