DOMANDA come iniziare per programmare

Stato
Discussione chiusa ad ulteriori risposte.

rctimelines

Utente Èlite
3,942
1,283
Hardware Utente
CPU
AMD Ryzen 5 2600x | INTEL i5-6600k | INTEL i5-4460... altri
Dissipatore
stock | Arctic Freezer 11LP | stock
Scheda Madre
Asrock Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
Hard Disk
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
Scheda Video
RadeonPro WX3100 4G | Asus R9 280x 3G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | Acer 24" FHD | Benq 19" FHD
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE
Formalmente le differenze sono che i linguaggi di scripting operano:

1. in un ambiente runtime specializzato, quindi non quello fornito dal compilatore/sistema operativo ma cose tipo il dom di un browser o Unity o Blender
2. sono interpretati
3. eseguono task ad alto livello, quindi teoricamente cose come shift, operazioni aritmetiche sono vietate??

Python non ha i limiti descritti sopra, ma può operare in quel tipo di ambiente. Ma a parte qualche linguaggio di scripting di nicchia, ad oggi nessuno dei linguaggi maggiori ha quelle limitazioni.
Si, in pratica come lo pensavo anch'io.. il fatto che sia interpretato è intrinseco (condizione necessaria ma non sufficiente, appunto), la presenza di operatori aritmetici (quelli logici mi pare che ci siano anche nei linguaggi di scripting più vecchi) potrebbe essere una cosa in più.. ma ciò svincolerebbe praticamente tutti i linguaggi da questa classificazione!..

Poi, che python consenta di implementare algoritmi anche di considerevole complessità è abbastanza evidente.

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Andretti60

Utente Èlite
3,418
2,295
Hardware Utente
Ok, concordo... ma allora qual'è la differenza tra un linguaggio di scripting è un linguaggio di programmazione?!? ...
A volte la differenza è netta, a volte no come nel caso di Python che nacque come scripting ma divenne multi uso, mentre invece per le varie shell dei sistemi operativi rimangono scripting. Vecchie definizioni non valgono più, tipo se il linguaggio sia interpretato o compilato. Adesso quello che conta maggiormente è l’uso che si fa di un linguaggio, scripting viene usato appunto per scrivere piccole applicazioni chiamate appunto scripting, che servono per automatizzare un processo del sistema operativo, per esempio automatizzare un sistema di backup, di installazione e di mantenimento di software e hardware del computer. VBA e Excel sono un classico esempio. Python adesso fa parte dei linguaggi chiamati “glue”, ossia che vengono usati come linguaggi di collegamento, come se fossero una colla, tra diversi moduli che fanno cose diverse. Quello è il compito in cui Python eccelle e per cui viene usato in ambiente professionale.
 

rctimelines

Utente Èlite
3,942
1,283
Hardware Utente
CPU
AMD Ryzen 5 2600x | INTEL i5-6600k | INTEL i5-4460... altri
Dissipatore
stock | Arctic Freezer 11LP | stock
Scheda Madre
Asrock Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
Hard Disk
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
Scheda Video
RadeonPro WX3100 4G | Asus R9 280x 3G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | Acer 24" FHD | Benq 19" FHD
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE
Dopo lunghe dissertazioni su scripting & c. adesso ci mancava anche il "glue".. ma lasciar perdere tutti questi tentativi sterili di classificazione e chiamarlo "linguaggio di programmazione"? Come mai questa cosa disturba tanto?!?

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
  • Mi piace
Reactions: Andretti60

Andretti60

Utente Èlite
3,418
2,295
Hardware Utente
Dopo lunghe dissertazioni su scripting & c. adesso ci mancava anche il "glue".. ma lasciar perdere tutti questi tentativi sterili di classificazione e chiamarlo "linguaggio di programmazione"? Come mai questa cosa disturba tanto?!?
...
Non sono assolutamente tentativi "sterili", sono tentavivi di creare una classificazione in modo da poter poi creare una definizione "formale" e poter scriverci sopra una teoria rigorosa. Come per esempio la differenza tra numeri reali e numeri immaginari: in questa maniera si costruisce una "disciplina" di studio (l'informatica nel nostro caso) che cerca di dare ordine ai concetti basandosi su una teoria astratta. Prendi per esempio i paradigmi di programmazione: se devo usare una tecnica di programmazione ad oggetto scelgo un linguaggio che supporta OOP. "Linguaggio di programmazione" era un termine che aveva senso negli anni settanta, adesso dobbiamo guardare e andare piu' in la' di quello se vogliamo che l'informatica possa venire considerata una "scienza" a tutti gli effetti.

Dobbiamo quindi mandare giu' il rospo. E anche chi comincia a programmare deve capire che esiste molto di piu' di quello che si impara scrivendo due programmini :) Conoscere come funziona un ciclo 'for' non e' abbastanza per scrivere un algoritmo di intelligenza artificiale, e' solo il punto di partenza di un lungo viaggio, per chi lo vuole intrappendere. Questa e' la grande differenza tra un semplice programmatore e un informatico, e l'importanza di una disciplina universitaria come la Scienza dell' Informazione.
 

rctimelines

Utente Èlite
3,942
1,283
Hardware Utente
CPU
AMD Ryzen 5 2600x | INTEL i5-6600k | INTEL i5-4460... altri
Dissipatore
stock | Arctic Freezer 11LP | stock
Scheda Madre
Asrock Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
Hard Disk
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
Scheda Video
RadeonPro WX3100 4G | Asus R9 280x 3G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | Acer 24" FHD | Benq 19" FHD
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE
Non sono assolutamente tentativi "sterili", sono tentavivi di creare una classificazione in modo da poter poi creare una definizione "formale" e poter scriverci sopra una teoria rigorosa. Come per esempio la differenza tra numeri reali e numeri immaginari: in questa maniera si costruisce una "disciplina" di studio (l'informatica nel nostro caso) che cerca di dare ordine ai concetti basandosi su una teoria astratta. Prendi per esempio i paradigmi di programmazione: se devo usare una tecnica di programmazione ad oggetto scelgo un linguaggio che supporta OOP. "Linguaggio di programmazione" era un termine che aveva senso negli anni settanta, adesso dobbiamo guardare e andare piu' in la' di quello se vogliamo che l'informatica possa venire considerata una "scienza" a tutti gli effetti.

Dobbiamo quindi mandare giu' il rospo. E anche chi comincia a programmare deve capire che esiste molto di piu' di quello che si impara scrivendo due programmini :) Conoscere come funziona un ciclo 'for' non e' abbastanza per scrivere un algoritmo di intelligenza artificiale, e' solo il punto di partenza di un lungo viaggio, per chi lo vuole intrappendere. Questa e' la grande differenza tra un semplice programmatore e un informatico, e l'importanza di una disciplina universitaria come la Scienza dell' Informazione.
Ok prof.. leggi il post iniziale, basta teorizzare rigorosamente!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

pabloski

Utente Èlite
1,913
353
Hardware Utente
Beh direi che visto il post iniziale, il consiglio migliore è proprio un linguaggio "glue". Alla fin fine all'inizio conta la possibilità di poter esprimere le proprie idee in codice il più rapidamente possibile, con meno bug possibile, realizzando cose il più complesse possibile.

Con Python e QT puoi creare un programma bello complesso e con tanto di GUI "all'avanguardia". L'espressività è imho il fattore fondamentale. Basic aveva/ha un'elevata espressività, Python lo stesso. E il supporto ad un paradigma di programmazione diretto ( come quello procedurale ) è un aiuto ulteriore, perchè si presta all'utilizzo con una metodologia agile.

Per questo mi suona strano quando consigliano di cominciare col C. Non che sia sbagliato a prescindere, ma si pone di fronte allo studente un percorso più arduo. E per cosa? Col rischio che poi l'entusiasmo venga meno e si abbandoni tutto. Le finezze della macchina sono adatte a chi già mastica un bel pò di programmazione, non certo ai novellini. Non finirò mai di ricordare quanto piacevole, per me, sia stato il mio personale percorso: Basic -> Pascal -> Assembly e da lì il resto.
 

LillinoGamer

Utente Attivo
Io, quando andavo a scuola (ho finito quest'anno) mi hanno fatto cominciare dal c++ e quindi ti consiglio quello.
Chiaramente conosco solo le basi, i concetti più importanti del linguaggio sono sicuramente le istruzioni if-else, i cicli di ripetizione while, do while, for e poi i vettori.
 

clessidra

Utente Attivo
404
62
Hardware Utente
CPU
VIA C3
Scheda Video
Ati Rage
Sistema Operativo
linux - Red Hat 1.1
c'è qualche guida online tipo libri,videoguida, per imparare sui linguaggi e imparare a programmare?! non dico di diventare un hacker professionista, però comunque mi piacerebbe saper programmare un minimo.
Partendo da questa premessa, e premettendo inoltre che non sono un programmatore professionista, io consiglio solo Python, giunto alla versione 3.x. Documentazione: c'è quella ufficiale, e online trovi altro materiale, sia buono, che cattivo (decisamente nell'uso delle classi). Hai scritto che hai già programmato con Excel, forse usando solo le formule nella barra delle formule, ma questo è già un punto di partenza. Se ritieni che queste basi siano sufficienti allora puoi già iniziare con Python. Io ti suggerisco questo link:
https://docs.python.org/3/tutorial/index.html
per iniziare col piede giusto, anzi...
Suggerisco Python perchè non necessita di compilazione, il codice che scrivi e che vedi è immediatamente eseguibile, non ti lascia dubbi interpretativi ed è veramente un linguaggio di programmazione potente e completo.
 

TerrorUberAlles

Nuovo Utente
Se il tuo scopo è buttar giù linee di codice che facciano cose va di Python o Js (ci tiri fuori cose interessati pur non sapendone minimamente di programmazione); se invece sei interessato a capire a fondo i fondamenti della programmazione ti conviene partire dagli anni '70 con Pascal o C (più che altro per apprezzare l'evoluzione di linguaggi e compilatori) per poi transire ad un java/c++ a quel punto hai tutte le conoscenze di base per comprendere qualsiasi linguaggio.
 
  • Mi piace
Reactions: Andretti60

rctimelines

Utente Èlite
3,942
1,283
Hardware Utente
CPU
AMD Ryzen 5 2600x | INTEL i5-6600k | INTEL i5-4460... altri
Dissipatore
stock | Arctic Freezer 11LP | stock
Scheda Madre
Asrock Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
Hard Disk
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
Scheda Video
RadeonPro WX3100 4G | Asus R9 280x 3G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | Acer 24" FHD | Benq 19" FHD
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE
Beh direi che visto il post iniziale, il consiglio migliore è proprio un linguaggio "glue". Alla fin fine all'inizio conta la possibilità di poter esprimere le proprie idee in codice il più rapidamente possibile, con meno bug possibile, realizzando cose il più complesse possibile.

Con Python e QT puoi creare un programma bello complesso e con tanto di GUI "all'avanguardia". L'espressività è imho il fattore fondamentale. Basic aveva/ha un'elevata espressività, Python lo stesso. E il supporto ad un paradigma di programmazione diretto ( come quello procedurale ) è un aiuto ulteriore, perchè si presta all'utilizzo con una metodologia agile.

Per questo mi suona strano quando consigliano di cominciare col C. Non che sia sbagliato a prescindere, ma si pone di fronte allo studente un percorso più arduo. E per cosa? Col rischio che poi l'entusiasmo venga meno e si abbandoni tutto. Le finezze della macchina sono adatte a chi già mastica un bel pò di programmazione, non certo ai novellini. Non finirò mai di ricordare quanto piacevole, per me, sia stato il mio personale percorso: Basic -> Pascal -> Assembly e da lì il resto.
Ma certo, io la penso proprio come te. Il concetto di espressività che hai nominato mi piace molto. Il fatto è che, come dicevamo sopra, Python è assolutamente pratico da utilizzare da subito con soddisfazione.

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

rctimelines

Utente Èlite
3,942
1,283
Hardware Utente
CPU
AMD Ryzen 5 2600x | INTEL i5-6600k | INTEL i5-4460... altri
Dissipatore
stock | Arctic Freezer 11LP | stock
Scheda Madre
Asrock Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
Hard Disk
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
Scheda Video
RadeonPro WX3100 4G | Asus R9 280x 3G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | Acer 24" FHD | Benq 19" FHD
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE

Andretti60

Utente Èlite
3,418
2,295
Hardware Utente
Per questo mi suona strano quando consigliano di cominciare col C. Non che sia sbagliato a prescindere, ma si pone di fronte allo studente un percorso più arduo. ...
Questo te lo posso spiegare io.
C’e Differenza tra l’imparare a programmare da soli, per svago o per uno scopo specifico, e invece usare un linguaggio per studiare Scienza dell’Informazione (informatica) a scuola. Nel caso scolastico, il linguaggio C rimane tra i preferiti perché è rigorosamente formale e permette di affrontare concetti tipici dell’informatica, primo tra i quali la allocazione di memoria, che rimane uno dei capisaldi del C/C++ e il motivo per cui questi linguaggi siano ancora i preferiti per chi scrive applicazioni embedded, device drivers e dove occorra un diretto accesso e controllo dell’uso della memoria.
Per imparare a scrivere un programmino e i rudimenti della programmazione, anche io consiglio Python o Java.
 

TerrorUberAlles

Nuovo Utente
Non è che per imparare Java devi conoscere il Fortran! Deve imparare a programmare, non la storia della programmazione!


Inviato dal mio Nexus 5 utilizzando Tapatalk
No certo ma partire da c ti permette di apprezzare quello che java ti offre a gratis. Almeno io a livello accademico imparai java per poi passare a c e rimpiango di non aver seguito il percorso opposto.

Inviato da STF-L09 tramite App ufficiale di Tom\'s Hardware Italia Forum
 

rctimelines

Utente Èlite
3,942
1,283
Hardware Utente
CPU
AMD Ryzen 5 2600x | INTEL i5-6600k | INTEL i5-4460... altri
Dissipatore
stock | Arctic Freezer 11LP | stock
Scheda Madre
Asrock Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
Hard Disk
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
Scheda Video
RadeonPro WX3100 4G | Asus R9 280x 3G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | Acer 24" FHD | Benq 19" FHD
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE
No certo ma partire da c ti permette di apprezzare quello che java ti offre a gratis. Almeno io a livello accademico imparai java per poi passare a c e rimpiango di non aver seguito il percorso opposto.

Inviato da STF-L09 tramite App ufficiale di Tom\'s Hardware Italia Forum
Sono due paradigmi diversi: molto più probabile che lo aiuti a fare confusione...

e poi che stress! Se fossi un principiante che vuole imparare con l'unico scopo di divertirmi a programmare, solo l'idea di dover usare Java, o anche C, mi deprime! Partire con Python è decisamente più easy

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando