Изходен код

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене
Илюстрация на Java сорс код с коментари в началото на кода оцветени в червено, вмъкнати коментари в зелено и програмни инструкции в синьо

Изходният код (на английски: Source code) е сбор от иструкции (заедно с коментарите) написан на разбираем за човека език за програмиране (може и на повече от един език за програмиране) обикновено като текст. Изходният код на компютърната програма трябва да се компилира, за да се получи програма на машинен език, която може да се изпълнява от хардуера. Друг вариант е да се ползва интерпретарор, който да анализира и да изпълни кода на момента.

Повечето компютърни програми се разпространяват във вид на изпълними файлове, но не и техния изходен код. Ако кодът е включен, то е полезно за потребителят, програмиста или системния администратор, за да се разбере действието, или за да се промени или допълни успешно дадена програма.

Синоними[редактиране | edit source]

  • програмен код
  • изходен код
  • код източник
  • сорс код (на английски: source code)
  • сорс
  • първичен код

Значение[редактиране | edit source]

Изходният код позволява модификация на програмата, разглеждане на начина, по който тя работи, откриване на грешки и други действия.

Организация[редактиране | edit source]

Сорс кодът, който съставлява програмата обикновено е качен на един или повече текстови файла, съхранявани в хард диска на компютъра. Обикновено тези файлове са внимателно подредени в дървовидна структура от директории, позната и като структура от сорс. Сорс кодът може също да бъде съхраняван в бази данни (както е прието за стор процедурите) или на друго място.

Сорс кодът за определена част от софтуера може да се съдържа в един или в няколко файла. Въпреки че следващия метод не се използва често, сорс кода може да бъде записан в различни езици за програмиране. Например програма, написана в C може да има части, написани на асемблер за оптимизационни цели. Също така е възможно за някои компоненти на части от софтуера да са написани и комплирани отделно, в условен програмен език и по-късно да бъдат интегрирани в софтуер, използвайки технология, наречена рефериране. Така се процедира при някои езици например Java: всеки клас се компилира отделно във файл и се свързва с интерпретатора по време на изпълнението.

Друг метод е да се направи главната програма интерпретираща за програмния език или специално за приложението във въпроса, след което да се състави тялото на потребителската функционалност като макрос, или като допълнителна библиотека на езика.

Кодовата база на даден проект е по-голямата колекция от всички сорс кодове на всички компютърни програми, които образуват проекта. Все по-често използвана практика е кодовете да се поддържат в системи за контрол на версиите.

Цел[редактиране | edit source]

Изходният код главно се използва като начален процес, при които се създава стартираща програма (компилирана или интерпретирана).

Програмистите, често намират за полезно да изследват съществуващ код, за да научат техники за програмиране. Споделянето на код между разработчици, често се отбелязва като основен белег необходим за развиването на уменията за програмиране. [1] Някои хора смятат изходния код като среда за художествено изразяване.[2]

Прехвърлянето на софтуер на други компютърни платформи, обикновено е много трудно без изходния код. Без изходен код прехвърлянето на софтуера може да изисква много ресурси. Възможността за прехвърляне включва двоично превеждане или емулация на оригиналната платформа.

Декомпилация на изпълним файл може да се използва за получаване на изпълним код или във програмен код от ниско ниво или от език на високо ниво.

Програмистите често адаптират програмния код от един софтуерен продукт, така че да може да се използва и в други проекти, този похват се нарича софтуерно преизползване.

Лиценз[редактиране | edit source]

Софтуерът и придружаващият го програмен код, принадлежи към една от две лицензни групи: свободен софтуер и патентован софтуер.

Общо казано, софтуерът е свободен ако програмният код е свободен за употреба, разпространение, извършване на промени и изучаване и патентен, ако програмния код се пази в тайна или е частна собственост и ограничен. Забележете, че под „свободен” се разбира свобода, а не безплатен. При много лицензи е приемливо да бъде плащано за „свободен софтуер”. Първият лиценз за свободен софтуер, който е публикуван за да дава тези права за свобода е GNU General Public License през 1989. GNU GPL е бил първоначално насочен да бъде използван с GNU операционна система. По-късно GNU GPL е бил адаптиран и от други не-GNU софтуерни проекти като например Линукс ядрото.

За патентования софтуер, се осигуряват различни закони за защитата на авторското право, търговската тайна и патенти, за да бъде запазен програмния код затворен. Допълнително много от софтуера идва със споразумение за крайния потребител (EULA) което обикновено забранява декомпилацията, обратното инженерство, анализа, модифицирането или заобикалянето на защитата от копиране. Видовете защита на програмния код, освен традиционното компилиране до обектен код, включва засекретяване на кода, маскиране на кода или морфиране на кода.

Обратно инженерство[редактиране | edit source]

Обратното инженерство (на английски: reverse engineering) представлява процесът на генериране на изходен код на програма от нейния машинен код. Това е сложен и понякога забранен от автора на програмата процес. Обикновено полученият по този начин изходен код е неразбираем за човек.

Примери[редактиране | edit source]

Кодът отдолу представлява програмен код на езика C# за събиране на две цели числа. След компилиране, се създава изпълним файл, от който се стартира програмата.

using System;
class SumofTwoIntegerNumbers   // дефинира клас SumofTwoIntegerNumbers
{
    static void Main()         // дефинира метода Main
    {                          // следва съдържанието на Main()
        int a = 5;             // декларира променливата ''а'' от целочислен тип и присвоя стойност равна на 5
        int b = 6;             // декларира променливата ''b'' от целочислен тип и присвоя стойност равна на 6
        int sum = a + b;       // декларира променливата ''sum'' от целочислен тип и присвоя стойност равна на сбора от ''a'' и ''b''
        Console.WriteLine("Сумата на двете числа е: " + sum);  // извежда на екрана стойността на ''sum''
    }
}

Същият код може да бъде написан така че да бъде изпълнен от интерпретатор, като например bash. Тук командния интерпретатор чете кода ред по ред и не е необходима компилация, като изходът се визуализира веднага след последната команда. Кодът може да бъде изпълнен, като всяка стъпка се въвежда последователно в терминала bash.

#!/bin/bash
# задава стойности на ''a'' и ''b''
let a=4
let b=5
# присвоява сумата на ''a'' и ''b'' на ''c''
let c=$a+$b
# извежда резултата на екрана
echo $c

Терминология[редактиране | edit source]

На руски език терминът е исхо̀дный код.

Според руско-българския речник[3], думата исхо̀дный означава ѝзходен, нача̀лен, отпра̀вен.

В израза исхо̀дный код правилният превод на думата исхо̀дный е начален, от източника, което разбира се точно съответства на английския оригинал. А българското „изходен“ (в първо значение - антоним на „входен“), се превежда на руски като выходной (антоним на „входной“), а на английски като exit (антоним на „entry, entrance“).

Думите исхо̀дный и изходен са пример за фалшиви приятели, тъй като не винаги имат еднакво значение (в руския език думата исхо̀дный не се използва за неща, които служат за изход, въпреки че в българския език второто значение на думата изходен съвпада с това на исхо̀дный).

Източници[редактиране | edit source]

  1. Spinellis, D: Code Reading: The Open Source Perspective. Addison-Wesley Professional, 2003. ISBN 0-201-79940-5
  2. "Art and Computer Programming" ONLamp.com, (2005)
  3. С. К. Чукалов. Русско-болгарский словарь, изд. Русский язык, 1986

Външни препратки[редактиране | edit source]

Вижте също[редактиране | edit source]