View Full Version : iniziare a programmare
superfox4
27-05-2011, 19:08
ciao a tutti...sono un ragazzo appassionato di informatica che vorrebbe imparare a programmare...Sono principiante, in quanto non ho mai trattato la programmazione ad aggetti; ho studiato in modo scolastico pascal, tuttavia ho sufficienti conoscenze in php e html.
Vorrei riuscire a fare applicazioni, programmi per windows, realizzare un software vero e proprio. Preferisco iniziare con un linguaggio più rude che mi possa far entrare nell'ottica di un programmatore e che mi possa far comprendere le cose, in modo poi da poter essere facilitato con gli altri linguaggi. Mi hanno consigliato il c ;pensate che possa essere un buon inizio? Avete consigli su qualche manuale o libro per iniziare?
Grazie mille in anticipo
Confermo che il C è un buon linguaggio per iniziare, abbastanza lineare con però un problema: molto "libertino"... in altre parole puoi smanettarci parecchio ma richiede molta attenzione per essere debuggato in quanto il compilatore lascia molta libertà al programmatore permettendogli di fare anche cose che in altri linguaggi ti verrebbero segnalati come errori ancor prima di compilare (per esempio sforare un vettore o scrivere in una locazione di memoria ignota).
Java è abbastanza semplice ed è "scalabile" in difficoltà, tuttavia devi avere ben chiari i concetti teorici di classi, oggetti, ereditarietà, eccezioni...
Di fatto alle superiori mi fecero iniziare con il C (se vogliamo escludere il Pascal :asd: ) però devi procurarti un buon libro.
In questo forum c'è un thread con riferimenti a guide e libri: http://www.hwupgrade.it/forum/showthread.php?t=801695 non so se siano buoni o no però...
Generalmente questi 3D scatenano dei vespai. :D
Il C non è il massimo in quanto ti "avvicina" troppo alla macchina. Per imparare a programmare senza perdersi troppo nei dettagli implementativi sarebbe meglio un linguaggio che consente un maggior livello di astrazione, per esempio Python o Java.
Per la cronaca, io sono partito dal C (escludendo il Visual Basic usato a scuola, ma lasciamo perdere) e questa è l'idea che mi son fatto. :D
Eh già :asd: sicuramente adesso qualcuno suggerirà ruby, qualcuno C# e chissà cos'altro... ovviamente sono opinioni soggettive e rispettabili.
La mia opinione si basa semplicemente sull'ordine in cui insegnano negli istituti tecnici, pienamente coscente che il C può risultare una brutta bestia per un programmatore poco attento :)
E ora che ci penso è anche vero che mentre studiavo C, nelle ore di sistemi studiavamo il processore e la gestione della memoria, il che aiutava non poco a capire il C.
Forse si, è meglio qualcos'altro... l'importante è avere un buon testo di riferimento.
ps: aiuterebbe sapere cosa vorresti fare programmando
Parti dal web
perchè? perchè è piu immediato
linguaggio PHP
perchè? perchè è piu veloce
insomma quando si vuole iniziare a fare una cosa come la programmazione, dal mio punto di vista, uno si aspetta risultati subito.. be con quello scritto sopra penso che hai i risultati più veloci
cdimauro
28-05-2011, 09:31
I risultati "subito" si ottengono più facilmente con quello che ho in firma. :cool:
Se il tuo obbiettivo è creare applicazione desktop per windows lascia perder il C. Scaricati la versione express di visual studio dal sito della microsoft e comincia ad imparare il c#.
pabloski
28-05-2011, 11:40
Piuttosto io ti direi di mettere nero su bianco l'itinerario che vuoi seguire. Da dove parti e dove vuoi arrivare.
Se si ha interesse a giocherellare con i buffer di memoria, direi che non è molto consigliato partire con javascript :D
Di linguaggi ne dovrai studiare parecchi, è scontato, è un dato di fatto in questo mondo. Che poi i linguaggi nascono e muoiono oltretutto.
Se si parla di programmazione windows trovi tanti modi per programmarlo, bisogna cominciare a sceglierne uno. Semmai la scelta del linguaggio viene dopo.
Però devi decidere la strada da seguire ovvero "me ne frego di quello che fa la macchina" oppure "mi interessa moltissimo sapere quello che fa la macchina".
Venendo da php il C non è proprio consigliatissimo. E' come dire che ieri ti limitavi a guidare l'auto e oggi vuoi costruire leghe metalliche per automobili.
superfox4
28-05-2011, 13:45
ciao a tutti ragazzi e grazie per avermi risposto. Il mio obiettivo è quello di imparare proprio la "logica del programmatore"; creare programmi per windows era un esempio, ma vorrei fare molto altro. Non ho la necessità di scrivere programmi, vorrei sapere quale sia una buona partenza di base in modo che linguaggi successivi potranno essere appresi in modo facilitato.
Io penso che capire veramente come funzioni una macchina voglia dire tanto poichè ( conosco poco, non vorrei sbagliare) tutti i linguaggi sono una sorta di istruzioni che vengono date all'elaboratore; ci sono vari tipi di istruzioni ma penso che il linguaggio macchina sia unico;
Io vorrei proprio imparare quel linguaggio.. poi ripeto correggetemi se sbaglio ( so veramente poco).
Cosa intendi per "logica del programmatore"?
Forse ti è di aiuto conoscere il concetto di "livello" di un linguaggio: più il livello è alto e più la sintassi del linguaggio è comprensibile anche senza conoscenze informatiche approfondite e mette a disposizione delle strutture di controllo intuitive. Di "contro", un linguaggio ad alto livello non evidenzia come effettivamente la macchina processa le istruzioni in quanto c'è un compilatore che dal linguaggio ad alto livello ricava un codice macchina.
Un linguaggio a basso livello permette di accedere a operazioni più specifiche fino quasi al linguaggio macchina permettendo una definizione pressochè totale del decorso del programma. Ovviamente scrivere un programma in un linguaggio di basso livello richiede buone conoscenze dell'hardware e molta pazienza perchè lo sviluppo di programmi complessi richiede molto tempo e attenzione.
in generale, più basso è il linguaggio e più si riesce a ottimizzare le prestazioni di un codice, a patto di saper programmare bene in quel linguaggio ;)
Non ho ben capito cosa tu intenda fare, tuttavia se intendi conoscere in dettaglio come un elaboratore processa le singole istruzioni macchina, devi conoscere anche come in generale l'hardware di un elaboratore funziona (registri, memoria, indirizzamenti, cicli di fetch-execute, contatori interni, flags...) e il linguaggio che ti permette di dire passo-passo al processore cosa fare è l'assembly. Tuttavia non è nemmeno vero che tutti i calcolatori riconoscono lo stesso linguaggio macchina, infatti tipi diversi di processori possono disporre di set di istruzioni diverse. E' anche per questo che esistono i linguaggi ad alto livello, in quanto un codice scritto ad alto livello si traduce in un codice macchina potenzialmente diverso a seconda del calcolatore dove viene compilato mentre il codice sorgente ad alto livello rimane uguale per tutte le architetture.
Il C è un linguaggio che si potrebbe definire di "medio" livello, in quanto mette a disposizione istruzioni e comandi che svolgono un insieme di operazioni anche complesse, ma al contempo permette anche di effettuare operazioni direttamente su locazioni di memoria e permette anche di integrare istruzioni assembly direttamente nel codice.
Tutto sta in cosa veramente ti interessa fare...
- Studiare l'architettura di un elaboratore in dettaglio? Assembly
- Scrivere codice dalle prestazioni ottimizzate allo scopo di elaborare dati? C/C++
- Scrivere programmi con interfaccia grafica? C++/VB/Java/Python....
- Applet o applicazioni grafiche per il web? Java (applet)/ActionScript (flash)/ Silverlight...
- Applicazioni Android? Java
- Applicazioni iPhone? Objective-C
- App per windows phone? C#
- Applicazioni varie per web? PHP/Python....
non ho elencato tutti i linguaggi perchè sono veramente tanti, ma proprio tanti... però come noti hai l'imbarazzo della scelta a seconda di ciò che ti interessa fare e/o imparare. Occhio però a calibrare bene il tiro: se inizi a studiare, chessò, l'assembly e dopo un mese ti stanchi, avrai forse capito qualcosa di come funziona l'hardware ma non avrai quasi nessuna conoscenza utile per realizzare un programma vero e proprio.
La logica del programmatore è la logica del problema che deve risolvere.
In particolare un programmatore che voglia definirsi tale dovrebbe aver acquisito la mentalità giusta per affrontare problemi e risolverli (il come li risolve viene dopo).
Dato che hai visto poco di Object Oriented, ed IMHO è importante conoscere questo paradigma, ti consiglio di iniziare da un linguaggio come Java o Python.
In particolare dopo aver acquisito i concetti base potresti cominciare ad acquisire alcune nozioni di algoritmi e strutture dati, IMHO fondamentali.
superfox4
28-05-2011, 14:52
penso proprio che inizierò con Python o C. Secondo voi è meglio iniziare con il primo o con il secondo? ( per un programmatore alle prime armi)
pabloski
28-05-2011, 14:54
Ragassuoli sono d'accordo con voi ma questa frase "Io penso che capire veramente come funzioni una macchina voglia dire tanto" mi sa tanto di "io voglio capire come funge la macchina". Ovviamente è la cosa diametralmente opposta alla "logica del programmatore", però mi pare di capire che lui sia interessato a tutto il bagaglio.
Però rimane il fatto che imparare a risolvere i problemi algoritmicamente sia comunque il primo passo da fare. Tuttavia avendo lui usato php ( pensi abbia programmato qualcosa ) non dovrebbe essere proprio a digiuno di risoluzione algoritmica di problemi.
pabloski
28-05-2011, 14:56
penso proprio che inizierò con Python o C. Secondo voi è meglio iniziare con il primo o con il secondo? ( per un programmatore alle prime armi)
Il punto è che C e Python si trovano in due universi completamente differenti. Il primo ti permette di manipolare i dettagli, il secondo ti permette di astrarli per concentrati sul come risolvere i problemi.
In generale, per chi sta cominciando, è meglio partire con linguaggi come Python e sviluppare la capacità di trasformare le soluzioni ai problemi in programmi. Poi necessariamente dovrai applicarti per capire alcuni dettagli implementativi dei calcolatori.
superfox4
28-05-2011, 15:14
va bene...inizierò con il python. Avete per caso qualche libro/ manuale da consigliare? mi sembrano molto buoni quelli dell'apogeo..chiari e semplici..
wingman87
28-05-2011, 15:42
Java e poi C#. Conoscendo Java, C# è quasi gratuito, in più in questo modo conosceresti due tra i linguaggi più usati nel mondo del lavoro. Prima Java perché ha alcune feature in meno e quindi dovrebbe essere un po' più semplice da imparare.
Altrimenti, se non ti interessa conoscerli entrambi e visto che vuoi programmare solo su windows, parti pure subito con C#.
va bene...inizierò con il python. Avete per caso qualche libro/ manuale da consigliare? mi sembrano molto buoni quelli dell'apogeo..chiari e semplici..
cdimauro in firma ha un link ad un ottimo libro per cominciare con python. Se non hai uno scopo ben preciso allora partire da questo linguaggio è un ottima idea. Prima impara il metodo, a scoprire come funziona la macchina sotto e altri dettagli tecnici c'è sempre tempo.
superfox4
28-05-2011, 15:50
ok a breve incomincerò a leggerlo!!! Grazie mille per i vostri consigli sono stati davvero utili
cdimauro
28-05-2011, 18:52
Eccellente scelta. Anche gli astronomi (e, in generale, molti scienziati) la pensano così (http://bellm.org/blog/2011/05/27/why-astronomers-should-program-in-python/). :cool:
Eccellente scelta.[...]
:doh: :Puke:
cdimauro
29-05-2011, 08:07
:doh: :Puke:
OK, vediamo cos'è che ti fa vomitare di Python allora. :rolleyes:
pabloski
29-05-2011, 12:53
OK, vediamo cos'è che ti fa vomitare di Python allora. :rolleyes:
tu lo mangeresti?
http://2.bp.blogspot.com/_wuQsM6usJPU/TCMOKhF6B3I/AAAAAAAAC6A/z2dhZFCQeYI/s1600/pitone+reale.jpg
:rotfl: :rotfl: :rotfl:
superfox4
29-05-2011, 14:14
ragazzi ho già letto un po di pagine e devo dire che come linguaggio è molto "immediato" Grazie per avermelo consigliato
Immediato, intuitivo e molto potente a guardare bene. Gira su più piattaforme e se vorrai affrontare il mondo delle applicazioni Web lato server scoprirai di non avere buttato via il tuo tempo, esistono degli ottimi framework per lo scopo, sono sicuro che CDmauro ne sa di più su questi ultimi (Pylons e C., intendo).
Molto simile è il discorso che riguarda Ruby.
Non sono i linguaggi definitivi ma, da quando li ho scoperti, la mia vita lato programmazione è cambiata in meglio.
Personalmente, te lo dico se più avanti avrai voglia di valutare un altro prodotto senza andare sui soliti noti, da qualche mese seguo un progetto italiano, si chiama Falcon (http://www.falconpl.org) e il suo autore è straordinariamente alla mano e pronto ad aiutarti. Dubito che questo linguaggio (a mio avviso eccezionale) uscirà mai dalla nicchia, non ha la spinta commerciale necessaria oggi, però è interessante anche didatticamente per i vari approcci che permette.
pabloski
29-05-2011, 14:49
ragazzi ho già letto un po di pagine e devo dire che come linguaggio è molto "immediato" Grazie per avermelo consigliato
Sull'immediatezza non ci piove; è classificato al primo posto come linguaggio con maggiore espressività.
pabloski
29-05-2011, 14:56
Immediato, intuitivo e molto potente a guardare bene. Gira su più piattaforme e se vorrai affrontare il mondo delle applicazioni Web lato server scoprirai di non avere buttato via il tuo tempo, esistono degli ottimi framework per lo scopo, sono sicuro che CDmauro ne sa di più su questi ultimi (Pylons e C., intendo).
Molto simile è il discorso che riguarda Ruby.
Non sono i linguaggi definitivi ma, da quando li ho scoperti, la mia vita lato programmazione è cambiata in meglio.
Personalmente, te lo dico se più avanti avrai voglia di valutare un altro prodotto senza andare sui soliti noti, da qualche mese seguo un progetto italiano, si chiama Falcon (http://www.falconpl.org) e il suo autore è straordinariamente alla mano e pronto ad aiutarti. Dubito che questo linguaggio (a mio avviso eccezionale) uscirà mai dalla nicchia, non ha la spinta commerciale necessaria oggi, però è interessante anche didatticamente per i vari approcci che permette.
wow pensavo di essere l'unico ad usare falcon :D
comunque sia sul discorso dei linguaggi definitivi s'è da riflettere....se da un lato java e c# sono visti come i non plus ultra per lo sviluppo lato server professionale, d'altro canto le tecnologie jit degli ultimi tempi ( llvm, native client, v8, ecc... ) stanno portando alla ribalta linguaggi prima poco considerati ( python, scala, ruby e addirittura javascript )....
ok che i linguaggi più blasonati offrono questo e quello ma la semplicità di javascript è difficile da battere e il fatto che esistano strumenti come node.js è imho il primo chiodo sulla bara dei linguaggi più blasonati
consideriamo che il mondo del web ha indotto in alcuni ( non proprio addetti ai lavori ) la necessità di programmare in qualche modo....flash è stato il primo a rivolgersi più agli artisti che ai programmatori, javascript pure ha un approccio simile e gli altri linguaggi di nuova generazione pure puntano tutto sul rendere semplice l'utilizzo del linguaggio
potresti sembrare un discorso insensato il mio, ma se si guarda a cos'è successo con l'elettronica e arduino, si capisce che c'è là fuori una folla di non computer scientists che però vuole poter godere le gioie della programmazione
potresti sembrare un discorso insensato il mio, ma se si guarda a cos'è successo con l'elettronica e arduino, si capisce che c'è là fuori una folla di non computer scientists che però vuole poter godere le gioie della programmazione
Io sono uno di quelli (visto che mi occupo di reti, più che di programmazione):D
Cmq Falcon mi piace una cifra, è un peccato che un'idea così interessante e per di più italiana non possa avere la notorietà che si merita.
Guardando qua e là poi si trovano tanti progetti strani o abortiti, ad esempio questo, trovato in un minuto di googlata
http://mathias-kettner.de/wirbel.html
wow pensavo di essere l'unico ad usare falcon :D
comunque sia sul discorso dei linguaggi definitivi s'è da riflettere....se da un lato java e c# sono visti come i non plus ultra per lo sviluppo lato server professionale, d'altro canto le tecnologie jit degli ultimi tempi ( llvm, native client, v8, ecc... ) stanno portando alla ribalta linguaggi prima poco considerati ( python, scala, ruby e addirittura javascript )....
ok che i linguaggi più blasonati offrono questo e quello ma la semplicità di javascript è difficile da battere e il fatto che esistano strumenti come node.js è imho il primo chiodo sulla bara dei linguaggi più blasonati
consideriamo che il mondo del web ha indotto in alcuni ( non proprio addetti ai lavori ) la necessità di programmare in qualche modo....flash è stato il primo a rivolgersi più agli artisti che ai programmatori, javascript pure ha un approccio simile e gli altri linguaggi di nuova generazione pure puntano tutto sul rendere semplice l'utilizzo del linguaggio
potresti sembrare un discorso insensato il mio, ma se si guarda a cos'è successo con l'elettronica e arduino, si capisce che c'è là fuori una folla di non computer scientists che però vuole poter godere le gioie della programmazione
Il problema non è il linguaggio di per se, ma anche gli strumenti di sviluppo e l'eventuale mole di librerie già scritte per questo o quel linguaggio.
Per questo motivo alcuni dei linguaggi che hai citato si trovano un gradino più in alto, in ambito professionale, rispetto ad altri.
Non solo, nell'ambito web c'è il problema dell'hosting...
Certo se lo scopo è solo quello di fare programmini ad uso personale, allora qualsiasi linguaggio di programmazione va bene...
pabloski
29-05-2011, 16:15
Certo se lo scopo è solo quello di fare programmini ad uso personale, allora qualsiasi linguaggio di programmazione va bene...
ma molti di quei linguaggi stanno andando oltre l'uso personale
fino alla settimana scorsa avrei bollato come pazzo chiunque avesse anche solo suggerito di sviluppare un web server in javascript e invece, grazie a node.js, mi sono dovuto ricredere
ovviamente c'è il problema delle librerie ma questi progetti sono talmente interessanti che attirano molta gente in breve tempo....ad esempio node.js ha un numero di moduli impressionante per essere un novellino
Pare che sia un gioco sviluppare Web Server lo fanno tutti (io no :( ) se non erro ne esiste uno anche in Go nonostante il linguaggio sia acerbissimo.
cdimauro
30-05-2011, 14:04
D:\Test>python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
:cool:
P.S. Falcon si ispira molto a Python, ma non riesco a farmelo digerire, specialmente per il fatto che è weakly typed.
D:\Test>python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
:cool:
Ti Odio :D
Kralizek
31-05-2011, 00:47
Con WCF vale? :fagiano:
cdimauro
31-05-2011, 13:49
Tutto fa brodo. :fagiano:
Elia Grego
20-06-2011, 10:44
Inizia a leggerti un po' di guide...
Comunque i linguaggi che io ho imparato per ordine sono:
Pascal, HTML, CSS, Javascript, PHP, SQL, C, C++, VB, Python, Perl, AJAX, java, objective c.
Se ti interessano un po' di guide, qui te ne ho messe un pochine.... XD
http://www.gregoinfo.altervista.org/Guide.exe
banryu79
20-06-2011, 10:49
Se ti interessano un po' di guide, qui te ne ho messe un pochine.... XD
http://www.gregoinfo.altervista.org/Guide.exe
Il link punta ad un eseguibile? :confused:
Acid Queen
20-06-2011, 10:58
Io ti consiglio C# insieme a ASP.NET e pure un'infarinatura di SQL Server, perchè è la strada che ho percorso/sto percorrendo io :D
Oltre a imparare a programmare avresti notevoli vantaggi dal punto di vista lavorativo, visto che questa combinazione è molto richiesta in ambito aziendale.
Inoltre hai visual studio express e sql management studio che sono due strumenti molto potenti e facili da addomesticare.
Se ti serve qualche manuale in inglese, fammi un fischio :D
Elia Grego
20-06-2011, 11:13
FTP Schifoso
Elia Grego
20-06-2011, 11:15
ok.. l' ftp mi da un errore...
Le guide le trovi su http://sites.google.com/site/eliaginfo/
In fondo trovi tutte le guide che possono interessarti
sottovento
20-06-2011, 14:05
tu lo mangeresti?
http://2.bp.blogspot.com/_wuQsM6usJPU/TCMOKhF6B3I/AAAAAAAAC6A/z2dhZFCQeYI/s1600/pitone+reale.jpg
:rotfl: :rotfl: :rotfl:
Gia' mangiato, parecchie volte!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.