Programmazione: la psicologia dei computer

Siamo tutti intimamente legati alla programmazione, sia come utente, come amministratore, come programmatore stesso, ma alla fine è qualcosa che sarà più connesso con le nostre vite nel corso degli anni.

In questo articolo (l'inizio di una piccola serie che ho intenzione di creare), Voglio condividere con voi alcuni concetti su ciò che ho scoperto sulla programmazione nel corso degli anni. Non pretendo di essere eccessivamente tecnico, spiegherò il motivo in seguito. Ma quello che intendo è fargli vedere il mondo con i miei occhi, e se a loro piace come appare, lascia che lo approfondiscano un po '🙂

Attaccherò il punto più semplice di tutti prima di entrare nei dettagli.

Perché non farò un post tecnico?

Bene per chi ha letto il mio post in merito miglior comando Linux, conoscerai un po 'la causa di questo focus. La tecnologia è in continua evoluzione e se scrivo qualcosa oggi, se il post è ben accolto, dovrò sempre aggiornare le informazioni. Nelle lingue più comuni di oggi, l'unica cosa sicura è il cambiamento. Con questo intendo (ei programmatori possono dimostrarmi che ho ragione) i framework sono in continua crescita e si modificano dai loro core, questo perché sorgono errori, alcuni possono essere considerati semplici bug, mentre altri potrebbero diventarlo vulnerabilità. Questo è il motivo per cui scrivere un post su una lingua specifica, oggi, mi garantirebbe magari qualche mese di utilità, nel migliore dei casi uno o due anni, ma non è questa l'idea

L'elettricità è importante

Quelli di voi che hanno fatto un po 'di ricerca sui linguaggi di programmazione software più bassi sapranno che tutto risale all'elettricità. In passato, la programmazione veniva eseguita a livello hardware, ciò significa che quei vecchi orologi, calcolatrici e molti altri dispositivi potevano compiere il loro destino programmando con hardware.

Il problema

Cambiare la programmazione hardware è costoso e complicato 🙂 (almeno questo è quello che mi hanno detto 🙂 ). Questo è il motivo per cui sono emersi i processori, che in realtà astraggono quel livello hardware per darci alcuni comandi per poter fare tutto ciò che era possibile attraverso l'hardware, solo ora nel livello hardware. Software.

Processori

I processori odierni hanno un numero limitato di funzioni, chiamate istruzione in molti libri. Questi consentono di eseguire le funzioni più basilari che l'hardware può eseguire e di mobilitare le informazioni attraverso la memoria del computer.

registri

I registri sono uno spazio in cui il processore memorizza le informazioni per poter svolgere lavori sul kernel, a seconda dell'architettura possono avere dimensione e ordine diverso, ma in modo semplice, la loro funzione è quella di memorizzare dati che indicano al processore uno dei seguenti tipologie di lavoro: spostare i dati, l'aritmetica e la logica e il controllo di flusso. Tutto può essere riassunto in questi tipi di funzionalità.

binario

I processori funzionano a livello binario, questo significa che capiscono solo 0sy 1si 🙂. Un fatto curioso qui 😀ricordi i permessi GNU / Linux? bene, vi siete mai chiesti come il processore riconosca effettivamente queste autorizzazioni? Semplice 🙂 binario. Al livello più basso, un processore interpreterà i permessi come una successione di 0 e 1, e questo è il motivo per cui l'ottale che formiamo ha i valori per l'esecuzione, 2 per leggere e 4 per scrivere. Per coloro che sanno leggere il binario, capiranno che:

111100101111

Mettono le autorizzazioni di lettura, scrittura ed esecuzione per il gruppo altri mentre mette le prestazioni e la lettura per il gruppo gruppo e leggere solo per il proprietario del file. Per i più curiosi, gli ultimi tre 1 attivano il setguid, setuid e il sticky bit. Se non sai cos'è questo binario, posso spiegarlo in un altro post, se non lo sai su setuid, setgid e lo sticky bit, lo lascio a te 😉 ma posso spiegarlo anche altrove se necessario.

Quando la curiosità chiama ...

Ebbene, se mi avete seguito fin qui, allora la vostra curiosità dovrebbe cominciare a chiedervi tante cose, la prima a cui voglio rispondere (e forse l'unica che questo post mi permetterà perché sto già scrivendo molto) è: Se le chiamate sono le stesse, perché i programmi sono così diversi?

psicologia

La programmazione è l'arte di imparare a leggere la mente 🙂 Voglio iniziare questa sezione con una citazione che ho letto molto tempo fa, ha detto Edsger Dijkstra:

Se il debug è il processo di debug, la programmazione deve essere il processo di introduzione

E non riesco a trovare un modo migliore per spiegare tutto questo 🙂 perché la programmazione è l'arte di introdurre errori? più di uno si starà chiedendo in questo momento. La risposta è semplice, perché le nostre menti sono umane e gli esseri umani commettono errori - è nella nostra natura, e lo sarà finché l'uomo esisterà sul pianeta.

I computer non hanno torto

Siamo noi che sbagliamo, le squadre si limiteranno sempre a riprodurre quello che diciamo loro, non danno per scontato niente, non interpretano niente, non si oppongono a niente, leggono e agiscono. Quindi in un altro libro in C ho mai letto qualcosa del genere:

Il C è un linguaggio scortese, puoi farci molto, ma non ti impedirà mai di spararti ai piedi se lo vuoi fare, o almeno così dici.

Questa è una verità piuttosto curiosa 🙂 Poiché quando si lavora a un livello così basso, è possibile che molte operazioni che vengono eseguite possano essere distruttive, cosa che non accade con linguaggi di livello un po 'più alto, poiché la prevenzione degli errori si stratifica sono più vecchi.

Tutto è psicologia

Ogni linguaggio, framework, programmatore, rispetta e segue un qualche tipo di filosofia, e se non lo fa, non ha un futuro molto promettente. Quelli di noi che lavorano su UNIX e derivati ​​probabilmente conosceranno la vecchia frase:

Fai una cosa e fallo molto bene.

Questa filosofia è seguita da alcuni progetti come il kernel, funzioni piuttosto piccole che fanno solo una cosa, ma fanno il meglio che possono.

Se andiamo in altre lingue, ognuna avrà una funzione e un obiettivo, alcuni più permissivi e altri più restrittivi, ma tutti seguendo il proprio modo di pensare.

Impara a leggere nel pensiero

C'è un detto abbastanza comune tra i programmatori, che ci sono centinaia di modi per risolvere lo stesso problema. Questo è vero, ma c'è qualcosa di molto più profondo in questo aspetto. La lettura del codice sorgente ti consente di leggere le menti, non una mente qualsiasi, ma la mente del programmatore (o dei programmatori) che lo ha scritto. È una sorta di diario virtuale e profondo 🙂 permette di conoscere a fondo la mente dello sviluppatore e, nel caso di grandi progetti, permette di vedere come il suo pensiero logico e critico è cresciuto nel tempo. Qualcosa di straordinario e che nutre molto le menti dei più giovani, perché puoi conoscere i migliori percorsi delle persone che hanno dovuto scoprirli 🙂

Essere consistente

Molti programmatori e specialisti dicono che dobbiamo uscire dal nostro zona di comforte, sebbene sia vero, è anche più che necessario mantenere determinati processi e formati. Questo è semplice da spiegare, le nostre menti sono ripetitive e rispettano le strutture, se scrivi codice allo stesso modo ogni giorno, in poco tempo smetterai di pensare alla forma e potrai concentrarti su di essa. fondo. Questo ti permette di vedere il file logica del programma invece del sintassi del linguaggio. E questo è il motivo per cui considero che imparare il concetti sarà sempre più importante dell'apprendimento forme. Questa è un'opinione personale, ma spero che dopo aver letto tutto questo possiate capire perché lo considero così 🙂 detto anche da qualcuno che ha dovuto programmare in C, Java, Javascript, Python, Ruby, PHP e altri 🙂 conosco il concetti semplifica la scrittura del codice.

In sintesi

Bene, questo è il primo passo di una serie che spero ti aiuterà a pensare in modo diverso all'arte della programmazione, invitandoti persino ad approfondire i concetti che ti consentono di eseguire il codice che hai scritto forse centinaia di volte, ma non si sono fermati a pensare a cosa fa veramente. E per coloro che non hanno iniziato a programmare, ma vorrebbero poter dare la priorità a ciò che è veramente importante sapere 🙂 Saluti


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Javier G. Delgado suddetto

    Un articolo molto coscienzioso in cui si discute di programmazione (in questo caso) magari in un nuovo linguaggio che programma in modo più approfondito, il mio appoggio va al seguente.

    1.    Chris ADR suddetto

      Ciao Javier, grazie mille 🙂 Penso che questo sia molto importante perché hanno sempre voluto insegnarmi solo a riprodurre codice, il famoso Ctrl + C ... Ctrl + V 🙂 ma non mi sono mai lasciato trascinare da questo, anche se è il problema più semplice del mondo Preferisco scriverlo che copiarlo da qualcun altro, mi fa sentire come se fosse una mia creazione.
      saluti

  2.   balua suddetto

    Già aspettando il prossimo capitolo, ho smesso di programmare molto tempo fa, e penso di poter trovare in qualche capitolo successivo qualche motivo per la mia decisione, davvero, dato che questo capitolo mi tolgo il cappello.

  3.   Chris ADR suddetto

    Ciao Balua 🙂
    Bene, troverò qualcosa per il prossimo. È un po 'complicato organizzare tutto in modo tale che il thread possa essere seguito da qualsiasi post, ma cercherò di avere questo (e molti altri che mi hanno chiesto) molto presto. Grazie per il tuo commento. Saluti

  4.   altrimenti suddetto

    Una chicca di un articolo! Spero il prossimo ...