DOMANDA come iniziare per programmare

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.
Però secondo me è una sorta di potentissimo "basic del xxi secolo" (e penso di dirlo con competenza, ovviamente non mi riferisco al BASIC in quanto tale, ma a ciò che ha rappresentato quel linguaggio nella diffusione dell'informatica di massa.. un vero simbolo!)

Non conosco le motivazioni di van Rossum, ma Python è oggettivamente il Basic moderno. In particolare se si considera che i due tratti distintivi che hanno reso Basic famoso ed adatto ai neofiti sono: (1) tipizzazione dinamica e (2) flessibilità nel paradigma ( nel caso del Basic obbligata visto che originariamente era un linguaggio strettamente procedurale ed imperativo ).

Per un neofita le cose peggiori sono doversi scontrare con le subdolità della macchina ( C ti costringe a farci i conti ) e con la complessità dei paradigmi OOP ( ma anche altri ).

Chi sta imparando ha un approccio agile alla programmazione e vuole poter trasformare le idee in codice rapidamente. In questo senso non dover avere a che fare con classi, metodi e compagnia, è una manna. Qualsiasi tipo di paradigma che impone un'organizzazione massiccia del codice, ti costringe a dover ragionare prima su come organizzare il codice e poi sul codice stesso. Ovviamente è un carico cognitivo sulla mente del programmatore. E per chi sta apprendendo è una rottura di scatole che fa crollare l'entusiasmo.

Per cui un linguaggio diretto e possibilmente espressivo è la migliore prima esperienza. Poi dopo ha senso cimentarsi con linguaggio via via più rigidi. Il top sono i linguaggi pesantemente formali come Pascal, Haskell, la famiglia ML.
 
Senza che te la prenda, ma è una mia considerazione opinabile: nonostante le tue nobilissime intenzioni, credo che se tu avessi davvero tutta la passione che dichiari, forse a 20 anni ne sapresti già abbastanza di programmazione.
Mah! concordo con te che sia una considerazione opinabile.
Conosco gente che ha imparato a programmare (in Java) partendo da zero passati i 30 anni e che attualmente lavora come programmatore. Conta la passione sì, ma soprattutto la motivazione.
 
Ultima modifica:
Mah! concordo con te che sia una considerazione opinabile.
Conosco gente che ha imparato a programmare (in Java) partendo da zero passati i 30 anni e che attualmente lavorano come programmatori. Conta la pasione sì, ma soprattutto la motivazione.
Si, ma non stiamo qui a fare la lista delle casistiche.. il mio era un ragionamento molto semplice e di buon senso, non capisco perché vi disturbi così tanto!

Hai passione per la programmazione da anni, hai un computer.. inizia a programmare!


Penso a me.. avevo anch'io la stessa passione e ho iniziato a farlo senza nemmeno avere un computer mio.. scrivevo su un blocco notes e poi andavo a inserire il codice dagli amici che ne avevano uno!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
No. Declassare Python a linguaggio di scripting direi che non ci siamo per niente! ...
E perché mai? Ogni linguaggio ha un suo scopo, usarlo per quello che non era progettato vuole dire spararsi sui piedi. Prendi C per esempio, certo che ci puoi fare anche delle GUI, ma chi è il pazzo che lo usa per quello quando ci sono molti altri linguaggi fatti apposta per quello scopo?
Definire le limitazioni di un linguaggio non significa affatto declassarlo. Io stesso uso molto Python, che è comodissimo. Però poi la gente ci si abitua e pretende di usarlo per tutto. Quello è il problema. Dove lavoro io per il nostro software usiamo una pletora di linguaggi, non ci sognamo neanche di usarne uno che non sia adatto.
 
Sinceramente non capisco tutto questo astio con il ragazzo che ha creato la discussione.
Questo è uno degli scopi dei forum, aiutare i novellini. Dire "RTFM" (read the fucking manual) come si faceva una volta non lo aiuta per nulla, poteva andare bene quando in effetti c'erano solo una manciata di linguaggi con un solo manuale, e tutti usavano gcc, gdb, e editori come emacs e vi. Adesso la lista è infinita, e scoraggia chi vuole iniziare.
Il ragazzo è onesto. Dice chiaramente che non sa nulla e vuole imparare. Se avete qualcosa di costruttivo, aiutatelo, altrimenti STFU. Scusate il tono.
 
E perché mai? Ogni linguaggio ha un suo scopo, usarlo per quello che non era progettato vuole dire spararsi sui piedi. Prendi C per esempio, certo che ci puoi fare anche delle GUI, ma chi è il pazzo che lo usa per quello quando ci sono molti altri linguaggi fatti apposta per quello scopo?
Definire le limitazioni di un linguaggio non significa affatto declassarlo. Io stesso uso molto Python, che è comodissimo. Però poi la gente ci si abitua e pretende di usarlo per tutto. Quello è il problema. Dove lavoro io per il nostro software usiamo una pletora di linguaggi, non ci sognamo neanche di usarne uno che non sia adatto.
Ok. Ma nin è questione di declassarlo.. non lo è e basta!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
Ok. Ma nin è questione di declassarlo.. non lo è e basta!

Inviato dal mio Nexus 5 utilizzando Tapatalk
Se lo fosse veramente non ci sarebbero infinite discussioni a riguardo :) create poi dagli stessi che pensano che pure HTML sia un linguaggio di programmazione.
A rigore, qualunque scripting language, pure la shell nelle sue varie incarnazioni, permette di scrivere programmini, ma questo non fa di loro dei linguaggi di programmazione. Puoi scrivere perfino programmi in PostScript (ormai defunto, purtroppo). Quello che definisce il "tipo" di linguaggio è lo "scopo" per cui è creato. Per quello ti rimando al sito ufficiale:
https://www.python.org/about/apps/

Sono perfettamente in accordo con loro, quelli sono gli scopi per cui lo utilizzo e per cui lo consiglio (incluso imparare le basi della programmazione). Ma se leggi bene, a parte applicazioni tipiche degli scripting, il resto fa uso pesanti dei pacchetti di librerie (scritte in C). Per esempio, io ho voluto fare delle analisi su dati presenti su file, e mostrare il risultato con grafici. Ho scaricato due librerie Python, una scientifica (che avevo già) e una per grafici. Ho dovuto scrivere poche linee di codice per aprire il file e estrarre i dati, che è una delle cose in cui Python eccelle, che ho "passato" alle prima libreria per elaborarli e alla seconda per visualizzare i grafici. Bingo! In pochi minuti ho ottenuto i risultati. Perfetto. Ma non per quello considero di avere fatto della "programmazione". Quello, quello che poi faccio ogni giorno per vivere, è tutta un'altra cosa.

Il fatto che qualcosa ti "permetta" di fare qualcosa, non lo definisce automaticamente. Puoi usare una scarpa per piantare un chiodo picchiandoci con il tacco, questo non fa della scarpa un martello ;)
 
Se lo fosse veramente non ci sarebbero infinite discussioni a riguardo :) create poi dagli stessi che pensano che pure HTML sia un linguaggio di programmazione.
A rigore, qualunque scripting language, pure la shell nelle sue varie incarnazioni, permette di scrivere programmini, ma questo non fa di loro dei linguaggi di programmazione. Puoi scrivere perfino programmi in PostScript (ormai defunto, purtroppo). Quello che definisce il "tipo" di linguaggio è lo "scopo" per cui è creato. Per quello ti rimando al sito ufficiale:
https://www.python.org/about/apps/

Sono perfettamente in accordo con loro, quelli sono gli scopi per cui lo utilizzo e per cui lo consiglio (incluso imparare le basi della programmazione). Ma se leggi bene, a parte applicazioni tipiche degli scripting, il resto fa uso pesanti dei pacchetti di librerie (scritte in C). Per esempio, io ho voluto fare delle analisi su dati presenti su file, e mostrare il risultato con grafici. Ho scaricato due librerie Python, una scientifica (che avevo già) e una per grafici. Ho dovuto scrivere poche linee di codice per aprire il file e estrarre i dati, che è una delle cose in cui Python eccelle, che ho "passato" alle prima libreria per elaborarli e alla seconda per visualizzare i grafici. Bingo! In pochi minuti ho ottenuto i risultati. Perfetto. Ma non per quello considero di avere fatto della "programmazione". Quello, quello che poi faccio ogni giorno per vivere, è tutta un'altra cosa.

Il fatto che qualcosa ti "permetta" di fare qualcosa, non lo definisce automaticamente. Puoi usare una scarpa per piantare un chiodo picchiandoci con il tacco, questo non fa della scarpa un martello ;)
Ho capito ciò che dici, ma questa è proprio una delle particolari qualità di python, che prima ho definito polimorfo.
Infatti python viene utilizzato in molti contesti anche come linguaggio di scripting (per esempio in blender) ma non nasce affatto come tale: python è un "linguaggio di programmazione" a tutti gli effetti.. non c'è discussione.. di HTML non capisco, comunque HTML NON è un linguaggio di programmazione.

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
... python viene utilizzato in molti contesti anche come linguaggio di scripting (per esempio in blender) ma non nasce affatto come tale ...
No, mi spiace, ti cito lo stesso creatore di Python Guido van Rossum
" I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. ... "
https://www.python.org/doc/essays/foreword/

A causa della sua semplicità venne poi ampliato e ampliato e ampliato, e adesso viene considerato un linguaggio multi-uso. Come un coltellino svizzero che va bene per stringere una vite, ma non per costruire un armadio.
 
Non capisco perchè vi state fasciando la testa. Ciò che definisce un linguaggio di programmazione è il suo essere Turing completo. HTML per esempio non lo è. Python si e pure Postscript.

Successivamente si possono ovviamente fare altre distinzioni, ma meramente riguardo la convenienza relativamente ai casi d'uso. Cioè Python non può manipolare i puntatori direttamente, ergo non ci scrivi un sistema operativo ( si può fare estendendo il linguaggio o scrivendo le parti che necessitano di manipolare la memoria a basso livello in altri linguaggi...comunque... ). Python ha prestazioni parecchio scarse, per cui è follia scriverci del codice ad alte prestazioni.

Python però è espressivo e semplice da usare, ergo è ottimo per lo scripting ( da cui nasce l'idea di Python come linguaggio esclusivamente per lo scripting ). Ma è anche ottimo per scrivere glue code, infatti l'uso tipico implica l'utilizzo di varie librerie per fare il lavoro pesante e codice Python per l'input/output e mandare/prelevare dati/risultati da e verso le varie librerie. La presenza di tantissime librerie C è un effetto collaterale della semplicità del linguaggio, che ha attratto tantissima gente che, necessitando anche di prestazioni, non ha avuto altra scelta che realizzare il codice ad alte prestazioni in C.

Per cui imho è definibile linguaggio di programmazione, ma gli usi pratici sono ovviamente limitati dalle prestazioni e dal modello di programmazione che il linguaggio offre.

Personalmente non mi trovo molto a mio agio a distinguere i linguaggi in maniera netta ( programmazione di sistema, scripting, glue, ecc... ). Alla fin fine la stragrande maggioranza dei linguaggi si sovrappongono ad una o più di queste categorie. Per esempio c'è stato un tipo che sfruttando il formato binfmt-misc di Linux ha di fatto trasformato Go in un linguaggio di scripting, cioè da riga di comando scrivere ./pippo.go e il programma va in esecuzione. Significa che Go è un linguaggio di scripting? Non direi. Qualunque potrebbe opinare che la caratteristica principale di un linguaggio di scripting è l'essere interpretato e non compilato, ma anche questa distinzione non è netta. CPython è interpretato, ma PyPy è JIT. Quindi Python stai di qua o di là?

Cioè sono categorie quanto meno ambigue.
 
A parte al fatto che siamo completamente OT e che, alla richiesta dell'OP, che pare ormai del tutto disinteressato ad una risposta comprensibile a ciò che ha chiesto.. consigliare l'uso di python per iniziare alla programmazione un neofita che si dice appassionato, continui a ritenerla la scelta migliore.

Sul fatto che python sia un linguaggio di scripting, in effetti hai ragione tu: è classificato come tale e così era nelle intenzioni delle sue origini.

Personalmente la cosa mi ha sorpreso perché penso che lo sviluppo attuale non abbia mantenuto fede alle origini, nonostante venga utilizzato come tale in molte applicazioni, la sua articolazione e complessità attuale lo rendono ai miei occhi come un linguaggio di programmazione a tutti gli effetti. Forse solo l'identazione la trovo qualcosa che lo possa ricondurre alla prima categoria.
Non sono d'accordo che permetta solo di scrivere qualche riga per l'uso di librerie, ma consente di scrivere codice di una discreta complessità.
Il fatto di essere interpretato o di non manipolare i puntatori non le ritengo specifiche che contraddistinguono linguaggi di programmazione da linguaggi di scripting. Come dicevo prima, quello che ritengo un nobile predecessore ideologico di python, secondo me, era un linguaggio di programmazione e non di scripting: il BASIC (interpretato e che non manipola i puntatori, con cui non ci puoi scrivere un OS.. vabbè!)

In ogni caso non penso neanche che la definizione di linguaggio di scripting riguardi la complessità del codice che si può scrivere o di quanto sia complesso il linguaggio (anche PHP e JavaScript sono complessi, potenti e multiparadigma).
Un linguaggio di scripting lo vedo come qualcosa di accessorio all' ambiente di una applicazione e utile a manipolarne le caratteristiche (cosa per cui Python viene usato) e che non esiste come risorsa autonoma (stand-alone).


Inviato dal mio Nexus 5 utilizzando Tapatalk
 
Un linguaggio di scripting lo vedo come qualcosa di accessorio all' ambiente di una applicazione e utile a manipolarne le caratteristiche (cosa per cui Python viene usato) e che non esiste come risorsa autonoma (stand-alone).

Ed è qui che queste differenziazioni perdono completamente significato.

Python può essere embedded all'interno di un ambiente runtime, ma può girare sul sistema operativo.

Javascript è un linguaggio di scripting perchè gira nel browser. E allora Node.js + Javascript che cos'è? Node.js è il runtime e quindi Javascript rimane di scripting? Allora pure C# è di scripting visto che gira su .NET e non su Win32/WinRT direttamente?

Sofismi, solo sofismi. Magari è una discussione che potremmo fare con Cibachrome nell'altro thread, visto che gli piace la filosofia del software :D
 
Ed è qui che queste differenziazioni perdono completamente significato.

Python può essere embedded all'interno di un ambiente runtime, ma può girare sul sistema operativo.

Javascript è un linguaggio di scripting perchè gira nel browser. E allora Node.js + Javascript che cos'è? Node.js è il runtime e quindi Javascript rimane di scripting? Allora pure C# è di scripting visto che gira su .NET e non su Win32/WinRT direttamente?

Sofismi, solo sofismi. Magari è una discussione che potremmo fare con Cibachrome nell'altro thread, visto che gli piace la filosofia del software :D
Ok, concordo... ma allora qual'è la differenza tra un linguaggio di scripting è un linguaggio di programmazione?!? Forse sono irretito da concetti del passato.. molte cose cambiano con il tempo e quindi indipendentemente dalla classificazione va bene consigliare Python per introdurre alla programmazione.

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
Ok, concordo... ma allora qual'è la differenza tra un linguaggio di scripting è un linguaggio di programmazione?!?

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.
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top