Эх код: Засвар хоорондын ялгаа

Content deleted Content added
Хуудас үүсгэв: "thumb|right|300px|[[Java хэл дээр бичигдсэн эх кодын жишээ. Програмын анхны коммент бую..."
(Өөрчлөлт алга)

05:29, 22 Гуравдугаар сар 2014-ий байдлаарх засвар

Эх код (заримдаа шууд Код гэдэг) нь ямарваа програмчлалын хэл дээр бичигдсэн, хүний уншиж чадах, компьютерийн програмын гүйцэтгэх зааврыг хэлнэ. Эх код нь дотроо кодыг жирийн хүний хэл дээр тайлбарласан комментийн хэсгийг агуулж болно. Програмын ажиллагааг програмист зааж өгөхдөө эх кодыг бичдэг. Эх кодыг ихэвчлэн компьютер шууд ойлгохгүй бөгөөд компайлер ашиглан үүнийг машин код руу хувиргадаг. Энэхүү машин кодыг шууд ажиллуулах боломжтой бөгөөд executable (exe) хэлбэртэй байдаг. Нөгөө талаас зарим програмчлалын хэл дээр бичигдсэн кодыг компайлер ашиглахгүйгээр мөр мөрөөр нь интерпретер ашиглан шууд ажиллуулах боломжтой байдаг. Ийм хэлний нэг жишээ нь Python юм.

Java хэл дээр бичигдсэн эх кодын жишээ. Програмын анхны коммент буюу тайлбарийг улаанаар, кодын голд байх комментийг ногооноор, жинхэнэ кодын хэсгийг цэнхэрээр дүрслэв

Ихэнх програм хангамж нь эх кодгүйгээрээ зарагдаж түгээгддэг. Нээлттэй эхийн програм хангамж нь програмын эх кодыг нээлттэй лицензтэйгээр түгээгддэг бөгөөд давуу тал нь хэн ч хамаагүй, зөвшөөрөл авах шаардлагагүйгээр эх кодыг судалж, өөрчилж, цаашаа түгээх боломжтой байдаг.

Эх кодын хэсгүүдийг мөн ном, сурах бичгүүдэд тавьсан байдаг бөгөөд энэ нь програмын ерөнхий алгоритмыг тайлбарлах зорилготой байдаг.

Тодорхойлолт

Эх код гэсэн томъёо нь текст хэлбэртэй байх кодоос гадна илүү өргөн хүрээгээр машин код, зурган хэлбэрээр дүрслэгдсэн тэмдэглэгээнд оноож өгч болно. IEEE-гийн "Source Code Analysis and Manipulation" хуралд хэлснээр:[1]

Илүү тодорхой байлгах үүднээс ‘эх код’ гэсэн нэр томъёо нь програм хангамжийн системийн бүрэн ажиллагааг тодорхойлох ямар ч тодорхойлолтыг хэлнэ гэж үзнэ. Иймээс машин код, өндөр түвшний хэл, системийн бүтэн ажиллагааг дүрслэх зурган тодорхойлолтууд нь үүнд хамаарна.[2]

Бүтэц

Компьютер програмын эх код нь санах ой дээр хадгалагдах хэд хэдэн текст файлаас (ганц файл ч байж болно) ихэвчлэн бүрддэг. Эдгээр файлуудыг файлын директориудад тодорхой бүтэцтэйгээр хадгалдаг бөгөөд үүнийг эх мод буюу source tree гэнэ. Эх кодыг мөн өгөгдлийн санд гэх мэт өөр байдлаар хадгалж болно.

Зарим програмын эх код нь өөр өөр програмчлалын хэл дээр бичигдсэн байж болно.[3] Жишээлбэр Си хэл дээр голлон бичигдсэн програм хангамжийн хурдыг нэмэгдүүлэх зорилгоор зарим хэсгийг ассемблер хэл дээр бичсэн байх жишээтэй.

Түүнчлэн програмын жижиг хэсгүүдийг тус тусад нь бичиж, компайлдсаны дараа library linking хийх аргаар дараа нь нэгтгэж болно. Зарим програмчлалын хэлд ингэх нь стандарт байдаг: Java дээр класс бүрийг тус тусын файл болгон компайлдсаны дараа бүтнээр нь ажиллуулахдаа интерпретер нь эдгээрийг холбож өгч ажиллуулдаг.

Өөр нэг арга нь цөм програмыг ямар нэг хэлний интерпретер болгон зохиож, энэхүү хэл дээрээ macro эсвэл add-in бичиж өгсөнөөр гол ажиллагааг бүрдүүлдэг. Emacs програм нь ийм аргачлалаар бүтээгдсэн.

Програм хангамжийн төсөлд хамаарах бүх програмын эх кодын цуглуулгыг code base гэнэ. Code base-уудыг version control system-д хадгалах нь сүүлийн үед түгээмэл болсон. Үүнийг ашигласнаар програмын эх кодод оруулсан өөрчлөлтүүдийг бүхлээр нь хадгалж, програм хөгжүүлэлтийн явцыг харж зохицуулах боломжтой. Ийм зорилгоор SVN, Git гэх мэт програмуудыг ашигладаг. Маш олон тооны эх кодын файлтай төслүүдийг компайлдах зааврыг Makefile-д бичиж өгдөг. Makefile нь эх кодын файлууд ямар учиртай болох, яаж компайлдах зааврыг агуулсан байдаг.

Зорилго

Эх кодыг компайлдаж executable програм болгодогоос гадна хүмүүс дунд алгоритмыг тайлбарлахад хэрэглэдэг.[4] Түүнчлэн бусдын програмчлах арга барилыг суралцахад эх кодыг хоорондоо солилцож, уншиж ойлгох нь ашигтай байдаг.[4] Эх кодыг зарим хүмүүс урлаг хэмээн үзэх нь ч бий.[5]

Програмыг өөр компьютерийн платформ дээр ажилладаг болгохоор шилжүүлэхдээ (Porting гэдэг) эх кодыг нь ашигладаг.

Компайлдсан executable-г буцааж эх код болгож хувиргахыг (ассемблер эсвэл өндөр түвшний програмчлалын хэл рүү) decompilation гэдэг.

Эх кодыг өөр програмын төсөл дээр ашиглахыг software reusability гэнэ.

Лиценз

Програм хангамж болон түүнийг бүтээх эх кодыг хоёр төрлийн лицензийн төрөлтэйгээр түгээж болдог: нээлттэй эхийн болон proprietary.

Нээлттэй эхийн гэдэг нь програмыг чөлөөтэй, үнэгүйгээр хэрэглэж, түгээж, өөрчилж, судлах боломжтой. Proprietary гэдэг нь эх код нь нууц, эсвэл ямар нэг хүн эсвэл байгууллагын эзэмшил болдог лицензийн төрөл.

Нээлттэй эхийн анхны лиценз нь 1989 онд гарсан GNU General Public License бөгөөд GNU үйлдлийн системийн лиценз болгох зорилготой байжээ.

Proprietary програм хангамж нь төрөл бүрийн зохиочгийн эрхийн хууль, үйлдвэрлэлийн нууц, патентаар хамгаалагдсан байдаг. Мөн decompilation, урвуу инженерчлэл, шинжилгээ, өөрчлөлт, copy protection-г даван туулах гэх мэт зүйлийг хориглосон EULA (хэрэглэгчийн програмыг ашиглах гэрээ)-тай зарагддаг. Эх кодыг объект код болгож компайлдаж хамгаалахаас гадна code encryption, code obfuscation, code morphing гэх мэт хамгаалах аргууд байдаг.

Чанар

Програмын эх кодыг яаж бичсэн байх нь програм хангамжийн хөгжүүлэгдэд чухал үр дагавартай. Coding convention буюу кодыг бичих журам гэж байдаг бөгөөд кодыг хүн уншихад ойлгомжтой байхаар бичих, хэлний онцлогтой холбоотой зүйлсийг агуулсан байдаг. Энэ нь анхны хөгжүүлэлтээс хойш програмын цаашдын нэмэлт өөрчлөлтийг гүйцэтгэж буй хөгжүүлэгчдэд тустай байлгах гол үүрэгтэй.

Кодыг уншихад хялбар байлгахаас илүүтэйгээр програмын хурдтай ажиллагаа, олон төрлийн архитектурт чиглүүлж компайлдах боломжтой байлгах гэх мэт зүйлс нь эх кодын чанарт илүү чухал үүрэгтэй.

Ишлэл

  1. SCAM Working Conference, 2001–2010.
  2. Why Source Code Analysis and Manipulation Will Always Be Important by Mark Harman, 10th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2010). Timişoara, Romania, 12–13 September 2010.
  3. Extending and Embedding the Python Interpreter — Python v2.6 Documentation [1]
  4. 4.0 4.1 Spinellis, D: Code Reading: The Open Source Perspective. Addison-Wesley Professional, 2003. ISBN 0-201-79940-5
  5. "Art and Computer Programming" ONLamp.com, (2005)

Гадны холбоос

  Commons: Эх код – Викимедиа зураг, бичлэг, дууны сан
  • Source Code Definition by The Linux Information Project (LINFO)
  • "Obligatory accreditation system for IT security products (2008-09-22), may start from May 2009, reported by Yomiuri on 2009-04-24". MetaFilter.com. Retrieved 2009-04-24.
  • Same program written in multiple languages