Iniziare a programmare. Quale linguaggio e con quale manuale?

Pubblicità

sette7

Nuovo Utente
Messaggi
15
Reazioni
0
Punteggio
25
Ho 16 anni e vorrei imparare a programmare. Non ho fretta, ma vorrei iniziare. Sono indeciso sul linguaggio con cui iniziare. Molti dicono C o C++, altri che è meglio un Pascal o Python. Chi ha ragione? E poi scelto il linguaggio, dove lo imparo? Ho cercato, ma anche sui manuali sono tutti discordi. Per favore, datemi qualche consiglio :look:
 
Tutti hanno (abbiamo) ragione.
La cosa che però deve essere chiara è che:
1) imparare a scrivere un programma in un linguaggio X qualsiasi
2) imparare a programmare
sono due concetti totalmente diversi.
Nel lavoro di un programmatore, la scelta del linguaggio viene fatta in relazione a diversi fattori (adeguatezza al progetto, prestazioni richieste, tempi di sviluppo attesi...) ma ciò che renderà valido il tuo programma sarà per il 99% la tua capacità di risolvere i problemi.
Detto questo, puoi iniziare con il linguaggio che preferisci. Io personalmente consiglio di partire dal "pensare da programmatore", quindi concentrarsi sugli algoritmi e sulla risoluzione di problemi.
Scegliere come primo linguaggio il linguaggio X solo perchè X è il più utilizzato al mondo (o semplicemente quello per il quale esiste ancora tanto codice?) non è una giustificazione secondo me molto significativa, stiamo parlando di "imparare" non "lavorare", quello arriva dopo un paio di anni almeno, prima devi farti le ossa e visitare almeno 2-3 linguaggi per apprezzarne le differenze e sviluppare una mente critica.
Per cui, sempre secondo me, dovresti partire da linguaggi forse non potenti (che lo sono solo nelle mani di Programmatori molto navigati) come il C (linguaggio in se obsoleto, va bene per uso didattico in ambito di gestione basilare dell'architettura o per precisi software di basso livello come driver) e C++.
Il mio suggerimento sarebbe quello di pensare a linguaggi a più alto livello, come il python, nel quale pensi all'algoritmo più che alle problematiche dell'ambiente in cui lavori. Java e C# potrebbero essere scelte altrettando valide, ma essendo linguaggi orientati agli oggetti devi entrare in un'ottica di sviluppo particolare.
Sia chiaro, puoi anche iniziare con il C++, ma allora prendi un bel libro cartaceo da n-cento pagine (con n>5) e parti dalle basi, ma secondo me ti stufi prima :)
 
Ultima modifica:
Tutti hanno (abbiamo) ragione.
La cosa che però deve essere chiara è che:
1) imparare a scrivere un programma in un linguaggio X qualsiasi
2) imparare a programmare
sono due concetti totalmente diversi.
Nel lavoro di un programmatore, la scelta del linguaggio viene fatta in relazione a diversi fattori (adeguatezza al progetto, prestazioni richieste, tempi di sviluppo attesi...) ma ciò che renderà valido il tuo programma sarà per il 99% la tua capacità di risolvere i problemi.
Detto questo, puoi iniziare con il linguaggio che preferisci. Io personalmente consiglio di partire dal "pensare da programmatore", quindi concentrarsi sugli algoritmi e sulla risoluzione di problemi.
Scegliere come primo linguaggio il linguaggio X solo perchè X è il più utilizzato al mondo (o semplicemente quello per il quale esiste ancora tanto codice?) non è una giustificazione secondo me molto significativa, stiamo parlando di "imparare" non "lavorare", quello arriva dopo un paio di anni almeno, prima devi farti le ossa e visitare almeno 2-3 linguaggi per apprezzarne le differenze e sviluppare una mente critica.
Per cui, sempre secondo me, dovresti partire da linguaggi forse non potenti (che lo sono solo nelle mani di Programmatori molto navigati) come il C (linguaggio in se obsoleto, va bene per uso didattico in ambito di gestione basilare dell'architettura o per precisi software di basso livello come driver) e C++.
Il mio suggerimento sarebbe quello di pensare a linguaggi a più alto livello, come il python, nel quale pensi all'algoritmo più che alle problematiche dell'ambiente in cui lavori. Java e C# potrebbero essere scelte altrettando valide, ma essendo linguaggi orientati agli oggetti devi entrare in un'ottica di sviluppo particolare.
Sia chiaro, puoi anche iniziare con il C++, ma allora prendi un bel libro cartaceo da n-cento pagine (con n>5) e parti dalle basi, ma secondo me ti stufi prima :)

Ti ringrazio per la risposta :) Per "pensare da programmatore", intendevi "Pensare da informatico -Imparare con Python" ? Se sì, un'occhiata potrebbe anche servire. Per quanto riguarda il C++, un mio amico mi ha dato un volumone di 700-750 pagine sul linguaggio. Si chiama mi pare "Fondamenti di base - C++" e credo abbia tutto.
 
Ti ringrazio per la risposta :) Per "pensare da programmatore", intendevi "Pensare da informatico -Imparare con Python" ?
No, mi riferivo in modo molto più astratto al concetto di pensare da programmatore. E dico "programmatore", non "informatico", perchè l'informatico è qualcosa di più complesso, non necessariamente un programmatore di professione.
Per quanto riguarda il C++, un mio amico mi ha dato un volumone di 700-750 pagine sul linguaggio. Si chiama mi pare "Fondamenti di base - C++" e credo abbia tutto.
I libri di C++ completi sono sempre molto corposi, per esempio il "C++ Primer 5th edition" dovrebbe avere 950-1000 pagine.
Ma sono così corposi anche perchè il C++ è un linguaggio che richiede più conoscenze architetturali rispetto ad altri, e mette in mano allo sviluppatore molti strumenti, anche potenti, che però possono spesso e volentieri portare l'inesperto a prendere brutte abitudini. Bisogna studiarlo bene e perderci molto tempo.
Per quanto riguarda python, il book che hai citato dovrebbe andare bene.
 
No, mi riferivo in modo molto più astratto al concetto di pensare da programmatore. E dico "programmatore", non "informatico", perchè l'informatico è qualcosa di più complesso, non necessariamente un programmatore di professione.

I libri di C++ completi sono sempre molto corposi, per esempio il "C++ Primer 5th edition" dovrebbe avere 950-1000 pagine.
Ma sono così corposi anche perchè il C++ è un linguaggio che richiede più conoscenze architetturali rispetto ad altri, e mette in mano allo sviluppatore molti strumenti, anche potenti, che però possono spesso e volentieri portare l'inesperto a prendere brutte abitudini. Bisogna studiarlo bene e perderci molto tempo.
Per quanto riguarda python, il book che hai citato dovrebbe andare bene.

Quindi mi consigli ,per non perdermi nell'oceano che è il C++, di cominciare da un linguaggio sempre di alto livello e orientato a oggetti, ma più semplice come il Python? Il book che ho citato "per sbaglio" lo credi sufficiente per l'inizio o dovrei unirlo a qualche altro book? E ,scusa per l'ignoranza abissale, ma tramite Python cosa è possibile fare con la dovuta esperienza? Grazie per le risposte :)
 
Quindi mi consigli ,per non perdermi nell'oceano che è il C++, di cominciare da un linguaggio sempre di alto livello e orientato a oggetti, ma più semplice come il Python? Il book che ho citato "per sbaglio" lo credi sufficiente per l'inizio o dovrei unirlo a qualche altro book? E ,scusa per l'ignoranza abissale, ma tramite Python cosa è possibile fare con la dovuta esperienza? Grazie per le risposte :)
Python è un linguaggio di programmazione multiparadigma, quindi non necessariamente a oggetti, e permette di fare gran parte di ciò che gli altri linguaggi permettono. Le linee guida del python suggeriscono uno stile di programmazione pulito e leggibile, cosa possibile anche grazie all'alta espressività del linguaggio. Tipicamente python è usato per applicazioni di frontend, qualche interfaccia grafica e scripting. Ha librerie per il networking, gestione IO, gestione delle stringhe, espressioni regolari, concorrenza...
L'unico limite, oltre all'inesperienza con il linguaggio, potrebbero essere le prestazioni che non sono al livello di altri linguaggi, ma è possibile integrare script python con librerie scritte C.
 
Python è un linguaggio di programmazione multiparadigma, quindi non necessariamente a oggetti, e permette di fare gran parte di ciò che gli altri linguaggi permettono. Le linee guida del python suggeriscono uno stile di programmazione pulito e leggibile, cosa possibile anche grazie all'alta espressività del linguaggio. Tipicamente python è usato per applicazioni di frontend, qualche interfaccia grafica e scripting. Ha librerie per il networking, gestione IO, gestione delle stringhe, espressioni regolari, concorrenza...
L'unico limite, oltre all'inesperienza con il linguaggio, potrebbero essere le prestazioni che non sono al livello di altri linguaggi, ma è possibile integrare script python con librerie scritte C.

Guarda sei stato gentilissimo e chiarissimo. Davvero, sono felice di aver avuto così al volo un grande aiuto :D Ho solo un dubbio finale: "Pensare da informatico -Imparare con Python" è un book che va bene o tu personalmente conosci qualche book che consiglieresti a qualcuno che deve partire con il python da zero? (preferibilmente in italiano, ma anche in un inglese abbastanza basilare può andare bene)
 
Guarda sei stato gentilissimo e chiarissimo. Davvero, sono felice di aver avuto così al volo un grande aiuto :D Ho solo un dubbio finale: "Pensare da informatico -Imparare con Python" è un book che va bene o tu personalmente conosci qualche book che consiglieresti a qualcuno che deve partire con il python da zero? (preferibilmente in italiano, ma anche in un inglese abbastanza basilare può andare bene)
Purtroppo non so dirti se quel book vada bene per partire da zero, io ho imparato alle superiori i primi linguaggi e poi gli altri li ho imparati saltando sempre le parti introduttive e passando alle caratteristiche del linguaggio.
A un primo sguardo quel book sul python introduce i diversi concetti base della programmazione che ti servono per poter programmare con un linguaggio ad alto livello, senza quindi puntatori, memoria, stack, heap (da conoscere bene per programmare in C/C++ e che meriterebbero libri a parte...) il che ti semplifica molto la vita e per programmare in python è sufficiente. I concetti sono anche abbastanza semplici da comprendere (dal mio punto di vista almeno...), non dovresti avere problemi.
 
Beh, allora non mi resta che iniziare con quel libro :) Grazie davvero. Argomenti come la memoria e i puntatori li avevo già addocchiati nel C++ quando ho provato l'anno scorso a studiarlo (stupidamente visto che ero estremamente immerso con scuola e corsi esterni), mentre stack e heap non li ho mai sentiti. Se ho capito bene non sono indispensabili ai fini della conoscenza base del python e li potrò imparare quando in futuro opterò per imparare il c++, giusto?
 
Beh, allora non mi resta che iniziare con quel libro :) Grazie davvero. Argomenti come la memoria e i puntatori li avevo già addocchiati nel C++ quando ho provato l'anno scorso a studiarlo (stupidamente visto che ero estremamente immerso con scuola e corsi esterni), mentre stack e heap non li ho mai sentiti. Se ho capito bene non sono indispensabili ai fini della conoscenza base del python e li potrò imparare quando in futuro opterò per imparare il c++, giusto?
Si, non ti servono attualmente.
In realtà non servirebbero nemmeno per "programmare" in C/C++, se per programmare si intede scrivere qualche "programma-scimmia" :asd: Il C++ permette complessità di sviluppo molto alte, per le quali entrano in gioco appunto concetti molto legati all'architettura. Molti pensano di saper programmare bene in C++ perchè sanno definire una classe o sanno usare puntatori, vettori e qualche stuttura astratta, dal mio punto di vista non è proprio così. E se per un progetto non serve la potenza del C++, meglio usare linguaggi più produttivi e più facilmente manutenibili.
 
Per la pratica? Ho scaricato Python 3.3.2, ma è uno shell, non credo basti. O mi sbaglio? Non dovrei scaricare un compilatore o altro? Scusa l'ignoranza :)
 
Gran parte delle implementazioni di Python dispongono di sheel interattiva per l'interpretazione dei comandi sequenzialmente, ma nulla vieta che tu possa scrivere i tuoi sorgenti e linkarli fra loro compilandoli insieme.
A tal proposito ti farebbe comodo un IDE. Puoi scaricare Eclipse Standard e installarci il plugin PyDev per scrivere e compilare facilmente i tuoi programmi in python.
 
Gran parte delle implementazioni di Python dispongono di sheel interattiva per l'interpretazione dei comandi sequenzialmente, ma nulla vieta che tu possa scrivere i tuoi sorgenti e linkarli fra loro compilandoli insieme.
A tal proposito ti farebbe comodo un IDE. Puoi scaricare Eclipse Standard e installarci il plugin PyDev per scrivere e compilare facilmente i tuoi programmi in python.

Sto continuando a studiare Python e a usare la shell interattiva, ma con le funzioni non è l'ideale... Ho quindi scaricato Eclipse standard e anche PyDev. Ma, anche se mi considera Pydev installato, non non me lo trova. E' normale? Che tu sappia c'è qualcosa nelle impostazioni o qualche plugin esterno da scaricare? Ho seguito passo passo vari tutorial, ma niente. :/
 
Pubblicità
Pubblicità
Indietro
Top