View Full Version : Programmare...
Mellen
26th October 2010, 22:10
..so che tutti mi direte "che cazzo fai?"
però mi è venuto un piccolo schizzo da provare nei ritagli di tempo.
Mi sarebbe sempre piaciuto iniziare a fare qualcosina e finora ho potuto solo "dilettarmi" per un idiota esame di "informatica" all'univ che ho svolto su Matlab.
Avevo notato come i meccanismi mi erano entrati subito e sono riuscito a passarlo agilmente col 30 (4 anni fa quindi temo di aver dimenticato tutto)
Avreste quindi una guida buona e semplice per iniziare, presumo che mi convenga, col C?
marlborojack
26th October 2010, 22:49
Allora: una dispensa gratis
# Bruce Eckel
Thinking in C++, 2nd Edition, Volume 1 http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
Sito per il download gratuito: http://www.mindview.net/Books/DownloadSites
Il mio libro più chiaro e conciso, riferimento per il corso di Fondamenti di Informatica 1
# Andrea Domenici, Graziano Frosini
Introduzione alla programmazione ed elementi di strutture dati con il Linguaggio C++
Franco Angeli
ISBN 88-464-3173-1
L'inventore del C++ ne sapeva a pacchi. Niente di meglio per imparare la programmazione ad oggetti che leggere uno che praticamente li ha inventati, gli oggetti
# Bjarne Stroustrup
C++. Linguaggio, libreria standard, principi di programmazione
Pearson Education Italia
ISBN: 88-464-6202-5
Brcondor
26th October 2010, 23:20
Attualmente io ho fatto c, dopo c++ e infine ora sto lavorando abbastanza su MatLab.
Secondo me iniziare con c ti da il vantaggio che devi "violentare" la tua mente e la tua logica per far tua la logica di c. Capito c secondo me sei già 1 bel passo avanti...
Vynnstorm
26th October 2010, 23:23
iniziato col c, entrato tutto in testa subito:)
marlborojack
26th October 2010, 23:27
Io ho iniziato con l'assembler ed è la cosa migliore per capire TUTTO, ma ora come ora, se uno vuole divertirsi con la programmazione, meglio partire con il paradigma ad oggetti e poi se c'è interesse andare al livello più basso. Almeno se non hai voglia vai subito verso java, python, ruby
Vynnstorm
26th October 2010, 23:32
Ah già, in realtà il corso di programmazione è partito con assembler, poi grammatica e definizione di linguaggio, poi c. Penso sia la cosa migliore.
Kat
26th October 2010, 23:49
Vabe partire con l'assembler mi sembra un po esagerato, ok che ti fa capire come funzionano le cose a basso livello, pero non deve mica fare un percorso universitario di informatica.
Dipende anche un po dal target cmq, se interessa fare roba in ambito web col C non si va molto lontano, se importa capire i rudimenti allora il C va benissimo (non per object oriented pero).
Vynnstorm
26th October 2010, 23:53
concordo con kat, l'assembler evitalo pure.
Hador
27th October 2010, 00:07
seeee assembler, anche il c mica serve se uno non vuole specializzarsi in quello.
modo più veloce secondo me è partire da java o c#, sono potenti, facili e hanno quintali di tutorial per imparare, liberi dalle menate potenti ma poco intuitive del c/c++ che mi paiono piuttosto inutili per imparare, meglio capire come strutturare le cose bene piuttosto che riciclare i nomi delle variabili o fare i giochi coi puntatori. I libri però non mi sono mai andati giù, ne ho diversi ma non li ho mai usati veramente. Il savitch è piuttosto famoso per java, idem il liskov. Entrambi hanno un approccio anche progettistico (da noi il corso di programmazione è poco incentrato su algoritmica e molto su progettazione, uml, test, ecc.).
Mosaik
27th October 2010, 00:18
seeee assembler, anche il c mica serve se uno non vuole specializzarsi in quello.
modo più veloce secondo me è partire da java o c#, sono potenti, facili e hanno quintali di tutorial per imparare, liberi dalle menate potenti ma poco intuitive del c/c++ che mi paiono piuttosto inutili per imparare, meglio capire come strutturare le cose bene piuttosto che riciclare i nomi delle variabili o fare i giochi coi puntatori. I libri però non mi sono mai andati giù, ne ho diversi ma non li ho mai usati veramente. Il savitch è piuttosto famoso per java, idem il liskov. Entrambi hanno un approccio anche progettistico (da noi il corso di programmazione è poco incentrato su algoritmica e molto su progettazione, uml, test, ecc.).
*
C# o VB.Net e passa la pura ...
Java è il male :confused:
Tunnel
27th October 2010, 00:19
Uhm, mi sa che riciclo per me questi consigli. Ormai le richieste di sviluppi interni si fanno pressanti e mi tocca imparare il C# senza aver mai toccato un linguaggio di programmazione. QQ
Consigli in merito ? Ribadisco che sono a totale digiuno di programmazione. In compenso sono un maestro dei trigger ricorsivi in loop infinito :metal:
marlborojack
27th October 2010, 01:10
seeee assembler, anche il c mica serve se uno non vuole specializzarsi in quello.
modo più veloce secondo me è partire da java o c#, sono potenti, facili e hanno quintali di tutorial per imparare, liberi dalle menate potenti ma poco intuitive del c/c++ che mi paiono piuttosto inutili per imparare, meglio capire come strutturare le cose bene piuttosto che riciclare i nomi delle variabili o fare i giochi coi puntatori. I libri però non mi sono mai andati giù, ne ho diversi ma non li ho mai usati veramente. Il savitch è piuttosto famoso per java, idem il liskov. Entrambi hanno un approccio anche progettistico (da noi il corso di programmazione è poco incentrato su algoritmica e molto su progettazione, uml, test, ecc.).
Sì, ma se uno deve imparare l'informatica sarà meglio che si faccia un'idea di cosa sia la memoria, di cosa sia la pila, dei puntatori e SOPRATTUTTO che un'inizializzazione NON E' un assegnamento. Prima di partire con l'architettura del software. Per quello il c++ è il più completo, oltre all'OO e all'ereditarietà multipla, ecc... c'è anche la gestione della memoria, delle strutture dati base (differenze tra array e liste) ecc...
E non c'entra nulla il riciclare i nomi delle variabili (ma chi lo fa poi, LOL) o giochi coi puntatori (sebbene immagino che anche tu inconsapevolmente li usi per i callbacks ;), c'entra farsi un'idea più completa della struttura di un calcolatore e della sua programmazione, Anche perchè, se uno non sa cos'è una classe, che cazzo si mette a leggere di patterns?
Ma immagino che su questo saremo sempre come cane e gatto, lol. Detto questo converrai però con me che se le basi sono solide, a imparare un linguaggio è come bersi un bicchier d'acqua, per cui io preferisco i libri che schematizzano bene i concetti. E poi TANTA pratica
Hardcore
27th October 2010, 01:18
Parti col C, ti tornerà utile in una valanga di altri linguaggi. Io personalmente farei C, poi Java
marlborojack
27th October 2010, 01:20
Ah già, in realtà il corso di programmazione è partito con assembler, poi grammatica e definizione di linguaggio, poi c. Penso sia la cosa migliore.
Parti col C, ti tornerà utile in una valanga di altri linguaggi. Io personalmente farei C, poi Java
Io spero intendiate C++, considerando che il C non ha la programmazione OO e che ormai persino per le missioni spaziali usano il paradigma della programmazione ad oggetti. Senza contare che il C++ è compatibile ANSI C, per cui c'è tutto quel che serve
Hardcore
27th October 2010, 01:24
No io intendo il C. Non so a me è piaciuto molto avere imparato C e mi è servito per molti altri linguaggi. Personalmente farei prima uno studio di cosa è stato un linguaggio molto usato, importante. Poi passerei direttamente a Java.
Ovviamente imho.
Mosaik
27th October 2010, 01:38
Sì, ma se uno deve imparare l'informatica sarà meglio che si faccia un'idea di cosa sia la memoria, di cosa sia la pila, dei puntatori e SOPRATTUTTO che un'inizializzazione NON E' un assegnamento. Prima di partire con l'architettura del software. Per quello il c++ è il più completo, oltre all'OO e all'ereditarietà multipla, ecc... c'è anche la gestione della memoria, delle strutture dati base (differenze tra array e liste) ecc...
E non c'entra nulla il riciclare i nomi delle variabili (ma chi lo fa poi, LOL) o giochi coi puntatori (sebbene immagino che anche tu inconsapevolmente li usi per i callbacks ;), c'entra farsi un'idea più completa della struttura di un calcolatore e della sua programmazione, Anche perchè, se uno non sa cos'è una classe, che cazzo si mette a leggere di patterns?
Ma immagino che su questo saremo sempre come cane e gatto, lol. Detto questo converrai però con me che se le basi sono solide, a imparare un linguaggio è come bersi un bicchier d'acqua, per cui io preferisco i libri che schematizzano bene i concetti. E poi TANTA pratica
Sicuramente è piu' completo ma molte cose te le danno gratis qualsiasi framework quindi lasciano un po' il tempo ceh trovano...
Come dire che per imparare a guidare una macchina non c'e' bisogno di sapere cosa accade dentro al motore l'importate è sapere cosa sono accelleratore , freno , cambio ecc :D
Hardcore
27th October 2010, 02:09
Sicuramente è piu' completo ma molte cose te le danno gratis qualsiasi framework quindi lasciano un po' il tempo ceh trovano...
Come dire che per imparare a guidare una macchina non c'e' bisogno di sapere cosa accade dentro al motore l'importate è sapere cosa sono accelleratore , freno , cambio ecc :D
Personalmente credo che programmare equivalga piu a costruire una macchina, piuttosto che a usarla.
Axet
27th October 2010, 02:52
Sì, ma se uno deve imparare l'informatica sarà meglio che si faccia un'idea di cosa sia la memoria, di cosa sia la pila, dei puntatori e SOPRATTUTTO che un'inizializzazione NON E' un assegnamento. Prima di partire con l'architettura del software. Per quello il c++ è il più completo, oltre all'OO e all'ereditarietà multipla, ecc... c'è anche la gestione della memoria, delle strutture dati base (differenze tra array e liste) ecc...
E non c'entra nulla il riciclare i nomi delle variabili (ma chi lo fa poi, LOL) o giochi coi puntatori (sebbene immagino che anche tu inconsapevolmente li usi per i callbacks ;), c'entra farsi un'idea più completa della struttura di un calcolatore e della sua programmazione, Anche perchè, se uno non sa cos'è una classe, che cazzo si mette a leggere di patterns?
Penso che con riciclare il nome delle variabili si riferisse allo scope eh.
Cmq hai ragione, ma considera che è tutto relativo. Dipende dal livello a cui uno punta di arrivare.. se vuole fare due programmini in croce tanto per divertirsi è inutile andare a sbattere la testa con quello che ci sta sotto. Allora tanto vale fare un ulteriore passo indietro e iniziare dalla macchina di turing e l'architettura di von neumann, voglio dire.
Chiaro invece che se uno vuol fare "sul serio", allora sicuramente conviene iniziare dal basso.
Ma immagino che su questo saremo sempre come cane e gatto, lol. Detto questo converrai però con me che se le basi sono solide, a imparare un linguaggio è come bersi un bicchier d'acqua, per cui io preferisco i libri che schematizzano bene i concetti. E poi TANTA pratica
Vero, ma non è un discorso di basi imo. Sicuramente aiutano, ma lo scoglio per uno che non ha mai programmato è entrare nell'ordine di pensiero di come si programma. Orientare la mente al problem solving. E' questo quello che ti permette di smazzarti poi qualsiasi linguaggio senza problema, le basi da questo punto di vista sono un plus.
edit:
per spiegarmi meglio, saper programmare equivale a saper scrivere un algoritmo in grado di risolvere il problema dato, a livello di flow chart. Se uno è in grado di fare ciò sa programmare. Il resto sono praticamente solo dettagli implementativi.
San Vegeta
27th October 2010, 08:36
I dettagli implementativi sono quelli che distinguono un'applicazione solida da una debole che richiederà sempre assistenza e darà problemi in momenti critici.
Vai sul C#, ha dalla sua il paradigma di programmazione ad oggetti, è fatto abbastanza bene, è simile a java nel caso un giorno volessi impararlo, è documentato molto e bene e ha integrata nel framework anche la parte grafica, così ti puoi fare le interfacce grafiche in pochi minuti.
Hador
27th October 2010, 08:46
non sono un fan della conoscenza basso livello dei linguaggi di programmazione, non penso sia importante conoscere la differenza a livello di memoria tra un array e una lista, basta sapere le differenze in termini pratici e quando usare uno e quando usare l'altro. I discorsi sulle performance delle strutture dati hanno un sapore antico e java è comodo per imparare "alla mia maniera" proprio per le sue "restrizioni", penso sia meglio concentrarsi sul paradigma e sulle funzionalità piuttosto che sulla gestione della memoria. Infatti io non ho fatto ingegneria :sneer:
I dettagli implementativi sono quelli che distinguono un'applicazione solida da una debole che richiederà sempre assistenza e darà problemi in momenti critici.
Vai sul C#, ha dalla sua il paradigma di programmazione ad oggetti, è fatto abbastanza bene, è simile a java nel caso un giorno volessi impararlo, è documentato molto e bene e ha integrata nel framework anche la parte grafica, così ti puoi fare le interfacce grafiche in pochi minuti.non i dettagli implementativi, i TEST distinguono una applicazione solida da una debola -_-
btw visual studio mica è gratis, per il resto java o c# è uguale, c# sicuramente da più soddisfazione in quando è facile partire usando interfacce grafiche (mentre in java le gui non sono così immediate da usare, anche se le swt non sono male), java in compenso è gratuito e lo è il suo IDE (qua è lunga, a me piace eclipse netbeans mi fa merda, ma non è verità assoluta :|) :nod:
Cifra
27th October 2010, 09:18
10 anni di cobol :metal: na passeggiata de salute.
Mellen
27th October 2010, 10:04
eheh..
come immaginavo ho scatenato più un dibattito e le varie scuole di pensiero si sono mostrate.
Io ho fatto diciamo... 3 mesi di Matlab, quindi potete capire il livello base, ma ho notato come pur avendo avuto pochissime dispense, 0 libri e tanti esempi, sono riuscito a districarmi molto bene (avevamo una quantità spaventosa di esempi pratici di vari programmini, tantissimi sbagliati ma messi lì più che altro per fare numero nella dispensa e darti un'idea... beh, li correggevo man mano mentre i compagni non capivano nemmeno cosa ci fosse da fare).
Ora non punto a diventare un hacker (magari!) però imparare un minimo di base, per poi magari se mi appassiona imparare a fare 2 programmini del cavolo (dimostrare a me stesso più che altro) per poi passare a capire bene un linguaggio html (avevo fatto col FrontPage ancora alle superiori ma lo considero meno di zero).
Hador
27th October 2010, 10:13
guarda se vuoi imparare facendo programmini la scelta giusta è ad esempi con linguaggio alto livello, c# o java come già detto, il primo ti devi procurare l'ide e lavori solo su win (mono in realtà non lo conosco ma funziona, ma nn so quanto sia uguale a vs) però crei in maniera più guidata e semplice interfacce grafiche, java fai un po' più di fatica con interfacce anche se l'IDE per le altre cose è più immediato da usare imo. Io procederei così, poi mentre capisci come funziona ti informi sui dettagli, ma se nel programmino per fare una agenda di numeri di telefono usi vector al posto di arraylist, benchè i primi siano meno performanti di n volte rispetto ai secondi, ne te ne accorgi ne ti cambia un cazzo.
altrimenti afferra un librone a due mani e buttati sull'architettura dei linguaggi, e li vada per il c++. Approccio sicuramente più ingegneristico ma un po' meno divertente imo.
Tanek
27th October 2010, 10:44
Imho Mellen thinking in java letto con calma + netbeans (IDE gratuito) + java, una cosa molto tranquilla per soddisfare la tua voglia di fare un po' di prove.
Poi se vedi che ti piace allora approfondisci per bene (sempre con thinking in java) e magari cominci a pensare a qualcosa web-oriented :)
(ma perchè dovrebbe imparare C? Piuttosto C++, ma C zero proprio imho. E a sto punto visto che vuole provare un po', meglio iniziare direttamente con C# o Java)
ps x Mosaik: .net è il male :nod:
Mellen
27th October 2010, 10:51
mmmm... libri...
l'assenza al momento di € mi porta a cercare roba gratis online..
:(
Hador
27th October 2010, 11:29
i libri cmq si trovano anche online... mo se arriviamo a java iniziamo a litigare se eclipse o netbeans :sneer:
Tanek
27th October 2010, 11:36
mmmm... libri...
l'assenza al momento di € mi porta a cercare roba gratis online..
:(
La versione online di Thinking in Java è completamente free!! (è a pagamento solo la versione cartacea)
ps: ahahah vero, la prossima diatriba sarà "è meglio eclipse o netbeans" :sneer: (imho per iniziare netbeans, per cose serie eclipse :nod: )
Mellen
27th October 2010, 11:40
ok.. cercherò di pescare nel torrente..
esiste anche la versione in italiano per caso?
immagino l'ultima sia la 4°
Amiag
27th October 2010, 13:13
Va benissimo partire col C ma consideralo solo a scopo didattico e non perderci troppo tempo. Appena pensi di averci giocato abbastanza, passa a Java (o C++/C# a seconda di quello che vuoi farci)
C e' utile per imparare alcune cose base che in linguaggi di alto livello come Java non vedrai mai (es. gestione della memoria, input/output di basso livello, etc) inoltre per fare i primi tentativi da molta piu' soddisfazione avere il tuo bell'eseguibile imo.
ps imparare un linguaggio sono 2 settimane max, ma scrivere codice di qualita' in quel linguaggio son 2+ anni e non ce' scorciatoia che tenga.
Axet
27th October 2010, 13:23
I dettagli implementativi sono quelli che distinguono un'applicazione solida da una debole che richiederà sempre assistenza e darà problemi in momenti critici.
A parte che come dice giustamente hador sono i test che discriminano un'applicazione solida da una che non lo è, se vuoi metterla su questa falsa riga allora senza uno studio architetturale le applicazioni che produci sono merda sciolta con flessibilità 0 che dopo 2 anni sono da prendere, buttare nel cesso, e gogo scrivine una nuova.
La base della programmazione è l'essere in grado di arrivare a un algoritmo che risolve un problema. Il resto è roba di contorno (per quanto concerne la programmazione).
Fortunatamente poi l'informatica non si esaurisce alla mera programmazione. Del resto per fare il programmatore non ci vuole una laurea, basta essere perito.
Mellen
27th October 2010, 14:14
Va benissimo partire col C ma consideralo solo a scopo didattico e non perderci troppo tempo. Appena pensi di averci giocato abbastanza, passa a Java (o C++/C# a seconda di quello che vuoi farci)
C e' utile per imparare alcune cose base che in linguaggi di alto livello come Java non vedrai mai (es. gestione della memoria, input/output di basso livello, etc) inoltre per fare i primi tentativi da molta piu' soddisfazione avere il tuo bell'eseguibile imo.
ps imparare un linguaggio sono 2 settimane max, ma scrivere codice di qualita' in quel linguaggio son 2+ anni e non ce' scorciatoia che tenga.
2 anni per scrivere programmini anche del cazzo???
O_O
Hardcore
27th October 2010, 14:17
Beh se il tuo intento è fare un po di programmini ecc, java o c# vanno benissimo. Io ritengo cmq il C una base necessaria in quanto non a oggetti e quindi permette di avere una visione della programmazione differente.
Hador
27th October 2010, 14:27
differente si, ma il paradigma ad oggetti è meglio di quello procedurale, ergo è differente in peggio.
I limiti sono le performance in ambiente embedded, ma più si andrà avanti più verranno superati.
-nessuno ha visto niente
Amiag
27th October 2010, 14:28
2 anni per scrivere programmini anche del cazzo???
O_O
No i programmini li impari a scrivere in 2 sett.
Mi riferivo al discorso "basta l'algoritmo e il resto son dettagli"
Mellen
27th October 2010, 14:43
Beh se il tuo intento è fare un po di programmini ecc, java o c# vanno benissimo. Io ritengo cmq il C una base necessaria in quanto non a oggetti e quindi permette di avere una visione della programmazione differente.
avendo fatto matlab per qualche mese, quindi aver almeno capito cosa significano certe basi (anche se ammetto che ora come ora ricordo quasi nulla ma con una rinfrescata veloce ritengo di ricordare) credi possa bastare?
intanto ho reperito il testo su Java (anche se in inglese... ho trovato tradotto in altre lingue tranne l'italiano :gha:) e credo mi metterò a leggerlo
Alkabar
27th October 2010, 14:43
differente si, ma il paradigma ad oggetti è meglio di quello procedurale, ergo è differente in peggio.
I limiti sono le performance in ambiente embedded, ma più si andrà avanti più verranno superati.
Intendi dire Procedurale. Java è imperativo e a oggetti.
Mez
27th October 2010, 14:46
io conosco solo php, da un paio di settimane leggo python e lo trovo mui easy
Hador
27th October 2010, 14:48
Intendi dire Procedurale. Java è imperativo e a oggetti.
e io che ho scritto? :sneer:
Rise-the-Sky
27th October 2010, 15:02
e io che ho scritto? :sneer:
In realtà C è definito come strutturato, non procedurale. :confused:
(poi vabbè strutturato deriva da procedurale)
Python è un bel linguaggio per iniziare perchè FORZA la bella scrittura del codice, però è meno diffuso del Java (quindi meno 'utile' a livello di CV e con meno materiale trovabile online).
Alkabar
27th October 2010, 15:21
e io che ho scritto? :sneer:
Si editami anche i peli del culo eh.....:sneer:
Hador
27th October 2010, 15:32
vabbè fanculo tutti imparati il prolog :sneer:
Tunnel
27th October 2010, 15:40
Cmq volevo segnalarvi che hador mi ha consigliato in pvt la coppia Mono & Osx per sviluppare.
Axet
27th October 2010, 15:40
I linguaggi imperativi son tutti uguali alla fin della fiera, non c'è manco da discuterci troppo.
Io mi darei subito dall'inizio a linguaggi logici o funzionali :sneer:
Hador
27th October 2010, 15:43
Cmq volevo segnalarvi che hador mi ha consigliato in pvt la coppia Mono & Osx per sviluppare.http://imgs.xkcd.com/comics/real_programmers.png
Kat
27th October 2010, 19:14
Pure io consiglierei python, e' semplice ma potente, per cominciare puo' essere una buona scelta.
Di Visual Studio cmq esiste la versione express che e' free, e per quello che vuole fare lui va benissimo.
Karidi
28th October 2010, 13:22
Il discorso uno deve imparare quello che più gli piace o si trova portato, come per i Sistemi Operativi come per altre cose ci saranno sempre divergenze chi preferisce Java o MS, per l'autore del post sarebbe giusto illustrare anche finalizzato a cosa l'imparare a programmare.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.