Le lingue utilizzate per la programmazione dei computer insieme ai vari strumenti di sviluppo del software si sono evolute nel corso degli anni.
I primi computer sono stati programmati con i numeri immessi dagli interruttori su una console.
Quindi le persone hanno iniziato a sviluppare linguaggi e software che potrebbero essere utilizzati per creare software più facilmente e più rapidamente. Il primo grande sviluppo fu la creazione del linguaggio assemblatore in cui ogni linea di origine veniva convertita da un programma per computer in un'istruzione di codice macchina. Insieme a questo è venuto lo sviluppo di linker (che collegano pezzi di codice macchina insieme in pezzi più grandi). Gli assemblatori sono stati migliorati aggiungendo una macro o una funzione di preprocessore in qualche modo simile al preprocessore C/C++, sebbene progettata per il linguaggio assembly.
Quindi le persone hanno creato linguaggi di programmazione che somigliavano più a persone che scrivevano lingue piuttosto che a assemblatori (FORTRAN e COBOL e ALGOL per esempio). Queste lingue erano più facili da leggere e una singola riga di origine poteva essere convertita in diverse istruzioni macchina, quindi era più produttivo scrivere programmi per computer in queste lingue piuttosto che assemblatore.
Il linguaggio di programmazione C è stato un ulteriore perfezionamento utilizzando le lezioni apprese dai primi linguaggi di programmazione come FORTRAN. E C ha utilizzato alcuni degli stessi strumenti di sviluppo software già esistenti come i linker che esistevano già. Ancora più tardi è stato inventato il C++, che inizia come un perfezionamento di C che introduce strutture orientate agli oggetti. In effetti, il primo compilatore C++ era davvero un traduttore C++ che traduceva il codice sorgente C++ in codice sorgente C che veniva poi compilato con un compilatore C. Tuttavia, il C++ moderno è compilato direttamente su codice macchina per fornire tutte le funzionalità dello standard C++ con modelli, lambda e tutte le altre cose con C++ 11 e versioni successive.
I passaggi di base per la creazione di un'applicazione da un file sorgente C o C++ sono i seguenti: (1) vengono creati i file di origine, (2) i file di origine sono compilati (in realtà due passaggi, Preprocessore e compilazione), (3) i file oggetto creati dal compilatore C/C++ sono collegati per creare l'exe
Così hai questi passaggi per trasformare una versione del programma per computer in un'altra. Il sorgente C++ è compilato per produrre i file oggetto. I file oggetto vengono quindi collegati per produrre il file eseguibile.
Quando si esegue un programma si esegue il file eseguibile. Il file eseguibile contiene diversi tipi di informazioni. Il primo è le istruzioni della macchina che sono il risultato della compilazione del codice sorgente C++. L'altro è informazioni che il caricatore utilizza per sapere come caricare l'eseguibile in memoria.
In passato, molto tempo fa tutte le librerie e i file oggetto erano collegati insieme in un file eseguibile e il file eseguibile veniva caricato dal caricatore e il caricatore era piuttosto semplice.
Quindi le persone hanno inventato librerie condivise e librerie di collegamenti dinamici e ciò ha richiesto che il caricatore fosse più complesso. Non solo il caricatore deve caricare il file eseguibile in memoria in modo che possa iniziare a funzionare, il caricatore deve anche trovare librerie condivise o librerie di collegamenti dinamici che sono anche necessarie e caricare anche quelle. E il caricatore deve anche fare una certa quantità di collegamento dei componenti aggiuntivi, le librerie condivise, quindi il caricatore fa molto più di quanto non fosse abituato a fare.
I file di origine dei vostri programmi sono compilati in file oggetto, e quindi il linker collega quelli oggetto file insieme, producendo un file eseguibile. – 0x499602D2
Per andare con l'analogia del tuo libro, 'printf (" Ciao, mondo! \ N ");' è la parte che "scriviamo" così il codice oggetto potrebbe avere istruzioni per chiamare 'printf' per esempio. La libreria standard è la parte che effettivamente implementa 'printf' (come sta andando a stampare ??). Questa è la differenza. Ovviamente tipicamente in C++ scriviamo "cout <<" Hello, world! \ N ";' come primo programma ma l'idea è la stessa. – Brandin