Terminologia - il codice sorgente è un programma? [chiuso]

10

Sono un principiante nella programmazione e non ho una buona conoscenza della terminologia. Mi piacerebbe sapere se il codice sorgente scritto in un linguaggio compilato come C o C ++ è considerato un programma? In caso contrario, qualcuno può spiegare perché?

    
posta Othman 25.11.2016 - 23:43
fonte

5 risposte

16

Vedi la voce di Wikipedia per il programma : (Ho aggiunto il grassetto )

A computer program is a collection of instructions that performs a specific task when executed by a computer. A computer requires programs to function, and typically executes the program's instructions in a central processing unit.

A computer program is usually written by a computer programmer in a programming language. From the program in its human-readable form of source code, a compiler can derive machine code—a form consisting of instructions that the computer can directly execute

Quindi, il "programma" è l'insieme di istruzioni che il computer esegue e il "codice sorgente" è la versione leggibile da tali istruzioni.

    
risposta data 25.11.2016 - 23:51
fonte
7

I'd like to know if source code written in a compiled language like C or CPP is considered a program?

Sì, lo è.

MA

Il pericolo con questa linea di pensiero sta arrivando a: "il computer esegue il mio programma, scrivo il mio programma in [eg] C, ergo che il codice sorgente è istruzioni per il computer".

E questo è ciò che molti di noi hanno pensato per troppe decadi nel 20 ° secolo. Quello che abbiamo imparato negli ultimi dieci anni è che altri programmatori sono il pubblico principale del codice sorgente . Quindi sì, quella fonte è il programma, nello stesso modo in cui otterresti un programma a teatro, che dice ad altre persone cosa sta succedendo. La bellezza del codice sorgente è che non solo è il programma, è anche un insieme di istruzioni per il computer ...

    
risposta data 26.11.2016 - 00:30
fonte
0

Il codice sorgente è un termine generale per le linee di codice originali (create dagli umani). Altri tipi di codice che non sono fonte possono essere creati dalla traduzione o da un altro programma.

La proprietà intellettuale è ancora più ampia e può includere sia il codice sorgente che altri codici o dati.

Un programma si distingue da altro codice (sorgente o altro) nella sua completezza. Un programma è un codice sufficientemente completo che può essere eseguito (o è destinato a essere eseguito). Non tutto il codice (sorgente o altro) rappresenta una completezza sufficiente per l'esecuzione. Le librerie, ad esempio, sono pensate per essere combinate con e usate da altri codici, e quindi in genere non dovrebbero essere considerate un programma in quanto non possono essere eseguite (non sono pensate per essere).

Questa completezza a volte significa avere un main , che viene utilizzato da un sistema operativo come punto di ingresso per il programma

In generale, quando un programma è in esecuzione, si parla di un processo.

    
risposta data 26.11.2016 - 01:05
fonte
0

Che sia o non sia, dipende dal contesto. Pensaci in questo modo. Ho dimenticato qual è il nome formale del concetto, ma esiste una teoria del linguaggio che dice che le parole hanno un significato che non descrive ciò che è qualcosa, ma ciò che non è . Una mela rossa non è rossa perché è, beh, rossa, ma perché non è blu, non è verde, ecc. Ignora se è vero o no, ma presumi solo che sia per un secondo e pensa alla domanda in quel contesto.

Quindi, quando pensiamo a questo concetto, possiamo confrontare il nostro codice sorgente con un progetto di una casa. Se stai guardando il progetto da una serie di altri progetti e chiedi "questa è una casa", e gli altri progetti sono per edifici commerciali, ponti, ecc., La risposta sarebbe sì. Perché il progetto non rappresenta tutta quella roba e l'aspetto della casa è ciò che lo distingue dagli altri progetti.

Tuttavia, ovviamente, un progetto di una casa non è la stessa di una vera casa fatta di legno e cartongesso su cui ci si può sedere. Ci sono contesti in cui la differenza tra il progetto e la casa reale è significativa. C'è una differenza tra il piano e il deliverable.

Allo stesso modo il codice sorgente di un programma in un linguaggio compilato è come il modello, se lo si confronta a librerie, moduli del kernel, ecc., quindi il codice sorgente e il programma sono concettualmente uno e lo stesso. Ma se stai guardando come il software viene compilato, progettato e distribuito, i due non sono la stessa cosa. Di nuovo, c'è una differenza tra il piano e il deliverable.

tl; dr: A volte ciò che è qualcosa e ciò che rappresenta è considerato la stessa cosa, ma altre volte non lo sono.

    
risposta data 26.11.2016 - 04:26
fonte
0

Il codice sorgente è il preferito modulo del software su cui umano gli sviluppatori di software sono che lavorano . L'intuizione è che lo sviluppo del software è un processo sociale, quindi il codice sorgente è una nozione social . Scrivi codice sorgente principalmente per gli umani (i tuoi colleghi sviluppatori, o anche te stesso che lavori in pochi mesi sullo stesso programma), non per i computer. Per un programma codificato in C, è spesso (ma non sempre) .c C file e .h header files, ma il Makefile è anche codice sorgente. Ma a volte vengono utilizzate tecniche metaprogramming : alcuni programmi sono generatori di codice C e quindi < em> input a quel generatore è considerato codice sorgente (anche se l'emettitore di quel generatore è C). Due esempi: potresti usare un generatore di parser (come GNU bison ) per analizzando problemi, quindi il file di input .y di quel generatore è il codice sorgente. Oppure potresti scrivere un piccolo awk o gawk script per estrarre da alcuni sqlite database alcuni dati che potrebbero essere trasformati in es. una grande dichiarazione enum in qualche intestazione generata; allora quel database conterrebbe il codice sorgente!

Un programma per computer al contrario è relativo al computer che lo esegue. Di solito è ottenuto da compilando qualche codice sorgente (scritto in alcuni linguaggio di programmazione , e queste sono specifiche scritte in inglese nei documenti tecnici -vedi n1570 bozza per C11 -, non strumenti software!) in un eseguibile binario

.

Leggi anche il software gratuito . Immergiti nel codice sorgente dei progetti di software libero esistenti (vedi github o sourceforge per trovarne).

    
risposta data 26.11.2016 - 10:30
fonte

Leggi altre domande sui tag