View Full Version : consigli programmazione
vorrei cominciare a imparare programmazione.
pian piano vorrei capire e studiare i principali linguaggi,anche web
considerando che sulla programmazione sono totalmente a digiuno potreste darmi delle dritte da dove cominciare ?
grazie
cdimauro
06-09-2012, 23:24
Dalla mia firma. ;)
penso dovresti riflettere meglio sui tuoi obiettivi, qual è il tuo target?
parlavi di web, bene ma front end o back end?
se ci dai più informazioni riusciamo ad indirizzarti meglio
cdimauro
08-09-2012, 09:57
Dice di essere totalmente a digiuno. Per il momento fagli imparare a programmare, ed eventuali obiettivi se li porrà dopo. ;)
Dice di essere totalmente a digiuno. Per il momento fagli imparare a programmare, ed eventuali obiettivi se li porrà dopo. ;)
Secondo me invece è importante capire almeno cosa si vuole fare, per capire su quale linguaggio orientarsi,altrimenti se uno vuole programmare e basta indipendentemente da linguaggi ecc potrebbe addirittura orientarsi su uno pseudo-linguaggio
per ora obiettivi sinceramente non ne ho, se non arricchire la mia conoscenza sul mondo dell'informatica.
per ora sto seguendo ( purtroppo con poco tempo disponibile) un videocorso su yout*** se freepascal, tanto per prendere confidenza
ingframin
27-09-2012, 13:42
per ora obiettivi sinceramente non ne ho, se non arricchire la mia conoscenza sul mondo dell'informatica.
per ora sto seguendo ( purtroppo con poco tempo disponibile) un videocorso su yout*** se freepascal, tanto per prendere confidenza
Onestamente partire dal pascal mi apre un'ottima scelta. :)
Anche se non e' figo e non va piu' di moda rimane un ottimo linguaggio e sicuramente e' molto molto didattico.
wizard1993
27-09-2012, 14:40
Onestamente partire dal pascal mi apre un'ottima scelta. :)
Anche se non e' figo e non va piu' di moda rimane un ottimo linguaggio e sicuramente e' molto molto didattico.
mi trovo d'accordo con te
Cait Sith
28-09-2012, 23:52
Secondo me conviene imparare a programmare in C. Da un punto di vista professionale il pascal praticamente non conta niente.
Dicono che il pascal sia didattico, e in effetti anch'io l'ho dovuto studiare alle superiori, con il risultato che poi all'università ho dovuto imparare il C.
Onestamente avrei preferito partire direttamente dal C, dato che poi il pascal non l'ho mai più usato.
Il vantaggio del C è che è un linguaggio molto più diffuso e usato del pascal (e di molti altri linguaggi), e quindi è spendibile nel mondo del lavoro. Inoltre la sua sintassi base è ripresa da altri linguaggi (C++,C# e java).
Tutto sommato i concetti chiave (tipi dati, strutture di controllo, funzioni) non mi sembrano così diversi da quelli del pascal.
Più che altro devi trovare un testo chiaro e scritto bene per principianti, eventualmente in italiano se non mastichi molto l'inglese. Sicuramente, se non segui un corso con un laboratorio, oltre che studiare su un libro devi fare degli esercizi e cimentarti di persona a scrivere programmi da solo, perchè guardare e capire gli esempi non basta.
Ovviamente questa è solo la mia opinione, data su una questione che a mio avviso è abbastanza soggettiva.
ingframin
29-09-2012, 09:07
Il vantaggio del C è che è un linguaggio molto più diffuso e usato del pascal (e di molti altri linguaggi), e quindi è spendibile nel mondo del lavoro. Inoltre la sua sintassi base è ripresa da altri linguaggi (C++,C# e java).
http://static.fjcdn.com/pictures/Facepalm_b69a84_2901283.jpg
Casomai sono C++, C# e Java ad aver ripreso la sintassi del C. Comunque sia si, anche il C potrebbe essere un'ottima scelta. Io l'ho studiato dal Kernighan e Ritchie (anche autori del linguaggio). Il libro si intitola "Il linguaggio C", edito in Italia da Pearson Education, prezzo intorno ai 30€.
Parte davvero dalle basi ed è un ottimo libro.
clockover
30-09-2012, 08:45
http://static.fjcdn.com/pictures/Facepalm_b69a84_2901283.jpg
Casomai sono C++, C# e Java ad aver ripreso la sintassi del C.
Ė proprio quello che ha detto :D
ingframin
30-09-2012, 12:02
Ė proprio quello che ha detto :D
Ok, sono un rincoglionito :cry:
Perdona il fraintendimento :stordita:
http://static.fjcdn.com/pictures/Facepalm_b69a84_2901283.jpg
Casomai sono C++, C# e Java ad aver ripreso la sintassi del C. Comunque sia si, anche il C potrebbe essere un'ottima scelta. Io l'ho studiato dal Kernighan e Ritchie (anche autori del linguaggio). Il libro si intitola "Il linguaggio C", edito in Italia da Pearson Education, prezzo intorno ai 30€.
Parte davvero dalle basi ed è un ottimo libro.
Personalmente ho trovato veramente ostico il K&R per imparare C.
Mi sono affidato a libri molto più facili, in particolare "C Didattica e Programmazione" Al Kelley, Ira Pohl . È chiaro e lineare.
A mio avviso il K&R è un ottimo manuale, non un libro per imparare il C.
Poi chiaro che se devo programmare e non mi ricordo qualcosa guardo il K&R ( ora che ho imparato ).
Se impari il C dopo puoi apprendere facilmente qualsiasi linguaggio, almeno é l'eaperienza che ho avuto
Forse solo quando sono passato agli oggetti ho avuto un minimo di difficoltá
Comunque il bello della programmazione é che se impari concetti fondamentali ed impari a ragionare potrai scrivere in qualsiasi linguaggio
ingframin
04-10-2012, 09:02
Alla fine volere e' potere, il linguaggio di base cambia poco.
Io sono partito col Quick basic sotto dos, un fallito tentativo di C++ al liceo e poi direttamente Java, matlab, C, python in questo ordine a partire dall'universita' in poi.
Una votla capito il meccanismo cambiare linguaggio e' abbastanza "semplice". Il problema a quel punto non e' piu' il linguaggio in se ma "i trucchi del mestiere" che per ogni linguaggio/ambiente si imparano con la pratica negli anni.
In ogni caso all'inizio che sia pascal o C fa poca differenza, secondo me.
il K&R è il C in 237 pagine. non è un libro di programmazione, è un libro di C. se devi imparare a programmare è una cosa, se devi imparare il C è il libro definitivo.
Guarda, io alle superiori avevo già programmato qualcosa in Visual Basic. Si parla di programmazione base, con i costrutti fondamentali.
Tuttavia, all'università, al primo corso di programmazione il professore ha dato il K&R come riferimento. L'ho guardato e e l'ho trovato ottimo come manuale, ma pressochè inutile e troppo tecnico per imparare il C ( da 0 ). Ho dovuto masticare parecchio C prima di riuscire a capire realmente il significato dei costrutti e dei prototipi che c'erano scritti sul K&R.
È stato un po' come avere un vocabolario completissimo su una lingua sconosciuta, senza però sapere come usarlo. :p
Se impari il C dopo puoi apprendere facilmente qualsiasi linguaggio, almeno é l'eaperienza che ho avuto
Forse solo quando sono passato agli oggetti ho avuto un minimo di difficoltá
Vero.
Io ho intrapreso la strada degli oggetti con Java e c'ho messo veramente tanto a capirne il funzionamento.
All'inizio l'ho trovato veramente intricato e illogico.
In ogni caso all'inizio che sia pascal o C fa poca differenza, secondo me.
Personalmente ritengo sia meglio fare C che Pascal. A che ti serve Pascal dal punto di vista lavorativo? :D
ingframin
04-10-2012, 18:13
CUT
Personalmente ritengo sia meglio fare C che Pascal. A che ti serve Pascal dal punto di vista lavorativo? :D
Eh ma che ne sappiamo noi che qtaps80 vuol fare il programmatore di mestiere?
Se e' per lavoro a sto punto meglio Java o C# o Objective C (finche' va di moda).
Per il resto comunque concordo con te, eh... C e' sicuramente un ottimo linguaggio per partire e ti mette subito a contatto con la macchina ma anche con cose di alto livello.
E poi assieme a Python e' uno dei miei linguaggi preferiti :D
Tra l'altro e' di nuovo in testa all'indice TIOBE!
Vincenzo1968
04-10-2012, 20:02
...
Tra l'altro e' di nuovo in testa all'indice TIOBE!
:yeah: :winner: :yeah:
Alla fine volere e' potere, il linguaggio di base cambia poco.
Io sono partito col Quick basic sotto dos, un fallito tentativo di C++ al liceo e poi direttamente Java, matlab, C, python in questo ordine a partire dall'universita' in poi.
Una votla capito il meccanismo cambiare linguaggio e' abbastanza "semplice". Il problema a quel punto non e' piu' il linguaggio in se ma "i trucchi del mestiere" che per ogni linguaggio/ambiente si imparano con la pratica negli anni.
In ogni caso all'inizio che sia pascal o C fa poca differenza, secondo me.
ma solo io ho sono così vecchio da aver iniziato con il basic e pure con tutte le keyword del linguaggio come shorcut da tastiera?
Imho per uno a digiuno completo iniziare con il c è difficile il debugging in c è sempre qualcosa di osceno, imho visto che alla fine lo scopo iniziale della programmazione è risolvere un problema complesso scomponendolo in n problemi più semplici per me si potrebbe iniziare tranquillamente pure dal vba, cosa che ho visto pure fare in qualche scuola, ha un ottimo debugger ed è una tra le sintassi più semplici e lineari che ho mai visto
Quando avrà preso confidenza poi potrà scegliere il linguaggio più adatto :D
ma solo io ho sono così vecchio da aver iniziato con il basic e pure con tutte le keyword del linguaggio come shorcut da tastiera?
Io ho iniziato da VB 6 :D
Secondo me fare Basic e poi C è come non aver fatto nulla. Il salto è abissale a mio avviso.
Io ho iniziato da VB 6 :D
Secondo me fare Basic e poi C è come non aver fatto nulla. Il salto è abissale a mio avviso.
niente di più sbagliato, l'importante all'inizio è entrare nella logica del programma chissenefrega del linguaggio in cui è scritto
ps giovincello :D
niente di più sbagliato, l'importante all'inizio è entrare nella logica del programma chissenefrega del linguaggio in cui è scritto
ps giovincello :D
quindi sarebbe come dire che non serve imparare un linguaggio di programmazione ma serve imparare come deve funzionare un programma?
:doh: se è vero, sono a posto :D !
quindi sarebbe come dire che non serve imparare un linguaggio di programmazione ma serve imparare come deve funzionare un programma?
:doh: se è vero, sono a posto :D !
beh, se sai a memoria tutti i costrutti del C (linguaggio a caso) ma dopo rimani impalato davanti a void main(){ } perchè non sai cosa scrivere non vai molto lontano :D :D :D :D
non è che non serve imparare un linguaggio di programmazione, un linguaggio di programmazione và imparato dopo aver imparato le basi della programmazione, prima procedurale e poi a oggetti, una volta fatto questo si può iniziare a programmare ma la prima parte è trasversale per tutti i linguaggi quindi tanto vale iniziare con qualcosa di facile
ma le basi della programmazione in cosa consistono allora?
mi spiego: se io voglio fare un programma che quando premo un tasto manda una email, per esempio, quali basi mi servono?
cioè se il programma di posta elettronica ce l'ho e la posta la invia già, per poter inviare una email mi basta dire al programma di posta di mandare una email.
o mi sfugge qualcosa?
ingframin
09-10-2012, 21:21
Le basi della programmazione sono essenzialmente logiche. Mandare un'email come dici tu non è dire al pc "compà, manda l'email".
Per mandare l'email devi:
1) Prendere un testo
2) Impacchettarlo nel formato corretto
3) Aggiungere tutti i campi che mancano per il suo corretto indirizzamento,
decodifica, ecc...
4) Bisogna comunicare coi vari provider affinché si prendano cura del messaggio e lo recapitino a destinazione.
Il tutto senza contare il sistema che "capisce" il click del mouse proprio in quel rettangolino di schermo che chiamiamo bottoncino...
Per scrivere tutto questo casino ci vuole la logica della programmazione, il premere il bottoncino per far partire l'email è solo l'interfaccia verso l'utente. Altrimenti basterebbe avere la patente per progettare un automobile ;)
cdimauro
10-10-2012, 09:51
Per cui è meglio che parta con un linguaggio come Python, che consente di concentrarsi sulla risoluzione dei problemi anziché su dettagli di basso livello.
Non è affatto vero che va bene un qualunque linguaggio per iniziare. ;)
[Kendall]
10-10-2012, 10:34
Per cui è meglio che parta con un linguaggio come Python, che consente di concentrarsi sulla risoluzione dei problemi anziché su dettagli di basso livello.
Non è affatto vero che va bene un qualunque linguaggio per iniziare. ;)
Guarda, non sono molto daccordo. Secondo me da questo punto di vista non è tanto il linguaggio il problema, ma il come viene affrontato dal materiale didattico.
Se hai un libro con un linguaggio chiaro, passaggi graduali nè troppo semplici nè troppo dettagliati, ed un autore che sa "come spiegare" è tutta un'altra cosa.
Io sono della scuola del "è tutto molto più facile se hai un buon professore".
In questo caso il professore non c'è, quindi è il libro che "comunica".
Per dirti, io sono due anni che programmo quasi solo in C#, ma mi piace ancora dare una spolveratina ogni tanto agli altri linguaggi che ho studiato.
E proprio dando una letta ad un libro passatomi da un collega sul C++ (C++ Primer Plus di Prata per la cronaca) mi son trovato davvero stupito sulla sua capacità comunicativa e di insegnamento di un linguaggio non banale quale il C++.
cdimauro
10-10-2012, 12:11
A "parità" di docente e/o libro, consiglieresti C++ o Python a uno che deve iniziare da zero?
A "parità" di docente e/o libro, consiglieresti C++ o Python a uno che deve iniziare da zero?
Guarda io non ho mai usato phyton ma tra il c++ e il python per iniziare sicuramente il python (come altri linguaggi di programmazione) il c++ è parecchio ostico all'inizio soprattutto per il debugger che richiede una certa dose di contorsionismo mentale / esperienza per capire la causa di errore, non indica correttamente manco la riga !
per questo come primo linguaggio di solito consiglio vba, (è limitato vero ma per i primi passi non si sente tale limitazione), di solito non devi installare nulla, ha un ottimo debugger e una sintassi il quanto più prolissa e simile alla lingua normale, inoltre usa l'invio come fine istruzione che è comodo per chi inizia (1 riga = 1 istruzione) e può sempre venir utile in futuro se ti serve una macro per excel
poi come ho detto, all'inizio un linguaggio vale l'altro purchè sia facile da gestire (aka non aggravi il novizio con una serie di problematiche assurde date da funzionalità avanzate che ad un utente alle prime armi sono solo problemi ad esempio la gestione manuale della memoria o ancora peggio l'eredità multipla ed i distruttori )
[Kendall]
10-10-2012, 14:57
A "parità" di docente e/o libro, consiglieresti C++ o Python a uno che deve iniziare da zero?
Sinceramente non so cosa significhi "partire dal Python" perchè la mia strada è stata diversa. Io son partito con una infarinatura di Java, dopo la quale ho sentito il "bisogno" di passare al C++ per capire cosa stava succedendo sotto il cofano, e sinceramente non mi sono trovato per nulla male, perchè poi tutto il resto è venuto con facilità.
Un amico mi ha consigliato questo corso, ed a me onestamente sembra una GRANDISSIMA figata... Forse pero` ti converrebbe un'infarinatura in Python o Ruby.
http://www.nand2tetris.org/
Vincenzo1968
10-10-2012, 16:51
...
il c++ è parecchio ostico all'inizio soprattutto per il debugger che richiede una certa dose di contorsionismo mentale / esperienza per capire la causa di errore, non indica correttamente manco la riga !
...
Quoto. I messaggi di errore generati dalla maggior parte dei compilatori C++ (Microsoft, GCC, etc) sono allucinanti.
Ma la colpa è dei progettisti del compilatore. Se avessero curato meglio l'implementazione dell'error recovery avrebbero potuto fornire una migliore messagistica come avviene, per esempio, con il compilatore CLAG che indica riga e colonna stampando il punto esatto in cui si è verificato l'errore:
Min. 12.30 circa:
http://www.youtube.com/watch?v=qeilIRSGWJI&list=PL16AA007E6302A964&index=3&feature=plpp_video
e prosegue qui:
http://www.youtube.com/watch?v=XPW5wQuWuGM&feature=autoplay&list=PL16AA007E6302A964&playnext=1
(al min. 3.15 e 5.00 circa, esempi specifici per il C++)
http://clang.llvm.org/
un problema per me è l'inglese, non è che il mio sia molto avanzato.
se devo partire da lì, sono finito :(
però
Le basi della programmazione sono essenzialmente logiche. Mandare un'email come dici tu non è dire al pc "compà, manda l'email".
Per mandare l'email devi:
1) Prendere un testo
2) Impacchettarlo nel formato corretto
3) Aggiungere tutti i campi che mancano per il suo corretto indirizzamento,
decodifica, ecc...
4) Bisogna comunicare coi vari provider affinché si prendano cura del messaggio e lo recapitino a destinazione.
Il tutto senza contare il sistema che "capisce" il click del mouse proprio in quel rettangolino di schermo che chiamiamo bottoncino...
Per scrivere tutto questo casino ci vuole la logica della programmazione, il premere il bottoncino per far partire l'email è solo l'interfaccia verso l'utente. Altrimenti basterebbe avere la patente per progettare un automobile
1) "prendo il testo" cioè lo scrivo: è quello che faccio anche adesso (vabbhè.. è un post, ma sempre testo è)
2) non so di cosa parli di preciso, ma credo che questa cosa la fa sia il programma di posta che quello che uso qui per scrivere il post
3) quasta non l'ho capita, però penso che vale il mio ragionamento del punto 2
4) questo lo fa sempre il programma di posta o il tasto qui quando dico invia risposta
cioè se lo fanno tantissimi programmi... vuol dire che è una cosa già fatta milioni di volte e non c'è bisogno che me la inventi io.
cioè per me mandare una mail è
scrivere il testo, scrivere a chi, dire al programma di posta che devo inviare
quello che hai detto tu mi sembra più una cosa non per mandare una email, ma per fare un programma di posta.
a meno che non ho capito niente io, che ci sta pure
quello che dici all'inizio invece è più comprensibile per me: la logica non la usano mica solo i programmatori :)
a dire la verità, a me sembrava una cosa logica che cose molto diffuse non siano da inventare.
il paragone che fai regge credo fino a un certo punto (lasciatelo dire da un maniaco :D ) perchè per progettare un'automobile servono molti ma molti ma mollti cervelli messi iniseme, tutti con le loro competenze molto ben distinte, cosa che non credo vale per fare dei programmini che usano cose già esistenti.
io non saprei fare il progettista di auto, pero' qualcosina son capace di farla anche io, non mi piacerebbe limitarmi a guidare :cool:
sui linguaggi del python o del c++ ho guardato un po' in giro ma se per android serve java dovrei imparare java, penso
[Kendall]
10-10-2012, 20:45
Sui linguaggi del python o del c++ ho guardato un po' in giro ma se per android serve java dovrei imparare java, penso
Se quella è una motivazione che ti spinge e ti prende allora si, senza pensarci due volte java.
Non per il linguaggio di per sè (che vabbè, è comunque uno dei più in voga), ma per il fatto che senza motivazioni non vai da nessuna parte. Se è così lascia stare C, C++, Python e compagnia cantante e buttatati su un bel corso di Java (magari con qualche tutorial graduale di android). Apprenderai più lentamente la programmazione nel suo senso più classico, ma per lo meno non ti ritroverai a mollare tutto a metà o prima (fermo restando l'ipotesi che ho fatto all'inizio).
;38273602']Se quella è una motivazione che ti spinge e ti prende allora si, senza pensarci due volte java.
Non per il linguaggio di per sè (che vabbè, è comunque uno dei più in voga), ma per il fatto che senza motivazioni non vai da nessuna parte. Se è così lascia stare C, C++, Python e compagnia cantante e buttatati su un bel corso di Java (magari con qualche tutorial graduale di android). Apprenderai più lentamente la programmazione nel suo senso più classico, ma per lo meno non ti ritroverai a mollare tutto a metà o prima (fermo restando l'ipotesi che ho fatto all'inizio).
si lo scopo è fare qualche piccola cosina su android, perchè più vedo app... piu' penso alla app dei miei sogni :)
battute a parte, ci sono un sacco di cose che magari mi farebbe comodo avere, ma mi perdo nel trovare la app giusta, che poi magari nemmeno c'è.
corsi di java ho guardato su un sito dove ci sono delle guide online, ma da qui a fare una app
in un sito diverso, invece, c'è chi dice di lasciare stare java per gli oggetti.
comunuqe se serve java, serve java (e xlm :D )
cdimauro
11-10-2012, 10:42
Non serve necessariamente Java.
Ad esempio con Kivy (http://kivy.org/#home) puoi scrivere applicazioni Android usando soltanto Python, e senza sbattere la testa con XML et similia per realizzare la GUI:
Android: “API stabili, ottimizzate e ben fatte”? (http://www.appuntidigitali.it/16175/android-api-stabili-ottimizzate-e-ben-fatte/)
Barcamenarsi con SDK, IDE, ed emulatore di Android (http://www.appuntidigitali.it/16236/barcamenarsi-con-sdk-ide-ed-emulatore-di-android/)
Molto, molto, molto più semplice.
Ciò detto, e visto anche sei completamente a digiuno a livello di programmazione, come traspare anche nell'altro thread in cui hai chiesto come sviluppare App con Android, il mio consiglio è di farti le basi seguendo il libro che ho in firma (che è pure in italiano).
Successivamente potrai sperimentare velocemente con Kivy per realizzare App Android.
Quando avrai un sufficiente livello di comprensione di cosa significa programmare, e avrai sviluppato la giusta mentalità di problem-solving, potrai anche sbattere la testa su Java e l'SDK ufficiale di Android, se quello che riesci a fare con Kivy ti sta troppo stretto. ;)
xUfo: interessante quel link, ma al momento non ho tempo per smazzarmelo. Lo farò quando (e se) possibile.
xAntonio23: d'accordissimo. Ma può farlo anche dopo / nel frattempo. ;)
il mio consiglio è di farti le basi seguendo il libro che ho in firma (che è pure in italiano).
Dici che va bene pure per chi sa già programmare ma vuole imparare Python? Ho letto un po' su wiki la descrizione di Python e mi affascina il meccanismo delle indentazioni.
Conosco già C e Java.
cdimauro
11-10-2012, 13:54
Vedrai che smanettandoci il fascino si trasformerà in amore. :p
Nel tuo caso ti sconsiglio il libro che ho in firma, visto che serve principalmente per chi parte da zero, e potresti trovarlo per lo più noioso.
Posso dirti che mi sono trovato benissimo leggendo velocemente il tutorial scritto dallo stesso Guido van Rossum.
Lo trovi qui (http://docs.python.it/html/tut/tut.html) in italiano, ma per la versione 2.3. Qui (http://docs.python.org/tutorial/index.html), invece, per la 2.7, ma in inglese. Se vuoi provare l'ultima evoluzione del linguaggio, la 3.3 (uscita da pochi giorni), il tutorial (sempre in inglese) lo trovi qui (http://docs.python.org/py3k/tutorial/index.html).
Enjoy it. :cool:
@cdimauro:
grazie per aver specificato di scaricare il manuale. non avevo fatto caso alla tua firma ... e davvero dopo tutta quella java... si scopre che secondo te si sta meglio senza... :D
comunque grazie: nella discussione di là ho visto app inventor e credo magari che potrebbe essere interessante per me.
però ho scaricato il tuo manuale e giuro che lo leggerò :D
@Antonio23:
mi sa che l'inglese è fondamentale per tante cose ma non credo sia obbligatorio saperlo per forza bene. poi ci sono un sacco di cose che si dicono in inglese anche a sproposito: una volta si montavano le centraline, oggi si montano i controller. sempre la stessa cosa sono, ma si vede che fa più figo in inglese e se a uno gli dci "dove la vuole la centralina?" ti chiede "coma la centralina? ma io avevo ordinato l'ultimo modello!" :muro:
cdimauro
12-10-2012, 07:25
Purtroppo l'inglese E' la lingua ufficiale dell'informatica, e bisogna necessariamente conoscerla, altrimenti non si va molto avanti.
Non è questione di essere "fighi": fa parte del bagaglio culturale dell'informatico.
Per cui proponiti seriamente di studiarla, quanto meno per avere una buona comprensione del testo, ma considera che, con la crisi in cui versiamo ormai da 5 anni, sicuramente non farebbe male padroneggiarla anche a livello di conversazione, perché fuori dall'Italia ci sono MOLTE più opportunità di lavoro e pagate pure MOLTO MEGLIO.
P.S. Il manuale ti consiglio di cominciare a studiarlo per primo. Fidati. ;)
LarsSalazar
12-10-2012, 10:18
Se posso dir la mia, se si è a digiuno di tutto penso che i libri della Apogeo, in particolare il Deitel & Deitel è il migliore. Parte dalle basi logiche con stralci di codice per andare passo dopo posso.
Partire da linguaggi di programmazione di alto livello, penso siano la soluzione più infelice che si possa adottare. Nella programmazione c'e' bisogno di rigore, specie all' inizio, dove già i pensieri sono confusi in partenza, se poi si adotta un linguaggio non formale, siamo nella giungla più fitta.
Non a caso nei corsi universitari si parte con il pascal ed il c, che sono molto rigorosi. Nella programmazione quello che conta è la logica e la conoscenza del ragionamento da applicare ad un algoritmo, la scelta del linguaggio viene dopo.
Per cominciare penso che le ossa vadano fatte in Pascal o C.
Io preferisco il C, sono entrambi rigorosi, ma il secondo mediante i puntatori può diventare un pò ostico, ma allo stesso tempo un linguaggio stupendo.
Ma se si arriva ad usare i puntatori significa che si è pronti per adottare come bibbia il K&R.
Quindi direi C o C++ ( senza classi ), per cominciare accompagnato dal Deitel & Deitel, Fondamenti di programmazione e poi solo quando le basi sono solide, passare a Java o qualsiasi linguaggio di altissimo livello.
ingframin
12-10-2012, 12:17
Non a caso nei corsi universitari si parte con il pascal ed il c, che sono molto rigorosi.
Dipende dall'epoca e dalle universita'. Il mio babbo all'universita' ha studiato il fortran IV su IBM 7090, io all'universita' (e come me penso il 90% di chi si e' iscritto col nuovo ordinamento) sono partito direttamente da Java.
Piu' che il linguaggio quello che conta e':
1) Un buon libro
2) Un buon insegnante (se disponibile)
3) Tanta curiosita' e voglia di imparare
Come ho gia' riscritto C, Python, Pascal... che differenza fa? Tanto il primo periodo mica nessuno e' mai andato molto oltre hello world, al massimo ha implementato la ricerca binaria e il bubble sort.
Una volta che il gioco si fa interessante e le basi cominciano a solidificarsi allora vale la pena discutere sul linguaggio. L'op originale ha detto di essere partito dal Pascal, ben venga. C'e' stato chi ha suggerito C e il buon cdmauro python. Ben vengano tutti, sono tutte scelte ugualmente valide a mio avviso.
Al liceo per conto mio avevo iniziato col BASIC (non visual, il Quick basic).
Anche il background conta moltissimo: da elettronico io non trovo affatto ostico il C:
1) Ho una buona idea di come funziona la macchina
2) Lo uso in ambiti molto particolari (microcontrollori ad esempio)
magari per uno sviluppatore web C e' un casino...
Forse alla terza pagina di thread sara' bene che chi vuole imparare la programmazione si metta a STUDIARE e CODARE invece di fare voli pindarici e fantasie galattiche sulla natura dell'universo informatico, vi pare? ;)
Non a caso nei corsi universitari si parte con il pascal ed il c, che sono molto rigorosi.
Oddio mio... questa frase non significa nulla. Definisci 'rigoroso'.
cdimauro
12-10-2012, 20:28
Solo quello? E' la prima volta che sento dire che un linguaggio di alto livello è "non formale". :D
Ma poi lo pseudocodice e i diagrammi di flusso che li avranno creati a fare? Robaccia. "non formali". Fanno confondere ancora di più.
Invece un linguaggio come il C è talmente rigoroso da permettere roba come questa:
scanf("%d", 0xC0DEDBAD);
Rigorosissimo... se si vuole arrivare dritti a un segmentation fault. :asd:
Tornando in topic, se l'obiettivo è quello di imparare da zero, il linguaggio fa la differenza. Altrimenti potrei suggerire di cominciare direttamente col linguaggio macchina di Intel Itanium. Divertente come un alveare infilato nelle mutande. :D
Chissà perché al MIT, dopo anni di Scheme, hanno messo Python come linguaggio del corso base di programmazione. E Scheme NON era certo come il C; anzi, era paradiso (sebbene mi venissero i crampi per le troppe parentesi da usare).
Questo non significa che non si possa partire con un altro linguaggio. Io ho iniziato con BASIC e linguaggio macchina del buon Commodore 64.
Ma il concetto è che ogni linguaggio ha una sua curva d'apprendimento: chi più soft, chi più ripida. E Python ne ha una molto, molto leggera. Confrontare per credere... :cool:
Partire da linguaggi di programmazione di alto livello, penso siano la soluzione più infelice che si possa adottare. Nella programmazione c'e' bisogno di rigore, specie all' inizio, dove già i pensieri sono confusi in partenza, se poi si adotta un linguaggio non formale, siamo nella giungla più fitta.
Non a caso nei corsi universitari si parte con il pascal ed il c, che sono molto rigorosi.
Assolutamente vero, rigore prima di tutto!
Dipende dall'epoca e dalle universita'. Il mio babbo all'universita' ha studiato il fortran IV su IBM 7090, io all'universita' (e come me penso il 90% di chi si e' iscritto col nuovo ordinamento) sono partito direttamente da Java.
Non so tu quanti anni hai ma penso di essere molto più giovane di te io e ho iniziato dal C il primo anno di uni. Java solo quest'ultimo anno :D
Oddio mio... questa frase non significa nulla. Definisci 'rigoroso'.
Credo voglia indicare che ad esempio le variabili vanno definite e sono tipizzate, poi anche che il linguaggio segua più il funzionamento di uno computer piuttosto che creare un'astrazione completa come linguaggi di ben più alto livello.
LarsSalazar
12-10-2012, 23:04
C e Pascal sono linguaggi fortemente tipati, con tutto quello che ne consegue.
Cominciare con Java ed utilizzarlo senza capire nulla di astrazione e di OO è per me una cosa no sense.
C e Pascal sono linguaggi fortemente tipati, con tutto quello che ne consegue.
E che ne consegue?
E poi a parte che non è vero... o almeno, è vero per valori molto bassi di 'fortemente', se questo è il criterio per definire il 'rigore', e se è valido che 'più rigore = più indicato ad un principiante', posso indicare almeno 2/3 linguaggi molto più 'rigorosi' di C...
:mbe:
LarsSalazar
13-10-2012, 01:25
Taratura mode on proprio.
Per il MIO modo di vedere, linguaggi in cui l' astrazione è la base non sono adatti per una persona che comincia ad avvicinarsi alla programmazione.
Ad Ing. Informatica da me, si comincia al 1° anno con il C e accenni di C++
Al secondo si passa al Java.
Ad Informatica al 1° si parte con il Pascal poi C++, solo al secondo anno si passa al Java.
Ognuno la pensi e se la canti come gli pare. Ma questo è il mio modo di vedere la cosa in base alle mie esperienze.
cdimauro
13-10-2012, 09:35
Il fatto che all'università TU abbia cominciato col C non vuol dire che sia un buon linguaggio per chi deve iniziare da zero la programmazione.
Come programmatore la PRIMA (e più importante) regola da rispettare è che la soluzione a un problema deve quanto meno rispettare i requisiti.
Visto che prima che hai parlato di "rigore", cercando di dare un'idea di "formalità" (sigh), il fatto che adesso te ne esci con "secondo me è così" si commenta da sé.
Ti è stato chiesto conto delle tue affermazioni peregrine, e... non sono arrivate.
Perché uno che mi dice che il C è un linguaggio fortemente tipato come minimo dovrebbe andare a ripassare il K&R col cilicio e la frusta a nove code autofustigandosi.
L'esempio della scanf che ho postato prima dovrebbe essere eloquente, ma forse è troppo sottile: magari qualche giochetto con casting e puntatori dovrebbe essere più chiaro.
Ma la perla, comunque, è rappresentata dalla troppa astrazione che risulta non adatta a chi inizia con la programmazione. Pseudolinguaggi et similia gridano vendetta al cospetto del dio della biomeccan, ehm, dell'informatica.
A questo punto sono molto curioso. Potresti DIMOSTRARMI per quale motivo l'astrazione farebbe a botte con chi deve approcciarsi alla programmazione? Non pretendo nulla di formale (anche se prima hai tirato in ballo la "non formalità" dei linguaggi più ad alto livello): anche un esempio bovino per me è sufficiente per cercare di capire qual è il tuo reale pensiero in merito.
Nel frattempo, per cominciare:
print "Hello, world!"
Fammelo in C (listato completo) e giustificami perché sarebbe meglio di quella riga in Python. :read:
C e Pascal sono linguaggi fortemente tipati, con tutto quello che ne consegue.
C e' staticamente tipato, ma debolmente tipato (almeno stando all'uso delle parole che ne fanno alcuni dei testi piu' rilevanti nel campo).
Il controllo dei tipi e' fatto a tempo di compilazione, ma "alla buona" (puoi mescolare bellamente interi e puntatori, assegnare ad enumerazioni valori non previsti, etc).
Cominciare con Java ed utilizzarlo senza capire nulla di astrazione e di OO è per me una cosa no sense.
E' un problema che si pone per il primo giorno in cui uno comincia a programmare, cosi' come la questione "ah ma il mio hello world sono 1 riga piuttosto che 5".
Quel che conta e' avere un linguaggio che permetta di esprimere senza problemi i costrutti che si andranno ad imparare,un buon libro di testo e alcune librerie di supporto che permettano di concentrarsi su quello che prevede il libro.
Cose che bene o male tutti i linguaggi mainstream (java, python, c# ... ) hanno. Qualcuno sara' piu' adatto di altri a seconda dell'individuo, ma sarebbe comunque buona cosa in tempi brevi passare ad impararne anche altri, giusto per non cadere l'errore di pensare "Programmare" = "Programmare in X".
clockover
13-10-2012, 12:10
Come al solito quando arrivano domande del genere si comincia con il divagare e l'interessato sparisce quando il discorso comincia un po a pesare per lui.
Io ho programmato per la prima volta all'università (Ing informatica) e ho cominciato con Java e senza preozzupazioni per 'rigori', 'fuorigioco' e 'calci d'angolo' (cazzata del giorno :D ). Al principio si stampa un hello world, si fa un metodino per fare le addizioni, le moltiplicazioni, ecc... Niente di assurdo. Se c'era un errore si bestemmiava (il più delle volte mancava un punto e virgola o una parentesi) e si cercava l'errore a occhio sperando di non ripeterne dopo. Dopo un paio di anni ho cominciato con il C e l'ho studiato per bene, poi sono arrivate infarinature di tutto il resto (Python, Perl, Objective, ecc...).
Secondo me se avessi cominciato con un qualsiasi altro linguaggio (C, Python, ecc..) e con quel professore sarebbe stata la stessa cosa.
Tutto sta a cominciare a capire gli strumenti del linguaggio che si hanno a disposizione e cominciare a ragionare algoritmicamente.
Dovendo scegliere un linguaggio da imparare ed essendo il primo linguaggio da studiare e per giunta da autodidatta, forse forse non partirei da C dato che probabilmente richiede un'attenzione maggiore. Meglio partire con Python o Java... sempre opinione mia ;)
cdimauro
14-10-2012, 08:00
@marco.r: se fosse soltanto una questione di brevità, 1 riga contro 5 righe, non staremmo qui a perdere tempo su delle oggettive stupidaggini, ma sai bene che il nocciolo della questione non è affatto quello.
Sul resto concordo, specialmente sul fatto di non fossilizzarsi su un solo linguaggio di programmazione.
D'altra parte qui stiamo discutendo di suggerire a cosa dovrebbe affidarsi uno che comincia da zero. Ma si tratta del primo, più grande, passo. Poi nessuno gli impedirà di cimentarsi con altro.
Nel frattempo: DreamPie: La shell python che hai sempre sognato (http://www.appuntidigitali.it/9835/dreampie-la-shell-python-che-hai-sempre-sognato/) E ditemi che non è comodissima per chi deve iniziare (e non solo). :cool:
Come al solito quando arrivano domande del genere si comincia con il divagare e l'interessato sparisce quando il discorso comincia un po a pesare per lui.
l'interessato non è sparito: cercava di seguire i consigli e di studiare :)
pero' sicuro che di quell che avete detto nei diversi posti ho vatto un breve riassunto:
1. c'è lite :) o meglio quando uno usa una cosa, poi è convinto che sia la migliore. pero' sembra che c, java, c++ siano insomma tutti simili: importante è partire
2. l'inglese lo capisco un po', pero non capisco perchè dovrei saperlo bene per fare qualche programmino (cioè un prigrammino informatico, non un viaggio vacanza a londra :D). questo commento mi aveva smontato più di tutti a essere onesti. ho trovato una cosa che dicono serve a programmare in italiano http://www.leonardo-hlc.it/ voi che ne dite?
3. credo che la base, fatto un poco il riassunto, sia quella di ragionare in modo logico. non so se esiste un modo per imparare a ragionare in modo logico, credo magari che certi strumenti aiutano pero' è una cosa che si deve avere di carattere, non so se mi sono spiegato bene. cioè non è che la logica si usa solo nel programmare, si usa in tante cose. poi chi la usa e chi no
clockover
14-10-2012, 10:48
l'interessato non è sparito: cercava di seguire i consigli e di studiare :)
pero' sicuro che di quell che avete detto nei diversi posti ho vatto un breve riassunto:
1. c'è lite :) o meglio quando uno usa una cosa, poi è convinto che sia la migliore. pero' sembra che c, java, c++ siano insomma tutti simili: importante è partire
2. l'inglese lo capisco un po', pero non capisco perchè dovrei saperlo bene per fare qualche programmino (cioè un prigrammino informatico, non un viaggio vacanza a londra :D). questo commento mi aveva smontato più di tutti a essere onesti. ho trovato una cosa che dicono serve a programmare in italiano http://www.leonardo-hlc.it/ voi che ne dite?
3. credo che la base, fatto un poco il riassunto, sia quella di ragionare in modo logico. non so se esiste un modo per imparare a ragionare in modo logico, credo magari che certi strumenti aiutano pero' è una cosa che si deve avere di carattere, non so se mi sono spiegato bene. cioè non è che la logica si usa solo nel programmare, si usa in tante cose. poi chi la usa e chi no
Non partirei con il C ma comunque Java e Python potrebbero essere un ottimo punto di partenza.
Per quanto riguarda l'inglese non c'è niente d fare... serve e basta. Ma questo lo capirai con il tempo, quando sarai costretto a leggere le documentazioni ufficiali o magari a chiedere particolari info sui canali IRC.
ingframin
16-10-2012, 11:07
piccolo appunto...se uno non ha dimestichezza con la programmazione è inutile che si metta a scrivere codice senza la minima idea su come ragionare in termini di programmazione, cioè senza avere una mentalità "algoritmica"...gli algoritmi sono la base di tutte le cose della vita, e soprattutto nell'informatica/matematica, dove non si può andare alla cieca...serve una buona disciplina mentale per questi tipi di considerazioni...all'università ho trovato molto illuminanti i corso di algoritmi e li consiglio a tutti i neofiti della programmazione...appena ricordo i titoli dei libri che ho usato lì posto...qualcuno dei litiganti di prima non ha nemmeno accennato a questo particolare, partendo in quarta consigliando il vile extreme programming (XD)...ora mi chiedo...ma cm fate a programmare senza costruire ragionamenti e schemi mentali preliminari? x me è una prassi obbligatoria...se si riesce ad immaginare la soluzione, vuol dire ke il problema è risolubile...ma l'allenamento del cervello è basilare...chiedete ad un matematico di risolvere un'equazione in modo casuale...vi dirà che è impossibile senza i metodi che si imparano sui libri...è di conseguenza l'informatica, che è una costola della matematica della quale è figlia, non è comprensibile senza i "metodi dell'informatica"
Ma al povero cristo che comincia, prima di mettergli in mano il Cormen almeno un hello world glie lo vogliamo far scrivere?
Che si segua un tutorial qualunque di un linguaggio che non richiede troppi casini per essere operativi e parta. A raffinare la conoscenza con algoritmi ci si pensa poi, appena finito il tutorial.
http://www.amazon.com/Python-Algorithms-Mastering-Language-Experts/dp/1430232374
Questo e' fantastico per chi come me non ha avuto la fortuna di poter seguire un corso di algoritmi e strutture dati.
clockover
16-10-2012, 11:21
Ma al povero cristo che comincia, prima di mettergli in mano il Cormen almeno un hello world glie lo vogliamo far scrivere?
Che si segua un tutorial qualunque di un linguaggio che non richiede troppi casini per essere operativi e parta. A raffinare la conoscenza con algoritmi ci si pensa poi, appena finito il tutorial
più che giusto
piccolo appunto...se uno non ha dimestichezza con la programmazione è inutile che si metta a scrivere codice senza la minima idea su come ragionare in termini di programmazione, cioè senza avere una mentalità "algoritmica"...gli algoritmi sono la base di tutte le cose della vita, e soprattutto nell'informatica/matematica, dove non si può andare alla cieca...serve una buona disciplina mentale per questi tipi di considerazioni...all'università ho trovato molto illuminanti i corso di algoritmi e li consiglio a tutti i neofiti della programmazione...appena ricordo i titoli dei libri che ho usato lì posto...qualcuno dei litiganti di prima non ha nemmeno accennato a questo particolare, partendo in quarta consigliando il vile extreme programming (XD)...ora mi chiedo...ma cm fate a programmare senza costruire ragionamenti e schemi mentali preliminari? x me è una prassi obbligatoria...se si riesce ad immaginare la soluzione, vuol dire ke il problema è risolubile...ma l'allenamento del cervello è basilare...chiedete ad un matematico di risolvere un'equazione in modo casuale...vi dirà che è impossibile senza i metodi che si imparano sui libri...è di conseguenza l'informatica, che è una costola della matematica della quale è figlia, non è comprensibile senza i "metodi dell'informatica"
praticamente quello che ho detto io qualche pagina fà :D :D
ps imho è inutile dire cose del tipo ti consiglio il XXX perchè è stata la prima cosa che ho imparato ecc ecc perchè nei linguaggi c'è comunque una costante evoluzione e inoltre le scelte su un linguaggio insegnato ad un corso sono figlie dell'esperienza degli insegnanti / degli obiettivi che si vogliono ottenere
ovvero: de stai facendo un corso di studi in elettronica molto probabilmente studierai linguaggi come assembler, c, ed eventualmente c++ ma se stai frequentando un corso di web programming dell'assembler non te ne frega na mazza e probabilmente insegneranno java php et similari mentre se stai facendo un itc probabilmente studierai ancora il cobol :D :D :D
queste sono scelte date dalla necessità di focalizzarsi su un linguaggio che sarà utile in futuro (le ore di studio non sono infinite)
giusto per fare un esempio io ho iniziato a programmare in basic (non visual basic, basic) e per di più con tutte le keyword come shorcut su tastiera e programmazione a linee ma non lo consiglierei a nessuno visto che è piacevole come una mazzata sui denti ma quello c'era e quello si usava :D :D :D
cdimauro
17-10-2012, 08:39
La sintassi di Python è talmente semplice e leggibile che viene definito "executable pseudocode". Basta fare una rapida ricerca con quei 3 termini, che viene fuori una valanga di risultati.
Qualcosa vorrà pur dire... ;)
sullo scrivere poche linee di codice sono d'accordo...ma se nn accompagna l'inizio del viaggio con un buon libro di algoritmi, che ahimè non é quello di Python algorithms, perché si scosta già verso un linguaggio ed invece bisognerebbe pensare + in generale con pseudo codice e diagrammi di flusso, non ha nemmeno senso cominciare...io poi sono un inguaribile sadico e sia alle superiori sia all'università ho visto praticamente solo C...se una volta acquisite le basi si comincia a scrivere codice in un linguaggio che di aiuti non ne da e, soprattutto, una buona fetta dei linguaggi di programmazione ad oggi + usati è C-like, allora poi non si avranno problemi ad imparare qualsiasi altro linguaggio di programmazione, procedurale o oop che sia
Ma sono io, o cadi in contraddizione? Prima dici che bisogna farsi le basi con pseudocodice e diagrammi di flusso e poi saltare subito a scrivere in C? E perché? Che relazione ci sarebbe?
Cioè, voglio dire, è mia opinione che si possa cominciare a programmare anche da C. O anche da python o salcazzo, ma penso che C sia comunque un'opzione percorribile.
Il punto è che gli hardcore fan che dicono di "farsi le ossa in C" lo fanno per colpa di quella che io credo si possa chiamare "Sindrome di Karate Kid". Karate Kid ci ha insegnato che per diventare un maestro di karate devi spendere un'assurda quantità di tempo in attività completamente scorrelate e inutili, tipo "dai la cera - togli la cera".
Fa molto zen. Peccato che sia una stronzata. Se vuoi diventare un maestro di karate devi fare karate, non dare la cazzo di cera!
Per similitudine, tornando in topic, chi consiglia C su questo forum lo fa perché crede che aver perso un pomeriggio per capire che il bug del suo merge-sort era quel "p" invece di "*p" sia aver imparato qualcosa.
Non è così. Hai solo tolto la fottuta cera.
ps. C per me è un'opzione perché è un linguaggio semplice. Ma semplice != user friendly.
cdimauro
17-10-2012, 09:37
Assolutamente condivisibile. :)
banryu79
17-10-2012, 14:07
...
Non è così. Hai solo tolto la fottuta cera.
Post dell'anno :asd:
banryu79
17-10-2012, 14:28
2. l'inglese lo capisco un po', pero non capisco perchè dovrei saperlo bene per fare qualche programmino (cioè un prigrammino informatico, non un viaggio vacanza a londra :D). questo commento mi aveva smontato più di tutti a essere onesti. ho trovato una cosa che dicono serve a programmare in italiano http://www.leonardo-hlc.it/ voi che ne dite?
Non so in quanti si sono presi la briga di andare a vedere quel link.
Io l'ho fatto... e sono rimasto sorpreso!
Ma che è sta roba?
Se in mezzo a tutto il marketing che mi sembra di scorgere fossero mantenute anche solo il 40% delle promesse e aspettative, beh, credo sarebbe fantastico. Di sicuro è interessante, chissà se ne sentiremo parlare (sono allo Smau oggi e per i prossimi due giorni, a giudicare dai post nella sezione del blog).
Mi piacerebbe sapere che ne pensano i frequentatori più anziani di questa sezione...
Ovviamente brutto che:
- per compilare devi essere collegato a internet.
- per pubblicare le tue applicazioni devi per forza passare per il loro store.
Ma è comprensibile che sia così. E' roba a pagamento.
Invece era abbastanza scontato che il risultato è roba che gira sulla jvm.
@EDIT: per chi non ha voglia di spluciare i post del loro blog, un'esempio di come dovrebbe funzionare sta roba e cosa dovrebbe fare:
http://www.leonardo-hlc.it/it/blog-post/il-primo-esempio-di-applicazione-con-leonardo
cdimauro
17-10-2012, 22:02
Non so in quanti si sono presi la briga di andare a vedere quel link.
Io l'ho fatto... e sono rimasto sorpreso!
Ma che è sta roba?
Se in mezzo a tutto il marketing che mi sembra di scorgere fossero mantenute anche solo il 40% delle promesse e aspettative, beh, credo sarebbe fantastico. Di sicuro è interessante, chissà se ne sentiremo parlare (sono allo Smau oggi e per i prossimi due giorni, a giudicare dai post nella sezione del blog).
Mi piacerebbe sapere che ne pensano i frequentatori più anziani di questa sezione...
Ovviamente brutto che:
- per compilare devi essere collegato a internet.
- per pubblicare le tue applicazioni devi per forza passare per il loro store.
Ma è comprensibile che sia così. E' roba a pagamento.
Invece era abbastanza scontato che il risultato è roba che gira sulla jvm.
@EDIT: per chi non ha voglia di spluciare i post del loro blog, un'esempio di come dovrebbe funzionare sta roba e cosa dovrebbe fare:
http://www.leonardo-hlc.it/it/blog-post/il-primo-esempio-di-applicazione-con-leonardo
Sembra la fine del mondo. Ma è troppo chiuso in cassaforte per i miei gusti, per cui preferisco non approfondire.
Ma sono io, o cadi in contraddizione? Prima dici che bisogna farsi le basi con pseudocodice e diagrammi di flusso e poi saltare subito a scrivere in C? E perché? Che relazione ci sarebbe?
Cioè, voglio dire, è mia opinione che si possa cominciare a programmare anche da C. O anche da python o salcazzo, ma penso che C sia comunque un'opzione percorribile.
Il punto è che gli hardcore fan che dicono di "farsi le ossa in C" lo fanno per colpa di quella che io credo si possa chiamare "Sindrome di Karate Kid". Karate Kid ci ha insegnato che per diventare un maestro di karate devi spendere un'assurda quantità di tempo in attività completamente scorrelate e inutili, tipo "dai la cera - togli la cera".
Fa molto zen. Peccato che sia una stronzata. Se vuoi diventare un maestro di karate devi fare karate, non dare la cazzo di cera!
Per similitudine, tornando in topic, chi consiglia C su questo forum lo fa perché crede che aver perso un pomeriggio per capire che il bug del suo merge-sort era quel "p" invece di "*p" sia aver imparato qualcosa.
Non è così. Hai solo tolto la fottuta cera.
ps. C per me è un'opzione perché è un linguaggio semplice. Ma semplice != user friendly.
Eoh, ma il latino apre la mente!
ingframin
18-10-2012, 09:54
Eoh, ma il latino apre la mente!
"C K&R" -> In hoc signo vinces!
:asd: :yeah:
Potremmo fare un linguaggio di programmazione nuovo con le parole in latino! ;)
"C K&R" -> In hoc signo vinces!
:asd: :yeah:
Potremmo fare un linguaggio di programmazione nuovo con le parole in latino! ;)
Già fatto. :)
http://search.cpan.org/~dconway/Lingua-Romana-Perligata-0.50/lib/Lingua/Romana/Perligata.pm
banryu79
18-10-2012, 12:46
Già fatto. :)
http://search.cpan.org/~dconway/Lingua-Romana-Perligata-0.50/lib/Lingua/Romana/Perligata.pm
OMG! Perl... in latino :doh:
Vincenzo1968
18-10-2012, 14:30
Io sto sviluppando un interprete per lo pseudocode del Cormen (http://www.ateneonline.it/cormen3e/). Il programma farà anche da traduttore(nel senso che prende in input lo pseudocode Cormen (http://www.ateneonline.it/cormen3e/) e lo trasforma in C, C++, Java o C#).
http://www.ateneonline.it/cormen3e/images/9788838665158.jpg
banryu79
18-10-2012, 15:37
Io sto sviluppando un interprete per lo pseudocode del Cormen (http://www.ateneonline.it/cormen3e/). Il programma farà anche da traduttore(nel senso che prende in input lo pseudocode Cormen (http://www.ateneonline.it/cormen3e/) e lo trasforma in C, C++, Java o C#).
http://www.ateneonline.it/cormen3e/images/9788838665158.jpg
Carino :)
Cosa stai usando per sviluppare l'interprete?
Vincenzo1968
18-10-2012, 16:47
Carino :)
Cosa stai usando per sviluppare l'interprete?
Sto usando il linguaggio C e le tecniche di parsing imparate (http://dragonbook.stanford.edu/) durante lo svolgimento del Contest 17 (http://www.hwupgrade.it/forum/showthread.php?t=2030843). La grammatica è LR(1); uso Bison/Flex (http://dinosaur.compilertools.net/#flex) per sviluppare automaticamante il parser(contrariamente a quanto ho fatto nel contest dove ho utilzzato un parser a discesa ricorsiva sviluppato interamente a mano).
Comunque ci vorrà ancora un po' di tempo ché mi ci dedico la sera quando torno a casa dal lavoro(se non sono troppo stanco). Potrei velocizzare i tempi di sviluppo dedicandomici anche nei fine settimana ma non mi va di stare fottuto a casa a programmare il sabato e la domenica.
Quando sarà pronto metterò a disposizione, gratuitamente, gli eseguibili(per Linux, Windows e Mac) e il codice sorgente.
Non so se aprire un sito dedicato o appoggiarmi a SourceForge o simili.
;)
http://dragonbook.stanford.edu/
http://dragonbook.stanford.edu/cover.jpg
http://www.gnu.org/software/flex/
http://www.gnu.org/software/bison/
banryu79
18-10-2012, 17:42
Comunque ci vorrà ancora un po' di tempo ché mi ci dedico la sera quando torno a casa dal lavoro(se non sono troppo stanco). Potrei velocizzare i tempi di sviluppo dedicandomici anche nei fine settimana ma non mi va di stare fottuto a casa a programmare il sabato e la domenica.
Ma infatti, fai bene, non deve mica essere un'ossesione ;)
E poi i cervelli hanno bisogno del giusto tempo per assorbire i concetti e per lavorare bene, specie i cervelli attempati :Prrr: :D
Vincenzo1968
18-10-2012, 18:08
:asd:
Se vuoi contribuire(per esempio aggiungento Python fra i linguaggi di output del traduttore), oltre al Dragon Book, che è un must, puoi scaricare gratuitamente questo libro:
http://www.diku.dk/~torbenm/Basics/basics_lulu2.pdf
http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics//basics-cover.jpg
;)
banryu79
18-10-2012, 21:46
:asd:
Se vuoi contribuire(per esempio aggiungento Python fra i linguaggi di output del traduttore), oltre al Dragon Book, che è un must, puoi scaricare gratuitamente questo libro:
http://www.diku.dk/~torbenm/Basics/basics_lulu2.pdf
;)
Parlavi con cdimauro vero? Perchè per Python io non so una ceppa... :asd:
cdimauro
19-10-2012, 06:16
Non credo, perché non perdo tempo con Flex, Bison e (soprattutto) C, ma preferisco ANTLR per scrivere parser, e ovviamente Python come linguaggio.
Ma questo lo sa bene anche Vincenzo. :)
Vincenzo1968
19-10-2012, 13:34
Parlavi con cdimauro vero? Perchè per Python io non so una ceppa... :asd:
Ah si, chiedo venia! Ricordavo male: tu, se non sbaglio, programmi in Java.
Vincenzo1968
19-10-2012, 13:45
Non credo, perché non perdo tempo con Flex, Bison e (soprattutto) C, ma preferisco ANTLR per scrivere parser, e ovviamente Python come linguaggio.
Ma questo lo sa bene anche Vincenzo. :)
Lo so, Cesare, lo so: non ti piace perdere tempo col C. Comunque non è detto che si debba contribuire obbligatoriamente con questo linguaggio. Il programma sarà modularizzato. Per esempio, il parser sarà impacchettato in una libreria a collegamento dinamico. si può utilizzare la dll(o so in Linux) per richiamare(col linguaggio preferito) il parser e farsi restituire l'AST. Poi l'AST viene attraversato per la l'interpretazione o la traduzione.
Aggiungere Python alla lista dei linguaggi di output non sarebbe male. Io purtroppo non posso farlo ché non lo conosco bene.
ANTLR è un gran bel generatore di parser. Purtroppo(e dico purtroppo secondo me) genera parser a discesa ricorsiva. Ora, come ben sai, il vantaggio principale per un tale parser è la facilità d'implementazione manuale.
Se lo fai con un tool automatico ti perdi tutta la parte divertente. Questo sempre secondo la mia modesta opinione.
Io sto creando un generatore di parser LL(1) che genera un parser table-driven.
;)
Vincenzo1968
19-10-2012, 14:38
Al posto di una dll che esporta l'AST il programma potrebbe salvare su disco il Three Address Code (http://it.wikipedia.org/wiki/Three_address_code)(in formato binario o testo).
Il programma client, scritto in qualsiasi linguaggio, potrebbe leggere il file e tradurre le istruzioni TAC, dopo averle eventualmente ottimizzate, nel linguaggio di output.
http://dound.com/courses/cs143/handouts/17-TAC-Examples.pdf
cdimauro
19-10-2012, 16:22
Premetto che forse sarebbe il caso di spostarsi in un altro thread.
L'AST è più comodo ed efficiente da manipolare, perché mantiene ancora una ricchezza di informazioni sufficiente per farci tanti giochetti.
A parte questo, che sia AST o TAC, ciò sarebbe intrinsecamente legato a un linguaggio di programmazione. Python, ad esempio, è ricco di tipi, che non trovano riscontro in altri linguaggi.
Come lo si gestisce? E' difficile pensare a una dll/so "universale", che mantenga un'interfaccia stabile.
Comunque a me non interessa lavorare in C (lo faccio solo con la virtual machine di Python, perché implemento le mie idee su come velocizzarla), e in ogni caso il poco tempo che ho lo dedico ad altri progetti.
Infine, sì, ANTLR genera parser a discesa ricorsivi, ma non si limita a questo, altrimenti chi apprezza questa tipologia di parser non l'avrebbe nemmeno preso in considerazione (invece... prolifica). Toglie di mezzo un sacco di lavoro che dovresti fare a manina, e con grande rischio di commettere qualche errore (che è sempre dietro l'angolo quando c'è da realizzare un parser).
A me l'efficienza a tutti i costi non interessa. M'interessa arrivare rapidamente alla risoluzione del problema, e per questo Python è diventato il mio linguaggio principe.
Per gli stessi motivi, se dovessi realizzare un parser userei ANTLR, che mi consente di generare rapidamente anche il codice di valutazione dell'AST stesso. Oltre che il lexer. E tutti e tre con una sola, semplice, sintassi.
Senza contare tool come ANTLRWork che sono spettacolari per vedere in tempo reale il grafo del linguaggio man mano che stai scrivendo la sua grammatica con ANTLR...
Vincenzo1968
19-10-2012, 16:44
Premetto che forse sarebbe il caso di spostarsi in un altro thread.
L'AST è più comodo ed efficiente da manipolare, perché mantiene ancora una ricchezza di informazioni sufficiente per farci tanti giochetti.
A parte questo, che sia AST o TAC, ciò sarebbe intrinsecamente legato a un linguaggio di programmazione. Python, ad esempio, è ricco di tipi, che non trovano riscontro in altri linguaggi.
Come lo si gestisce? E' difficile pensare a una dll/so "universale", che mantenga un'interfaccia stabile.
...
È un po' complicato ma si dovrebbe poter fare utilizzando ctypes:
ctypes — A foreign function library for Python
ctypes is a foreign function library for Python.
It provides C compatible data types, and allows
calling functions in DLLs or shared libraries.
It can be used to wrap these libraries in pure Python
http://docs.python.org/library/ctypes.html
http://stackoverflow.com/questions/252417/how-can-i-use-a-dll-from-python
http://www.daniweb.com/software-development/python/threads/339536/calling-c-dll-from-python
http://python.net/crew/theller/ctypes/tutorial.html
Comunque, si, hai ragione, ci stiamo allontanando un po' troppo dall'argomento del thread. Quando il programma sarà pronto apro un thread dedicato e ne parliamo meglio.
giacomo92
19-10-2012, 17:57
Come primo linguaggio a me hanno insegnato Java(senza programmare con oggetti) prima però mi hanno fatto fare una buona dose di flowchart secondo me dovresti guardarti un po' anche questo ciao :-)
Come primo linguaggio a me hanno insegnato Java(senza programmare con oggetti)
:asd:
cdimauro
20-10-2012, 19:35
Che c'è di male? Potremmo chiamarlo... safe C. :fiufiu: :asd:
Che c'è di male? Potremmo chiamarlo... safe C. :fiufiu: :asd:
http://www.mikogiocattoli.com/img/toys/1377r.jpg
Sembra la fine del mondo. Ma è troppo chiuso in cassaforte per i miei gusti, per cui preferisco non approfondire.
scusate ma questa cosa non l'ho mica capita.
cioé sembrerebbe una cosa superlativa... pero' non voglio approfondire?
ho cercato in giro e non ho trovato grandi informazioni, volervo un parere e mi sembra che dopo la discussione di cui non ho capito semi nulla... posso ripetere la domanda.
ciioé che ne pensate? a me sembrava una cosa tipo l'app store ma molto semplificata e mi sembrava una cosa come dire... quasi banale...
forse ho letto troppa fantascienza da giovane e mi sono abituato :D
però da una parte dite che se anche solo il 40% è mantenuto è una cosa superlativa, e dall'altra dite che anche se sembra la fine del mondo... non vi interessa.
posso umilmente dire che mi sfugge la logica del ragionamento.... e che non ho capito se secondo voi andrebbe bene per iniziare?
cdimauro
04-11-2012, 06:31
Per iniziare sarebbe la soluzione migliore, da quel che ho visto.
Continuo a rimanere scettico perché si tratta di un prodotto chiuso in cassaforte: è tutto infilato nel loro sito, e pure per compilare devi essere col browser sulla loro pagina.
Nascondono in tutti i modi la tecnologia che ci sta sotto. Lo capisco benissimo, e probabilmente farei la stessa cosa se volessi farci dei soldi (loro obiettivo), ma ho forti difficoltà ad accettare questo modello sia commercialmente (anche se ci sarebbe da vedere la licenza) che per uso personale.
Tutto qui.
grazie cdimauro :)
mi consola il tuo parere anche se il libro su python piano piano piano pianissimo... insomma coonfido che prima o poi ci leverò i piedi
mi sembrava un atteggiamento mentale strano, cioé come se io siccome sono abituato a usare una cosa, esce un modello diverso e migliore e nemmeno la provo.
anche a me quella del collegarsi per fare un programma suona strana... te dici per compilare e confesso che fino a un mese fa non avrei capito mentre adesso circa quasi qualcosa intuisco anche se non ho proprio chiarissimo tutto
se dici che per cominciare potrebbeandare, ho chiesto e per neanche 10 euro prendo e provo. mi piace questa cosa dei blocchi e delle frasi da costruire, come se dovessi fare un ragionamento logico... e basta quello
vediamo come va, ma ho capito che sotto c'é java... e te mi avevi deviato su python che pero' a dire la verità ha qualcosa che non so, mi ispira :eek:
cdimauro
04-11-2012, 20:38
Java non c'entra. Nello specifico, è soltanto lo strumento che è stato utilizzato per realizzare quella piattaforma.
Tu, utente, non ti trovi a lavorare con Java, ma con la piattaforma, che nasconde quello che c'è sotto il cofano.
Quindi non ti preoccupare per questo. Se t'interessa, sperimenta pure questo strumento, senza farti paranoie, ma tiene presente quello che ho scritto prima, perché rimane una piattaforma chiusa.
Che c'è di male? Potremmo chiamarlo... safe C. :fiufiu: :asd:
dovrebbe già esistere, si chiama cyclone
Java non c'entra. Nello specifico, è soltanto lo strumento che è stato utilizzato per realizzare quella piattaforma.
Tu, utente, non ti trovi a lavorare con Java, ma con la piattaforma, che nasconde quello che c'è sotto il cofano.
Quindi non ti preoccupare per questo. Se t'interessa, sperimenta pure questo strumento, senza farti paranoie, ma tiene presente quello che ho scritto prima, perché rimane una piattaforma chiusa.
si ma già io mi immaginavo di andare poi un domani a guardare sotto il cofano :D
ehm .... suppongo che sia un po' eccessivo per me... almeno per il momento
provo così, la cosa mi piace e per la programmazione diversa invece di java mi seguo python perché oramai ho cominciato lì e mi pare di avre capito che docve cominci non importa, conta dove arrivi.
questo sistema ha il limite che è chiuso ma per me adesso non è un limite tanto come fare tante cose non lo saprei.
per dirne una: se devo caricare una immagine nella firma della posta, mica mi metto il problema di come fa sotto sotto a caricare l'immagine: quello è il lavoro fatto sotto e per il momento non mi interessa sapere come fare a rifarlo (o forse non mi interesserà mai a livello pratico: certo sapere come funziona teoricaamente è una cosa che serve)
quello del sistema chiuso a me non mi sembra un vincolo ma probabilmente perché io sono l'installatore della caldaia: a metà fra chi apre il rubinetto dell'acqua calda e chi fa le caldaie :D
ti ringrazio comunque sia per il testo che per il "no paranoie" :) :)
cdimauro
07-11-2012, 09:25
Una cosa su cui riflettevo. Dubito che riuscirai a vedere qualcosa "sotto il cofano" con quella piattaforma proprietaria.
A naso, ti dico che quasi sicuramente prenderà il tuo programma scritto in linguaggio umano, e tirerà fuori un binario (o anche un sorgente Java, eventualmente; è indifferente a questo punto).
Per cui tu non vedrai mai il codice del vero programma che dietro fa tutto questo lavoro, che elabora il linguaggio naturale, e produce il binario/sorgente del tuo programma.
cdimauro
07-11-2012, 09:32
dovrebbe già esistere, si chiama cyclone
Non lo conoscevo. Tra l'altro ha qualche altra utile funzionalità rispetto al C nudo e crudo.
Potrebbe essere un buon candidato per sostituire il C. Speriamo faccia strada.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.