Terminologia - czy kod źródłowy to program? [Zamknięte]

10

Jestem początkującym programistą i nie rozumiem terminologii. Chciałbym wiedzieć, czy kod źródłowy napisany w skompilowanym języku, takim jak C lub C ++, jest uważany za program? Jeśli nie, czy ktoś może wyjaśnić, dlaczego?

Othman
źródło
1
Tak, kod źródłowy jest uważany za program. Programy można rozróżnić według rodzaju zawartych w nich kodów, takich jak „kod źródłowy”, „kod obiektowy”, „kod maszynowy” i „kod wykonywalny”.
Robert Harvey,
6
To pytanie uderza mnie bardzo podobnie: „Czy wołowina jest krową?” zrobiłby to z tych samych powodów.
RM
1
Czy mąka i cukier to ciasto?
Bryan Oakley

Odpowiedzi:

16

Zobacz wpis w Wikipedii dotyczący programu : (dodałem pogrubienie )

Program komputerowy to zbiór instrukcji, które wykonują określone zadanie po uruchomieniu przez komputer. Komputer wymaga działania programów i zwykle wykonuje instrukcje programu w centralnej jednostce przetwarzania.

Program komputerowy jest zwykle pisany przez programistę w języku programowania. Z programu w postaci kodu źródłowego czytelnego dla człowieka kompilator może uzyskać kod maszynowy - formę składającą się z instrukcji, które komputer może wykonać bezpośrednio

Tak więc „program” to zestaw instrukcji wykonywanych przez komputer, a „kod źródłowy” to czytelna dla człowieka wersja tych instrukcji.

Dan Pichelman
źródło
1
Dziękuję za Twoją odpowiedź. Jeśli dobrze rozumiem, kod źródłowy jest programem, ponieważ definiuje pakiet instrukcji, które wykonują zadanie, gdy są one wykonywane przez komputer. Ale nawet jeśli te instrukcje nie są tymi, które są wykonywane przez CPU na końcu, CPU wykonuje instrukcje, które są tłumaczeniem instrukcji zdefiniowanych w języku wysokiego poziomu?
Othman,
7

Chciałbym wiedzieć, czy kod źródłowy napisany w skompilowanym języku, takim jak C lub CPP, jest uważany za program?

Tak to jest.

ALE

Niebezpieczeństwo związane z tym sposobem myślenia zbliża się do: „komputer wykonuje mój program, piszę swój program w [np. C], ergo, że kod źródłowy to instrukcje dla komputera”.

I tak myślało zbyt wielu z nas przez zbyt wiele dekad w XX wieku. W ciągu ostatniej dekady nauczyliśmy się, że głównymi odbiorcami kodu źródłowego są inni programiści . Tak, więc źródłem jest program, tak samo jak program w teatrze, który mówi innym ludziom, co się dzieje. Piękno kodu źródłowego polega na tym, że jest to nie tylko program, ale także zestaw instrukcji dla komputera ...

David Arno
źródło
1

To, czy jest, czy nie, zależy od kontekstu. Pomyśl o tym w ten sposób. Zapominam, jaka jest formalna nazwa tego pojęcia, ale istnieje teoria języka, która mówi, że słowa mają znaczenie, które opisują nie to, czym jest, ale czym nie jest . Czerwone jabłko nie jest czerwone, ponieważ jest, no cóż, czerwone, ale dlatego, że nie jest niebieskie, nie zielone itp. Zignoruj, czy to prawda, czy nie, ale po prostu załóż, że tak jest przez sekundę i pomyśl o tym w tym kontekście.

Kiedy więc pomyślimy o tej koncepcji, możemy porównać nasz kod źródłowy z planem domu. Jeśli patrzysz na plan ze stosu innych planów i pytasz „czy to dom”, a inne plany dotyczą budynków komercyjnych, mostów itp., Odpowiedź brzmi „tak”. Ponieważ plan nie reprezentuje wszystkich innych rzeczy, a aspekt domu jest tym, co odróżnia go od innych planów.

Oczywiście plan domu nie jest tym samym, co prawdziwy dom wykonany z drewna i płyt kartonowo-gipsowych, w którym można stać. Istnieją konteksty, w których znacząca jest różnica między planem a rzeczywistym domem. Istnieje różnica między planem a rezultatem.

W ten sam sposób kod źródłowy programu w skompilowanym języku jest podobny do schematu, jeśli porównujesz go z bibliotekami, modułami jądra itp., To kod źródłowy i program są koncepcyjnie takie same. Ale jeśli patrzysz na to, jak oprogramowanie jest kompilowane, projektowane i wdrażane, oba są różne. Po raz kolejny istnieje różnica między planem a rezultatem.

tl; dr: Czasami to, co jest i co reprezentuje, jest uważane za to samo, ale innym razem nie.

Jaka jest nazwa?
źródło
0

Kod źródłowy to ogólny termin określający oryginalne wiersze kodu (autorstwa ludzi). Inne rodzaje kodu, które nie są źródłowe, mogą być tworzone przez tłumaczenie lub inny program.

Własność intelektualna jest jeszcze szersza i może obejmować zarówno kod źródłowy, jak i inny kod lub dane.

Program różni się od innego kodu (źródłowego lub innego) pod względem kompletności. Program to kod, który jest wystarczająco kompletny, aby można go było uruchomić (lub jest przeznaczony do uruchomienia). Nie cały kod (źródłowy lub inny) reprezentuje wystarczającą kompletność do uruchomienia. Na przykład biblioteki mają być łączone z innym kodem i używane przez nie, a zatem ogólnie nie powinny być uważane za program, ponieważ nie mogą (nie powinny) być uruchomione.

Ta kompletność czasami oznacza posiadanie main, który jest używany przez system operacyjny jako punkt wejścia dla programu

Mówiąc ogólnie, gdy program jest uruchomiony, nazywa się to procesem.

Erik Eidt
źródło
1
Proszę nie wspominać o „własności intelektualnej”, ponieważ jest to termin celowo mylący ludzi.
whatsisname
0

Kod źródłowy jest preferowaną formą oprogramowania, na którym ludzkie programiści są roboczym . Wiedza jest taka , że tworzenie oprogramowania jest procesem społecznym, więc kod źródłowy jest pojęciem społecznym . Piszesz kod źródłowy głównie dla ludzi (twoi znajomi programiści, a nawet sam pracujesz za kilka miesięcy nad tym samym programem), a nie dla komputerów. W przypadku programu zakodowanego w C często są to (ale nie zawsze) .cpliki C i .hpliki nagłówkowe, ale Makefile jest także kodem źródłowym. Ale czasami stosowane są techniki metaprogramowania : jakiś program generuje kod C, a następnie dane wejściowedo tego generatora jest uważany za kod źródłowy (nawet jeśli wyjście tego generatora to kod C). Dwa przykłady: możesz użyć generatora analizatora składni (takiego jak GNU Bison ) do analizowania problemów, następnie .yplik wejściowy tego generatora to kod źródłowy. Lub możesz napisać mały skrypt awk lub gawk, aby wyodrębnić z bazy danych sqlite pewne dane, które zostałyby przekształcone w np. Dużą enum deklarację w wygenerowanym nagłówku; wtedy ta baza danych zawierałaby kod źródłowy!

Natomiast program komputerowy jest powiązany z komputerem, na którym jest uruchomiony. Zwykle jest uzyskiwany przez kompilację kodu źródłowego (napisanego w pewnym języku programowania , a są to specyfikacje napisane w języku angielskim w dokumentach technicznych - patrz szkic n1570 dla C11 -, nie narzędzi programowych!) W binarny plik wykonywalny .

Przeczytaj także o wolnym oprogramowaniu . Zanurz się w kodzie źródłowym istniejących projektów wolnego oprogramowania (zobacz github lub sourceforge, aby je znaleźć).

Basile Starynkevitch
źródło