DOMANDA Applicare La Teoria Dei Linguaggi Informatici

Umberto Mauro

Nuovo Utente
15
1
Salve a tutti, ultimamente ho preso la decisione di iscrivermi all'università nella facoltà di "informatica". Dato che ho deciso di iscrivermi a gennaio la mia università mi ha dato la possibilità di poter pagare singoli esami che si dovrebbero dare al primo anno di informatica in modo tale che l'anno prossimo mi verranno convalidati, leggendo il programma del primo anno di informatica ho pensato che gli esami migliori da poter preparare erano quelli che non avevano bisogno del laboratorio ovvero matematica, fisica, inglese ed un altro. Ho scelto questi perché l'università mi da la possibilità di poter fare soltanto gli esami senza frequentare i corsi. Allora ho pensato che programmazione 1, programmazione 2 ed Architettura dei Calcolatori e Laboratorio di Arch. Calc. sarebbe meglio farli seguendo i corsi dato che hanno bisogno di molte ore di laboratorio. Agli inizi di marzo dovrei dare matematica 1, siccome a me interessa molto saper programmare, in contemporanea ho anche comprato due libri sul linguaggio PYTHON (Python 3 di marco beri e Python guida completa di marco buttu ) perché so che è un linguaggio che non insegnano all'università. Ho appena finito il primo libro di marco beri e voglio iniziare subito quello di marco butto perché e chiaramente più vasto di quello di beri e può insegnarmi sicuramente molte altre cose. Appena ho finito il libro di beri che da le basi di Python mi sono chiesto, ed ora tutto quello che ho letto come faccio ad applicarlo? mi spiego meglio. Nel libro ho imparato le variabili, tipi di dati, sintassi e tante altre cose ma se avessi un'idea come ad esempio creare un Bot come si fa ad iniziare il tutto? come faccio a sapere cosa devo scrivere per far si che la mia idea si realizzi? Come faccio a sapere cosa scrivere in ogni singola riga? Come faccio a capire come poter scrivere dei codici che possano servire per quello che voglio fare? non saprei proprio come iniziare la prima riga di codice perché tutto quello che ho letto non è stato nient'altro che teoria con l'aggiunta di semplici esempi che fondamentalmente servono a capire la semplice cosa. Non so se e molto chiaro quello che sto dicendo, ho letto vari topic che potevano avvicinarsi a questo ma non ho letto mai risposte che veramente potessero rispondere a quello che sto scrivendo. Se servono ulteriori informazioni su cosa veramente voglio intendere quando non saprei scrivere niente di quello che penso ditemelo e cercherò di trovare altre parole per esprimere al meglio quello che dico.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Studiare un libro senza applicare passo passo, purtroppo, non permette di afferrare molti concetti. L'ideale è che inizi da esercizi (cercandoli tranquillamente in rete). Puoi usare come riferimento Project Euler ad esempio, che propone anche sfide interessanti. Le slide universitarie sono comunque un sacco.

Ciò che ti manca è la mentalità, ed è normale che sia così al momento attuale. Oltre allo studio esercitati, cerca di capire intanto come utilizzare le cose che stai imparando. Il modo migliore è metterle in pratica.
Quello che hai fatto è più o meno al pari dell'aprire un dizionario di una lingua straniera e studiarne N vocabili. Non sai in pratica che fartene, non sai come usarli. Ti manca la logica per metterli assieme. Inizia da stupidaggini, come ad esempio leggere due numeri da tastiera (base ed altezza) e comporre una figura utilizzando asterischi.

Il consiglio che posso darti è quindi di non seguire un libro senza mettere in pratica nulla. ;) Se non hai mai scritto nemmeno un hello world, non ha senso pensare a progetti grandi.
 
  • Mi piace
Reazioni: Hestia

Umberto Mauro

Nuovo Utente
15
1
E esattamente il tipo di risposta che cercavo, volevo soltanto dire che tutti gli esempi che ho letto sul libro li ho riportati sul computer ma cambiando soltanto piccole cose all'interno esattamente come l'esempio che mi hai fatto tu che al posto di hello world scrivevo ciao mondo ed e proprio questo quello che dico che non saprei applicare tutto questo insieme. E sicuramente perché manca la pratica e sono sicuro che le esercitazioni possano essere la cosa migliore, mi sai elencare i migliori siti o le. cose che posso fare al meglio per acquisire la mentalità?
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,900
11,551
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
il sito della facoltà di informatica a cui intendi iscriverti il prossimo anno;
cerca le pagine dei professori che tengono i corsi di fondamentidi informatica (o programmazione 1 o come la chiamano), scaricati le slide e/o gli esercizi che propongonoi ed inizia a farli.
Non è detto che usino Python, anche su questo è meglio se ti informi subito
 

Umberto Mauro

Nuovo Utente
15
1
All'università in programmazione 1 fanno il linguaggio C e per accedere alle slide c'è bisogno dell'account per l'area e-learning e a me non l hanno dato perché non sono immatricolato ma pago semplicemente per fare l'esame ed e per questo motivo che ho pensato di fare quel tipo di esame a settembre quando sarò immatricolato all'università in modo tale da poter seguire anche le ore di laboratorio ( importantissime ). A me interessava quello che potevo fare io da solo dato che molti programmatori la laurea in informatica non la tengono e sono anche più bravi di chi la tiene, volevo poter sapere dov'è il posto migliore per esercitarmi in tutto quello che ho letto e come poter apprendere il tipo di ragionamento per poter creare un progetto perché ho capito che e come se sapessi tutto di Python ma allo stesso tempo non so niente perché ho semplicemente seguito gli esempi del libro perché non saprei proprio che fare se volessi andare oltre, insomma non saprei proprio dove sbattere la testa.
 

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
E' piuttosto difficile capire il tuo pensiero, frasi troppo lunghe e punteggiatura scarsa.
Comunque penso che il tuo quesito sia la classica situazione del neofita: fondamentalmente "programmare" non equivale a "creare un software". Un conto è sapere come scrivere un algoritmo, un altro è ideare l'algoritmo che risolve un certo problema. Tu stai studiando come programmare, ma non sai come applicare le conoscenze.

Quello che devi fare è studiare il campo di applicazione in cui vuoi programmare: studiare il contesto, capirne i punti critici, studiare le soluzioni proposte da altri... insomma, cosa vuoi fare di preciso? Non è nemmeno detto che Python sia il linguaggio migliore.
Sappi comunque che imparare a programmare non è tanto diverso da imparare una lingua composta da un centinaio di parole, ideare un software che risponde a una esigenza può richiedere anni di esperienza. Prova ne è che molti laureati in informatica di fatto non sanno risolvere problemi ma solo tradurre in codice l'idea di persone che magari non sono nemmeno così ferrate in programmazione ma hanno la skill chiamata "problem solving". Questa si matura in anni di esperienza, anche personale, ma comunque esperienza.
Prova a darti degli obiettivi semplici, poi aumenti sempre di più, gradualmente, senza correre.
 
Ultima modifica:

Umberto Mauro

Nuovo Utente
15
1
Grazie per la risposta ed e proprio questo quello che vorrei imparare. Non so neanche se Python è il linguaggio giusto per quello che voglio fare, l'idea era quella di un BOT che ti permette di fare acquisti online in maniera molto veloce. So che Python è un linguaggio completo e con una semplice sintassi e che quindi dovrebbe essere più semplice da imparare. Quello che sto continuando a chiedere e proprio come posso esercitarmi per poter iniziare a scrivere un algoritmo che risolva i miei problemi? come posso iniziare ad esercitarmi su come scrivere gli algoritmi se non dai semplici esempi del libro? Com'è il modo migliore per studiarlo al meglio? Riportando gli esempi sul computer o non? Comprarne più di uno? E sopratutto dove poter capire da dove iniziare per iniziare un progetto ad esempio come questo sopra citato del BOT.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
E' l'applicazione stessa a migliorarti, anche passando da problemi che paiono magari stupidi o inutili. Come dicevo sopra servono studio ed applicazione dei concetti appresi (così da verificare se sono realmente appresi, oltre che per affermarli). Puoi anche leggerti 2 o 3 libri sul Python o sul linguaggio X, ma devi applicare ciò che stai apprendendo, altrimenti anche dopo un intero volume continuerai a non conoscere il linguaggio. Già dalle domande che poni sembra tu non abbia idea sul come utilizzare le cose apprese: e questo è la dimostrazione del fatto che dovresti cercare esercizi e farli. Tramite Google trovi di tutto e di più.

Ad ogni modo il linguaggio è solo uno strumento. La parte difficile è la mentalità stessa, i ragionamenti etc. etc. Questi vengono con il tempo (eg. con l'esperienza). Purtroppo non vi sono altre strade, se non l'assidua applicazione ed il tempo da dedicarvi (così come allo studio). Servono anni per apprendere l'arte della programmazione.
 

jax29

Nuovo Utente
8
3
Non so neanche se Python è il linguaggio giusto per quello che voglio fare, l'idea era quella di un BOT che ti permette di fare acquisti online in maniera molto veloce.

Direi che come primo progetto per un programmatore alle prima armi è fin troppo complesso. Per un applicazione del genere oltre al linguaggio devi conoscere le librerie per utilizzare le Socket, avere una minima base di reti e sapere come interfacciarsi al web tramite HTTP\HTML\Ajax (dipende da come è struttirato il sito). Un po' troppo tutto insieme secondo me.

Io partirei da qualcosa più easy: prima qualche programmino che prendi input da tastiera, e ti da output a schermo, dopo aver fatto alcune elaborazioni,
poi magari passi a leggere\scrivere files locali, magari provando a reimplementare dei piccoli tool come grep o sed.
 

Black5

Nuovo Utente
28
7
Secondo me ci vuole anche ispirazione. Programmare è un'arte e non solo dalla parte dell'identazione del codice, ma anche dalle singole parti di come è strutturato il programma. Ricordo che quando avevo 12/13 anni imparai per la prima volta il mIRC scripting, molto simile al C, anche se non è un vero linguaggio di programmazione... bei tempi...e tante soddisfazioni tutte date dal fatto che ero ispirato a fare un lettore multimediale. Ne avevo fatti tanti, tantissimi, tutti simili tra loro ma mai uguali perché nell'ultimo ero in grado di aggiungere sempre quello che io ritenevo la "figata". Mi piaceva ascoltare musica, scrivere del codice, guardare altri programmi compilati per capire come ragionavano gli altri scripter, copiavo e facevo modifiche, personalizzavo, e poi provavo io a scrivere di sana pianta. Ma comunque...son sempre partito dalle basi... e ripeto, ci vuole ispirazione.

Inviato da ASUS_Z017D tramite App ufficiale di Tom\\\'s Hardware Italia Forum
 
  • Mi piace
Reazioni: Mursey
U

Utente 16812

Ospite
Grazie per la risposta ed e proprio questo quello che vorrei imparare. Non so neanche se Python è il linguaggio giusto per quello che voglio fare, l'idea era quella di un BOT che ti permette di fare acquisti online in maniera molto veloce. So che Python è un linguaggio completo e con una semplice sintassi e che quindi dovrebbe essere più semplice da imparare. Quello che sto continuando a chiedere e proprio come posso esercitarmi per poter iniziare a scrivere un algoritmo che risolva i miei problemi? come posso iniziare ad esercitarmi su come scrivere gli algoritmi se non dai semplici esempi del libro? Com'è il modo migliore per studiarlo al meglio? Riportando gli esempi sul computer o non? Comprarne più di uno? E sopratutto dove poter capire da dove iniziare per iniziare un progetto ad esempio come questo sopra citato del BOT.

Di solito si predilige, in base ai dettami della programmazione strutturata, un approccio metodologico denominato TOP-DOWN, secondo cui si parte dal "generale" e si "scende" sempre più nel "particolare", attraverso "affinamenti successivi" :asd:
Prima si affronta il problema nella sua "generalità" e soltanto in un secondo tempo verrà "dettagliato" :sisi:
La logica è quella di "rimandare", per quanto possibile, l'analisi dei dettagli, prendendoli in considerazione solo quando non se ne può più fare a meno :D
Ovviamente senza che tutto ciò possa andare a discapito della precisione.
Si deve partire, quindi, da un'analisi approfondita del problema nelle sue linee generali, poi comprenderlo completamente e infine definire i cosiddetti GOALS, ossia gli obiettivi da raggiungere :sisi:
Ti sottopongo un banalissimo esempio: ho una mela intera e desidero mangiarla :asd:
La mela si può mangiare in molti modi ma decido di suddividere il problema in 4 azioni: 1) prendi la mela; 2) taglia la mela; 3) sbuccia la mela; 4) mangia la mela.
Le azioni "taglia la mela" e "sbuccia la mela" possono essere ulteriormente dettagliate, ad esempio in questo modo:
1) taglia la mela: a) dividi la mela a metà; b) dividi ciascuna metà (ora la mela ha 4 spicchi) :sisi:
2) sbuccia la mela: a) sbuccia il primo spicchio; b) sbuccia il secondo spicchio; c) sbuccia il terzo spicchio; d) sbuccia il quarto spicchio :sisi:
Nota ciò che ho fatto: ho definito il problema a grandi linee e ho "posposto" tutti i dettagli che avrebbero reso, se non avessi adottato questa strategia, poco chiara la descrizione della sequenza delle azioni :)
Ti propongo ora un esercizio, non è assolutamente obbligatorio farlo ma è un altro esempio: si tratta di scrivere un programma per il calcolo dell'MCD (massimo comune divisore tra 2 numeri interi, cioè il divisore più grande tra tutti i divisori dei due numeri) tra 2 interi utilizzando l'algoritmo di Euclide, ossia mediante sottrazioni successive o divisioni successive (senza alcun bisogno di fattorizzare alcunché) :look:
http://www.ubimath.org/divisibilita/MCD_MetodoEuclide_UbiLearning.pdf
La struttura dati è semplicissima poiché si lavora su due interi solamente ma si deve utilizzare la logica top-down e come formalismo suggerisco la tecnica del FLOW-CHART (vedi link sopra, lo pseudo-codice non mi piace molto) :sisi:
Per il resto ti consiglio di leggere i link che ho messo qui (sulla progettazione degli algoritmi e sulle 2 fasi di passaggio dal problema all'algoritmo e dall'algoritmo al programma) : https://www.tomshw.it/forum/threads/come-iniziare-a-programmare-tutti-i-linguaggi.552844/ :asd:
Saluti :)
 
  • Mi piace
Reazioni: Hestia e Black5

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili