Topic: Imparare... o no?  (Letto 16774 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Imparare... o no?
« il: Agosto 21, 2013, 11:59 »
Ogni anno ci sono periodi in cui molti nuovi utenti arrivano nel forum.
Se sei uno di questi utenti, per favore, prenditi il tempo di leggere questo lungo post.
Non hai idea di quanto tempo risparmierai.

Se hai fretta... beh, e' meglio un'altro hobby. Non puoi imparare a programmare avendo fretta.

L'altro suggerimento e' di perdere un po' di tempo a leggere il forum. Sia le nuove discussioni, sia le vecchie.
C'e' tanta informazione gia' pronta. E si impara *tanto* a leggere. Pensare di leggere risposte solo alle proprie domande e' davvero ingenuo: si impara poco. Si imparano solo le cose che sono un pollice fuori dalla propria conoscenza... e che forse si sarebbero potute capire da soli.
Viceversa, leggere "tutto" da un'idea di quello che c'e' oltre: da un'idea di come sia la strada 1 metro, 100 metri, 3000 metri piu' oltre.

Gli utenti arrivano da background diversi, ma spesso non alcun background. Sono principianti assoluti.
E vogliono imparare a programmare.

La prima cosa che dovrebbero capire e' che programmare vuole dire essenzialmente "istruire il computer su come risolvere un problema".
La seconda e' cosa vogliono a lungo termine. E' inteso come hobby? E' parte di un corso universitario? Vogliono farne una professione?

Di per se, programmare, e' semplice. Davvero. Basta avere un po' di logica. Cosa che a molte persone, purtroppo manca.
La buona notizia e' che impegnandosi abbastanza, la logica la si impara. La cattiva notizia, e' che tutto questo *non serve a nulla*.

Oggi un sistema informatico e' una cosa assolutamente complessa. Operazioni *banali* che facciamo tutti i giorni da utenti coinvolgono una quantita' sorprendente di cose estremamente complicate. Vogliamo farci un'idea?

Trovo questo post (che riporto) molto interessante.

Citazione da: Jean-Baptiste Queru
You just went to the Google home page.

Simple, isn't it?

What just actually happened?

Well, when you know a bit of about how browsers work, it's not quite that simple. You've just put into play HTTP, HTML, CSS, ECMAscript, and more. Those are actually such incredibly complex technologies that they'll make any engineer dizzy if they think about them too much, and such that no single company can deal with that entire complexity.

Let's simplify.

You just connected your computer to www.google.com.

Simple, isn't it?

What just actually happened?

Well, when you know a bit about how networks work, it's not quite that simple. You've just put into play DNS, TCP, UDP, IP, Wifi, Ethernet, DOCSIS, OC, SONET, and more. Those are actually such incredibly complex technologies that they'll make any engineer dizzy if they think about them too much, and such that no single company can deal with that entire complexity.

Let's simplify.

You just typed www.google.com in the location bar of your browser.

Simple, isn't it?

What just actually happened?

Well, when you know a bit about how operating systems work, it's not quite that simple. You've just put into play a kernel, a USB host stack, an input dispatcher, an event handler, a font hinter, a sub-pixel rasterizer, a windowing system, a graphics driver, and more, all of those written in high-level languages that get processed by compilers, linkers, optimizers, interpreters, and more. Those are actually such incredibly complex technologies that they'll make any engineer dizzy if they think about them too much, and such that no single company can deal with that entire complexity.

Let's simplify.

You just pressed a key on your keyboard.

Simple, isn't it?

What just actually happened?

Well, when you know about bit about how input peripherals work, it's not quite that simple. You've just put into play a power regulator, a debouncer, an input multiplexer, a USB device stack, a USB hub stack, all of that implemented in a single chip. That chip is built around thinly sliced wafers of highly purified single-crystal silicon ingot, doped with minute quantities of other atoms that are blasted into the crystal structure, interconnected with multiple layers of aluminum or copper, that are deposited according to patterns of high-energy ultraviolet light that are focused to a precision of a fraction of a micron, connected to the outside world via thin gold wires, all inside a packaging made of a dimensionally and thermally stable resin. The doping patterns and the interconnects implement transistors, which are grouped together to create logic gates. In some parts of the chip, logic gates are combined to create arithmetic and bitwise functions, which are combined to create an ALU. In another part of the chip, logic gates are combined into bistable loops, which are lined up into rows, which are combined with selectors to create a register bank. In another part of the chip, logic gates are combined into bus controllers and instruction decoders and microcode to create an execution scheduler. In another part of the chip, they're combined into address and data multiplexers and timing circuitry to create a memory controller. There's even more. Those are actually such incredibly complex technologies that they'll make any engineer dizzy if they think about them too much, and such that no single company can deal with that entire complexity.

Can we simplify further?

In fact, very scarily, no, we can't. We can barely comprehend the complexity of a single chip in a computer keyboard, and yet there's no simpler level. The next step takes us to the software that is used to design the chip's logic, and that software itself has a level of complexity that requires to go back to the top of the loop.

Today's computers are so complex that they can only be designed and manufactured with slightly less complex computers. In turn the computers used for the design and manufacture are so complex that they themselves can only be designed and manufactured with slightly less complex computers. You'd have to go through many such loops to get back to a level that could possibly be re-built from scratch.

Once you start to understand how our modern devices work and how they're created, it's impossible to not be dizzy about the depth of everything that's involved, and to not be in awe about the fact that they work at all, when Murphy's law says that they simply shouldn't possibly work.

For non-technologists, this is all a black box. That is a great success of technology: all those layers of complexity are entirely hidden and people can use them without even knowing that they exist at all. That is the reason why many people can find computers so frustrating to use: there are so many things that can possibly go wrong that some of them inevitably will, but the complexity goes so deep that it's impossible for most users to be able to do anything about any error.

That is also why it's so hard for technologists and non-technologists to communicate together: technologists know too much about too many layers and non-technologists know too little about too few layers to be able to establish effective direct communication. The gap is so large that it's not even possible any more to have a single person be an intermediate between those two groups, and that's why e.g. we end up with those convoluted technical support call centers and their multiple tiers. Without such deep support structures, you end up with the frustrating situation that we see when end users have access to a bug database that is directly used by engineers: neither the end users nor the engineers get the information that they need to accomplish their goals.

Ecco... "noi", che facciamo questo di mestiere, abbiamo almeno una vaga idea di tutto questo. Potrebbe anche essere una tipica domanda fatta ad un colloquio di lavoro, per capirci. Ed e' anche qualcosa che uno che si va a laureare in Informatica dovrebbe provare vergogna a non sapere. Magari non abbiamo idea dettagliata di tutto... specialmente dei lati piu' bassi... dopotutto informatica ed elettronica sono discipline separate. Ma anche li...

La maggior parte delle cose interessanti da fare con un computer passano per qualcosa di simile.
Vuoi ancora imparare a programmare? Ottimo! Migliori auguri per i propri studi.
Ma se pensi che tutto questo sia "troppo", beh, questa e' la cosa. Non si scappa.

Offline Claudio_F

  • python sapiens sapiens
  • ******
  • Post: 1.160
  • Punti reputazione: 2
    • Mostra profilo
Re: Imparare... o no?
« Risposta #1 il: Agosto 23, 2013, 21:50 »
Se hai fretta... beh, e' meglio un'altro hobby. Non puoi imparare a programmare avendo fretta.

L'altro giorno durante la pausa pranzo mi arriva tutto elettrizzato un collega innamorato di Android dicendo che ha finalmente trovato quello che serve per scrivere app: Aida!

Conoscendo il soggetto resto impassibile pregustandomi il seguito e comincio a googlare "android aida", gli propongo innumerevoli pagine sull'opera di Giuseppe Verdi finché comincia a borbottare ma, forse, ma no, finché si ricorda: AIDE (e mi dice svegliaaa  :D)

Ok, un app per compilare java su Android, a quel punto gli chiedo:

ma conosci java?
"Ma cosa vuoi che sia, ci saranno le apposite funzioni da chiamare per fare le diverse cose"

quali altri linguaggi conosci?
"Visual Basic"

programmazione ad oggetti / pattern?
"gli oggetti, sono quelli che si creano e hanno le proprietà da impostare"

quanto tempo avresti da dedicargli?
"giusto quando sono seduto al cesso... cerco qualcosa che non porti via più di un paio di ore di lettura, cosa mi consigli?"

scarica le app fatte dagli altri e vivi sereno
"ho finito la pausa pranzo ciao"

Citazione
Trovo questo post (che riporto) molto interessante.
Bello, mi sembra ancora troppo semplice (la realtà è ancora più complessa), ma ovvio che entrare nel dettaglio diventava troppo pesante da leggere, in fondo lo scopo era solo far comprendere che "sotto" c'è molto più di quello che si immagina.
« Ultima modifica: Agosto 24, 2013, 09:00 da Claudio_F »

Offline shinken

  • python erectus
  • ***
  • Post: 206
  • Punti reputazione: 0
    • Mostra profilo
Re: Imparare... o no?
« Risposta #2 il: Agosto 24, 2013, 10:06 »


quanto tempo avresti da dedicargli?
"giusto quando sono seduto al cesso... cerco qualcosa che non porti via più di un paio di ore di lettura, cosa mi consigli?"


Leggermete OT ma forse no:
Per circa 20 anni ho praticato arti marziali, non storcete il naso, la curva di apprendimento nelle arti marziali è particolare:  c'é la parte fisica che si impara in poco tempo( dai 2 ai 5 anni a seconda della disciplina) e la parte mentale, che richiede qualche cosa di più ... e a volte non si impara proprio.
Senza la seconda, la prima diventa semplice ginnastica e non una disciplina

TUTTI gli anni e sottolineo TUTTI, ad inizio corso, arrivavano n persone convinte di diventare Bruce Lee, Roky Balboa, o quello che volete in circa 2 o 3 lezioni.

Tutti gli anni questi personaggi sparivano dopo 2 mesi e poi si potevano seguire seriamente i principianti realmente inetressati.

Il problema non è python java o quanto sia complessa una cpu o  l' elettronica o la fisica che sta dietro a tutto o la matematica che descrive la baracca
Il problema è  qui  (come nelle arti marziali, o in ogni altra disciplina)

1) trovare un Maestro ( una fonte da cui imparare in pratica)
2) mettercela tutta e tenere duro.


picapy

Re: Imparare... o no?
« Risposta #3 il: Settembre 26, 2013, 11:23 »
Il problema non è python java o quanto sia complessa una cpu o  l' elettronica o la fisica che sta dietro a tutto o la matematica che descrive la baracca
Il problema è  qui  (come nelle arti marziali, o in ogni altra disciplina)

1) trovare un Maestro ( una fonte da cui imparare in pratica)
2) mettercela tutta e tenere duro.
Si, hai ragione, ma in programmazione i presupposti da te indicati non bastano; occorrono anche una certa inventiva, fantasia e logica razionale. Senza di esse, nonostante la bravura del maestro, la buona volontà e l'impegno profuso dell'allievo, è difficile realizzare procedure di efficacia funzionale.
 ;)

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Imparare... o no?
« Risposta #4 il: Settembre 28, 2013, 20:55 »
Oh, se e' per quello c'e' anche fior di gente che nonostante gli sforzi profusi non riuscira' mai ad imparare un'arte marziale.
La dedizione puo' colmare fino ad un certo punto la mancanza di talento. Poi...

Offline shinken

  • python erectus
  • ***
  • Post: 206
  • Punti reputazione: 0
    • Mostra profilo
Re: Imparare... o no?
« Risposta #5 il: Ottobre 11, 2013, 13:33 »
Oh, se e' per quello c'e' anche fior di gente che nonostante gli sforzi profusi non riuscira' mai ad imparare un'arte marziale.
La dedizione puo' colmare fino ad un certo punto la mancanza di talento. Poi...
Qui ricadi in un errore comune:  le arti marziali non servono per vincere le gare, nè per fare a botte per strada o altre cose simili.
Sono un percorso di crescita, pongono al individuo delle difficoltà da superare,e lo portano ad imparare ad affrontare i propri limiti, a migliorare.
Non per nulla i grandi maestri affermano che non c'è differenza tra essere un Maestro di calligrafia o di spada perchè prima di tutto è una questione di spirito.

Ovviamente chi programma solo per hobby e non è portato, continuerà a farlo solo per hobby e non per professione non c'è nulla di male.
Quante persone vanno in palestra, ma non sono in lista per le prossime olimpiadi?
Alla fine il discorso è analogo.

Offline Max74

  • python neanderthalensis
  • ****
  • Post: 383
  • Punti reputazione: 0
    • Mostra profilo
Re: Imparare... o no?
« Risposta #6 il: Ottobre 11, 2013, 20:32 »
Fondamentalmente credo che Riko e qualcun altro sul forum non abbiano molta simpatia per i dilettanti della programmazione. Io credo che invece non c'è nulla di male nel cercare di fare ciò che ci piace, anche quando i risultati sono inferiori alle aspettative. Più che altro direi che è da censurare chi decide di fare arti marziali perché vorrebbe diventare un maestro e nonostante i propri limiti insiste nel porsi traguardi irraggiungibili invece di godere nel migliorare ciò che sa. In parole povere credo che Riko abbia ragione da vendere nel suo post, quando intende parlare di coloro che si iscrivono credendo che in qualche mese sapranno fare chissà quale applicazione (ho letto di gente che voleva fare un sistema operativo e stava litigando con la raw_input) però c'è il rischio di cedere allo snobbismo, nel momento in cui si pensa che se non si arriva ad un certo livello è tutta energia sprecata che avrebbe avuto miglior sorte se utilizzata nel coltivare pomodori nell'orto .
Io lo faccio per hobby, so che il mio livello non sarà mai tale da poter aspirare a farlo di professione, per mancanza di tempo, visto che devo anche lavorare, forse anche per capacità, magari rimarrò fermo alle tante odiate GUI, ma ciò nonostante non mi tiro indietro sol perché il computer è una cosa "complicata", ma ammetto che all'inizio questo forum spaventa più della complicatezza della macchina.
In ogni caso alla fine di tutta la gente che si affaccia al forum con la fretta di scrivere l'applicazione che cambierà il mondo dell'informatica non resta molto, c'è una scrematura naturale(credo che è in questo senso che vada inteso il post di shinken) e tanta gente arriva e se ne va (non solo dal forum), rinunciando quando viene posta davanti alla realtà, ma chi si affaccia con umiltà andrebbe incoraggiato.

Offline shinken

  • python erectus
  • ***
  • Post: 206
  • Punti reputazione: 0
    • Mostra profilo
Re: Imparare... o no?
« Risposta #7 il: Ottobre 11, 2013, 20:56 »
Più che altro direi che è da censurare chi decide di fare arti marziali perché vorrebbe diventare un maestro e nonostante i propri limiti insiste nel porsi traguardi irraggiungibili invece di godere nel migliorare ciò che sa.

Ma come non ci vai al cinema?
Non lo sai che tutti dopo 3 mesi diventano istruttori e dopo 5 Grandi MaestrI?
Leggi bene è scritto nel copione ....

(scusate non sono riuscito a trattenermi, 20 anni di A.M. e all' uscita di OGNI film sul genere arrivano ondate di principianti che duravano.... 2 mesi, quelli più dotati spesso andavano via per primi)

picapy

Re: Imparare... o no?
« Risposta #8 il: Ottobre 11, 2013, 23:13 »
Fondamentalmente credo che Riko e qualcun altro sul forum non abbiano molta simpatia per i dilettanti della programmazione.

Prendo la parola, anche se sono l'ultimo arrivato, perchè non sono d'accordo con quanto hai affermato. Può darsi anche che, fra quegli altri a cui ti riferisci, tu abbia compreso anche me, ma vorrei farti presente che, per l'occorrenza, ciascuno dei partecipanti alla discussione sta esprimendo semplicemente il proprio parere. Ciò non vuol dire che ci sia una forma di razzismo nei confronti dei programmatori per passatempo. Non so cosa pensi Riko della tua, diciamo, battuta. Personalmente ti posso dire che frequento da diverso tempo più di un Forum per SO: Linux e di programmazione e ti posso assicurare che in nessuno di essi ho trovato personaggi con atteggiamenti selettivi nei confronti degli altri amici del Forum. Tutt'altro ho incontrato sempre grande, paziente disponibilità, soprattutto negli iscritti più esperti, nei moderatori e negli amministratori.
Credo però che ogni settore sociale, dal mondo del lavoro a quello del più semplice divertimento, abbia determinate pecurialità e perciò, secondo me, non trovo corretto avanzare termini di paragoni.

Parliamo di programmazione! Mettiamo sul campo le nostre conoscenze ed esperienze, piccole o grandi che siano, confrontiamoci pure. Stai sicuro che ciascuno riceverà sempre qualcosa dagli altri partecipanti ad una discussione. Mi è capitato di sentire autodefinizioni come "programmatore della domenica" e poi sentirgli esprimere concetti di competenza assolutamente di altissimo livello.

Per cui: Buona programmazione e buon divertimento a tutti. ;)

Offline Max74

  • python neanderthalensis
  • ****
  • Post: 383
  • Punti reputazione: 0
    • Mostra profilo
Re: Imparare... o no?
« Risposta #9 il: Ottobre 12, 2013, 12:04 »
Fondamentalmente credo che Riko e qualcun altro sul forum non abbiano molta simpatia per i dilettanti della programmazione.

Prendo la parola, anche se sono l'ultimo arrivato, perchè non sono d'accordo con quanto hai affermato. Può darsi anche che, fra quegli altri a cui ti riferisci, tu abbia compreso anche me, ma vorrei farti presente che, per l'occorrenza, ciascuno dei partecipanti alla discussione sta esprimendo semplicemente il proprio parere. [...]  Non so cosa pensi Riko della tua, diciamo, battuta. [...]

Ma no, non mi riferivo a te e fondamentalmente non mi riferivo neanche agli interventi di questo topic. Tra l'altro non c'era neanche una critica in quella mia frase e non era neanche una battuta, semplicemente anche io  come te e gli altri esprimevo il mio parere sull'argomento, senza neanche voler esprimere un giudizio morale. Poi magari vedo le cose in maniera sbagliata, però questo è sembrato a volte, ma tutto ciò non ha nulla a che vedere con il fatto che il senso del topic, dal mio punto di vista, è condivisibile in toto.
Ho sbagliato a condensare il mio post in quella maniera, perché erano due livelli distinti. Il primo riguardava me personalmente e l'impatto che ho avuto con il forum, il secondo riguardava il fatto se il talento fosse o meno una discriminante per programmare in Python ed io credo di no, a patto che lo si faccia per hobby, tutto qui.
Ho nominato Riko (mi scuserà se parlo in terza persona, ma comunque può rispondermi) solo perché ha aperto il topic ed forse una delle espressioni più alte di cultura informatica, in generale, e Python, in particolare, che scriva sul forum, nonché uno degli utenti storici dello stesso, oltre ad essere uno dei moderatori. E probabilmente è anche uno dei più intransigenti e puristi. Questo non è un difetto o un pregio o forse è entrambi, quando non programmo evito di usare la logica booleana. Ma non avevo bersagli da colpire, lo ripeto, sto esprimendo solo la mia opinione senza voler in alcun modo offendere nessuno, tra l'altro trovo i suoi post illuminanti e forse glielo pure scritto.
Aggiungo che non ho mai parlato di "razzismo" o qualcosa del genere, non è che gli utenti vengano ghettizzati, anzi, da quando leggo il forum, in molti casi, ho visto fin troppa pazienza, anche là dove a me sarebbe saltata. Tant'è che se avessi avuto quest'impressione non sarei qui a scrivere.

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.720
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re: Imparare... o no?
« Risposta #10 il: Ottobre 12, 2013, 14:29 »
Il mio modesto parere sull'argomento è: che ne pensate di una persona che "solo per passatempo" decide di fare il muratore, l'imbianchino, il chirurgo ecc...? Può iniziare da zero senza saperne niente (se non quello che detta il senso comune, che in alcuni casi non basta)? Applicatelo alla programmazione. E' facile dire "si, non ti piace, non è molto leggibile ma funziona e chi se ne frega", ma quello che voglio dire è che anche "i programmatori per hobby" dovrebbero sforzarsi di ragionare prima di buttare giù codice molto spesso orribile. E la cosa che più non concepisco sono quelli che provano a copiare cose da esempi, non gli funziona e corrono a chiedere aiuto. Le cose prima si studiano, si comprendono appieno, poi si provano. Se non si capisce, allora si chiede. Esiste la documentazione, google, vari libri, eccetera.

picapy

Re: Imparare... o no?
« Risposta #11 il: Ottobre 12, 2013, 14:55 »
Il mio modesto parere sull'argomento è: che ne pensate di una persona che "solo per passatempo" decide di fare il muratore, l'imbianchino, il chirurgo ecc...? Può iniziare da zero senza saperne niente (se non quello che detta il senso comune, che in alcuni casi non basta)? Applicatelo alla programmazione. E' facile dire "si, non ti piace, non è molto leggibile ma funziona e chi se ne frega", ma quello che voglio dire è che anche "i programmatori per hobby" dovrebbero sforzarsi di ragionare prima di buttare giù codice molto spesso orribile. E la cosa che più non concepisco sono quelli che provano a copiare cose da esempi, non gli funziona e corrono a chiedere aiuto. Le cose prima si studiano, si comprendono appieno, poi si provano. Se non si capisce, allora si chiede. Esiste la documentazione, google, vari libri, eccetera.

Vero, per imparare bisogna studiare e nei lavori manuali, in cui lo studio sta dentro la pratica, non si può imparare se non ci si esercita. In programmazione l'esercizio serve. Serve come fissativo dei concetti studiati. Quasi sicuramente i primi approcci di codice saranno rudimentali, ma, con l'esercizio, l'esperienza e continuando a leggere e meditare su tutto quanto vissuto, la crescita diventerà, piano piano, un percorso inconsciamente inevitabile. Ciò vale sia per gli hobbisti che per i professionisti. Se, pensando ad un progetto, bisognasse aspettare di raggiungere la perfezione teorica, non si comincerebbe mai, perchè , nonostante la conoscenza fotografica di tutta la teoria studiata, il primo impatto con la pratica farà sempre pagare pegno. Nel frattempo anche gli strumenti studiati avranno fatto passi avanti ed il povero apprendista-programmatore, si vedrà ricacciato sui libri. Sempre, nell'ambito del puro ragionamento, si troverebbe immerso in un loop infinito.
 :)

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.720
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re: Imparare... o no?
« Risposta #12 il: Ottobre 12, 2013, 22:51 »
Il mio modesto parere sull'argomento è: che ne pensate di una persona che "solo per passatempo" decide di fare il muratore, l'imbianchino, il chirurgo ecc...? Può iniziare da zero senza saperne niente (se non quello che detta il senso comune, che in alcuni casi non basta)? Applicatelo alla programmazione. E' facile dire "si, non ti piace, non è molto leggibile ma funziona e chi se ne frega", ma quello che voglio dire è che anche "i programmatori per hobby" dovrebbero sforzarsi di ragionare prima di buttare giù codice molto spesso orribile. E la cosa che più non concepisco sono quelli che provano a copiare cose da esempi, non gli funziona e corrono a chiedere aiuto. Le cose prima si studiano, si comprendono appieno, poi si provano. Se non si capisce, allora si chiede. Esiste la documentazione, google, vari libri, eccetera.

Vero, per imparare bisogna studiare e nei lavori manuali, in cui lo studio sta dentro la pratica, non si può imparare se non ci si esercita. In programmazione l'esercizio serve. Serve come fissativo dei concetti studiati. Quasi sicuramente i primi approcci di codice saranno rudimentali, ma, con l'esercizio, l'esperienza e continuando a leggere e meditare su tutto quanto vissuto, la crescita diventerà, piano piano, un percorso inconsciamente inevitabile. Ciò vale sia per gli hobbisti che per i professionisti. Se, pensando ad un progetto, bisognasse aspettare di raggiungere la perfezione teorica, non si comincerebbe mai, perchè , nonostante la conoscenza fotografica di tutta la teoria studiata, il primo impatto con la pratica farà sempre pagare pegno. Nel frattempo anche gli strumenti studiati avranno fatto passi avanti ed il povero apprendista-programmatore, si vedrà ricacciato sui libri. Sempre, nell'ambito del puro ragionamento, si troverebbe immerso in un loop infinito.
 :)


Pienamente d'accordo, anche se il mio post era anche un mezzo rant visto quanto riportato da riko all'inizio del topic. Non capisco come ci siano persone che hanno fretta di imparare a programmare, vista la vastità degli ambiti coinvolti (non tutti prettamente scientifici eh, c'è anche un po' di sale in zucca da usare) :D

picapy

Re: Imparare... o no?
« Risposta #13 il: Ottobre 12, 2013, 23:59 »
Non capisco come ci siano persone che hanno fretta di imparare a programmare, vista la vastità degli ambiti coinvolti (non tutti prettamente scientifici eh, c'è anche un po' di sale in zucca da usare)

Tu sai benissimo che i linguaggi, cosiddetti, di altissimo livello, sono realizzati attraverso la costruzione di funzioni macro che contengono al loro interno grandi quantità di codici elementari. Sono dette istruzioni che l'interprete ricava e che esegue nel puro linguaggio macchina, da dare in pasto al processore del pc (dico processore e non processori per non complicarmi la vita e per non dilungarmi oltre lo strettamente necessario). Se il linguaggio è invece uno di quelli che richiedono la compilazione, la conversione in linguaggio macchina la fa il compilatore.
Però è pur vero che detti linguaggi, e python è uno di questi, non richiedono conoscenze approfondite di matematica binaria, nè di istruzioni come and, or, xor, ... Quello che conta è la capacità di costruire con razionale consecutività insiemi di istruzioni evolute che permettano all'utente-programmatore (non al programmatore-utente) di arrivare al risultato cercato. Per fare ciò, a parte l'applicazione della dovuta logicità, il maggiore sforzo che il nostro utente-programmatore deve compiere è, secondo me,  capire il meccanismo delle istruzioni nidificate o annidate, come le vogliamo chiamare. Capito questo ed imparato che richiamando un dizionario otterrà un certo risultato, diverso da quello che otterrà invece utilizzando una lista (chiedo scusa per avere ridotto detti oggetti a livello di banalità, ma l'ho fatto semplicemente per semplificare il concetto), il resto, mettendo un pò di quel sale contenuto nella propria zucca, dovrebbe diventare di facile dominio e di semplice utilizzo.
É questo l'orientamento a cui le fabbriche dei linguaggi di programmazione si sono rivolte, credo a partire dagli anni '90. Oggi, a chi, nella veste di utente-programmatore,  può interessare che cosa sia il byte e di quanti bit è composto?
Perciò, pur non concordando con questo modo di scrivere righe di codice, penso che dobbiamo adeguarci a quello che di nuovo ci passa il convento, d'altronde, si scrive di meno ed il tempo impiegato per scrivere un programma è enormemente accorciato. Di contro l'impegno di memoria di un programma dell'epoca corrente è grandemente dispendioso, fatto ne è che le ram dei pc crescono a ritmi paurosamente vertiginosi.

Ecco, lo sapevo, mi sono dilungato. Ti chiedo scusa. Però ci sarebbe ancora tanto da dire sull'argomento. Forse è meglio che chi può e sa si limiti a dare pazientemente consigli, anche se magari la domanda dovesse vertere su temi già affrontati e risolti.  :)

Io, comunque, mi trovo dalla parte di chi ha bisogno d'aiuto.  ;)

Ciao.

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.453
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Imparare... o no?
« Risposta #14 il: Ottobre 13, 2013, 00:10 »
Tu sai benissimo che i linguaggi, cosiddetti, di altissimo livello, sono realizzati attraverso la costruzione di funzioni macro che contengono al loro interno grandi quantità di codici elementari. Sono dette istruzioni che l'interprete ricava e che esegue nel puro linguaggio macchina, da dare in pasto al processore del pc (dico processore e non processori per non complicarmi la vita e per non dilungarmi oltre lo strettamente necessario). Se il linguaggio è invece uno di quelli che richiedono la compilazione, la conversione in linguaggio macchina la fa il compilatore.

No ecco, io non lo sapevo. Anzi, mi risultava che le cose fossero un po' diverse. Per esempio mi risultava che il concetto di "linguaggio compilato" sia una bella invenzione del marketing, visto che tramite le proiezioni di futamura, dato un interprete si puo' ottenere un compilatore. Il che vorrebbe dire che ogni linguaggio e' compilato, che farebbe suonare la frase "linguaggio compilato" piu' o meno come "linguaggio linguaggioso" con una salva di applausi di Mr. de la Palisse.

> Però è pur vero che detti linguaggi, e python è uno di questi,

Come detto, falso.

> non richiedono conoscenze approfondite di matematica binaria, nè di istruzioni come and, or, xor, ...

E qui... boh? Cioe' che cosa cavolo vuole dire? Se devi fare operazioni binarie le fai in Python e in C. Se non le devi fare non le fai.
E poi magari i problemi fossero la "matematica binaria"/

Citazione
Quello che conta è la capacità di costruire con razionale consecutività insiemi di istruzioni evolute che permettano all'utente-programmatore (non al programmatore-utente) di arrivare al risultato cercato. Per fare ciò, a parte l'applicazione della dovuta logicità, il maggiore sforzo che il nostro utente-programmatore deve compiere è, secondo me,  capire il meccanismo delle istruzioni nidificate o annidate, come le vogliamo chiamare.

Se mi stai tirando una superca**ola ci sto quasi cascando. Pero' se no, aargh, mi pare come se l'Argan parlasse di computer.

Capito questo ed imparato che richiamando un dizionario otterrà un certo risultato, diverso da quello che otterrà invece utilizzando una lista (chiedo scusa per avere ridotto detti oggetti a livello di banalità, ma l'ho fatto semplicemente per semplificare il concetto), il resto, mettendo un pò di quel sale contenuto nella propria zucca, dovrebbe diventare di facile dominio e di semplice utilizzo.

> É questo l'orientamento a cui le fabbriche dei linguaggi di programmazione si sono rivolte, credo a partire dagli anni '90.

Gia'. Ci sono andato una volta in visita. Bel posto, la via dopo la fabbrica della milka con le marmotte che impacchettavano la cioccolata.

> Oggi, a chi, nella veste di utente-programmatore,  può interessare che cosa sia il byte e di quanti bit è composto?

Vogliamo *scherzare*?