View Full Version : Niubbo programmatore..da che comincio?
Ciao a tutti..
ho iniziato quest'anno la facoltà di Ingegneria Informatica a Roma TRE.
per ora gli esami di programmazione vanno bene.. al primo Laboratorio di Informatica (è java.. cose molto banali) ho preso 30.
ora stiamo andando avanti sempre in java..
secondo me però nn basta conoscere un solo linguaggio... e nn mi va di aspettare il terzo anno per conoscere altri linguaggi e vorrei iniziare da autodidatta ad imparare qualcosina..
mi sarebbe piaciuto imparare il php.. che ne dite? è nelle mie capacità?
(0 esperienze di programmazione.. solo pascal e html normale (non xhtml))
dove potete indirizzarmi? siti corsi.. etc etc etc..
ciao e grazie in anticipo!
il php è il linguaggio dinamico web più potente. ma ultimamente con i suoi aggiornamenti e le nuove implementazioni lo si sta iniziando ad usare anche per programmazione sul sistema. Installando un webserver(Apache) e Mysql sul proprio pc, con php ormai si può fare "quasi" tutto quello ke si può fare con gli altri linguaggi. Rispetto al c++ ed al Java, è molto più semplice sintatticamente e semanticamente, ma il ragionamento applicato alla programmazione è identico. Inoltre dallla penultma versione il php ha integrato le classi(ke nn aveva nella versione 3). Puoi impararlo anche tramite i manuali ke trovi sui siti di programmazione, ma per essere sciolti dovrai "scrivere" molto e fare esperienza(come del resto tutti i linguaggi).
buon divertimento ;)
grazie mille per la pronta risposta!!
speravo qualcuno mi dicesse che non fosse un'impresa impossibile in quanto lo vorrei sfruttare soprattuto per applicazioni web integrandolo con MySQL per creare database dinamici modificabili e aggiornabili e forum (con phpBB)
spero che non avrò i capelli bianchi quando ci riuscirò... :D
VegetaSSJ5
14-01-2006, 14:03
lascia stare il php e comincia con il c. al php ci arriverai dopo, sicuramente lo studierai per qualche esame all'università.
AbuJaffa
14-01-2006, 14:30
Il "C" prima di ogni altra cosa! :O
Il "C" prima di ogni altra cosa! :O
IL "C" dopo tutto il resto! :D
Anzi, lascialo perdere proprio. Impara Java/C# e un linguaggio tipo Ruby/Python per avere una visione abbastanza ampia della programmazione con linguaggi ad alto livello. Sono tutti linguaggi piuttosto semplici da padroneggiare anche se si e' alle prime armi.
Poi, quando ti senti pronto, puoi passare a basso livello e cimentarti con un po' di C++ per capire i principi di base sui quali si poggiano gli altri linguaggi, ma solo dopo aver imparato i principi di programmazione basilari.
Dopo questo percorso, linguaggi come C, PHP e compagnia bella non saranno altro che dialetti in cui applicare cio' che hai imparato. Il linguaggio e' la cosa meno importante, la cosa importante e' padroneggiare le metodologie di scrittura del software e queste sono indipendenti dal linguaggio.
Gandalf_BD
14-01-2006, 14:37
il C è il linguaggio di programmazione migliore...
essendo quello più di basso livello, se padroneggi quello, non avrai problemi con gli altri... :)
il C è il linguaggio di programmazione migliore...
essendo quello più di basso livello, se padroneggi quello, non avrai problemi con gli altri... :)
E' vero l'esatto contrario :)
Peggio del C c'e' giusto giusto l'assembly ma neppure di tanto. Se padroneggi il C, una volta che hai finito, devi dimenticare tutto e imparare daccapo a programmare decentemente, perche' gli idiomi tipici del C sono l'esatto opposto degli idiomi di buona programmazione.
rdefalco
14-01-2006, 14:50
Concordo che linguaggi più ad alto livello si avvicinano al concetto "mentale" di programmazione, quindi lasciano più spazio a pensare e convertire subito in programma.
Se devo pensare un concetto e conoscere 100 cose solo per applicarlo, non la finisco più!
Io ho iniziato dal Visual Basic e ASP (non .NET) poi all'Università ho imparato rudimenti di C, poi Java, ora sto cercando di capirne di PHP. Però vedo che chi è più a digiuno di programmazione digerisce meglio linguaggi ad oggetti, Java su tutti.
VegetaSSJ5
14-01-2006, 15:12
IL "C" dopo tutto il resto! :D
...
Dopo questo percorso, linguaggi come C, PHP e compagnia bella non saranno altro che dialetti in cui applicare cio' che hai imparato.
bene allora con questo vuoi dire che uno che usa c# sa padroneggiare anche il c, vero?
Il linguaggio e' la cosa meno importante, la cosa importante e' padroneggiare le metodologie di scrittura del software e queste sono indipendenti dal linguaggio.
verissimo, ed inoltre penso che linguaggi tipo c#/java non siano in grado di darti queste metodologie di programmazione di cui parli.
bene allora con questo vuoi dire che uno che usa c# sa padroneggiare anche il c, vero?
Non necessariamente perche' ha idiomi diversi, ma e' molto facilitato rispetto al percorso contrario perche' parte da una base piu' solida.
VegetaSSJ5
14-01-2006, 15:49
Non necessariamente perche' ha idiomi diversi, ma e' molto facilitato rispetto al percorso contrario perche' parte da una base piu' solida.
io sono per questo tipo di percorso. linguaggio ad oggetti ad alto livello (java/c#) -> c -> c++ -> ...
AbuJaffa
14-01-2006, 18:41
E' vero l'esatto contrario :)
Peggio del C c'e' giusto giusto l'assembly ma neppure di tanto. Se padroneggi il C, una volta che hai finito, devi dimenticare tutto e imparare daccapo a programmare decentemente, perche' gli idiomi tipici del C sono l'esatto opposto degli idiomi di buona programmazione.
Non ho parole, solo parolacce. :banned:
Non ho parole, solo parolacce. :banned:
??
AbuJaffa
14-01-2006, 21:07
Mi domando come fa un programmatore a parlare così del linguaggio C.
Mi domando come fa un programmatore a parlare così del linguaggio C.
Basta conoscerlo e saper programmare.
Se non sei d'accordo argomenta.
Xalexalex
14-01-2006, 21:16
Allora: io ho iniziato con il C, dopo quello il PHP (che ti sembra 'na cacata dopo il C).
Per dare delle basi solide il C è il meglio (a meno che tu non voglia programmare in Assemb. o in 01 :D ). Ti prego solo di non utilizzare il Basic :cry: o qualsiasi sua altra malsana derivazione, specie se della casa dello zio Bill...
AbuJaffa
14-01-2006, 21:23
Allora, sono d'accordo sul fatto che l'importante è conoscere le metodologie di sviluppo e programmazione. Utilizando le tecniche, della cosiddetta ingegneria del software, si sviluppa una mentalità che va al di là del linguagio rendendo quel particolare ragionamento universale. Ma non sono d'accordo quando si consiglia ad un "niubbo" di cominciare a programmare usando linguaggi "derivati" completamente dal C.
Allora, sono d'accordo sul fatto che l'importante è conoscere le metodologie di sviluppo e programmazione. Utilizando le tecniche, della cosiddetta ingegneria del software, si sviluppa una mentalità che va al di là del linguagio rendendo quel particolare ragionamento universale. Ma non sono d'accordo quando si consiglia ad un "niubbo" di cominciare a programmare usando linguaggi "derivati" completamente dal C.
Perche' un novizio che non ha alcun concetto di programmazione e che sta imparando dovrebbe iniziare con un linguaggio cosi' vicino alla macchina, invece di iniziare con un linguaggio ad alto livello, piu' vicino al modo di ragionare umano, meno incline agli errori perche' fortemente tipizzato?
Quali vantaggi dovrebbe garantire? Perche' dovrebbe imparare gli idiomi del C per poi doverli dimenticare immediatamente dopo quando matura la sua preparazione?
AbuJaffa
14-01-2006, 21:34
Penso che sia meglio iniziare dalle basi che iniziare dalla punta. Vedi, la cosa è semplice. Se si assimila il linguaggio di base "c" i suoi derivati si comprenderanno in maniera molto più efficace.
Penso che sia meglio iniziare dalle basi che iniziare dalla punta. Vedi, la cosa è semplice. Se si assimila il linguaggio di base "c" i suoi derivati si comprenderanno in maniera molto più efficace.
E' vero l'esatto contrario, perche' linguaggi come Java e C#, ad esempio, condividono con C solo una minima parte della sintassi; il resto, la filosofia, gli idiomi, la metodologia, sono totalmente differenti. Altri linguaggi come Ruby e Python neppure condividono parte della sintassi.
Affermare che Java e' un derivato del C e' come dire che un aereoplano e' un derivato della bicicletta perche' entrambi hanno le ruote e le biciclette sono arrivate prima: e' un errore evidente.
E ora ripeto la mia domanda: perche' un novizio dovrebbe imparare il C e i suoi idiomi per poi doverli dimenticare quando inizia a programmare seriamente e deve effettivamente produrre qualcosa in un tempo umano?
Perche' dovrebbe impelagarsi con le idiosincrasie del C, i costrutti a basso livello, le sue trappole quando tutto cio' e' stato risolto con i linguaggi successivi? Che cosa guadagnerebbe?
Spero di non dire una ca**ata visto le poche conoscenze ^^
Per il confronto se iniziare da C o da C#/Java, non è forse meglio iniziare con un linguaggio puramente object oriented così da abituarsi anche al metodo di ragionare piuttosto che da un linguaggio che non è fortemente orientato agli oggetti?
^TiGeRShArK^
14-01-2006, 21:42
proprio iniziare dal c è inutile.
Potevo capire il C++, ma proprio il C non serve a niente ad un niubbo.
Io sono d'accordo con fek anke se ho fatto il percorso esattamente inverso.
Sono partito dal basic, passato al c/assembly e finito in java.
Se avessi iniziato da subito col java avrei appreso molto + facilmente le tecniche tipiche della programmazione ad oggetti che nel C++ sono "mascherate" dalla complessità del linguaggio.
Col c pure invece non impari a programmare.
Impari ad interfacciarti con la macchina, ke è cosa ben diversa.
Come diceva qualcuno Tutti sono capaci di scrivere codice comprensibile dalle macchine, solo i bravi programmatori riescono a scrivere codice comprensibile dagli altri uomini.
Per questo motivo un linguaggio ad alto livello, piu' vicino ai nostri ragionamenti, è sicuramente migliore per iniziare permettendo al programmatore di astrarsi da tutti quegli aspetti troppo vicini all'hardware ke non gli servono a niente per imparare le metodologie di programmazione.
AbuJaffa
14-01-2006, 21:51
E' vero l'esatto contrario, perche' linguaggi come Java e C#, ad esempio, condividono con C solo una minima parte della sintassi; il resto, la filosofia, gli idiomi, la metodologia, sono totalmente differenti. Altri linguaggi come Ruby e Python neppure condividono parte della sintassi.
Affermare che Java e' un derivato del C e' come dire che un aereoplano e' un derivato della bicicletta perche' entrambi hanno le ruote e le biciclette sono arrivate prima: e' un errore evidente.
E ora ripeto la mia domanda: perche' un novizio dovrebbe imparare il C e i suoi idiomi per poi doverli dimenticare quando inizia a programmare seriamente e deve effettivamente produrre qualcosa in un tempo umano?
Perche' dovrebbe impelagarsi con le idiosincrasie del C, i costrutti a basso livello, le sue trappole quando tutto cio' e' stato risolto con i linguaggi successivi? Che cosa guadagnerebbe?
Semplicemente perchè imparerebbe a conoscere fin da subito l' infido mondo della programmazione, in maniera tale che successivamente, durante l'apprendimento di un altro linguaggio più evoluto, quest'ultimo lo affronterà in maniera diversa.
Si sentirà forgiato dall'esperienza precedente e tutto ciò porterà a sviluppare software certamente decente.
perché alle elementari insegnano la storia in modo chiaro e semplice, con quattro date e due spiegazioni? perché i bambini ancora non sono in grado di capirne le motivazioni
perché alle medie poi rifanno lo stesso periodo storico studiato alle elementari con un pò più di dettagli? perché i bambini, avendo alcuni concetti chiave cominciano a capire come poterli argomentare un pò meglio
perché alle superiori si ristudia ancora lo stesso periodo storico con una marea di dettagli in più? perché i ragazzi ora sono maturi per poter comprendere meglio i meccanismi che muovono alla base molti periodi storici ;)
Insomma, alla base di tutto ci sono complesse motivazioni socio/politiche che un bambino non può capire se non addestrato graduatamente ;)
Semplicemente perchè imparerebbe a conoscere fin da subito l' infido mondo della programmazione,
Ma il mondo della programmazione non è infido, lo è quello della programmazione C ... :D
AbuJaffa
14-01-2006, 21:58
perché alle elementari insegnano la storia in modo chiaro e semplice, con quattro date e due spiegazioni? perché i bambini ancora non sono in grado di capirne le motivazioni
perché alle medie poi rifanno lo stesso periodo storico studiato alle elementari con un pò più di dettagli? perché i bambini, avendo alcuni concetti chiave cominciano a capire come poterli argomentare un pò meglio
perché alle superiori si ristudia ancora lo stesso periodo storico con una marea di dettagli in più? perché i ragazzi ora sono maturi per poter comprendere meglio i meccanismi che muovono alla base molti periodi storici ;)
Insomma, alla base di tutto ci sono complesse motivazioni socio/politiche che un bambino non può capire se non addestrato graduatamente ;)
E' un paragone che non regge. Il bambino delle elementari non è in grado di capirne le motivazione poichè l'età non glielo permette. Il "niubbo", invece, è in grado di apprendere un linguaggio a prescindere dal grado di complessità.
AbuJaffa
14-01-2006, 21:58
Ma il mondo della programmazione non è infido, lo è quello della programmazione C ... :D
Forse conosci solo il c. :D
E' un paragone che non regge. Il bambino delle elementari non è in grado di capirne le motivazione poichè l'età non glielo permette. Il "niubbo", invece, è in grado di apprendere un linguaggio a prescindere dal grado di complessità.
sei sicuro? un niubbo che non sa niente della programmazione è come un bambino che si affaccia per la prima volta al mondo intorno a sé e non sa come potersi muovere....non ha agganci come non li ha un bambino.
Tu dici l'età? l'età indica solo il fatto che non è formato per capire certi concetti. Bene, un programmatore che scrive software da 5 anni capisce bene alcuni concetti, uno che non li ha mai scritti alcune cose non le capisce per niente e non sa cosa inventarsi :)
Semplicemente perchè imparerebbe a conoscere fin da subito l' infido mondo della programmazione, in maniera tale che successivamente, durante l'apprendimento di un altro linguaggio più evoluto, quest'ultimo lo affronterà in maniera diversa.
Si sentirà forgiato dall'esperienza precedente e tutto ciò porterà a sviluppare software certamente decente.
E' proprio perche' non deve conoscere l'infido mondo della programmazione che non puo' iniziare col C. E' nuovo, non e' in grado di comprendere e maneggiare concetti vicini alla macchina che in C gli vengono presentati. Prima di correre, bisogna imparare a camminare e possibilmente camminare correttamente.
Prima di correre, bisogna imparare a camminare e possibilmente camminare correttamente.
un altro modo di esprimere il mio concetto :D
E' un paragone che non regge. Il bambino delle elementari non è in grado di capirne le motivazione poichè l'età non glielo permette. Il "niubbo", invece, è in grado di apprendere un linguaggio a prescindere dal grado di complessità.
Falso. Un novizio non e' in grado di capire un linguaggio di programmazione a basso livello perche' non ne ha gli strumenti, come un bambino non ha gli strumenti per capire le interazioni sociali alla base della Rivoluzione Francese: dovra' prima imparare le date.
un altro modo di esprimere il mio concetto :D
Ci sono tanti altri modi :D
Come puoi risolvere un'equazione differenziale se non sai fare le addizioni?
come puoi leggere un libro se non sai l'alfabeto? :D
AbuJaffa
14-01-2006, 22:09
Ma adottando tecniche di linguaggi ad alto livello il "niubbo" non sarà mai in grado di correggere errori che riguardano una minima conoscenza della macchina. In questa maniera prenderà per buone molte nozioni e il tutto renderà il suo codice inefficiente.
AbuJaffa
14-01-2006, 22:11
Ci sono tanti altri modi :D
Come puoi risolvere un'equazione differenziale se non sai fare le addizioni?
Infatti, la matematica è una piramide, e come dico io, si deve iniziare dalla base per arrivare pian piano fino all'infinita conoscenza che è il vertice.
Ma adottando tecniche di linguaggi ad alto livello il "niubbo" non sarà mai in grado di correggere errori che riguardano una minima conoscenza della macchina. In questa maniera prenderà per buone molte nozioni e il tutto renderà il suo codice inefficiente.
Si fara' le nozioni a basso livello quando ne avra' bisogno, non all'inizio quando non e' ha bisogno e sta solo cercando di imparare qualcosa di nuovo. I numeri in matematica sono come Java, i concetti semplici.
rdefalco
14-01-2006, 22:23
Che senso ha spiegare ad un niubbo i puntatori quando gli oggetti OO sono molto più vicini alla logica di chi non è programmatore professionista?
AbuJaffa
14-01-2006, 22:23
Ma preferisci che il suo codice risulti inefficiente?
Ma preferisci che il suo codice risulti inefficiente?
Si'.
"Premature optimization is the root of all evil." - Knuth.
rdefalco
14-01-2006, 22:26
Perché inefficiente? Magari un linguaggio di alto livello consente (ad esempio) di realizzare in due mesi quello che in un linguaggio più a basso livello richiederebbe sei mesi (apprendimento incluso). Probabilmente esistono concetti diversi di efficienza.
AbuJaffa
14-01-2006, 22:28
Che senso ha spiegare ad un niubbo i puntatori quando gli oggetti OO sono molto più vicini alla logica di chi non è programmatore professionista?
I veri professionisti si forgiano così. :O
I veri professionisti si forgiano così. :O
No, i veri professionisti applicano e imparano gli strumenti giusti per il problema giusto :)
AbuJaffa
14-01-2006, 22:31
No, i veri professionisti applicano e imparano gli strumenti giusti per il problema giusto :)
Anche.
AbuJaffa
14-01-2006, 22:32
No, solo.
Professionisti poco seri. :D
rdefalco
14-01-2006, 22:33
I veri professionisti si forgiano così. :O
Stiamo parlando di un niubbo che vuole iniziare. Magari inizia col C, non riesce a cavare un ragno dal buco e smette dedicandosi ad una riconosciuta carriera scacchistica.
Oppure (può essere) impara lentamente, si informa, e dopo moooolto tempo riesce a tirar fuori una sua prima piccola utility.
Un mio cliente (avvocato) dopo aver visto la semplicità del Visual Basic (a molti farà schifo, lo so) nel creare un'interfaccia grafica, ha voluto che gli insegnassi come si programma. Probabilmente il suo codice non sarà mai pulito, ottimizzato ed efficiente, ma ha realizzato un ottimo programma di gestione di studi legali che distribuisce con notevole soddisfazione sua e dei suoi colleghi che lo usano. Vaglielo a far fare in C!
Professionisti poco seri. :D
Non penso di essere un programmatore professionista poco serio :)
AbuJaffa
14-01-2006, 22:37
Ma forse lo sei ma non sai di esserlo.
Ma forse lo sei ma non sai di esserlo.
Se hai finito gli argomenti esci dalla discussione. Metterla sul personale non dara' piu' forza alle tue argomentazioni decisamente dilettantistiche :)
AbuJaffa
14-01-2006, 22:39
Stiamo parlando di un niubbo che vuole iniziare. Magari inizia col C, non riesce a cavare un ragno dal buco e smette dedicandosi ad una riconosciuta carriera scacchistica.
Oppure (può essere) impara lentamente, si informa, e dopo moooolto tempo riesce a tirar fuori una sua prima piccola utility.
Un mio cliente (avvocato) dopo aver visto la semplicità del Visual Basic (a molti farà schifo, lo so) nel creare un'interfaccia grafica, ha voluto che gli insegnassi come si programma. Probabilmente il suo codice non sarà mai pulito, ottimizzato ed efficiente, ma ha realizzato un ottimo programma di gestione di studi legali che distribuisce con notevole soddisfazione sua e dei suoi colleghi che lo usano. Vaglielo a far fare in C!
Aspetta un attimo... io ho detto partire dalle basi. Non puoi pretendere di iniziare dalle interfacce grafiche. Pian pianino si arriverà anche a quello ed oltre.
AbuJaffa
14-01-2006, 22:41
Se hai finito gli argomenti esci dalla discussione. Metterla sul personale non dara' piu' forza alle tue argomentazioni :)
Guarda, niente di personale, ho solo quotato e risposto una tua affermazione.
Guarda, niente di personale, ho solo quotato e risposto una tua affermazione.
Una risposta fuori luogo. Mettere in discussione la professionalita' altrui da una base decisamente precaria come quella che stai dimostrando e' quanto meno comico. Come ho detto, se non sei evidentemente in grado di sostenere la discussione, escine.
AbuJaffa
14-01-2006, 22:48
Ma forse lo sei ma non sai di esserlo.
Guarda che ho risposto con tutta l'ironia di questo mondo. :D Non ho messo in discussione la professionalità di nessuno.
Guarda che ho risposto con tutta l'ironia di questo mondo. :D Non ho messo in discussione la professionalità di nessuno.
L'ironia fuori luogo tienila per i tuoi amici :)
AbuJaffa
14-01-2006, 22:50
Come ho detto, se non sei evidentemente in grado di sostenere la discussione, escine.
Comunque la discussione può andare avanti quanto vuoi. Abbiamo ragionamenti a proposito alquanto divergenti.
rdefalco
14-01-2006, 22:51
Aspetta un attimo... io ho detto partire dalle basi. Non puoi pretendere di iniziare dalle interfacce grafiche. Pian pianino si arriverà anche a quello ed oltre.
D'accordo, ammetto che esiste differenza fra uno studente di ingegneria informatica ed un avvocato nell'ambito della programmazione, ma questo esempio voleva solo far capire che SECONDO ME non esiste un percorso unico ed obbligato.
Se l'avvocato in questione avesse iniziato dalle basi teoriche della programmazione, ora avrebbe gettato il tutto alle ortiche e sarebbe tornato ad occuparsi esclusivamente dell'infortunistica stradale. Dipende tutto dalla situazione.
Io il C l'ho studiato, dopo che avevo imparato da autodidatta Visual Basic e ASP, anche a livello discreto. Poi ho studiato ed applicato Java. Fra tutti questi, il C mi è sembrato il più inutile. Ora come ora non mi ha dato niente. Se non fosse per un esame che avrò fra 8 mesi, me ne scorderei senza alcun rimpianto.
Se e quando mi servirà il C lo reimparerò.
AbuJaffa
14-01-2006, 22:52
L'ironia fuori luogo tienila per i tuoi amici :)
Se avessi saputo che sei così bizzoso non avrei iniziato. ;)
Se avessi saputo che sei così bizzoso non avrei iniziato. ;)
Per educazione non devi iniziare a prescindere.
AbuJaffa
14-01-2006, 22:56
D'accordo, ammetto che esiste differenza fra uno studente di ingegneria informatica ed un avvocato nell'ambito della programmazione, ma questo esempio voleva solo far capire che SECONDO ME non esiste un percorso unico ed obbligato.
Se l'avvocato in questione avesse iniziato dalle basi teoriche della programmazione, ora avrebbe gettato il tutto alle ortiche e sarebbe tornato ad occuparsi esclusivamente dell'infortunistica stradale. Dipende tutto dalla situazione.
Io il C l'ho studiato, dopo che avevo imparato da autodidatta Visual Basic e ASP, anche a livello discreto. Poi ho studiato ed applicato Java. Fra tutti questi, il C mi è sembrato il più inutile. Ora come ora non mi ha dato niente. Se non fosse per un esame che avrò fra 8 mesi, me ne scorderei senza alcun rimpianto.
Se e quando mi servirà il C lo reimparerò.
E' questo il punto. Si impara un linguaggio ad alto livello e nel momento in cui si avrà a che fare con (per esempio) il c, non si riuscira ad applicarsi totalmente poichè ci si era abituati alle "comodità" offerte dall'alto livello. Se si parte dalla parte opposta capirai che la cosa è molto differente.
Se e quando mi servirà il C lo reimparerò.
Non ti servira' mai. Oggi non c'e' alcun motivo di usare il C in nessuna situazione. Il C++ e' un perfetto sostituto per la programmazione di sistema e a basso livello e offre un linguaggio fortemente tipizzato, piu' flessibile e performante in tutte le situazioni.
AbuJaffa
14-01-2006, 22:57
Per educazione non devi iniziare a prescindere.
Non sono stao chiaro.Non avrei iniziato la discussione. ;)
Non sono stao chiaro.Non avrei iniziato la discussione. ;)
Beh, avresti evitato una magra figura :)
rdefalco
14-01-2006, 23:04
E' questo il punto. Si impara un linguaggio ad alto livello e nel momento in cui si avrà a che fare con (per esempio) il c, non si riuscira ad applicarsi totalmente poichè ci si era abituati alle "comodità" offerte dall'alto livello. Se si parte dalla parte opposta capirai che la cosa è molto differente.
Non sono d'accordo. Io ormai ho imparato a convertire un'idea in un frammento di codice. Chi è agli inizi dovrebbe avere questa possibilità, e con i linguaggi a basso livello ciò non è possibile. Se poi dopo aver imparato un linguaggio ad alto livello mi accorgo che quello che "prima" facevo con un solo comando "dopo" (cioè col C) lo devo fare con 15 righe di codice o con qualche escamotage, va be' mi adatto. Ma nel frattempo avrò già imparato a programmare.
Se devo usare trucchetti o capire la macchina già quando inizio è una tragedia. A meno che non si abbiano mesi di tempo libero da impiegare.
E poi il post originario era di un novello programmatore che probabilmente cerca qualcosa di UTILE più che efficiente. PHP ha la sua utilità nella gran parte delle pagine web. NET e Java Enterprise sono molto ricercati in ambito aziendale. Approfondimenti di Basi di Dati aprono campi nel lavoro di DBA. Chi vuole più un esperto in C???
AbuJaffa
14-01-2006, 23:07
Non sono d'accordo. Io ormai ho imparato a convertire un'idea in un frammento di codice. Chi è agli inizi dovrebbe avere questa possibilità, e con i linguaggi a basso livello ciò non è possibile. Se poi dopo aver imparato un linguaggio ad alto livello mi accorgo che quello che "prima" facevo con un solo comando "dopo" (cioè col C) lo devo fare con 15 righe di codice o con qualche escamotage, va be' mi adatto. Ma nel frattempo avrò già imparato a programmare.
Se devo usare trucchetti o capire la macchina già quando inizio è una tragedia. A meno che non si abbiano mesi di tempo libero da impiegare.
E poi il post originario era di un novello programmatore che probabilmente cerca qualcosa di UTILE più che efficiente. PHP ha la sua utilità nella gran parte delle pagine web. NET e Java Enterprise sono molto ricercati in ambito aziendale. Approfondimenti di Basi di Dati aprono campi nel lavoro di DBA. Chi vuole più un esperto in C???
Ma io intendo il c, come inizio.
rdefalco
14-01-2006, 23:13
Vabbè guarda, vi lascio alle vostre argomentazioni. Io dopo averci fatto non molto col C lo trovo tranquillamente "saltabile" nell'arco di apprendimento, dovunque si voglia andare a parare per una specializzazione (PHP, C++, Java, Python o cos'altro). E credo che in molti condividano quest'idea.
Naturalmente chi col C ci ha fatto ben più che piccoli programmi di input/output la penserà diversamente, io oramai non ho altri argomenti, magari l'autore del thread si sarà fatto una sua opinione (ma magari no!).
AbuJaffa
14-01-2006, 23:14
Beh, avresti evitato una magra figura :)
Purtroppo è impossibile controbbatere con una presona che ha un unico filo logico e non accetta prediche da nessuno.
Bhe come si dice, la ragione la diamo ai... ma che te l'ho dico a fare, lo sai meglio di me. :D
Appena ho rivisto la discussione state già a 4 pagine!! :sofico:
innanzi tutto vorrei ringraziare tutti peravermi dato la vostra preziosissima opinione, poi volevo chiedere scusa per aver fatto nascere questa specie di guerra :D:D
cmq da quello che ho capito ho 3 opzioni:
1. lasciare perdere la programmazione :D
2. imparare il java per questi esami e aspettare il ciclo naturale degli studi
3. impararli tutti insieme :D
apparte gli scherzi da quello che è emerso credo che innanzi tutto cercherò di padroneggiare meglio il java e quando sarò arrivato ad un livello abbastanza avanzato mi dedicherò a qualche altro linguaggio (da scegliere).
io avevo proposto il php in quanto mi sembrava quello più "utile" almeno per me.. quando devo costruire una pagina web che abbia un minimo di funzione e utilità mi sento abbastanza handicappato a non conoscere php (e xhtml).
e comunque il mio scopo non è quello di creare un'applicazione per il calcolo dell'impatto di una bomba nucleare:D solo quello di avere una visione globale della programmazione e nel momento in cui penserò "toh devo fare XXX ma non c'è nessun software che lo fa" mi piacerebbe poter dire "ora scrivo un bel programmino e XXX sarà una passeggiata :D"
ancora grazie mille a tutti..
sappiate che, avendo postato in questo thread e vista la vostrà disponibilità ormai siete tutti dei canditati... se avrò un problema pescherò un nome a caso e manderò pm con chiarimenti!! :D
AbuJaffa
14-01-2006, 23:31
;)
Vorrei dire anch'io la mia ^_^
Ho re-iniziato a programmare un po' seriamente da circa un paio d'anni. Diversi anni fa, invece, volevo iniziare a programmare, ed ho iniziato col C. Apriti cielo! E' veramente un casino fare qualsiasi cosa, col C. Certo, è veloce quanto vuoi, ma ti ci vuole tantissimo per qualunque cosa.
Sono d'accordo che venga usato per i driver, per i kernel, per le parti essenziali di ogni applicazione, dove la velocità è fondamentale; ma in tanti altre parti fa solo sbattere la testa al programmatore, tant'è che io, ai tempi, ho mollato.
Il fatto che il C sia la 'base' di molti altri linguaggi di programmazione (nel senso che l'interprete o il compilatore è scritto in C) è rilevante fino ad un certo punto. La scelta del C è fatta per una questione di velocità, non certo perchè uno lo voglia, e il fatto che l'implementazione sia basata su C conta fino ad un certo punto, es. grandezza degli interi, precisione dei float, e probabilmente poco altro. Se stanno creando PyPy (un interprete Python scritto in Python) ci sarà un motivo!
Poi ho ripreso a programmare, ed essendo interessato al mondo web ho scelto PHP. Linguaggio non male ma che ha il difetto, secondo me, di tendere all'incasinato e all'illeggibile. Modificare un programma fatto da altri è spesso e volentieri un incubo.
Ora sono ormai otto mesi che sono passato a concentrarmi su Python... ed è un innamoramento. Davvero, un linguaggio semplice ma potente, che quasi ti obbliga a scrivere del codice leggibile e che, se e quando serve, permette di integrare codice scritto in altri linguaggi (es. C) per gestire le parti che hanno bisogno di maggior velocità o diversa funzionalità.
Ho anche dato un'occhiata a Ruby, e sembra ben fatto pure quello.
In finale per te direi: continua con il Java, che è un linguaggio abbastanza diffuso.
Ma se vuoi iniziare con un altro linguaggio 'di ampie vedute', ovvero adatto a fare un po' tutto, io ti consiglio caldamente Python. Gira su tantissime architetture, e nella sua versione Jython, anche se un po' arretrata, permette di usare Jython attraverso la VM Java (è in pratica un compilatore-interprete Python per Java, da quanto ho capito; io non lo uso granchè) e di accedere a librerie per tale linguaggio. Inoltre è ora uscita la prima beta di IronPython, ovvero in pratica di Python.NET, che permette di accedere a tutte le librerie del .NET framework, e già questo è tutto dire! Poi c'è Twisted che per il networking è eccezionale, una varietà (forse pure eccessiva) di web framework, stanno venendo fuori pure alcuni ORM molto carini (sqlobject e sqlalchemy) e un db ad oggetti davvero promettente (axiom). Con Python ci puoi fare di tutto e di più, ed in poco tempo.
Al contrario, se senti che Java ha già soddisfatto la tua sete di oggetti e alto livello, allora puoi lanciarti su C e C++. Ma attento a non farti male
:cool:
Purtroppo è impossibile controbbatere con una presona che ha un unico filo logico e non accetta prediche da nessuno.
Bhe come si dice, la ragione la diamo ai... ma che te l'ho dico a fare, lo sai meglio di me. :D
Abbandona questa linea perdente, e' perfettamente possibile controbattere con me, basta avere degli argomenti. Fino ad ora hai solo dimostrato di rivolgerti con insulti (l'ultimo post) e mettendo in dubbio la mia professionalita', di argomenti pochi e mal posti. Su questo piano non c'e' spazio per discussione, perche' e' evidente che non sei in grado di sostenerla sul piano civile.
Il fatto che il C sia la 'base' di molti altri linguaggi di programmazione (nel senso che l'interprete o il compilatore è scritto in C) è rilevante fino ad un certo punto. La scelta del C è fatta per una questione di velocità, non certo perchè uno lo voglia, e il fatto che l'implementazione sia basata su C conta fino ad un certo punto, es. grandezza degli interi, precisione dei float, e probabilmente poco altro. Se stanno creando PyPy (un interprete Python scritto in Python) ci sarà un motivo!
Il C non e' neppure la base di alcun linguaggio. Se questo e' l'argomento, allora dovremmo tutti studiare BCPL (la base del C), oppure l'assembly (la base di nuovo del C). Ma come ci hai dimostrato tu iniziare dal C ti ha dato solo difficolta' insormontabili per un novizio, mentre Python ti ha permesso di concentrarti sulla soluzione dei problemi: che poi e' l'essenza della programmazione, risolvere problemi.
AbuJaffa
15-01-2006, 10:55
Abbandona questa linea perdente, e' perfettamente possibile controbattere con me, basta avere degli argomenti. Fino ad ora hai solo dimostrato di rivolgerti con insulti (l'ultimo post) e mettendo in dubbio la mia professionalita', di argomenti pochi e mal posti. Su questo piano non c'e' spazio per discussione, perche' e' evidente che non sei in grado di sostenerla sul piano civile.
http://mastrocane.altervista.org/_altervista_ht/nono.gif
Ma che dici? Ma di cosa stai parlando? Insulti??? Purtoppo la professionalità, o presunta tale, ti ha dato alla testa. http://mastrocane.altervista.org/_altervista_ht/pazzo.gif Se ti riguardi i post precedenti http://mastrocane.altervista.org/_altervista_ht/scritto.gif capirai che ho sempre risposto in maniera tecnica e pulita. Hai tirato in ballo tu la tua professionalità e io con ironia ho risposto, collegandomi ai post precedenti ma senza intenzione alcuna di offenderti. Te l'ho ripeto: la tua collericità ha degenerato il tutto.http://mastrocane.altervista.org/_altervista_ht/ciao.gif
http://mastrocane.altervista.org/_altervista_ht/nono.gif
Ma che dici? Ma di cosa stai parlando? Insulti??? Purtoppo la professionalità, o presunta tale, ti ha dato alla testa. http://mastrocane.altervista.org/_altervista_ht/pazzo.gif Se ti riguardi i post precedenti http://mastrocane.altervista.org/_altervista_ht/scritto.gif capirai che ho sempre risposto in maniera tecnica e pulita. Hai tirato in ballo tu la tua professionalità e io con ironia ho risposto, collegandomi ai post precedenti ma senza intenzione alcuna di offenderti. Te l'ho ripeto: la tua collericità ha degenerato il tutto.http://mastrocane.altervista.org/_altervista_ht/ciao.gif
Questo e' il tuo primo post:
Non ho parole, solo parolacce. :banned:
Una risposta certamente tecnica e pulita. Ma non ero io il collerico? :)
Saluti. In questo forum non amiamo i troll e chi scrive solo per provocare in mancanza di argomenti.
AbuJaffa
15-01-2006, 11:09
Questo e' il tuo primo post:
Una risposta certamente tecnica e pulita. Ma non ero io il collerico? :)
Saluti. In questo forum non amiamo i troll e chi scrive solo per provocare in mancanza di argomenti.
Guarda, non è un problema mio se non sai apprezzare l'ironia. Non sono mai stato sgarbato con qualcuno era solo un modo per dire che non apprezzavo la tua risposta precedente. Se ti ostini a ragionare così continua pure.
Ricorda che un po di umiltà non guasta mai. :O
Guarda, non è un problema mio se non sai apprezzare l'ironia. Non sono mai stato sgarbato con qualcuno era solo un modo per dire che non apprezzavo la tua risposta precedente. Se ti ostini a ragionare così continua pure.
Ricorda che un po di umiltà non guasta mai. :O
Sono d'accordo. Abbi l'umilta' di capire che quando finisci gli argomenti non devi passare agli insulti (e poi trincerarti dietro all'ironia che so apprezzare quando e' tale). Ora, visto che e' chiaro che stai solo facendo una tua guerricciola personale stantia e sei qui solo per provocare, puoi smetterla qui che su questo forum non amiamo i troll? Ti ringrazio per la gentile collaborazione.
Ti lascio l'ultima parola visto che ci tieni tanto :)
ok grazie ad entrambi per aver espresso le proprie idee
Ora, non sono il moderatore di sezione e non ne avrei il diritto, ma penso che ci si può fermare qui o sbaglio? ;)
Saluti
^TiGeRShArK^
15-01-2006, 14:20
E' questo il punto. Si impara un linguaggio ad alto livello e nel momento in cui si avrà a che fare con (per esempio) il c, non si riuscira ad applicarsi totalmente poichè ci si era abituati alle "comodità" offerte dall'alto livello. Se si parte dalla parte opposta capirai che la cosa è molto differente.
allora...
rispondi ad una domanda semplicissima....
è piu' facile imparare il C per una persona che non sa niente di programmazione o per qualcuno che già conosce decentemente linguaggi di alto livello???
Sentite un po', voi due (abujaffa e fek): questo thread sta sviando parecchio. Se avete delle rimostranze vi secca parecchio farvele in PVT?!? Io sono molto interessato ai confronti fra i linguaggi e ai pro & contro di ogni 'scuola di pensiero', ma ormai si sta discutendo di più di convinzioni personali.
Non facciamo casino per queste cose... ognuno la pensa come vuole, e verosimilmente ognuno crede che il suo percorso personale è probabilmente il migliore, ma non per questo bisogna arrivare a questi livelli di litigiosità gratuita.
Sentite un po', voi due (abujaffa e fek): questo thread sta sviando parecchio. Se avete delle rimostranze vi secca parecchio farvele in PVT?!? Io sono molto interessato ai confronti fra i linguaggi e ai pro & contro di ogni 'scuola di pensiero', ma ormai si sta discutendo di più di convinzioni personali.
E' esattamente cio' che gli e' stato chiesto infatti.
Non facciamo casino per queste cose... ognuno la pensa come vuole, e verosimilmente ognuno crede che il suo percorso personale è probabilmente il migliore, ma non per questo bisogna arrivare a questi livelli di litigiosità gratuita.
Il mio percorso personale e' stato appunto questo, vent'anni fa quando ho imparato a programmare in C, poi in C++, poi Java e compagnia cantante. So che ad un certo punto ho dovuto disimparare tutti gli idiomi imparati in C e rifare la fatica da zero: sostanzialmente ho dovuto imparare a programmare nuovamente, quasi dalle basi. Imparati gli errori, non si puo' far altro che consigliare agl'altri di evitarli. Il mio percorso personale e' stato il peggiore quindi lo sconsiglio.
^TiGeRShArK^
15-01-2006, 16:05
Il mio percorso personale e' stato appunto questo, vent'anni fa quando ho imparato a programmare in C, poi in C++, poi Java e compagnia cantante. So che ad un certo punto ho dovuto disimparare tutti gli idiomi imparati in C e rifare la fatica da zero: sostanzialmente ho dovuto imparare a programmare nuovamente, quasi dalle basi. Imparati gli errori, non si puo' far altro che consigliare agl'altri di evitarli. Il mio percorso personale e' stato il peggiore quindi lo sconsiglio.
quoto in pieno :O
e io addirittura ho iniziato col basic prima del C... quindi il mio percorso è stato ancora peggiore :D
E' questo il punto. Si impara un linguaggio ad alto livello e nel momento in cui si avrà a che fare con (per esempio) il c, non si riuscira ad applicarsi totalmente poichè ci si era abituati alle "comodità" offerte dall'alto livello. Se si parte dalla parte opposta capirai che la cosa è molto differente.
No, e' necessariamente differente.
Se passando dal Python al C devo imparare a destreggiarmi tra gestione della memoria e cast impliciti (per fare un esempio), facendo il percorso inverso mi trovo nella condizione di dover imparare concetti di programmazione totalmente nuovi.
Peggio, la maggior parte di chi fa questo passaggio tende ad usare il nuovo linguaggio come usava il C, scrivendo codice contorto e peggiore di quel che potrebbe produrre.
Ciao, ho letto tutto il thread e volevo dire anche io alcune cose.
Secondo me la scelta del linguaggio (o linguaggi) di programmazione da imparare dipende molto dagli obiettivi che ci si pone e da quello che si vuole fare.
Mi spiego meglio: se uno vuole lavorare nel campo dell'informatica come programmatore e proprio per questo magari inizia un corso di studi per diventare perito informatico o ancora (a livello di laurea) ingegnere informatico ... beh, più linguaggi di programmazione riesce ad imparare e meglio sarà per lui e per il suo futuro di programmatore.
Se invece l'obiettivo è quello di sviluppare una qualche applicazione in un qualche linguaggio senza voler o dover essere un "professionista" nel settore ... beh, la cosa è diversa. In questi casi si cerca la soluzione più semplice, intuitiva ed immediata per realizzare quanto desiderato.
È stato fatto l'esempio (reale oltretutto) di un avvocato che, una volta imparato il Visual Basic, ha realizzato un programma di gestione degli studi legali completo. Nulla di male, assolutamente! È ovvio che questa persona non è un professionista nel campo dell'informatica e non ha certamente l'interesse a diventarlo!
A questo punto mi ricollego al post iniziale di dna_05, che si è iscritto a Ingegneria Informatica e chiede quale altro linguaggio imparare oltre a Java.
Visto che il suo interesse principale è appunto l'informatica io personalmente gli consiglierei di cercare di imparare più linguaggi possibili, ovviamente secondo i suoi tempi e le sue possibilità.
Quindi ci si può porre la seguente domanda: quanti e quali linguaggi dovrebbe conoscere un buon programmatore? Tutti ovviamente non è possibile. Ci sono una marea di linguaggi e molti sono anche abbastanza "esotici" o di "nicchia" secondo me. Come ad esempio il "Rexx" o il "Lisp" (con questo non voglio denigrarli!).
Per la mia personale esperienza è meglio partire dal basso, dalle basi. Solo così si può passare a livelli più elevati o a cose più complesse.
Quindi ad esempio tra iniziare con il "C" o con il "C#", io direi il primo. Questo senza nulla togliere al secondo! Ma il C è la base per tante cose e per tanti sistemi operativi.
Io dopo il diploma ho fatto 2 corsi di specializzazione ed è stato in questi corsi che ho imparato il linguaggio "C". Prima conoscevo solo il Basic e l'Assembly (Z80 e molto bene 80x86).
Imparare il "C" nei corsi per me è stato una vera pacchia, praticamente ho vissuto di rendita per tutto il corso di "C". Questo perché avevo già una conoscenza molto buona dell'assembly e per me era (ed è) banale capire una istruzione assembly come MOV EAX,[ECX+EDX*4].
Mentre alcuni altri miei compagni di corso (che non avevano conoscenze/esperienze precedenti di programmazione) faticavano molto a capire i concetti sugli indirizzi, sui puntatori, ecc... o magari non capivano bene cosa è lo "stack".
Un altro esempio: se uno non conosce l'algebra booleana, faticherà a capire perché in "C" (e linguaggi simili) dati due valori int a=12, b=56; l'espressione a & b è equivalente e fornisce lo stesso risultato di ~(~a | ~b). Certo ... l'esempio è stupido, poiché nessuno userebbe la seconda espressione ma semmai la prima!!
Mi spiego meglio: se uno vuole lavorare nel campo dell'informatica come programmatore e proprio per questo magari inizia un corso di studi per diventare perito informatico o ancora (a livello di laurea) ingegnere informatico ... beh, più linguaggi di programmazione riesce ad imparare e meglio sarà per lui e per il suo futuro di programmatore.
Questo e' un ottimo consiglio.
Quindi ad esempio tra iniziare con il "C" o con il "C#", io direi il primo. Questo senza nulla togliere al secondo! Ma il C è la base per tante cose e per tanti sistemi operativi.
E' proprio da qui che nasce la confusione: il C e' (era) la base per alcuni sistemi operativi ma non e' la base della programmazione. Tutto quello che impari scrivendo in C (a parte pochi dettagli tipo la sintassi di un if), va dimenticata nel momento in cui si passa ad un livello di sviluppo superiore. Il C e' la base da imparare (meglio il C++) se devo scrivere un sistema operativo, ma se devo scrivere quasi qualunque altro software, imparare il C non mi serve, anzi, mi danneggia.
Facciamo degli esempi concreti.
Ritorno di condizioni d'errore. In C imparo a scrivere questo:
if (condition0)
{
// cleanup code
return -1;
}
if (condition1)
{
// cleanup code
return -1;
}
O peggio:
if (condition0)
{
goto cleanup;
}
if (condition1)
{
goto cleanup;
}
cleanup:
// cleanup code
return -1;
Il C non mette a disposizione nulla per fare una cosa simile in maniera piu' mantenibile, diciamo piu' corretta secondo varie metriche.
Ora, in un linguaggio qualsiasi ad alto livello, scrivo questo:
try
{
if (cond0)
throw exception;
if (cond1)
throw exception;
}
catch (exception)
{
// cleanup code
throw;
}
Quello sopra e' pseudo codice.
Ora, tutti sappiamo che la seconda versione e' sempre preferibile alla prima (a meno di documentate esigenze prestazionali).
Ora, imparando il linguaggio ad alto livello, in quella situazione arrivo facilmente a rifattorizzare le condizione e scrivere questo:
try
{
object.doSomething();
}
catch (exception)
{
// cleanup code
throw;
}
Il throw implicito in doSomething(), un metodo polimorfico. Ora, qualcuno mi spiega arrivando dal C che cosa mi aiuta a capire che l'ultima versione e' sempre preferibile alla prima? Piuttosto, devo imparare che la prima cosa non si fa, ma si fa l'ultima. Ovvero, devo disimparare quello che ho imparato, e imparare concetti totalmente nuovi.
E come questo esempio se ne possono fare decine.
Secondo la mia personalissima e modestissima opinione, il fatto che un linguaggio di alto livello come Java o C# metta a disposizione un costrutto try/catch o che non contempli affatto l'aritmetica dei puntatori ... è una semplificazione ad esclusivo vantaggio per il programmatore a livello di produttività e sicurezza del codice. Ma non è la "base" della programmazione.
È ovvio che se uno ha sempre usato try/catch in Java/C# e passa al "C" dovrà disimparare il try/catch e imparare a fare degli if seguiti da dei return qualcosa per indicare un errore.
Stessa cosa al contrario: se uno ha sempre fatto una sfilza di if (...) return ERRORE_XXX;, passando a Java/C# dovrà disimparare questo metodo ed imparare il costrutto try/catch e la gerarchia delle classi delle eccezioni.
^TiGeRShArK^
15-01-2006, 18:02
il C base non è un linguaggio ad oggetti.
imparare un linguaggio che non sia ad oggetti per uno che sta iniziando con la programmazione è inutile dato ke poi dovrà imparare il paradigma ad oggetti se vorrà programmare seriamente..
a meno ke nn si debba dedicare alla programmazione di kernel o di driver.....
nuovamente i miei ringraziamenti a tutti..
il mio obiettivo fondamentale non quello di fare il programmatore professionista.. (la laurea specialistica è ingegneria dell'automazione, nella quale comunque è necessaria la conoscenza della programmazione ovviamente)
certo è che non vorrei limitarmi a fare programmi che trovano l'area di una sfera..
vorrei riuscire ad avere un concetto globale della programmazione e conoscere diciamo almeno 3 linguaggi per poter creare applicazioni utili a me ed ad altri..
e sinceramente, da quello che si evince dalle vostre parole, credo che dopo 2 -3 giorni passati sul C lascerei perdere perchè tanto non credo di averne così tanto bisogno..
piccolo appunto: nella mia facoltà e soprattutto ai corsi di JAVA noto che chi ha esperienze di programmazione soprattutto di C non è avvantaggiato rispetto agli altri..
uno sapeva scrivere benissimo in C e ha preso 27.. io conosco solo un po' di pascal e ho preso 30..
È ovvio che se uno ha sempre usato try/catch in Java/C# e passa al "C" dovrà disimparare il try/catch e imparare a fare degli if seguiti da dei return qualcosa per indicare un errore.
E' proprio questo il punto. Passando da Java a C non devo disimparare l'idioma associato al try/catch perche' quello e' il modo corretto di risolvere quel problema. Devo imparare un altro idioma da usare solo in C, perche' il linguaggio non mette a disposizione strumenti migliori. Java/C# insegnano la base della programmazione, il C insegna invece a scrivere codice di bassa qualita'.
Secondo la mia personalissima e modestissima opinione, il fatto che un linguaggio di alto livello come Java o C# metta a disposizione un costrutto try/catch o che non contempli affatto l'aritmetica dei puntatori ... è una semplificazione ad esclusivo vantaggio per il programmatore a livello di produttività e sicurezza del codice. Ma non è la "base" della programmazione.
La base della programmazione non coincide con la programmazione di basso livello. Poteva esserlo tempo fa, quando per programmare era praticamente indispensabile tenere a mente le caratteristiche della macchina per la quale si andava a compilare il codice; ora, con delle eccezioni, non è più così rilevante
Secondo me la scelta del linguaggio (o linguaggi) di programmazione da imparare dipende molto dagli obiettivi che ci si pone e da quello che si vuole fare.
Sacrosanto.
Per la mia personale esperienza è meglio partire dal basso, dalle basi. Solo così si può passare a livelli più elevati o a cose più complesse.
Contraddici un po' l'affermazione sacrosanta di prima. Ingegneria informatica non è informatica. Un ingegnere informatico non è un programmatore, e dovrebbe prima di tutto trovare soluzioni per problemi. Trovare il linguaggio adatto per risolvere un certo problema è parte del problema stesso, perchè non necessariamente il problema sarà di ordine prestazionale.
Un buon ingegnere informatico dovrà necessariamente, nella mia opinione, arrivare ad avere almeno un'infarinatura di C e di assembly (almeno x86), ma non sarei così certo che questo debba essere il passo successivo per dna_05. Oltretutto ora come ora il 'mercato' si sta orientando sempre di più alle macchine virtuali, ai linguaggi dinamici ecc. ecc. (basta vedere MS con il suo .NET framework e la volontà di compilare l'intero Windows di prossima generazione per la sua VM .NET!) - segno di una voglia sempre maggiore di produttività nella programmazione, più che di velocità. Il C sarà sempre l'ultima risorsa, secondo me, da prendere in considerazione quando nessun altro linguaggio può dare le prestazioni necessarie, ma essendo un linguaggio fortemente orientato alla macchina piuttosto che all'uomo non è esplicitamente adatto praticamente a nessun compito. Se non parliamo di prestazioni, credo che si possa sempre trovare un linguaggio migliore del C per risolvere un qualsiasi problema.
Ciao!
crick_pitomba
15-01-2006, 19:30
ho letto un po' i vari post e sono rimasto di stucco.
francamente ho notato che tutti danno importanza al linguaggio di programmazione mentre le cose più importanti sono l'algoritmo e la rapidità di sviluppo.
imho, se si vuole imparare a programmare è meglio leggere documentazione sugli algoritmi e sulle strutture dati, eventualmente sull'ottimizzazione del codice piuttosto che scannarsi su quale sia il linguaggio di programmazione migliore.
la velocità del linguaggio è significativa soltanto in pochissimi casi.
posso scrivere un algoritmo di ordinamento in assembler puro utilizzando il bubble sort, ma sarà sempre più lento di un algoritmo scritto in visual basic che utilizza il mergesort o il quick sort (e al crescere della dimensione dell'array il divario aumenta, come ben saprete).
dna_05 può tranquillamente imparare l'assembler del pentium ma se deve costruire un applicazione distribuita o un programma di gestione dati ha poca importanza: in entrambi i casi non costruirà il core dell'applicazione, ma più realisticamente utilizzerà delle librerie professionali che svolgono il lavoro per lui.
per questo sono d'accordo con quelli di voi che consigliano di cominciare dal linguaggio di programmazione che consente di compiere meno errori durante la programmazione per concentrarsi sul risultato e non su un banale buffer overflow.
Personalmente consiglio, come hanno fatto molti, di cominciare ad usare un linguaggio di programmazione ad oggetti e di usare quante più librerie è possibile in modo da abituarsi ai concetti di riusabilità del codice e di utilizzo delle librerie.
Sacrosanto.
Un buon ingegnere informatico dovrà necessariamente, nella mia opinione, arrivare ad avere almeno un'infarinatura di C e di assembly (almeno x86), ma non sarei così certo che questo debba essere il passo successivo per dna_05. Oltretutto ora come ora il 'mercato' si sta orientando sempre di più alle macchine virtuali, ai linguaggi dinamici ecc. ecc. (basta vedere MS con il suo .NET framework e la volontà di compilare l'intero Windows di prossima generazione per la sua VM .NET!) - segno di una voglia sempre maggiore di produttività nella programmazione, più che di velocità. Il C sarà sempre l'ultima risorsa, secondo me, da prendere in considerazione quando nessun altro linguaggio può dare le prestazioni necessarie, ma essendo un linguaggio fortemente orientato alla macchina piuttosto che all'uomo non è esplicitamente adatto praticamente a nessun compito. Se non parliamo di prestazioni, credo che si possa sempre trovare un linguaggio migliore del C per risolvere un qualsiasi problema.
Ciao!
Perfettamente d'accordo, personalmente ricorro al C solo quando devo ottenere la prestazione pura, quando per ragioni di 'forza maggiore' devo avvicinarmi alla 'macchina'.
Ho scritto algoritmi in C che non sono mai riuscito ad eguagliare in termini velocistici con nessun altro lingiaggio che conosco, probabile che sia anche colpa mia naturalmente. :)
cdimauro
18-01-2006, 11:18
Poi ho ripreso a programmare, ed essendo interessato al mondo web ho scelto PHP. Linguaggio non male ma che ha il difetto, secondo me, di tendere all'incasinato e all'illeggibile. Modificare un programma fatto da altri è spesso e volentieri un incubo.
Ora sono ormai otto mesi che sono passato a concentrarmi su Python... ed è un innamoramento. Davvero, un linguaggio semplice ma potente, che quasi ti obbliga a scrivere del codice leggibile e che, se e quando serve, permette di integrare codice scritto in altri linguaggi (es. C) per gestire le parti che hanno bisogno di maggior velocità o diversa funzionalità.
Condivido in toto anche il resto del messaggio.
Io lavoro quasi solamente in Python ormai: tempi di sviluppo ridotti all'osso e codice facile da leggere e mantenere. Un must per un programmatore che deve lavorare. :D.
Per quanto riguarda la programmazione di siti web, ho trovato in Python/mod_python (mod_python da parecchio tempo è integrato in Apache) + ClearSilver (un framework di "template") un'accoppiata eccezionale, che ti consiglio: vedrai che dimenticherai MOLTO velocemente (e soprattutto piacevolmente :D) la brutta esperienza che hai avuto con PHP. ;)
ihmo
siamo realisti se uno è niubbo (come me) imparare a programmare in c da soli è una bella sfida.
il mio percorso ideale è il seguente
1°) Visual basic (troppo bistrattato nn sarà puro come il c o c++ ma se uno lo sà programmare... vedi libri di balena)
2°) java e se hai voglia python
3°) c++ o c#
4°) per programmare il "metallo" c e asm (tra qualche anno se ne avrai ancora voglia)
Ciao
moteuchi83
19-01-2006, 10:28
Gusti personali:
Conosco C,C++,Java,PHP,ASP,HTML,ASSEMBLY
ma come il VISUL BASIC.NET NON CE N'E' ! ! ! :cool:
^TiGeRShArK^
19-01-2006, 13:00
preferisco il python al VB.NET :O
cdimauro
20-01-2006, 09:10
Gusti personali:
Conosco C,C++,Java,PHP,ASP,HTML,ASSEMBLY
ma come il VISUL BASIC.NET NON CE N'E' ! ! ! :cool:
"Don't underestimate the power of Python" :D
AnonimoVeneziano
20-01-2006, 11:09
Ho letto solo la prima pagina del thread e devo dire che mi sto rendendo conto che , in fin dei conti , quello che dice fek è la verità :)
Doversi concentrare su cose a basso livello distoglie l'attenzione da ciò che è più importante, ossia il metodo.
Programmando in C++ noto quanto sia fondamentale dividere tutto in oggetti, fare eredità per modulizzare il più possibile le varie classi, in modo da non impazzire quando si cerca di mettere tutto insieme o di fare una semplice modifica dopo che tutto è stato messo insieme. A quanto ne so (anche se non l'ho mai provato) il C# è ancora meglio (molto meglio) sotto questo aspetto. Tutti ne parlano benissimo e sono sicuro che c'è un motivo. I puntatori , ahime, sono il male e anche il C++ , nonostante sia migliorato notevolmente nella semplicità della gestione degli oggetti dinamici rispetto al C, ne è pieno zeppo. Praticamente in C/C++ tutto è un puntatore quando in C# e in altri linguaggi di più alto livello sono considerati "Unsafe Programming" .
Credo che i puntatori siano la prima sorgente di bug di un qualsiasi programma scritto in un linguaggio che ne fa uso. Già è un casino creando i piccoli programmini stupidi che faccio io, mi immagino in progetti complicati dove decine di persone devono lavorare insieme con una certa sinergia (ad esempio dove lavora "fek") quante bestemmie devono scattare per via di un puntatore che non funziona come ci si aspettava e che non si riesce ad isolare :)
Purtroppo è anche vero che praticamente tutte le librerie che esistono a questo mondo esistono per C/C++, ma non sempre esistono bindings per C# o Java.
Approposito, qualcuno sa qualcosa a riguardo di bindings di QT per C# ?? Magari per Mono/Unix?
Ciao
clasprea
20-01-2006, 17:03
Se posso dire la mia, anche se non sono una programmatrice (madò come suona brutto) professionista ma sto ancora studiando, secondo me per partire nisognarebbe di tutto capire cosa si vuole realizzare con un linguaggio.
Se il nostro amico vuole comiciae a studiare qualcosa per conto suo e , allo stesso tempo, deve creare una pagina web che gli faccia determinate cose, non vedo perchè non unire l'utile al dilettevole. Se anche il nostro amico fosse la persona più volenterosa del modno, di certo studiare qualcosa che gli è utile in quel momento lo stimolerà d imparare meglio i concetti.
Se si mettesse ad imparare il C (o java, o phyton.... è un esempio!) probabilmente non avendo progetti pratici in mente, e avendo nel contempo millemila esami da fare, si scoccierà molto prima e sarà tentato di lasciar perdere tutto e farsi una passeggiata al parco anzichè stare davanti ad un pc a programmare!
Ovvio che è la mia opinione, che si basa sulla mia convinzione personale che bisogna imparare a programmare per far fare ad una macchina quello che ci serve in quel momento, e non per fare i fighi (NON mi sto riferendo a nessuno in particolare) e dire "io conosco 100 linguaggi di programmazione", se poi te ne serviva solo uno! :D
AnonimoVeneziano
20-01-2006, 20:18
Se posso dire la mia, anche se non sono una programmatrice (madò come suona brutto) professionista ma sto ancora studiando, secondo me per partire nisognarebbe di tutto capire cosa si vuole realizzare con un linguaggio.
Se il nostro amico vuole comiciae a studiare qualcosa per conto suo e , allo stesso tempo, deve creare una pagina web che gli faccia determinate cose, non vedo perchè non unire l'utile al dilettevole. Se anche il nostro amico fosse la persona più volenterosa del modno, di certo studiare qualcosa che gli è utile in quel momento lo stimolerà d imparare meglio i concetti.
Se si mettesse ad imparare il C (o java, o phyton.... è un esempio!) probabilmente non avendo progetti pratici in mente, e avendo nel contempo millemila esami da fare, si scoccierà molto prima e sarà tentato di lasciar perdere tutto e farsi una passeggiata al parco anzichè stare davanti ad un pc a programmare!
Ovvio che è la mia opinione, che si basa sulla mia convinzione personale che bisogna imparare a programmare per far fare ad una macchina quello che ci serve in quel momento, e non per fare i fighi (NON mi sto riferendo a nessuno in particolare) e dire "io conosco 100 linguaggi di programmazione", se poi te ne serviva solo uno! :D
Le donne capiscono sempre tutto al volo :D
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.