9 Avatar di Edran
2
Tempo di Lettura in Minuti

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.

Condividi questo Articolo:
Send to Kindle
Aree Tematiche Articolo:
Guide Programmazione Software Tecnologie
Tag Articolo:
Loggati

105 Commenti

  1. Avatar di parano1dz parano1dz 29/4/2011 19:16

    Bravo ;)

    • Avatar di Edran Edran 29/4/2011 19:20

      Ho letto la guida 6 volte e non ho messo gallerie. Non dovrei aver fatto casino :)
      Beh, speriamo primo articolo di una lunga serie!

      • Avatar di William J. William J. 29/4/2011 19:50

        Buon lavoro, benvenuto tra gli autori.

        Volendo essere pignolo aggiungi qualche grassetto qua e la per agevolare la lettura.
        ;)

        • Avatar di Edran Edran 29/4/2011 19:53

          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.] :D

  2. avatar Luca-slacciato 29/4/2011 19:20

    proprio quello cui mi sto dedicando adesso, non vedo l’ora di leggere gli articoli sui linguaggi, sto cominciando da Pascal

  3. avatar Resco 29/4/2011 19:22

    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.

    • Avatar di Edran Edran 29/4/2011 19:26

      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 ;)

      • Avatar di dubidub dubidub 29/4/2011 21:15

        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 :D

        • Avatar di elmook elmook 30/4/2011 11:04

          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”)

          • Avatar di sauron sauron 30/4/2011 11:15

            L’hai detto, fratello!
            E te lo dice uno che è Perito Informatico e (tra poco) Ingegnere Informatico…

          • avatar yudoit 30/4/2011 12:37

            Senza i carpentieri (e i muratori), i grattacieli restano solo dei disegni, belli ma sempre e solo disegni.

            • Avatar di elmook elmook 30/4/2011 13:10

              Il problema che i muratori se la credono e vogliono fare pure i disegni.

              • avatar yudoit 30/4/2011 13:33

                no il problema è che gli ingegneri rubano i disegni ai muratori

              • Avatar di Zed Zed 30/4/2011 14:13

                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…

              • avatar yudoit 30/4/2011 14:26

                La “gavetta” è una esperienza che va vissuta per se stessi, non in quanto sottomissione agli altri

            • Avatar di eagle1 eagle1 30/4/2011 14:28

              Diglielo bro!

          • Avatar di ragnoboy ragnoboy 30/4/2011 13:26

            Sagge parole! :)

            • Avatar di ragnoboy ragnoboy 30/4/2011 13:34

              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 8-)

              • Avatar di Edran Edran 30/4/2011 14:11

                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 :|

              • avatar yudoit 30/4/2011 14:11

                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.

              • Avatar di William J. William J. 30/4/2011 15:47

                BUM!

              • avatar yudoit 30/4/2011 18:27

                Wil, ce l’ho, gira su 0s9 e gestisce cmyk con anche tutti i filtri e i canali alpha

              • Avatar di William J. William J. 30/4/2011 19:36

                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!

    • avatar yudoit 30/4/2011 01:28

      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 ;)

    • Avatar di Rorschach Rorschach 14/4/2012 18:20

      :o Mi trovo nella tua stessa situazione… un anno dopo però! Come ti sei trovato alla fine?

  4. Avatar di Zano | NC90 Zano | NC90 29/4/2011 19:32

    Good work Edran, come già scrissi nel forum, Big Up per questa rubrica. :LN: :res:

  5. Avatar di Argo Argo 29/4/2011 19:38

    Autore a tempo di record! Fav per la nuova rubrica.

  6. Avatar di powap powap 29/4/2011 19:39

    :gn: “ed perfetto”? / :gn:
    btw splendido articolo

  7. Avatar di Johnsilver | NC84 Johnsilver | NC84 29/4/2011 19:40

    Thumbs up per Edran! Da addetto ai lavori (programmatore) apprezzo veramente tanto! :res:

  8. Avatar di ygy2020 ygy2020 29/4/2011 19:54

    :res: :a65: programmatori di tutto il mondo unitevi :D

  9. Avatar di Zed Zed 29/4/2011 20:01

    Se penso che ho passato anni a decodificare dump di memoria in esadecimale, traducendo le istruzioni in linguaggio macchina… Che palle…

  10. Avatar di EkV EkV 29/4/2011 20:01

    Attendo impazientemente il prossimo articolo. Nell’intanto favvo!

  11. Avatar di lucamrblonde | veronerd™ lucamrblonde | veronerd™ 29/4/2011 20:03

    FAVVO come se non ci fosse un domani, siamo partiti bene, continuate così! Bravi :)

  12. Avatar di eagle1 eagle1 29/4/2011 20:06

    Più è alto il livello, più è basso il livello del programmatore.

  13. Avatar di Deedlit | NC17 29/4/2011 20:12

    Se non fosse che devo dare un esame su tutto sto papocchio che hai scritto ti favverei con tutto il quore :D
    Benvenuto! :) Ottima rubrica!

    • Avatar di Edran Edran 29/4/2011 20:18

      Ho scritto davvero così tanto? Io mi sono limitato appena ho visto “Non scrivere cazzate!” :rofl:
      @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.

      • Avatar di eagle1 eagle1 29/4/2011 20:26

        Come ho già scritto nel tuo precedente articolo io considero C (e non solo io :D ) la perfetta simmetria tra i 2 estremi.

        • Avatar di eagle1 eagle1 29/4/2011 20:27

          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! :D

          • Avatar di Edran Edran 29/4/2011 20:33

            Devo essere felice di essere partito con il C, quindi? :D
            600%?! Seriously? Ma è una cosa classica del PHP oppure è solo Itomi che si diverte a farcire il sito di for? :rofl:

            • Avatar di eagle1 eagle1 29/4/2011 20:37

              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? :D

            • Avatar di parano1dz parano1dz 29/4/2011 20:37

              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 :D Giusto?

              • Avatar di Edran Edran 29/4/2011 20:47

                @eagle1: Got it, got it :D
                @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.

              • Avatar di parano1dz parano1dz 29/4/2011 20:58

                Chiamasi metalinguaggi :D

              • Avatar di Edran Edran 29/4/2011 21:04

                30 e lode :D

              • Avatar di parano1dz parano1dz 29/4/2011 21:07

                Diglielo ai miei prof che non la pensano cosi LOL.

              • Avatar di sauron sauron 29/4/2011 21:30

                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

      • Avatar di Zed Zed 29/4/2011 20:47

        Non e’ che ci sia molto sotto l’assembly… Comunque per me il C FTW, il C++ e’ sin troppo elegante…

    • Avatar di Alexsius91 Alexsius91 29/4/2011 20:36

      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.

  14. Avatar di Idiosyncratic Idiosyncratic 29/4/2011 20:47

    Benvenuto giovane padawan :a65:

    Ottimo inizio!

    • Avatar di Edran Edran 29/4/2011 20:51

      Grazie maestra. A quando la promozione a Jedi Knight? :rofl:

      • Avatar di eagle1 eagle1 29/4/2011 22:26

        Pau mi assumo la responsabilità per ogni errore di questo giovine virgulto.

        • Avatar di Edran Edran 29/4/2011 22:51

          Scusami capo, ma preferisco prendermi le mie responsabilità in caso di fallimento. E per ora non ho in previsione nulla del genere :rofl:

          • Avatar di eagle1 eagle1 29/4/2011 22:57

            Hard as steel. We like it.

            • Avatar di Idiosyncratic Idiosyncratic 29/4/2011 23:02

              E’ bravo, il ragazzo promette bene.
              Mica me li scelgo a caso i figliocci :res:

              Però se vuoi ti lascio il divertim… ehm, il compito di bastonarlo quando fa castronerie. Deal? :D

              • Avatar di Edran Edran 29/4/2011 23:24

                Che fate, mò vi mettete d’accordo a chi fa il primo giro di ronda?
                Help! Help! Dove sono capitatoooooooooo…*fades* :rofl:

              • Avatar di William J. William J. 30/4/2011 15:51

                Vai tranquilla che per bastonare c’è un’intera fila di editor accanto ad un’altra fila di autori. :rofl:

  15. Avatar di LordAuron LordAuron 29/4/2011 23:02

    Bravo :res: ottimo articolo (ti avevo detto che lo attendevo :) ) Continua così :D

  16. Avatar di eagle1 eagle1 30/4/2011 00:01

    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.

  17. Avatar di pedronerd | King of the OT pedronerd | King of the OT 30/4/2011 00:18

    Congratulescions per la promozione :D :a65: :res:

  18. Avatar di Nimue Nimue 30/4/2011 00:25

    Bellissimo articolo, la programmazione mi affascina tantissimo non vedo l’ora di leggere le prossime puntate!
    Ovviamente instant fav!

  19. Avatar di Akiyama Akiyama 30/4/2011 02:39

    Promozione meritatissima, grande Edran! :res: & :fav:

    • Avatar di Edran Edran 30/4/2011 12:16

      @A tutti: Grazie. Come ho detto precedentemente, farò del mio meglio per scrivere articoli interessanti e alla portata di tutti :)

  20. Avatar di Mokkori Mokkori 30/4/2011 12:20

    Benvenuto e bella rubrica :res:

  21. Avatar di rabendeviaregia rabendeviaregia 30/4/2011 12:45

    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.]

  22. Avatar di ragnoboy ragnoboy 30/4/2011 13:30

    Complimenti all’autore!
    Un ottimo acquisto tra i nerd-scrittori di LN ;-)

  23. Avatar di Zed Zed 30/4/2011 14:07

    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.

    • Avatar di Edran Edran 30/4/2011 14:21

      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à.

      • Avatar di Axxel Axxel 30/4/2011 15:22

        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!

    • Avatar di Ulundo Ulundo 30/4/2011 14:23

      stima +1 per zed e calorosa stretta di mano da collega.

    • Avatar di eagle1 eagle1 30/4/2011 14:28

      Rispetto fratello! :res: Tu hai proprio capito cosa intendevo dire :D

    • Avatar di William J. William J. 30/4/2011 15:54

      “I LED, nessuno pensa ai LED”? {Semicit.}

  24. Avatar di Zed Zed 30/4/2011 16:38

    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! :res:

    • Avatar di Edran Edran 30/4/2011 16:51

      Eh, è un problema. Non parlo dell’EDSAC nella storia della programmazione… vedrò che posso fare (forse un capitolo sul debugging :res: )

      • Avatar di Zed Zed 30/4/2011 17:28

        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!

        • Avatar di Edran Edran 30/4/2011 17:36

          Lo so, dannazione! Non mi ci far pensare :rofl: Il C è una maledizione in questi casi!
          Mi serve un contesto nel quale inserire la frase. Vedrò, vedrò ;)

        • Avatar di sauron sauron 30/4/2011 18:18

          Per questo è sempre meglio fare una buona pianificazione prima di buttarsi a capofitto nel codice, come invece ho fatto per anni e anni!

      • Avatar di Alexsius91 Alexsius91 30/4/2011 17:48

        Secondo me è da mettere, fa parte delle filosofie di vita di chi programma.

  25. Avatar di Pandalf il Grigio Pandalf il Grigio 30/4/2011 17:03

    great!!! questa nuova rubrica m’ispira un sacco!!! non vedo l’ora di leggere altri articoli.

    FAV

  26. avatar SantaChaos 30/4/2011 22:03

    FAVVISSIMO! L’argomento mi interessa – decisamente – proprio in questi giorni fra K&R e Stroustrup vari

  27. avatar chasseurmic 2/5/2012 22:19

    Objective-C e Cocoa FTW!

Lascia una risposta

Devi essere loggato per inviare un commento.

LN Panic Mode - Premi "P" per tornare a Lega Nerd