Farò un discorso generale sui linguaggi per programmare in modo imperativo, cioè con delle specifiche istruzioni che il computer eseguirà, il computer che ospita il programma. Programma che è un insieme di operazioni imperative, cioè "fai così", che il computer "farà". Le istruzioni, cioè le parti del programma imperativo, che il computer farà, o come si dice in gergo "eseguirà", sono essenzialmente operazioni sull'hardware del computer, hardware come parte fisica ed elettronica, in particolare sulla memoria di lavoro, la memoria RAM, una memoria accessibile a partire dagli indirizzi, elementi numerici che specificano la collocazione sequenziale e progressiva nella memoria, memoria che è una lunghissima serie di locazioni di memoria, indirizzate come in un conteggio, con indirizzi numerici. La memoria di lavoro contiene quindi il programma da eseguire, e per eseguirlo istruzione per istruzione passerà dalla prima istruzione alla successiva, e così via di istruzione successiva in istruzione successiva, quindi a vari indirizzi numerici sequenziali e progressivi nella memoria RAM di lavoro, memoria nella quale oltre il programma vengono memorizzati i dati di lavoro intermedi nelle fasi di calcolo ed elaborazione delle informazioni. Il programma in senso astratto non è soltanto un pilotaggio dell'hardware, un uso dell'hardware cioè della parte elettronica del computer, ma in senso astratto è come dicevo una elaborazione delle informazioni, cioè un'ottenimento di un'informazione nuova a partire da altre, in un procedimento logico, qualcosa di simile alla risoluzione di un problema matematico classico. Perchè informazioni? Informazioni che in senso concreto sono bits, cioè degli zero o degli uno in lunghe sequenze numeriche, cioè non in base 10 da 0 a 9 ma in base 2 da 0 a 1. Questa base 2 è necessaria all'elettronica del computer per funzionare, una logica binaria, digitale binaria, dove "digit" significa "cifra", e "bit" significa "binary digit" ovvero "cifra binaria". Quindi si passa da un livello astratto di risoluzione problemi e soluzioni a problematiche quotidiane (anche di interesse commerciale), a una elettronica che usa solo 2 simboli, 0 e 1, che è molto basilare. E viceversa: top-down e bottom-up, dalla vista d'insieme ai dettagli e viceversa dai dettagli alla vista d'insieme. In questo senso un buon informatico è addestrato a conoscere tutti i livelli stratificati del computer per poterne gestire il funzionamento, fino a padroneggiarlo facendogli fare ciò che egli vuole e risolvendo difetti in tal senso, quando il computer non fa quel che è voluto.