Kod źródłowy - Source code

Z Wikipedii, wolnej encyklopedii

Prosty przykład kodu źródłowego w języku C , proceduralny język programowania . Wynikowy program wypisuje na ekranie komputera napis „hello, world”. Ten pierwszy znany fragment Hello world ” z przełomowej książki The C Programming Language pochodzi od Briana Kernighana z Bell Laboratories w 1974 roku.

W informatyce , kod źródłowy jest dowolny zbiór kodu, z lub bez komentarzy , napisany przy użyciu czytelnej dla człowieka język programowania , najczęściej jako zwykły tekst . Kod źródłowy programu jest specjalnie zaprojektowany, aby ułatwić pracę programistom komputerowym , którzy określają czynności, jakie ma wykonać komputer, głównie poprzez pisanie kodu źródłowego. Kod źródłowy jest często przekształcany przez asembler lub kompilator na binarny kod maszynowy, który może być wykonywany przez komputer. Kod maszynowy może być następnie przechowywany w celu wykonania w późniejszym czasie. Alternatywnie, kod źródłowy może zostać zinterpretowany, a tym samym natychmiast wykonany.

Większość oprogramowania jest rozpowszechniana w postaci zawierającej tylko pliki wykonywalne . Gdyby dołączono kod źródłowy, byłoby to przydatne dla użytkownika , programisty lub administratora systemu , z których każdy mógłby chcieć przestudiować lub zmodyfikować program.

Definicje

Linux Informacje o projekcie określa kod źródłowy jako:

Kod źródłowy (nazywany również kodem źródłowym lub kodem) to wersja oprogramowania w postaci, w jakiej zostało pierwotnie napisane (tj. Wpisane na komputerze) przez człowieka w postaci zwykłego tekstu (tj. Znaków alfanumerycznych czytelnych dla człowieka).

Pojęcie kodu źródłowego można również przyjąć szerzej, obejmując kod maszynowy i zapisy w językach graficznych, z których żaden nie ma charakteru tekstowego. Przykład z artykułu przedstawionego na dorocznej konferencji IEEE oraz na temat analizy i manipulacji kodem źródłowym:

Dla jasności „kod źródłowy” oznacza każdy w pełni wykonywalny opis systemu oprogramowania. Dlatego jest tak skonstruowany, że zawiera kod maszynowy, języki bardzo wysokiego poziomu i wykonywalne graficzne reprezentacje systemów.

Często istnieje kilka etapów tłumaczenia lub minimalizacji programu między oryginalnym kodem źródłowym wpisanym przez człowieka a programem wykonywalnym. Podczas gdy niektórzy, jak FSF , twierdzą, że plik pośredni „nie jest prawdziwym kodem źródłowym i nie liczy się jako kod źródłowy”, inni uważają za wygodne odwoływanie się do każdego pliku pośredniego jako kodu źródłowego w następnych krokach.

Historia

Najwcześniejsze programy dla komputerów z zapisanymi programami były wprowadzane binarnie przez przełączniki na panelu przednim komputera. Ten język programowania pierwszej generacji nie miał rozróżnienia między kodem źródłowym a kodem maszynowym .

Kiedy IBM po raz pierwszy zaoferował oprogramowanie do współpracy z jego maszyną, kod źródłowy został dostarczony bez dodatkowych opłat. W tym czasie koszt rozwoju i obsługi oprogramowania był wliczony w cenę sprzętu. Przez dziesięciolecia IBM dystrybuował kod źródłowy wraz z licencjami na oprogramowanie, aż do 1983 roku.

Większość wczesnych magazynów komputerowych publikowała kod źródłowy jako programy do wpisywania .

Czasami cały kod źródłowy dużego programu jest publikowany w twardej oprawie, takiej jak Computers and Typesetting , vol. B: TeX, The Program autorstwa Donalda Knutha , PGP Source Code and Internals autorstwa Philipa Zimmermanna , PC SpeedScript autorstwa Randy'ego Thompsona oraz µC / OS, The Real-Time Kernel autorstwa Jeana Labrosse.

Organizacja

Kod źródłowy, który stanowi program, jest zwykle przechowywany w jednym lub kilku plikach tekstowych przechowywanych na dysku twardym komputera ; zwykle te pliki są starannie rozmieszczone w drzewie katalogów , znanym jako drzewo źródłowe . Kod źródłowy można również przechowywać w bazie danych (jak jest to typowe dla procedur składowanych ) lub w innym miejscu.

Bardziej złożony przykład kodu źródłowego Java . Napisany w stylu programowania obiektowego , demonstruje standardowy kod . Z komentarzami do prologu zaznaczonymi na czerwono, komentarzami w wierszu zaznaczonymi na zielono, a opisami programu na niebiesko.

Kod źródłowy określonego oprogramowania może znajdować się w jednym pliku lub w wielu plikach. Chociaż praktyka ta jest rzadka, kod źródłowy programu można napisać w różnych językach programowania. Na przykład program napisany głównie w języku programowania C może mieć fragmenty napisane w języku asemblerowym dla celów optymalizacji. Możliwe jest również oddzielne napisanie i skompilowanie niektórych składników oprogramowania w dowolnym języku programowania, a następnie zintegrowanie ich z oprogramowaniem przy użyciu techniki zwanej łączeniem bibliotek . W niektórych językach, takich jak Java , można to zrobić w czasie wykonywania (każda klasa jest kompilowana w oddzielnym pliku, który jest powiązany przez interpreter w czasie wykonywania).

Jeszcze inną metodą jest uczynienie z programu głównego interpretera języka programowania, zaprojektowanego specjalnie dla danej aplikacji lub ogólnego przeznaczenia, a następnie zapisanie większości rzeczywistych funkcji użytkownika w postaci makr lub innych form dodatków w tym język, podejście przyjęte na przykład przez edytor tekstu GNU Emacs .

Baza kodu z programowania komputerowego projektu jest większy zbiór cały kod źródłowy wszystkich programów komputerowych , które składają się na projekt. Utrzymywanie baz kodu w systemach kontroli wersji stało się powszechną praktyką . Umiarkowanie złożone oprogramowanie zwykle wymaga kompilacji lub złożenia kilku, czasem dziesiątek, a może nawet setek różnych plików z kodem źródłowym. W takich przypadkach instrukcje dotyczące kompilacji, takie jak plik Makefile , są dołączone do kodu źródłowego. Opisują one relacje programistyczne między plikami kodu źródłowego i zawierają informacje o sposobie ich kompilacji.

Cele

Kod źródłowy jest używany głównie jako dane wejściowe do procesu, który tworzy program wykonywalny (tj. Jest kompilowany lub interpretowany ). Jest również używany jako metoda komunikowania algorytmów między ludźmi (np. Fragmenty kodu w książkach).

Programiści komputerowi często uważają za pomocne przejrzenie istniejącego kodu źródłowego w celu poznania technik programowania. Współdzielenie kodu źródłowego między programistami jest często wymieniane jako czynnik przyczyniający się do dojrzewania ich umiejętności programistycznych. Niektórzy uważają kod źródłowy za wyraziste medium artystyczne .

Przenoszenie oprogramowania na inne platformy komputerowe jest zwykle trudne bez kodu źródłowego. Bez kodu źródłowego konkretnego oprogramowania przenośność jest generalnie kosztowna obliczeniowo. Możliwe opcje przenoszenia obejmują tłumaczenie binarne i emulację oryginalnej platformy.

Dekompilacja programu wykonywalnego może służyć do generowania kodu źródłowego w kodzie asemblerowym lub w języku wysokiego poziomu .

Programiści często dostosowują kod źródłowy z jednego oprogramowania do wykorzystania w innych projektach, co jest pojęciem znanym jako możliwość ponownego wykorzystania oprogramowania .

Aspekty prawne

Sytuacja różni się na całym świecie, ale w Stanach Zjednoczonych przed 1974 r. Oprogramowanie i jego kod źródłowy nie podlegały prawom autorskim i dlatego zawsze były to oprogramowanie należące do domeny publicznej .

W 1974 r. Amerykańska Komisja ds. Nowych technologicznych zastosowań dzieł chronionych prawem autorskim (CONTU) zdecydowała, że ​​„programy komputerowe w takim stopniu, w jakim ucieleśniają oryginalne dzieło autora, są właściwym przedmiotem praw autorskich”.

W 1983 roku w amerykańskiej sprawie Apple przeciwko Franklinowi orzeczono, że to samo odnosi się do kodu wynikowego ; oraz że ustawa o prawie autorskim nadała programom komputerowym status praw autorskich dzieł literackich.

W 1999 r. W sprawie sądowej w Stanach Zjednoczonych Bernstein przeciwko Stanom Zjednoczonym orzekł ponadto, że kod źródłowy można uznać za formę wolności słowa chronioną konstytucją . Zwolennicy wolności słowa argumentowali, że ponieważ kod źródłowy przekazuje informacje programistom, jest napisany w języku i może być używany do dzielenia się humorem i innymi artystycznymi zajęciami, jest to chroniona forma komunikacji.

Koncesjonowanie

Przykład informacji o prawach autorskich:

Prawa autorskie [yyyy] [nazwa właściciela praw autorskich]

Licencjonowane w ramach licencji Apache w wersji 2.0 („Licencja”); nie możesz używać tego pliku, chyba że jest to zgodne z Licencją. Możesz uzyskać kopię Licencji pod adresem

http://www.apache.org/licenses/LICENSE-2.0

O ile nie jest to wymagane przez obowiązujące prawo lub nie zostało to uzgodnione na piśmie, oprogramowanie rozpowszechniane w ramach Licencji jest rozpowszechniane na ZASADZIE „TAK JAK JEST”, BEZ JAKICHKOLWIEK GWARANCJI LUB WARUNKÓW, wyraźnych lub dorozumianych. Zapoznaj się z Licencją, aby zapoznać się z określonymi uprawnieniami i ograniczeniami dotyczącymi języka w ramach Licencji.

Autor nietrywialnego dzieła , jakim jest oprogramowanie, ma kilka praw wyłącznych , w tym prawo autorskie do kodu źródłowego i kodu wynikowego . Autor ma prawo i możliwość udzielania klientom i użytkownikom swojego oprogramowania niektórych swoich wyłącznych praw w postaci licencji na oprogramowanie . Oprogramowanie i towarzyszący mu kod źródłowy mogą być powiązane z kilkoma paradygmatami licencjonowania; najważniejsza różnica jest wolnym oprogramowaniem vs własnego oprogramowania . Odbywa się to poprzez dołączenie informacji o prawach autorskich, która określa warunki licencji. Jeśli nie zostanie znalezione żadne powiadomienie, domniemywa się, że wszelkie prawa zastrzeżone .

Ogólnie rzecz biorąc, oprogramowanie jest wolnym oprogramowaniem, jeśli jego użytkownicy mogą używać go do dowolnego celu, studiować i zmieniać jego kod źródłowy, dawać lub sprzedawać jego dokładne kopie oraz dawać lub sprzedawać jego zmodyfikowane kopie. Oprogramowanie jest zastrzeżone, jeśli jest rozpowszechniane z zachowaniem tajemnicy kodu źródłowego lub jest własnością prywatną i podlega ograniczeniom. Jedną z pierwszych licencji na oprogramowanie, które zostały opublikowane i wyraźnie przyznano te wolności, była Powszechna Licencja Publiczna GNU w 1989 roku; licencja BSD jest kolejnym przykładem na początku od 1990.

W przypadku oprogramowania zastrzeżonego postanowienia różnych praw autorskich, tajemnicy handlowej i patentów są stosowane w celu zamknięcia kodu źródłowego. Dodatkowo, wiele kawałków oprogramowania detalicznego pochodzą z EULA (EULA), które zazwyczaj zabrania dekompilacji , inżynierii odwrotnej , analizy, modyfikacji lub obejście z zabezpieczeniem przed kopiowaniem . Rodzaje ochrony kodu źródłowego - poza tradycyjną kompilacją do kodu obiektowego - obejmują szyfrowanie kodu, zaciemnianie kodu lub jego morfing .

Jakość

Sposób, w jaki program jest napisany, może mieć ważne konsekwencje dla jego opiekunów. Konwencje kodowania , które kładą nacisk na czytelność i niektóre konwencje specyficzne dla języka, mają na celu utrzymanie kodu źródłowego oprogramowania, co obejmuje debugowanie i aktualizację . Inne priorytety, takie jak szybkość wykonywania programu lub możliwość kompilacji programu dla wielu architektur, często sprawiają, że czytelność kodu jest mniej istotnym zagadnieniem, ponieważ jakość kodu na ogół zależy od jego celu .

Zobacz też

Bibliografia

Źródła

Linki zewnętrzne