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


10

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


1
Sì, il codice sorgente è considerato un programma. I programmi possono essere distinti dal tipo di codice che contengono, come in "codice sorgente", "codice oggetto", "codice macchina" e "codice eseguibile".
Robert Harvey,

6
Questa domanda mi colpisce allo stesso modo "Il manzo è una mucca?" sarebbe, praticamente per le stesse ragioni.
RM,

1
Farina e zucchero sono una torta?
Bryan Oakley,

Risposte:


16

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

Un programma per computer è una raccolta di istruzioni che esegue un'attività specifica quando eseguita da un computer. Un computer richiede che i programmi funzionino e in genere esegue le istruzioni del programma in un'unità di elaborazione centrale.

Un programma per computer è generalmente scritto da un programmatore di computer in un linguaggio di programmazione. Dal programma nella sua forma leggibile dall'uomo di codice sorgente , un compilatore può derivare il codice macchina, un modulo costituito da istruzioni che il computer può eseguire direttamente

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


1
La ringrazio per la risposta. Se ho capito bene, il codice sorgente è un programma perché definisce una suite di istruzioni che esegue un'attività quando vengono eseguite da un computer. Ma anche se quelle istruzioni non sono quelle che vengono eseguite dalla CPU alla fine la CPU esegue le istruzioni che sono le traduzioni delle istruzioni definite in un linguaggio di alto livello?
Othman,

7

Vorrei sapere se il codice sorgente scritto in un linguaggio compilato come C o CPP è considerato un programma?

Sì.

MA

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

E questo è ciò che troppi di noi hanno pensato per troppi decenni nel 20 ° secolo. Ciò che abbiamo imparato nell'ultimo decennio o giù di lì è che altri programmatori sono il pubblico principale del codice sorgente . Quindi sì, quella fonte è il programma, proprio come faresti con un programma a teatro, che dice agli altri cosa sta succedendo. Il bello del codice sorgente è che non solo è il programma, è anche un insieme di istruzioni per il computer ...


1

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

Quindi, quando pensiamo a quel concetto, possiamo confrontare il nostro codice sorgente con un progetto di una casa. Se stai guardando il progetto da una pila 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 rappresenta non tutte le altre cose, e l'aspetto della casa è ciò che lo distingue dagli altri progetti.

Tuttavia, ovviamente un progetto di una casa non è lo stesso di una casa reale fatta di legno e muro a secco in cui puoi stare. Ci sono contesti in cui la differenza tra il progetto e la casa reale è significativa. C'è una differenza tra il piano e il risultato finale.

Allo stesso modo il codice sorgente di un programma in un linguaggio compilato è come il progetto, se lo si confronta con librerie, moduli del kernel, ecc., Il codice sorgente e il programma sono concettualmente la stessa cosa. Ma se stai guardando come viene compilato, progettato e distribuito il software, i due non sono gli stessi. Ancora una volta, c'è una differenza tra il piano e il risultato finale.

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


0

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

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

Un programma si distingue da un altro codice (sorgente o altro) nella sua completezza. Un programma è un codice sufficientemente completo da poter essere eseguito (o che si intende eseguire). 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 utilizzate da altri codici, quindi generalmente non sarebbero considerate un programma in quanto non possono (non sono pensate per essere) eseguite.

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

In generale, quando un programma è in esecuzione, viene chiamato processo.


1
Per favore, non menzionare "proprietà intellettuale" poiché si tratta di un termine intenzionalmente inteso a confondere le persone.
whatsisname

0

Il codice sorgente è la forma preferita del software su cui stanno lavorando gli sviluppatori di software umani . L'idea è che lo sviluppo del software è un processo sociale, quindi il codice sorgente è una nozione sociale . Scrivi il codice sorgente principalmente per gli umani (i tuoi colleghi sviluppatori, o anche te stesso lavorando in pochi mesi sullo stesso programma), non per i computer. Per un programma codificato in C, sono spesso (ma non sempre) file C e file header, ma Makefile è anche codice sorgente. Ma a volte vengono utilizzate tecniche di metaprogrammazione : alcuni programmi generano codice C e quindi l' input.c.ha quel generatore viene considerato il codice sorgente (anche se l' output di quel generatore è il codice C). Due esempi: potresti usare un generatore di parser (come il bisonte GNU ) per analizzare i problemi, quindi il .yfile di input di quel generatore è il codice sorgente. Oppure potresti scrivere un piccolo script awk o gawk per estrarre da un database sqlite alcuni dati che verrebbero trasformati in ad esempio una grande enum dichiarazione in qualche intestazione generata; allora quel database conterrebbe il codice sorgente!

Al contrario, un programma per computer è correlato al computer che lo esegue. Di solito si ottiene compilando un codice sorgente (scritto in un linguaggio di programmazione , e queste sono specifiche scritte in inglese in documenti tecnici - vedi bozza n1570 per C11 -, non strumenti software!) In un eseguibile binario .

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.