
In tutte le ore passate davanti ad uno schermo acceso lavorando, studiando e visitando Lega Nerd fappando come dannati, non vi siete mai chiesti quale strana magia potesse aver trasformato quella cruda macchina composta da nient’altro che fisica applicata nello strumento che tuttora chiamate Computer?
Se non l’avete fatto, vi consiglio di farvi un bell’esame di coscienza; se invece avete immaginato i più impensabili scenari degni della più incredibile Fabbrica di Cioccolato, siete allora pronti per avventurarvi nella tana del verde coniglio.
Come probabilmente sapete, un sistema, di qualunque tipo, è generalmente composto da una struttura contenente precise e rigide regole scritte in un linguaggio ad hoc. Nel nostro caso, la struttura è il nostro hardware, le regole sono il kernel, i Driver, il sistema operativo ed anche i programmi che utilizzate quotidianamente ed il linguaggio è quello macchina, binario – composto solamente da 0 e 1 – e perfetto per rappresentare VERO e FALSO, i due stati logici che la macchina può utilizzare.
Immaginate ora miliardi di linee composte solamente da codice binario. Immaginate di dover scrivere o gestire una cosa del genere. Quando siete cotti a puntino, buttate la testa dentro un secchio pieno di ghiaccio, aglio, olio e peperoncino e continuate la lettura.
Come avete sperimentato, è tecnicamente impossibile per un essere umano contemplare un così basso livello logico quale è il linguaggio macchina. Durante i primi anni del dopoguerra, comunque, i linguaggi erano davvero molto simili ad istruzioni binarie e difficilmente potevano essere studiati da una persona che non fosse stata istruita ad un livello universitario. La creazione di programmi sempre più complessi portò così scienziati e ingegneri del software a sviluppare ad un livello molto più alto, in modo tale che la comprensione del testo non avesse dovuto richiedere un processo troppo complicato per il nostro povero e limitato cervello.
Nacquero quindi i primi linguaggi compilati, più vicini alla natura umana ma bisognosi di un programma in grado di tradurre il più efficientemente possibile il codice in linguaggio macchina. Successivamente, i linguaggi di programmazione ad alto livello incominciarono a differenziarsi a seconda dello stile e delle caratteristiche e nacquero anche i famosi linguaggi interpretati, di scripting e così via, formando l’ecosistema “stabile” che oggi esiste.
Proprio come la conoscenza del DNA ci permette di poter comprendere, capire e modellare il corpo umano, questi linguaggi sono fondamentali, insieme a delle buone basi di fisica, per capire a pieno le potenzialità che i calcolatori, in ogni forma, possiedono. Hanno cambiato il nostro modo di vivere, cambieranno anche il nostro modo di pensare.
Se volete approfondire, i classici link di Wikipedia sono sempre disponibili:
- Kernel
- Linguaggio di programmazione
- Linguaggio Macchina
Prossimo articolo: Storia dei linguaggi di programmazione: dal Fortran ai giorni nostri.


Bravo
Ho letto la guida 6 volte e non ho messo gallerie. Non dovrei aver fatto casino
Beh, speriamo primo articolo di una lunga serie!
Buon lavoro, benvenuto tra gli autori.
Volendo essere pignolo aggiungi qualche grassetto qua e la per agevolare la lettura.
Posso quindi modificare l’aspetto di un articolo anche dopo averlo pubblicato?
Buono, buono. Ci avevo pensato anche io, ma poi mi son detto: “Mi ammazzano!” [cit.]
Certo che puoi, basta che schiecci la “E” situata a sinistra del pulsante “commenta” (sotto il post).
Eh eh eh…
A quello c’ero arrivato. Il punto era che, da una mia prospettiva, non era giusto modificare l’articolo profondamente dopo averlo pubblicato
proprio quello cui mi sto dedicando adesso, non vedo l’ora di leggere gli articoli sui linguaggi, sto cominciando da Pascal
Bel macello di argomento, a settembre dovrei buttarmi su una facoltà di informatica, spero di essere in grado di imparare tutto sto casino, ne sono affascinato, anche se sento che i veri “capoccia” alla mia età ormai hanno finito di imparare…non cominciano.
Sebbene i geni esistano, essi sono una minoranza. Di solito, chi inizia a programmare senza avere un’ esperienza accademica alle spalle rischia di assumere delle cattive abitudini che poi sono davvero difficili da togliere. Insomma, non preoccuparti che non serve cominciare a programmare da neonati per essere bravi
Chi inizia a programmare con una esagerata esperienza accademica alle spalle rischia di assumere delle cattive abitudini auto-lesioniste e alquanto malsane, periti e ingegneri che si ritrovano senza essere in grado di produrre una linea di codice tralasciando il concetto teorico
Dubidub, se ce l’avessero una vera base teorica. Ingegneri e periti spesso non sono che “scrittori di codici”. Magari gli ingegneri si perdono in progettazioni assurde, ma un informatico laureato in informatica si vede e lo si riconosce subito.
Più sotto yudo ha espresso il concetto di “carpentiere dell’informatica”. Ovvero quelli che sono capaci di fare più o meno tutto. Il vero informatico, quello per cui la programmazione è qualcosa in più, ricerca sempre l’eleganza e l’ottimizzazione del codice (citando WordPress “Code is poetry”)
L’hai detto, fratello!
E te lo dice uno che è Perito Informatico e (tra poco) Ingegnere Informatico…
Senza i carpentieri (e i muratori), i grattacieli restano solo dei disegni, belli ma sempre e solo disegni.
Il problema che i muratori se la credono e vogliono fare pure i disegni.
no il problema è che gli ingegneri rubano i disegni ai muratori
Che bello leggere i commenti degli studenti, quelli che ancora credono che faranno gli Ingegneri… Purtroppo molto spesso, quasi sempre, si finisce a fare il muratore del sw, in strutture in cui tutti sono ingegneri, e qualcuno il muratore lo deve pur fare, e quello che comanda non e’ necessariamente il piu’ bravo… Sigh…
La “gavetta” è una esperienza che va vissuta per se stessi, non in quanto sottomissione agli altri
Diglielo bro!
Sagge parole!
Aggiungo che cio’ mi riporta alla mente la discussione con una persona che sosteneva non vi fosse motivo di ottimizzare gli algoritmi, in quanto l’hardware sarebbe stato destinato a crescere in potenza molto rapidamente… Che cosa campata per aria!
Tanto per dire che, nuda e cruda, la legge di Moore abbia fatto in parte il suo tempo
La cosa campata in aria è divenuta realtà, purtroppo. La maggior parte del codice è tutto fuorché ottimizzato. Se penso che ad ogni aggiornamento un sistema operativo si prenda più del doppio della RAM della rispettiva generazione precedente, mi viene una rabbia.
Se non mi sbaglio, ne avevamo già discusso da qualche altra parte, convenendo che potremmo fare un salto di prestazioni generali anche solo passando un anno ad ottimizzare il codice scritto di Kernel, SO e driver vari. Il problema è che oramai la gente vuole funzioni su funzioni invece di una stabilità e sicurezza generale: tanto tra un paio di anni ragioneremo a Petabytes :|
gli potevi dire che esiste Photoshop 1.0 che sta su un dischetto da 1.4 mb e che per l’80% fa professionalmente le stesse cose della CS.
BUM!
Wil, ce l’ho, gira su 0s9 e gestisce cmyk con anche tutti i filtri e i canali alpha
Vero, ma mi sembra azzardato sostenere che fa le stesse cose del Photoshop di oggi.
Certo, sempre meglio dell’attuale paint!
XD
IMHO.
Comunque: GIMP POWA!
voglio darti una buona notizia, non si impara a programmare, si programma, se riesci a fare un programma che apre una finestra con un pulsante con la scritta “quit”, hai già fatto tutto, poi devi solo aggiungere testi, immagini, video, scelte, man mano che impari come aggiungere e togliere (o modificare oggetti) impari un’altra cosa, that’s all
Good work Edran, come già scrissi nel forum, Big Up per questa rubrica. :LN:
Autore a tempo di record! Fav per la nuova rubrica.
Il record è ancora della nostra giornalista preferita
vabbè! mah, facile presentarsi da giornalista pro e chiedere di poter scrivere. Complimenti a chi sa farsi valere per reali capacità e conoscenze!
Nerd >> Giornalista pro SEMPRE
(Senza offesa per i signori dell’ordine, eh
)
btw splendido articolo
Corretto, grazie
Thumbs up per Edran! Da addetto ai lavori (programmatore) apprezzo veramente tanto!
Se penso che ho passato anni a decodificare dump di memoria in esadecimale, traducendo le istruzioni in linguaggio macchina… Che palle…
Io ho dovuto fare qualcosa di simile in un esame quest’anno, e devo ancora chiedermi come cazzo facevate.
Non mi ci far pensare…
ma dai, che ci vuole? Con la tastiera giusta tutto è più semplice
http://glou.it/IkTV79
Te ci scherzi ma per anni il mio tool di debug principale e’ stato l’oscilloscopio…
quando avvii una release “senti” anche tu il rumore del codice?
Attendo impazientemente il prossimo articolo. Nell’intanto favvo!
FAVVO come se non ci fosse un domani, siamo partiti bene, continuate così! Bravi
Più è alto il livello, più è basso il livello del programmatore.
-1
Non sempre, dopo un po’ il programmatore di alto livello si rompe e si crea il suo alto livello da usare, così fa prima =) Che poi così non è che diventa di basso livello, come programmatore, ma ha portato la sua programmazione ad un altro livello. Livella, e poi trova l’equilibrio tempo-livella, perchè il tempo è denaro e la livella costa.
8)
Vabbuò, ma questo discorso puoi applicarlo in qualsiasi campo.
Nella gerarchia dei programmatori (insieme parzialmente ordinato in cui ognuno si ritiene superiore a qualcun altro), in cima ci sono Assembler (basso livello) e Lisp (altissimo livello), quindi la tua affermazione non è del tutto generale.
Se non fosse che devo dare un esame su tutto sto papocchio che hai scritto ti favverei con tutto il quore
Ottima rubrica!
Benvenuto!
Ho scritto davvero così tanto? Io mi sono limitato appena ho visto “Non scrivere cazzate!”
@eagle1: Sì, hai ragione. Però ad un certo punto, se il programmatore scende troppo di livello diventa un ingegnere elettronico. Io direi che un programmatore completo deve avere entrambe le skills, senza però scendere sono l’assembly, che è già molto basso.
Come ho già scritto nel tuo precedente articolo io considero C (e non solo io
) la perfetta simmetria tra i 2 estremi.
Tanto per farti capire, la porcata in PHP che ci portiamo dietro faceva consumare un 600% di processore al nostro server… La potenza è nulla senza controllo!
Devo essere felice di essere partito con il C, quindi?
600%?! Seriously? Ma è una cosa classica del PHP oppure è solo Itomi che si diverte a farcire il sito di for?
Il discorso è che usare un linguaggio che ti fa fare la stessa cosa in modi diversi NON significa avere un linguaggio di programmazione in cui ogni modo che usi per fare qualcosa sia giusto, ho reso l’idea della differenza tra C e PHP?
In verità i linguaggi del web non sono nemmeno considerati veri e propri linguaggi di programmazione, se non ho buttato via 4 anni della mia vita
Giusto?
@eagle1: Got it, got it
@parano1dz: Tecnicamente, finché si parla di php, può essere considerato tale poiché è turing-completo, ma non ne sono sicuro. HTML e simili non sono linguaggi di programmazione.
Chiamasi metalinguaggi
30 e lode
Diglielo ai miei prof che non la pensano cosi LOL.
Beh, in parte vero.
Sono linguaggi di programmazione a tutti gli effetti, ma vengono interpretati sequenzialmente, non vengono compilati in codice oggetto.
Questo si ripercuote in prestazioni più basse per PHP e soci, dato che prima di poter eseguire una istruzione, ogni volta il server web deve capire cosa deve fare!
Ciò è molto comodo per noi programmatori pigri del 2011 e per il settore vendite della Intel, che così può cacciare fuori processori più potenti per far girare codice sempre meno ottimizzato
Non e’ che ci sia molto sotto l’assembly… Comunque per me il C FTW, il C++ e’ sin troppo elegante…
Secondo me è ok, azzarderei a dire che è un pò povero ma forse è solo la mia percezione, questo argomento lo studio quindi sono abituato a modi più accademici, e poi è l’introduzione.
Interessato e FAV.
Benvenuto giovane padawan
Ottimo inizio!
Grazie maestra. A quando la promozione a Jedi Knight?
Pau mi assumo la responsabilità per ogni errore di questo giovine virgulto.
Scusami capo, ma preferisco prendermi le mie responsabilità in caso di fallimento. E per ora non ho in previsione nulla del genere
Hard as steel. We like it.
E’ bravo, il ragazzo promette bene.
Mica me li scelgo a caso i figliocci
Però se vuoi ti lascio il divertim… ehm, il compito di bastonarlo quando fa castronerie. Deal?
Che fate, mò vi mettete d’accordo a chi fa il primo giro di ronda?
Help! Help! Dove sono capitatoooooooooo…*fades*
Vai tranquilla che per bastonare c’è un’intera fila di editor accanto ad un’altra fila di autori.
Bravo
ottimo articolo (ti avevo detto che lo attendevo
) Continua così
Ehi, ci si aiuta a vicenda
Se hai bisogno, sono sempre disponibile (ma non scordarti che la tariffa non comprende i vari ed eventuali
)
Qualcosa di programmazione so (forse
) per il resto c’è mastercart
Una unica pecca nell’esposizione Edran: da come scrivi sembra che i pioneri siano partiti dal creare linguaggi di alto livello, mentre è vero il contrario. Volevi dire probabilmente che partendo dal linguaggio macchina, l’assembler e via via più in alto hanno creato sistemi completamente astrati dal livello macchina e perfettamente interpretabili dall’uomo.
Dici che non si capisce dall’introduzione? Mmm, vediamo come posso correggere.
[Edit: modificato tutto il paragrafo]
Così va molto meglio!
Ti ho corretto un refuso (postò/portò) LOL
Grazie capo. Non è mai un bene modificare un articolo dopo la mezzanotte
Congratulescions per la promozione
Bellissimo articolo, la programmazione mi affascina tantissimo non vedo l’ora di leggere le prossime puntate!
Ovviamente instant fav!
Promozione meritatissima, grande Edran!
&
@A tutti: Grazie. Come ho detto precedentemente, farò del mio meglio per scrivere articoli interessanti e alla portata di tutti
Benvenuto e bella rubrica
Edran, sei diventato autore?!
bravooooo bravoooo (letto alla francese)
I miei complimenti, bell’articolo!
Mi sa che ti sfrutterò anche per la redazione di Mondo Nerd
La resistenza è inutile! [cit.]
Mi autocito: Help! Help! Dove sono capitatoooooooooo…*fades*
Complimenti all’autore!
Un ottimo acquisto tra i nerd-scrittori di LN ;-)
Una cosa che sempre notato e’ come la gente identifichi la programmazione come i programmi per PC o le pagine web e basta…
Io ho sviluppato sw gestionale e web per qualche anno poi sono passato al sw embeddeb, quello che girare switch, router, dslam, telefoni, server etc. Tutto un mondo di processi, sistemi real time, controllori, sensori… Completamente diverso dal sw per pc & co, niente finestre, gui, solo command line quando va bene, altrimenti analizzatore di stati logici, oscilloscopi e…. LED.
Ci ho pensato anche io durante la scrittura dell’articolo. Poi però ho preferito buttarla sul generale. Io per esempio, studiando ad un Elettronico, ho iniziato a programmare in C direttamente su schede + microcontrollori Pic (infatti ho una pessima conoscenza di GUI e frameworks grafici).
P.s. Segno nella lista [Basi di software embeddeb]. L’argomento è tosto, quindi verrà più in là.
allora aspetto con ansia l’articolo, da ex studente di informatica che non ha più proseguito gli studi io mi fermo al C e poco altro, più qualche scarsissima nozione di elettronica analogica e digitale, ma l’argomento mi affascina oltremodo
GZ per la promozione e FAV!
stima
per zed e calorosa stretta di mano da collega.
Rispetto fratello!
Tu hai proprio capito cosa intendevo dire
“I LED, nessuno pensa ai LED”? {Semicit.}
Non appena iniziammo a programmare, scoprimmo con nostra sorpresa che ottenere programmi corretti non era cosi’ facile come avevamo pensato. Si dovette scoprire il debugging. Ricordo l’istante esatto in cui realizzai che gran parte della mia vita da allora in poi avrebbe dovuto essere spesa nella ricerca degli errori nei miei propri programmi. [Maurice Wilkes scopre il debugging, 1949]
devi mettere questa citazione da qualche parte, io l’ho stampata e tenuta davanti alla scrivania finche’ ho programmato!
Eh, è un problema. Non parlo dell’EDSAC nella storia della programmazione… vedrò che posso fare (forse un capitolo sul debugging
)
No, non c’entra la storia, se hai mai programmato sai che il debugging e’ la maledizione del programmatore, e’ stato cosi’ dall’inizio dei tempi e sempre sara’!
Questa frase e’ emblematica per questo motivo… Per ogni ora spesa a scrivere codice ce ne sono n spese a diventare scemi a caccia di bug!
Lo so, dannazione! Non mi ci far pensare
Il C è una maledizione in questi casi!
Mi serve un contesto nel quale inserire la frase. Vedrò, vedrò
Per questo è sempre meglio fare una buona pianificazione prima di buttarsi a capofitto nel codice, come invece ho fatto per anni e anni!
Secondo me è da mettere, fa parte delle filosofie di vita di chi programma.
great!!! questa nuova rubrica m’ispira un sacco!!! non vedo l’ora di leggere altri articoli.
FAV
FAVVISSIMO! L’argomento mi interessa – decisamente – proprio in questi giorni fra K&R e Stroustrup vari
Objective-C e Cocoa FTW!