PDA

View Full Version : [Linguaggi di programmazione] Preparazione x il futuro


raffree
12-01-2008, 18:13
Frequento un istituto tecnico industriale e sto al biennio. Vorrei già iniziare ad impararmi qualche linguaggio di programmazione che si studierà nel triennio informatico. Quale mi consigliate di imparare (cioè quale si studierà?)? Quale libri mi consigliate?

nico88desmo
12-01-2008, 18:25
Frequento un istituto tecnico industriale e sto al biennio. Vorrei già iniziare ad impararmi qualche linguaggio di programmazione che si studierà nel triennio informatico. Quale mi consigliate di imparare (cioè quale si studierà?)? Quale libri mi consigliate?

I linguaggi che ho fatto all'Itis per Informatica sono:
Pascal
C
Java
Perl
Php
Html
Script (sotto Linux)
Delphi

Ti piace di più fare progetti che riguardano i siti Internet o programmazione per sviluppo di programmi eseguibili?

raffree
12-01-2008, 20:08
Ti piace di più fare progetti che riguardano i siti Internet o programmazione per sviluppo di programmi eseguibili?

Se hai libri da consigliarmi dammi tutti quelli che conosci. Cmq penso di più per lo sviluppo di programmi eseguibili perchè su internet più o meno con l'html e il php me la cavo...

DJ_Ale
12-01-2008, 20:28
I linguaggi che ho fatto all'Itis per Informatica sono:
Pascal
C
Java
Perl
Php
Html
Script (sotto Linux)
Delphi

Ti piace di più fare progetti che riguardano i siti Internet o programmazione per sviluppo di programmi eseguibili?
Beato te!
Al mio ITIS insegnano solo Java, C e HTML... :(
raffree, i linguaggi che studierai li devi chiedere ai prof! Come facciamo a sapere noi che linguaggi ti faranno studiare??? :D

Mafio
12-01-2008, 20:30
Beato te!
Al mio ITIS insegnano solo Java, C e HTML... :(
raffree, i linguaggi che studierai li devi chiedere ai prof! Come facciamo a sapere noi che linguaggi ti faranno studiare??? :D

quoto...che poi il tuo itis è anche il mio. :D

raffree
12-01-2008, 20:38
quoto...che poi il tuo itis è anche il mio. :D

quei linguaggi che hai elencati li dovrò studiare...

xblitz
12-01-2008, 20:39
Beato te!
Al mio ITIS insegnano solo Java, C e HTML... :(
raffree, i linguaggi che studierai li devi chiedere ai prof! Come facciamo a sapere noi che linguaggi ti faranno studiare??? :D

E voi eravate messi meglio che da noi :(

cmq da noi si fa il C\C++ e ci accompagna anche quest'anno (faccio la 4a)

raffree
12-01-2008, 20:42
Qual è il primo linguaggio che si studia? O i primi... :D

Mafio
12-01-2008, 20:44
Qual è il primo linguaggio che si studia? O i primi... :D

dipende dalla scuola e dai professori. :rolleyes:

comunque io ho iniziato con java...

raffree
12-01-2008, 20:46
Consigliatemi libri per favore.. (possibilmente non quelli scolastici)

Mafio
12-01-2008, 20:47
Consigliatemi libri per favore.. (possibilmente non quelli scolastici)

mah, prima di comprare dei libri io cercherei qualche guida su internet...

raffree
12-01-2008, 20:49
mah, prima di comprare dei libri io cercherei qualche guida su internet...

Si ma io preferisco più un libro dato che ce l'ho a portata di mano, nn mi sforzo molto la vista...

nico88desmo
13-01-2008, 11:01
Si ma io preferisco più un libro dato che ce l'ho a portata di mano, nn mi sforzo molto la vista...

http://www.hwupgrade.it/forum/showthread.php?t=801695

Qui c'è una bella lista di libri consigliati, sia cartacei sia scaricabili via web.
Se vuoi imparare per bene la programmazione, io ti consiglierei di iniziare a programmare in C (non C++ mi raccomando!); sarà un pò complicato all'inizio, però poi ti darà soddisfazioni.
Il java io te lo sconsiglio per 2 motivi:
1 - è ad oggetti, secondo me è meglio iniziare a programmare con un linguaggio NON OOP.
2 - ha una libreria così grande che poi finirai di utilizzare funzioni già scritte da altri e non di pensarle te (utile per lo sviluppo del software, ma non per imparare)
3 - ha un controllo troppo semplice degli errori :D

marko.fatto
13-01-2008, 13:25
io sono in quarta ITIS ed abbiamo fatto solo C++ a mo di C fino ad adesso tranne un paio di settimane HTML...

Il java io te lo sconsiglio per 2 motivi:
1 - è ad oggetti, secondo me è meglio iniziare a programmare con un linguaggio NON OOP.

questo va bene solo se poi non vuoi programmare a oggetti... imho passando dalla programmazione procedurale a quella a oggetti il passaggio non sarà mai completo... continuerai a programmare proceduralmente(si dice così?:stordita: ) usando gli oggetti

tutto imho naturalmente

raffree
13-01-2008, 16:54
http://www.hwupgrade.it/forum/showthread.php?t=801695


La lista è molto scadente e inoltre quei libri sono inglesi

xblitz
13-01-2008, 17:32
La lista è molto scadente e inoltre quei libri sono inglesi

beh ora scadente...
i libri di (K&H) sono gli ideatori del C, se non lo sanno loro :stordita:

secondo te cosa c'è nei libri di scuola? se credi di trovare a botta come si fanno le finestre allora devo darti una grande delusione... prima si imparano gli elementi del linguaggio (tipi di variabili, vettori, puntatori ecc...) poi le finestre e le altre cose alla fin fine sono mere funzioni (mica tanto mere :asd:) e per usare quelle "basta" l'help fornito

raffree
13-01-2008, 17:47
Uff mi consigliate qualche libro in italiano???

VICIUS
13-01-2008, 19:17
Uff mi consigliate qualche libro in italiano???
Potrà sembrare un paradosso ma se sei agli inizi e sei interessato a C e C++ evita di prendere i libri di Kernighan e Ritchie, o quello di Stroustrup. Sono più adatti come reference per programmatori esperti. Per C++ dicono che sia molto buono e facile da leggere quello di Deitel e Deitel edito da apogeo.

carter100
13-01-2008, 19:26
Per c++ o lo schildt o deitel & deitel, ma preferisco il primo. Per il C io presi il Bellini Guidi "Guida al linguaggio C", sicuramente c'è di meglio ma con questo mi trovai molto bene. Sono tutti libri consigliati per chi parte da 0. Infine, se ti interessa anche il java (ma meglio se fai prima il c), ci sarebbe o lo schidlt oppure (meglio imho) il core java2 volume 1 per le basi del linguaggio, molto chiaro.

nico88desmo
13-01-2008, 22:41
io sono in quarta ITIS ed abbiamo fatto solo C++ a mo di C fino ad adesso tranne un paio di settimane HTML...



questo va bene solo se poi non vuoi programmare a oggetti... imho passando dalla programmazione procedurale a quella a oggetti il passaggio non sarà mai completo... continuerai a programmare proceduralmente(si dice così?:stordita: ) usando gli oggetti

tutto imho naturalmente

forse l'incontrario...secondo la mia opinione.

marko.fatto
13-01-2008, 22:52
forse l'incontrario...secondo la mia opinione.

magari sono strano io (probabile :D ) ma a programmare in java arrivando dal C mi rendo sempre conto che approccio il problema in maniera troppo procedurale e devo rivedere tutto da zero...

ReaToMe
14-01-2008, 14:16
Io ti consiglio:

Balena Francesco
Visual Basic .NET 2005

E' un testo accessibile a chi è alle prime armi con OO e scorre bene.
Oltretutto il VB in se è più semplice.

Se invece vuoi partire con il c++ (ma dovrai impegnarti un po'), un buon libro con cui partire è:

Deitel P.j. /Deitel H.m.
C++, Fondamenti Di Programmazione

DJ_Ale
14-01-2008, 17:09
La mia prof parla molto bene del VB... :asd:

ReaToMe
14-01-2008, 17:28
Il VB è un linguaggio con un altissimo indice di produttività e un tempo di apprendimento molto ridotto.
Su progetti di medie/grosse dimensioni, si può arrivare a un rapporto dei tempi di 1:4 sviluppando il progetto in VB piuttosto che in C++.
Comunque un progetto OO ben fatto non dipende dal tipo di linguaggio usato.
Sono altri i fattori che fanno ricadere la scelta su un linguaggio piuttosto che su un altro.

raffree
14-01-2008, 17:29
Io ti consiglio:

Balena Francesco
Visual Basic .NET 2005

E' un testo accessibile a chi è alle prime armi con OO e scorre bene.
Oltretutto il VB in se è più semplice.

Se invece vuoi partire con il c++ (ma dovrai impegnarti un po'), un buon libro con cui partire è:

Deitel P.j. /Deitel H.m.
C++, Fondamenti Di Programmazione


Ok grazie acquisterò questi 2 libri. Io per ora ho solo un libro per il visual c# però non so a cosa serve... Me ne servirebbe anche uno per il pascal e per java...

marko.fatto
14-01-2008, 17:30
Ok grazie acquisterò questi 2 libri. Io per ora ho solo un libro per il visual c# però non so a cosa serve... Me ne servirebbe anche uno per il pascal e per java...

questa me la spieghi? :mbe:

ReaToMe
14-01-2008, 17:39
Ok grazie acquisterò questi 2 libri. Io per ora ho solo un libro per il visual c# però non so a cosa serve... Me ne servirebbe anche uno per il pascal e per java...

La spieghi anche a me?

raffree
14-01-2008, 18:09
Cosa??? :confused:

nico88desmo
14-01-2008, 18:13
Il C# è un linguaggio di programmazione...e dicono (io non ho mai provato a programmare con questo linguaggio) che sia molto buono!

raffree
14-01-2008, 18:19
Il C# è un linguaggio di programmazione...e dicono (io non ho mai provato a programmare con questo linguaggio) che sia molto buono!

Guarda che io ho solo il libro e non so come si programma con questo linguaggio. Il libro non l'ho nemmeno letto perchè non so con quale linguaggio iniziare...
Cmq per il java e il pascal?

nico88desmo
14-01-2008, 18:19
magari sono strano io (probabile :D ) ma a programmare in java arrivando dal C mi rendo sempre conto che approccio il problema in maniera troppo procedurale e devo rivedere tutto da zero...

Per l'approccio alla programmazione è vero, i linguaggi OOP sono (in genere) più produttivi rispetto a quelli procedurali;
quello che dico è che secondo me per iniziare a imparare a programmare è meglio iniziare con un linguaggio procedurale, in quanto si inizia ad avere una idea su cosa è una funzione e ci si fà anche un pò le ossa con i puntatori, passaggio per indirizzo/valore, ecc.
Se uno inizia a programmare con un linguaggio ad oggetti, è più difficile capire cosa è un oggetto, cosa significa metodo statico o meno, ecc.
Se poi si usa java, allora tutto è semplificato perchè purtroppo (per fortuna anzi :D) questo linguaggio è stato fatto per chi ha già una buona base di programmazione.

nico88desmo
14-01-2008, 18:20
Guarda che io ho solo il libro e non so come si programma con questo linguaggio. Il libro non l'ho nemmeno letto perchè non so con quale linguaggio iniziare...
Cmq per il java e il pascal?

per il java leggi il post sopra di questo. ;)
Io te lo sconsiglio.
Il pascal potrebbe andare come inizio, però poi io passerei subito al C.

^TiGeRShArK^
14-01-2008, 18:22
Per l'approccio alla programmazione è vero, i linguaggi OOP sono (in genere) più produttivi rispetto a quelli procedurali;
quello che dico è che secondo me per iniziare a imparare a programmare è meglio iniziare con un linguaggio procedurale, in quanto si inizia ad avere una idea su cosa è una funzione e ci si fà anche un pò le ossa con i puntatori, passaggio per indirizzo/valore, ecc.

..praticamente tutte le cose completmente inutili per la risoluzione del tuo problema.....

Se uno inizia a programmare con un linguaggio ad oggetti, è più difficile capire cosa è un oggetto, cosa significa metodo statico o meno, ecc.

Ma anche no.
In linguaggi completamente ad oggetti, come il ruby, TUTTO è un oggetto, quindi non vedo che difficoltà ci sia ad inquadrare gli oggetti in questi linguaggi :mbe:

Se poi si usa java, allora tutto è semplificato perchè purtroppo (per fortuna anzi :D) questo linguaggio è stato fatto per chi ha già una buona base di programmazione.
..veramente questo linguaggio si presta MOLTO + all'apprendimento rispetto al C/C++.
E Python o ruby sono imho ancora meglio dal punto di vista strettamente didattico.

nico88desmo
14-01-2008, 18:28
..praticamente tutte le cose completmente inutili per la risoluzione del tuo problema.....


che fanno capire però cosa significa programmare su un computer;


Ma anche no.
In linguaggi completamente ad oggetti, come il ruby, TUTTO è un oggetto, quindi non vedo che difficoltà ci sia ad inquadrare gli oggetti in questi linguaggi :mbe:


Proprio per questo motivo non lo vedo buono per imparare a programmare;


..veramente questo linguaggio si presta MOLTO + all'apprendimento rispetto al C/C++.
E Python o ruby sono imho ancora meglio dal punto di vista strettamente didattico.

Qui concordo.

fek
14-01-2008, 19:00
che fanno capire però cosa significa programmare su un computer;

Ma un principiante non deve capire che cosa significa programmare su un computer, deve capire che cosa significa risolvere un problema, quindi e' meglio per lui lavorare con il linguaggio a livello piu' alto possibile. Il cervello umano lavora in termini di relazioni fra oggetti e cosi' vuole esprimere la soluzione, non proceduralmente.

C'e' sempre tempo in futuro per scendere nei dettagli del computer.

VICIUS
14-01-2008, 19:02
che fanno capire però cosa significa programmare su un computer;
Ci si può definire programmatori anche senza conoscere i puntatori che sono una caratteristica quasi esclusiva di C e C++. La maggior parte dei linguaggi che ci sono in giro non ne fanno uso e sono ugualmente potenti e versatili.

Proprio per questo motivo non lo vedo buono per imparare a programmare;
Per quale motivo? Linguaggi come ruby sollevano uno studente dal doversi ricordare assurdi dettagli tecnici e gli permettono di concentrarsi su cose più importanti come il problema e su come risolverlo. Di certo imparerà più velocemente se non deve fermarsi ogni volta a pensare di quanti bit è l'integer su quella piattaforma, simulare il tipo stringa tramite array andando in paranoia ogni volta che deve leggere degli input dall'utente, oppure...

marko.fatto
14-01-2008, 19:09
tutti contro nico88desmo :asd:

VICIUS
14-01-2008, 19:18
tutti contro nico88desmo :asd:
Mica stiamo facendo una guerra! E una semplice discussione un po' accesa come se ne vedono spesso qui in sezione quando si parla di linguaggi perché in fondo sono cose che ci appassionano.

marko.fatto
14-01-2008, 19:20
Mica stiamo facendo una guerra! E una semplice discussione un po' accesa come se ne vedono spesso qui in sezione quando si parla di linguaggi perché in fondo sono cose che ci appassionano.


non dico una guerra ma mi pare di capire che è l'unico al momento che consiglia quel metodo di apprendimento :stordita:

raffree
14-01-2008, 19:48
Qualcuno può inviarmi in privato il contatto msn così capirò molte altre cose più velocemente senza creare tutta questa confusione? :D

Cmq ora mi serve solo un libro per il pascal e uno per java.

EDIT: Ho cercato il libro "visual basic.net 2005" e ho visto che costa €70euro... Non c'è un libro economico...? Non dimenticate che non ho le basi sono un newbie :D

cionci
14-01-2008, 19:57
Imho se devi impararti un linguaggio .Net vai su C#, non certo su VB .Net ;)
Quindi se hai già il libro perché prendere un altro ?

marko.fatto
14-01-2008, 20:28
Imho se devi impararti un linguaggio .Net vai su C#, non certo su VB .Net ;)
Quindi se hai già il libro perché prendere un altro ?

questa è stata la risposta prima :

Guarda che io ho solo il libro e non so come si programma con questo linguaggio. Il libro non l'ho nemmeno letto perchè non so con quale linguaggio iniziare...
Cmq per il java e il pascal?

nico88desmo
14-01-2008, 20:37
tutti contro nico88desmo :asd:

Sono cattivi!!!! :cry: :cry: :cry: :cry:

:D


Ma un principiante non deve capire che cosa significa programmare su un computer, deve capire che cosa significa risolvere un problema, quindi e' meglio per lui lavorare con il linguaggio a livello piu' alto possibile. Il cervello umano lavora in termini di relazioni fra oggetti e cosi' vuole esprimere la soluzione, non proceduralmente.

C'e' sempre tempo in futuro per scendere nei dettagli del computer.


E' che poi è difficile tornare a programmare con un linguaggio procedurale date le comodità dei linguaggi ad oggetti ;)

Secondo me è utile sapere i "dettagli del computer" fin dà subito...per questo consiglio il C. ;)

nico88desmo
14-01-2008, 20:39
non dico una guerra ma mi pare di capire che è l'unico al momento che consiglia quel metodo di apprendimento :stordita:

Forse perchè mi hanno insegnato così ;)
E vedo molte persone che programmano direttamente ad oggetti...ma non sapendo cosa sia un oggetto. :eek:

marko.fatto
14-01-2008, 20:40
Sono cattivi!!!! :cry: :cry: :cry: :cry:

:D


:asd::asd::asd:

E' che poi è difficile tornare a programmare con un linguaggio procedurale date le comodità dei linguaggi ad oggetti ;)

Secondo me è utile sapere i "dettagli del computer" fin dà subito...per questo consiglio il C. ;)

il punto è se ne vale la pena studiarsi un così basso livelo... non è forse meglio andare direttamente su un linguaggio più produttivo ? :stordita:

marko.fatto
14-01-2008, 20:43
Forse perchè mi hanno insegnato così ;)
E vedo molte persone che programmano direttamente ad oggetti...ma non sapendo cosa sia un oggetto. :eek:

anch'io come ho detto anche prima ho iniziato col C ma solo perchè quello era il programma... ma quando mi sono reso conto che era più intuitivo e veloce programmare a oggetti ormai la frittata era fatta e mi viene più naturale analizzare il problema in maniere procedurale...

nico88desmo
14-01-2008, 20:58
:asd::asd::asd:



il punto è se ne vale la pena studiarsi un così basso livelo... non è forse meglio andare direttamente su un linguaggio più produttivo ? :stordita:

Secondo me, per avere altre nozioni oltre a quelle della pura programmazione, è utile impararsi almeno un pò qualche linguaggio a basso livello.
E' anche giusto sapere quanto occupa un short, un int, un long ecc... per evitare di sprecare memoria per nulla. (magari uno dice uso long così non avrò mai problemi).
Io ora sono all'università in ing.informatica, eppure c'è gente nel mio corso che la pensa così. :doh:

anch'io come ho detto anche prima ho iniziato col C ma solo perchè quello era il programma... ma quando mi sono reso conto che era più intuitivo e veloce programmare a oggetti ormai la frittata era fatta e mi viene più naturale analizzare il problema in maniere procedurale...

Anche io ho fatto così...e sono contento di aver fatto questo percorso di apprendimento per la programmazione.
Comunque sia io vedo più semplice passare da un linguaggio procedurale a OOP che il viceversa.

Mafio
14-01-2008, 21:04
Secondo me, per avere altre nozioni oltre a quelle della pura programmazione, è utile impararsi almeno un pò qualche linguaggio a basso livello.
E' anche giusto sapere quanto occupa un short, un int, un long ecc... per evitare di sprecare memoria per nulla. (magari uno dice uso long così non avrò mai problemi).
Io ora sono all'università in ing.informatica, eppure c'è gente nel mio corso che la pensa così. :doh:



Anche io ho fatto così...e sono contento di aver fatto questo percorso di apprendimento per la programmazione.
Comunque sia io vedo più semplice passare da un linguaggio procedurale a OOP che il viceversa.

difatti si vedono i risultati...basta guardare gli ultimi giochi che stanno uscendo. :rolleyes:

marko.fatto
14-01-2008, 21:12
difatti si vedono i risultati...basta guardare gli ultimi giochi che stanno uscendo. :rolleyes:

cosa centra questo? :mbe:

vizzz
14-01-2008, 21:13
dalla mia esperienza e dai numerosi post in merito io mi sono fatto un idea...il tutto ovviamente imho.
non ci si improvvisa programmatori medio/esperti da un giorno all'altro, e secondo me un programmatore medio esperto sa, e deve programmare ad oggetti.
una persona che non si è mai scontrata con un linguaggio OOP, non saprà minimamente dove mettere le mani e come sfruttare la potenza di un linguaggio orientato ad oggetti.
a quelli che dicono che chi passa da un linguaggio procedurale ad uno ad oggetti , continuerà a programmare proceduralmente io dico...per me è il contrario, sfrutterà un decimo della potenza del linguaggio per fare la stessa cosa che fare bbe con un linguaggio procedurale.
allora perchè non partire dalle basi? scontrarsi con i problemi e risolverli con quello che ti mette a disposizione il linguaggio...e poi passare ad un linguaggio orientato ad oggetti e capire le limitazioni di quello procedurale? riprendere in mano programmi fatti precedentemente e riadattarli?
per me programmare è come andare in bicicletta...si incomincia con le rotelle e poi....
sarò all'antica ma io consiglerò sempre di partire con un linguaggio come il C :D

nico88desmo
14-01-2008, 21:22
[cut]

sarò all'antica ma io consiglerò sempre di partire con un linguaggio come il C :D

Quoto :)

ReaToMe
14-01-2008, 21:26
Mamma mia quanto mi piace la piega che ha preso questa discussione...:D :D :D :D :D

Io ho iniziato con il mitico assembler z80, 8086...fino al 486dx2.
In mezzo a questo marasma di processori ho scovato prima il basic, indi il C e il C++.
Indi passando attraverso il VB e un pizzico di Java sono arrivato dove sono ora, ovvero il C#.
Ma questa è la parte piuù marginale del percorso.
Mi sono concentrato preveletemente sulle metodologie: la gang dei quattro, i tre amici, larman, mc connell, fowler, beck e tanti altri.
Il procedurale, che piaccia o no, è parte integrante del processo si sviluppo (una funzione ricorsiva fatta male può generare problemi difficilmente scovabili).
Scrivere bene un ciclo non è così banale (sapeste che castronerie vedo da gente che si professa guru).
E da qui si direbbe che sono per il procedurale in primis...
Ma imparare a scrivere classi che collaborano... ho conosciuto pochissima gente che sapesse farlo.
Molti si fermano allo scrivere neanche classi, ma insiemi disomogenei di funzioni.
La mia modesta opinione (quindi IMHO IMHO IMHO IMHO), è che sia preferibile leggere un libro che dia una prima spruzzata di OO, ma presenti fondamentalmente esempi procedurali.
Object-Oriented significa smazzarsi una quantità discreta di testi in cui il linguaggio non centra nulla (sapeste quanto ci ho messo ha capire fino in fondo la differenza tra una virtual e una virtual pure...).
Ma più di tutto è il fatto di applicare (e all'inizio sbagliare a farlo, o non centrare perfettamente l'obbiettivo) le metodologie.
VB.NET 2005 te l'ho consigliato perchè agli esordi di .NET il VB 2002 (di Balena avevo già letto VB6) era stato un testo non esaustivo ma suffucuente a stuzzicarmi...
Per il costo, i buoni libri di informatica, salvo qualche rara eccezione non costano mai meno di 50€...

fek
14-01-2008, 22:19
E' che poi è difficile tornare a programmare con un linguaggio procedurale date le comodità dei linguaggi ad oggetti ;)

Secondo me è utile sapere i "dettagli del computer" fin dà subito...per questo consiglio il C. ;)

In quale misura conoscere i dettagli sull'architettura della macchina che il C espone al programmatore lo aiuta a risolvere un qualsiasi problema da principiante?

Se devo scrivere un'applicazioncina che gestisce delle prenotazioni, perche' mi interesserebbe conoscere i dettagli della gestione della memoria che il C mi impone di conoscere?

Conoscere il C per un principiante non solo e' inutile, e' controproduttivo perche' lo allontana da cio' che realmente deve imparare: risolvere i problemi.

^TiGeRShArK^
14-01-2008, 22:24
Forse perchè mi hanno insegnato così ;)
E vedo molte persone che programmano direttamente ad oggetti...ma non sapendo cosa sia un oggetto. :eek:

io invece vedo TROPPE persone che sono convinte di programmare ad oggetti, ma che invece continuano a fare obbrobri quasi totalmente procedurali. Imparare a programmare in maniera procedurale poi porta inevitabilmente a dover disimparare quello che si è appreso x poter imparare la vera programmazione ad oggetti. E qui la domanda sorge spontanea...tu programmi ad oggetti?

ReaToMe
14-01-2008, 22:31
io invece vedo TROPPE persone che sono convinte di programmare ad oggetti, ma che invece continuano a fare obbrobri quasi totalmente procedurali. Imparare a programmare in maniera procedurale poi porta inevitabilmente a dover disimparare quello che si è appreso x poter imparare la vera programmazione ad oggetti. E qui la domanda sorge spontanea...tu programmi ad oggetti?
... insiemi disomogenei di funzioni...
Difficilmente chi si professa programmatore OO sa cosa significa coesione.
Purtroppo.:muro:

fek
14-01-2008, 22:31
allora perchè non partire dalle basi?

Perche' non sono quelle le basi della programmazione :)
La base della programmazione e' essere in grado di modellare la soluzione di un problema nella maniera piu' semplice possibile, e questo, pe forza di cose, non puo' essere imparato usando un linguaggio a basso livello che espone tutta una serie di dettagli inutili ai fini della soluzione, ma che devono essere gestiti esplicitamente. Il C (o meglio il C++) non e' la base della programmazione, piuttosto e' un insieme di concetti avanzati che devono essere appresi successivamente, nel momento in cui si voglia approfondire la programmazione.

marko.fatto
14-01-2008, 22:38
In quale misura conoscere i dettagli sull'architettura della macchina che il C espone al programmatore lo aiuta a risolvere un qualsiasi problema da principiante?

Se devo scrivere un'applicazioncina che gestisce delle prenotazioni, perche' mi interesserebbe conoscere i dettagli della gestione della memoria che il C mi impone di conoscere?

Conoscere il C per un principiante non solo e' inutile, e' controproduttivo perche' lo allontana da cio' che realmente deve imparare: risolvere i problemi.

quello che penso anch'io http://www.***************************/smiles/woo.gif

ReaToMe
14-01-2008, 22:39
Se procedurale dev'essere, partiamo con il COBOL ;)

marko.fatto
14-01-2008, 22:41
Se procedurale dev'essere, partiamo con il COBOL ;)

e perchè non l'assembly? :sofico:

^TiGeRShArK^
14-01-2008, 22:46
e perchè non l'assembly? :sofico:

...a 'sto punto facciamo il Ladder e non se ne parla + :O
:asd:

ReaToMe
14-01-2008, 22:48
e perchè non l'assembly? :sofico:

:cry: :cry: :cry: Troppi ricordi, non ce la faccio :cry: :cry: :cry:

Tornando in topic, Raffree potresti postare i titoli dei libri in tuo possesso?

marko.fatto
14-01-2008, 22:53
:cry: :cry: :cry: Troppi ricordi, non ce la faccio :cry: :cry: :cry:

Tornando in topic, Raffree potresti postare i titoli dei libri in tuo possesso?

vero il topic è quello :asd:


comunque il mio consiglio è di non prendere altri libri se ne hai già uno di C# e iniziare con quello (sempre se è un buon libro)

nico88desmo
14-01-2008, 23:00
In quale misura conoscere i dettagli sull'architettura della macchina che il C espone al programmatore lo aiuta a risolvere un qualsiasi problema da principiante?

Se devo scrivere un'applicazioncina che gestisce delle prenotazioni, perche' mi interesserebbe conoscere i dettagli della gestione della memoria che il C mi impone di conoscere?

Conoscere il C per un principiante non solo e' inutile, e' controproduttivo perche' lo allontana da cio' che realmente deve imparare: risolvere i problemi.

Per me uno per saper programmare deve anche conoscere un pò di basi della programmazione a basso livello; complica sicuramente la vita al neo-programmatore, però successivamente fà apprezzare tutte le semplificazioni che i linguaggi OOP hanno portato.

Questo allontana più dall'implementazione della risoluzione di un problema che dalla risoluzione dello stesso, in quanto per fare quest'ultimo aspetto basta un foglio di carta e cercare un algoritmo funzionante e, ancor meglio, ottimizzato.

io invece vedo TROPPE persone che sono convinte di programmare ad oggetti, ma che invece continuano a fare obbrobri quasi totalmente procedurali. Imparare a programmare in maniera procedurale poi porta inevitabilmente a dover disimparare quello che si è appreso x poter imparare la vera programmazione ad oggetti. E qui la domanda sorge spontanea...tu programmi ad oggetti?

Dipende da cosa devo programmare.
Il linguaggio che mi ha divertito di più è stato il C (tutti quegli errori che mi dava all'inizio di quando programmavo...e poi quel classico Segmentation Fault che non si capiva mai da dove saltasse fuori :D);
Progetti di grandi dimensioni non ne ho mai fatti, anche perchè il tempo è tiranno sotto questo aspetto; però in questo caso, mi affiderei a Java o C# (incapsulamento, ereditarietà e polimorfismo agevolano parecchio la vita al programmatore!!!)

nico88desmo
14-01-2008, 23:03
vero il topic è quello :asd:


comunque il mio consiglio è di non prendere altri libri se ne hai già uno di C# e iniziare con quello (sempre se è un buon libro)

Concordo ;)
Se hai già quel libro è inutile prenderne un altro (se vuoi iniziare con linguaggio OOP)
Se vuoi iniziare invece con C o Pascal (giusto le basi magari), utilizza anche internet che è una buona fonte

ReaToMe
14-01-2008, 23:17
Per me uno per saper programmare deve anche conoscere un pò di basi della programmazione a basso livello; complica sicuramente la vita al neo-programmatore, però successivamente fà apprezzare tutte le semplificazioni che i linguaggi OOP hanno portato.

Non se ne può fare una mera questione estetica.
Se da un lato è vero che la maggior parte dei linguaggi OOP hanno portato semplificazioni (escludendo sicuramente c++ e smalltalk), e anche vero che hanno portato notevoli complicazioni.
La progettazione e lo sviluppo di un sistema ad oggetti che collaborino realmente, costituito da classi ben coese è tutt'altro che semplice o semplificativo.
Ho visto troppe classi lunghe migliaia di righe...


Questo allontana più dall'implementazione della risoluzione di un problema che dalla risoluzione dello stesso, in quanto per fare quest'ultimo aspetto basta un foglio di carta e cercare un algoritmo funzionante e, ancor meglio, ottimizzato.

Un algoritmo non è, e non può essere la soluzione di un problema approciato in OOP!!!
Al massimo può essere parte della soluzione, ma è una architettura ben fatta che lo rende funzionale!!!

Dipende da cosa devo programmare.
Il linguaggio che mi ha divertito di più è stato il C (tutti quegli errori che mi dava all'inizio di quando programmavo...e poi quel classico Segmentation Fault che non si capiva mai da dove saltasse fuori :D);

Ad oggi, cosa ci fai con il C?
A me l'assembler mi continua a divertire, ma è un hobby.
Non programmo chip...

Progetti di grandi dimensioni non ne ho mai fatti, anche perchè il tempo è tiranno sotto questo aspetto; però in questo caso, mi affiderei a Java o C# (incapsulamento, ereditarietà e polimorfismo agevolano parecchio la vita al programmatore!!!)
incapsulamento, ereditarietà e polimorfismo sono solo i mattoni della casa.
Il grosso del lavoro è progettarla e costruirla!!!

ReaToMe
14-01-2008, 23:21
Concordo ;)
Se hai già quel libro è inutile prenderne un altro (se vuoi iniziare con linguaggio OOP)
Se vuoi iniziare invece con C o Pascal (giusto le basi magari), utilizza anche internet che è una buona fonte
Dipende dal libro. Mi ricordo uno dei primi libri di c++ che ho comprato...
...perchè avevo speso inutilmente quei denari??!?!?

nico88desmo
14-01-2008, 23:31
Non se ne può fare una mera questione estetica.
Se da un lato è vero che la maggior parte dei linguaggi OOP hanno portato semplificazioni (escludendo sicuramente c++ e smalltalk), e anche vero che hanno portato notevoli complicazioni.
La progettazione e lo sviluppo di un sistema ad oggetti che collaborino realmente, costituito da classi ben coese è tutt'altro che semplice o semplificativo.
Ho visto troppe classi lunghe migliaia di righe...


per quanto riguarda grandi progetti questo è vero...ma non per imparare a programmare.


Un algoritmo non è, e non può essere la soluzione di un problema approciato in OOP!!!
Al massimo può essere parte della soluzione, ma è una architettura ben fatta che lo rende funzionale!!!


Si si, è ovvio che parte della soluzione :)


Ad oggi, cosa ci fai con il C?
A me l'assembler mi continua a divertire, ma è un hobby.
Non programmo chip...

incapsulamento, ereditarietà e polimorfismo sono solo i mattoni della casa.
Il grosso del lavoro è progettarla e costruirla!!!

Ma un conto è costruirla conoscendo e sfruttando queste proprietà della programmazione OOP, altrimenti se non sono usate non si può di certo dire che uno abbia imparato a programmare ad oggetti, tutt'altro anzi.

ReaToMe
14-01-2008, 23:53
per quanto riguarda grandi progetti questo è vero...ma non per imparare a programmare.

In realtà è quasi sempre vero. Vale per lo più per tutti i progetti che impegnino + di 15 giorni/uomo di sviluppo.

Ma un conto è costruirla conoscendo e sfruttando queste proprietà della programmazione OOP, altrimenti se non sono usate non si può di certo dire che uno abbia imparato a programmare ad oggetti, tutt'altro anzi.

Si applicano. Non è minimamente sufficiente conoscerle per costruire bene.
Sono le applicazioni di questi principi che fanno un programmatore.
Mai sentito parlare di pattern?

fek
15-01-2008, 00:00
Per me uno per saper programmare deve anche conoscere un pò di basi della programmazione a basso livello; complica sicuramente la vita al neo-programmatore, però successivamente fà apprezzare tutte le semplificazioni che i linguaggi OOP hanno portato.

Per saper programmare non devi conoscere la programmazione a basso livello, anzi. Migliaia di bravissimi programmatori non conosco i dettagli della gestione degli interrupt di una CPU ad esempio, eppure sono in grado di scrivere milioni di righe di ottimo codice che risolve i problemi.
Poi, conoscere l'implementazione a basso livello di qualcosa aiuta, ma non e' fondamentale, anzi, per un principiante e' fuorviante e del tutto inutile.


Questo allontana più dall'implementazione della risoluzione di un problema che dalla risoluzione dello stesso, in quanto per fare quest'ultimo aspetto basta un foglio di carta e cercare un algoritmo funzionante e, ancor meglio, ottimizzato.

E invece per risolvere un problema il foglio di carta non basta :)
Risolvere un problema signifca consegnare qualcosa che a partire dagl'input fornisca gli output desiderati, ed un foglio di carta non accetta input ne' produce alcun output.

eraser
15-01-2008, 00:25
Per me uno per saper programmare deve anche conoscere un pò di basi della programmazione a basso livello

Non è assolutamente necessario. Dipende da ciò che vuoi sviluppare

eraser
15-01-2008, 00:26
Per saper programmare non devi conoscere la programmazione a basso livello, anzi. Migliaia di bravissimi programmatori non conosco i dettagli della gestione degli interrupt di una CPU ad esempio, eppure sono in grado di scrivere milioni di righe di ottimo codice che risolve i problemi.
Poi, conoscere l'implementazione a basso livello di qualcosa aiuta, ma non e' fondamentale, anzi, per un principiante e' fuorviante e del tutto inutile.


Sorry, non avevo visto la risposta

AnonimoVeneziano
15-01-2008, 01:34
Oh, no, ancora sto thread ciclico?


La risposta è semplice. Scopri cosa insegnano alla tua scuola e scegli il linguaggio di conseguenza. Se insegnano il C buttati sul C , se insegnano [Altro] buttati su [Altro] . Prima scopri il linguaggio, il libro te lo si consiglia dopo

Ciao

cdimauro
15-01-2008, 08:33
E' anche giusto sapere quanto occupa un short, un int, un long ecc... per evitare di sprecare memoria per nulla. (magari uno dice uso long così non avrò mai problemi).
Ho il K&R e lo Stroustrup davanti: mi faresti vedere dove sta scritto quanto occupa uno short, un int, un long, ecc.?

Per il resto concordo con quanto scritto dagli altri (Tiger, fek, Vicius, Eraser, ecc.). ;)

DioBrando
15-01-2008, 10:26
Potrà sembrare un paradosso ma se sei agli inizi e sei interessato a C e C++ evita di prendere i libri di Kernighan e Ritchie, o quello di Stroustrup. Sono più adatti come reference per programmatori esperti. Per C++ dicono che sia molto buono e facile da leggere quello di Deitel e Deitel edito da apogeo.

IMHO è un libro orrido quello della Deitel.
Preso nel 2002 (il mio primo libro acquistato tra i linguaggi di programmazione) e ci sono esempi troppo complessi, le strutture basilari (iterazione ecc.) non sono spiegati bene ecc. ecc.

Francamente un libro fatto veramente bene per C++ devo ancora trovarlo. Fek quand'è che ne scrivi uno? :D

DioBrando
15-01-2008, 10:29
E' che poi è difficile tornare a programmare con un linguaggio procedurale date le comodità dei linguaggi ad oggetti ;)


è esattamente il contrario.

Passare da un approccio procedurale ad uno OOP è molto + complesso.
Quello OOP è il + semplice perchè è quello che si avvicina maggiormente ai processi mentali e ai criteri di classificazione che utilizziamo quotidianamente.

fek
15-01-2008, 10:33
IMHO è un libro orrido quello della Deitel.
Preso nel 2002 (il mio primo libro acquistato tra i linguaggi di programmazione) e ci sono esempi troppo complessi, le strutture basilari (iterazione ecc.) non sono spiegati bene ecc. ecc.

Francamente un libro fatto veramente bene per C++ devo ancora trovarlo. Fek quand'è che ne scrivi uno? :D

Mai :D
La mia ultima fatica esce su ShaderX6 (http://www.shaderx6.com/).

Ma se vuoi un ottimo libro sul C++, ne esistono due:
Design and Evolution of C++ (http://www.amazon.co.uk/Design-Evolution-C%2B%2B-Bjarne-Stroustrup/dp/0201543303/ref=sr_1_1?ie=UTF8&s=books&qid=1200393153&sr=8-1l)
C++ Inside Object Model (http://www.amazon.co.uk/Inside-Object-Model-Stanley-Lippman/dp/0201834545/ref=sr_1_5?ie=UTF8&s=books&qid=1200393189&sr=1-5)

Sono entrambi dei must-have. Se tutti li leggessero, smetterebbero con la favola "I kernel dei Sistemi Operativi vanno scritti in C e non in C++". Quasi quasi ne mando una copia a Torvalds, ma sapra' leggere?

PS. Mio fratello ha scritto un libro didattico sul C++ ora che ricordo, ma devo cercarne il link.

^TiGeRShArK^
15-01-2008, 10:40
Dipende da cosa devo programmare.
Il linguaggio che mi ha divertito di più è stato il C (tutti quegli errori che mi dava all'inizio di quando programmavo...e poi quel classico Segmentation Fault che non si capiva mai da dove saltasse fuori :D);
Progetti di grandi dimensioni non ne ho mai fatti, anche perchè il tempo è tiranno sotto questo aspetto; però in questo caso, mi affiderei a Java o C# (incapsulamento, ereditarietà e polimorfismo agevolano parecchio la vita al programmatore!!!)
A me ha divertito di + il Ladder di cui sopra.
Ma èsemplicemente impensabile fare sprecare del tempo ad uno che non capisce nulla di programmazione per apprendere cose che in futuro gli serviranno solo in ambiti ristrettissimi.

^TiGeRShArK^
15-01-2008, 11:05
Mai :D
La mia ultima fatica esce su ShaderX6 (http://www.shaderx6.com/).

Ma se vuoi un ottimo libro sul C++, ne esistono due:
Design and Evolution of C++ (http://www.amazon.co.uk/Design-Evolution-C%2B%2B-Bjarne-Stroustrup/dp/0201543303/ref=sr_1_1?ie=UTF8&s=books&qid=1200393153&sr=8-1l)
C++ Inside Object Model (http://www.amazon.co.uk/Inside-Object-Model-Stanley-Lippman/dp/0201834545/ref=sr_1_5?ie=UTF8&s=books&qid=1200393189&sr=1-5)

Sono entrambi dei must-have. Se tutti li leggessero, smetterebbero con la favola "I kernel dei Sistemi Operativi vanno scritti in C e non in C++". Quasi quasi ne mando una copia a Torvalds, ma sapra' leggere?

PS. Mio fratello ha scritto un libro didattico sul C++ ora che ricordo, ma devo cercarne il link.
ehmm..
mi sa che ti hanno cannato il cognome :p

3.6 HDR meets Black&White 2 by Francesco Caruzzi

nico88desmo
15-01-2008, 11:11
In realtà è quasi sempre vero. Vale per lo più per tutti i progetti che impegnino + di 15 giorni/uomo di sviluppo.

Si applicano. Non è minimamente sufficiente conoscerle per costruire bene.
Sono le applicazioni di questi principi che fanno un programmatore.
Mai sentito parlare di pattern?

Io su questo sono in pieno disaccordo.
Se uno programma ad oggetti DEVE sapere un pò di teoria della programmazione ad oggetti.

Per saper programmare non devi conoscere la programmazione a basso livello, anzi. Migliaia di bravissimi programmatori non conosco i dettagli della gestione degli interrupt di una CPU ad esempio, eppure sono in grado di scrivere milioni di righe di ottimo codice che risolve i problemi.
Poi, conoscere l'implementazione a basso livello di qualcosa aiuta, ma non e' fondamentale, anzi, per un principiante e' fuorviante e del tutto inutile.



Per carità, questo no...ci mancherebbe che uno deve sapere interrupt, registri e altro. :)
Io dico solo le basi basi...


E invece per risolvere un problema il foglio di carta non basta :)
Risolvere un problema signifca consegnare qualcosa che a partire dagl'input fornisca gli output desiderati, ed un foglio di carta non accetta input ne' produce alcun output.

Si ovvio, però chessò, se deve fare un ordinamento, secondo me è giusto che uno se lo impari a fare prima da solo, e poi veda quelli già pronti.

Ho il K&R e lo Stroustrup davanti: mi faresti vedere dove sta scritto quanto occupa uno short, un int, un long, ecc.?



in C fai sizeof(tipo variabile);

fek
15-01-2008, 11:37
ehmm..
mi sa che ti hanno cannato il cognome :p

Tanto per cambiare :(


Per carità, questo no...ci mancherebbe che uno deve sapere interrupt, registri e altro. :)
Io dico solo le basi basi...

E ripeto, le basi basi non sono il C :)

Si ovvio, però chessò, se deve fare un ordinamento, secondo me è giusto che uno se lo impari a fare prima da solo, e poi veda quelli già pronti.

Invece e' molto meglio per un principiante guardare esempi fatti da chi sa' programmare, per imparare il processo di risoluzione dei problemi.

in C fai sizeof(tipo variabile);

In Java o Python non fai, non serve ;)

ReaToMe
15-01-2008, 11:39
Io non ho detto che non servono.
Ho detto che non sono minimamente sufficienti.
Questo non toglie che siano essenziali.

nico88desmo
15-01-2008, 13:05
Invece e' molto meglio per un principiante guardare esempi fatti da chi sa' programmare, per imparare il processo di risoluzione dei problemi.


Il problema è che molte persone copiano il codice senza soffermarsi a capirlo. Questo lo vedo nell'università e lo ho visto nell'istituto tecnico; la maggior parte punta a far funzionare il programma: se poi il codice è brutto e spreca più risorse di quelle che sarebbero necessarie, non importa.

fek
15-01-2008, 13:17
Il problema è che molte persone copiano il codice senza soffermarsi a capirlo. Questo lo vedo nell'università e lo ho visto nell'istituto tecnico; la maggior parte punta a far funzionare il programma: se poi il codice è brutto e spreca più risorse di quelle che sarebbero necessarie, non importa.

Ma quello dipende dal programmatore, non tutti hanno voglia di imparare ;)

Ma l'importante e' scrivere buon codice leggibile e facile da mantenere, NON serve che non sprechi risorse. Qui stai commettendo un grosso errore: una soluzione deve consumare tutte le risorse che gli servono per risolvere il problema dato il limite di risorse imposto dal problema stesso.

Per farti un esempio, se devi cercare una parola in un testo in un tempo ragionevole, puoi scrivere la soluzione in pyhton, caricare il testo tutto in memoria, scorrere il testo parola per parola, confrontarla con la parola e fermarti quando l'hai trovata. Un bell'algoritmo O(N) che per un testo normale ti dara' la soluzione in qualche millisecondo.

Oppure puoi indicizzare il testo in un albero di qualche tipo, scrivere la soluzione in C efficientissima, e trovare ogni parola in manciate di nanosecondi.

La prima soluzione ti porta via 10 minuti di lavor, la seconda una settimana. Quale scegli? :D

vizzz
15-01-2008, 13:51
La prima soluzione ti porta via 10 minuti di lavor, la seconda una settimana. Quale scegli? :D

cento volte la seconda...che senso ha sprecare risorse?è produttivo? potrebbero essere utilizzate per altro.
certe volte mi chiedo cosa succederebbe utilizzando questa mentalità su un microcontrollore con 4k di ram :)

raffree
15-01-2008, 13:53
Tornando al topic vorrei rispondere dicendo che ho solo il libro per c#.
Vorrei iniziare col "c" però vorrei che voi mi consigliaste il nome di un libro.
Inoltre vorrei che mi consigliaste anche un libro x pascal e java.
Dopodichè vorrei sapere cosa significa "OO" e "OOP"....

fek
15-01-2008, 13:53
cento volte la seconda...che senso ha sprecare risorse?è produttivo? potrebbero essere utilizzate per altro.
certe volte mi chiedo cosa succederebbe utilizzando questa mentalità su un microcontrollore con 4k di ram :)

Quindi tu risolveresti un problema in una settimana quando esiste una soluzione per la quale basterebbero dieci minuti? :)
Qui non si sta parlando di microcontrollori, quello e' un altro problema.
Fai il programmatore per lavoro?

Un'altra domanda, costa meno una settimana di lavoro di un programmatore oppure 2GB di ram?


Dopodichè vorrei sapere cosa significa "OO" e "OOP"....

OO = Object Oriented
OOP = Object Oriented Programming

vizzz
15-01-2008, 14:08
Quindi tu risolveresti un problema in una settimana quando esiste una soluzione per la quale basterebbero dieci minuti? :)
Qui non si sta parlando di microcontrollori, quello e' un altro problema.
Fai il programmatore per lavoro?

Un'altra domanda, costa meno una settimana di lavoro di un programmatore oppure 2GB di ram?


si lavoro come programmatore.
oddio poi dipende sempre da caso in caso, ma solitamente preferisco soffermarmi un poco di più dove si può ottimizzare piuttosto che sentire dopo qualche giorno il cliente al telefono che si lamenta.
è anche vero che programmo su microcontrollori e pc...c'ho fatto il callo a risparmiare :D

fek
15-01-2008, 14:18
si lavoro come programmatore.
oddio poi dipende sempre da caso in caso, ma solitamente preferisco soffermarmi un poco di più dove si può ottimizzare piuttosto che sentire dopo qualche giorno il cliente al telefono che si lamenta.
è anche vero che programmo su microcontrollori e pc...c'ho fatto il callo a risparmiare :D

Quindi tu hai finito il lavoro, funziona, e' entro i parametri richiesti, soddisfa i requisiti prestazionali che il cliente ti ha imposto e ti soffermi un poco di piu' dove si puo' ottimizzare? :)
In pratica ti fai pagare per fare del lavoro inutile quando potresti usare quel tempo per risolvere un altro problema.

Ripeto, qui non si sta parlando di microcontrollori.
Costa piu' una settimana di lavoro o 2GB di ram?

vizzz
15-01-2008, 14:26
Costa piu' una settimana di lavoro o 2GB di ram?

a mio avviso costa di più riprendere in mano un progetto che si era considerato chiuso perchè ha comportamenti anomali, prestazioni scadenti ecc.

fek
15-01-2008, 14:30
a mio avviso costa di più riprendere in mano un progetto che si era considerato chiuso perchè ha comportamenti anomali, prestazioni scadenti ecc.

A parte che si chiama field testing ed e' inevitabile: qualunque software rilasciato al cliente ha bisogno di manutenzione, quindi devi mettere in preventivo questi costi.

Ma qui si sta parlando di uno scenario differente, nel quale il cliente mi da' dei vincoli prestazionali, io li rispetto pienamente, consegno il prodotto mentre tu passi una settimana in piu' per ottimizzare dove e' possibile (parole tue). Capisci che stai svolgendo un lavoro inutile per il cliente che deve aspettare una settimana in piu' per la sua soluzione. Per fortuna questo non e' il modo consueto di lavorare e si sta muovendo verso metodologie "Release early, release often".

Ripeto la domanda alla quale di fatto non hai risposto: costa piu' una settimana di lavoro o 2GB di ram?

jappilas
15-01-2008, 14:37
cento volte la seconda...che senso ha sprecare risorse?è produttivo? potrebbero essere utilizzate per altro.infatti, non ha senso...
non ha senso quando (come si è detto in precedenza) la risorsa più scarsa a disposizione è il tempo dei programmatori, quando (come plausibilmente in questo caso la ricerca di una parola in un testo) una routine è una minima parte di una più vasta soluzione SW, quando (come di solito avviene in ambiente lavorativo) è la soluzione intera che il committente / datore di lavoro vuole vedere pronta entro la deadline, o almeno soddisfacente le specifiche previste per quello stadio di sviluppo, quando nella soluzione si prevede una complessità, e un numero di funzionalità, tali che il tempo disponibile per implementare ciascuna, sia estremamente risicato ...
certe volte mi chiedo cosa succederebbe utilizzando questa mentalità su un microcontrollore con 4k di ram :)probabilmente niente... perchè è banale che ogni soluzione software richieda strumenti e mentalità adeguati per essere realizzata nel modo migliore, e la mentalità da usare per un microcontrollore da 4k sia fondamentalmente diversa dalla mentalità da usare per realizzare una suite di produttività personale moderna...
si lavoro come programmatore.
oddio poi dipende sempre da caso in caso, ma solitamente preferisco soffermarmi un poco di più dove si può ottimizzare piuttosto che sentire dopo qualche giorno il cliente al telefono che si lamenta.
è anche vero che programmo su microcontrollori e pc...c'ho fatto il callo a risparmiare :Ded anche se sui microcontrollori andrà limato tutto quello che si può limare, a volte a discapito della comprensibilità del codice (magari perchè non vi è nessun altro a lavorare su quel codice) in altri un approccio del genere non funzionerà, e andrà data la priorità alla rapida disponibilità e manutenibilità (da parte di terzi, il che implica che il codice sia chiaro, leggibile e il suo comportamento e la sua struttura documentati) del prodotto in una versione quantomeno funzionante

marko.fatto
15-01-2008, 14:37
Un'altra domanda, costa meno una settimana di lavoro di un programmatore oppure 2GB di ram?


sinceramente questo è un ragionamento che odio!

un programma deve funzionare sul sistema che è già presente (almeno entro certi limiti)... perché costringere a fare un upgrade del sistema stesso solo perché non si è voluto "perdere" altro tempo per correggere magari qualche castronata fatta di fretta!?

fek
15-01-2008, 14:43
sinceramente questo è un ragionamento che odio!

un programma deve funzionare sul sistema che è già presente (almeno entro certi limiti)... perché costringere a fare un upgrade del sistema stesso solo perché non si è voluto "perdere" altro tempo per correggere magari qualche castronata fatta di fretta!?

Puoi odiarlo quanto vuoi ma non fa molta differenza :)
Perche' al mio cliente puo' costare molto meno mettere 2GB in piu' sulla sua macchina che pagare me per una settimana di lavoro in piu'. Ed ha una soluzione funzionante una settimana prima.

L'informatica non e' una religione, l'informatica e' risolvere problemi al minor costo possibile, con qualunque sistema.

Ragazzi, se volete programmare bene per lavoro, dovete diventare pragmatici.

raffree
15-01-2008, 15:13
OO = Object Oriented
OOP = Object Oriented Programming

Cioè?

marco.r
15-01-2008, 15:25
Io non ho detto che non servono.
Ho detto che non sono minimamente sufficienti.
Questo non toglie che siano essenziali.
Non in generale. In alcuni contesti si' (quando lavori direttamente sull'hardware),
ma in generale no, e in alcuni linguaggi non ha alcun senso (perche' la il modello
di macchina su cui si basano e' diverso).
E il fatto di sapere come funzionano le cose non vuol dire che tu debba per forza
sbatterci contro.

marko.fatto
15-01-2008, 15:25
Cioè?

http://it.wikipedia.org/wiki/Programmazione_orientata_agli_oggetti

ReaToMe
15-01-2008, 15:49
Non in generale. In alcuni contesti si' (quando lavori direttamente sull'hardware),
ma in generale no, e in alcuni linguaggi non ha alcun senso (perche' la il modello
di macchina su cui si basano e' diverso).
E il fatto di sapere come funzionano le cose non vuol dire che tu debba per forza
sbatterci contro.

Si sta parlando di OOP.

ReaToMe
15-01-2008, 16:02
Tornando al topic vorrei rispondere dicendo che ho solo il libro per c#.
Vorrei iniziare col "c" però vorrei che voi mi consigliaste il nome di un libro.
Inoltre vorrei che mi consigliaste anche un libro x pascal e java.

C, Pascal e Java. Perchè questi linguaggi?
PS
Quali sono i libri che hai già a disposizione?

raffree
15-01-2008, 17:03
C, Pascal e Java. Perchè questi linguaggi?
PS
Quali sono i libri che hai già a disposizione?

Questi linguaggi perchè mi hanno detto che nel triennio li dovrò studiare...
Già ho risposto ho solo un libro di visual c#.

Parlando di programmazione mi è venuta un'altra domanda. Siccome tra poco mi dovrò iscrivere al triennio informatica vorrei sapere che differenza c'è tra informatica normale e informatica abacus... Io ho domandato però alcuni prof mi hanno detto che è sempre lo stesso e che non esiste più questa differenza... Voi che dite?

ReaToMe
15-01-2008, 17:09
Credo che varino nella riapartizione delle ore, ma che le materie siano le stesse.
Ho capito che hai un libro di c#, ma quale?

raffree
15-01-2008, 17:27
Credo che varino nella riapartizione delle ore, ma che le materie siano le stesse.
Ho capito che hai un libro di c#, ma quale?

Si chiama "Microsoft Visual C# 2005 Express Edition - Crea i tuoi programmi" di "Patrice Pelland" edizione "Mondadori Informatica"

P.S. Mi uscì con la rivista "PC Professionale"

cionci
15-01-2008, 17:33
Si chiama "Microsoft Visual C# 2005 Express Edition - Crea i tuoi programmi" di "Patrice Pelland" edizione "Mondadori Informatica"

P.S. Mi uscì con la rivista "PC Professionale"
Non mi sembra gran che...se non altro puoi cominciare con quello, sicuramente ti spiegherà come installare Visual C# Express Edition...che è gratuito.

ReaToMe
15-01-2008, 17:37
Non mi sembra gran che...se non altro puoi cominciare con quello, sicuramente ti spiegherà come installare Visual C# Express Edition...che è gratuito.
:asd:

raffree
15-01-2008, 18:27
Siccome l'anno prossimo "se verrò promosso" andrò al triennio informatico vorrei chiedervi da cosa si inizia (cioè da come si accende il pc...??) e da cosa si finisce al quinto anno?

vizzz
15-01-2008, 18:38
Siccome l'anno prossimo "se verrò promosso" andrò al triennio informatico vorrei chiedervi da cosa si inizia (cioè da come si accende il pc...??) e da cosa si finisce al quinto anno?

ti rimando a questa discussione in cui si parlava tra le altre cose del programma del triennio di perito informatico in un itis:
http://www.hwupgrade.it/forum/showpost.php?p=20577506

pascal immagino tu l'abbia fatto nel biennio giusto?
penso che non lo toccherai più.

raffree
15-01-2008, 18:55
ti rimando a questa discussione in cui si parlava tra le altre cose del programma del triennio di perito informatico in un itis:
http://www.hwupgrade.it/forum/showpost.php?p=20577506

pascal immagino tu l'abbia fatto nel biennio giusto?
penso che non lo toccherai più.

No al biennio non si fa informatica si studiano solo le materie generali...

marko.fatto
15-01-2008, 19:42
No al biennio non si fa informatica si studiano solo le materie generali...

a dir la verità è a libera scelta dell'insegnante se fare anche qualcosa di programmazione o meno... comunque il programma dei periti informatici non è molto ben definito, soprattutto su quali linguaggi di programmazione utilizzare.
In linea generale farai programmazione procedurale, poi oggetti e in quinta database ma anche qui la scelta del linguaggio da utilizzare è a libera scelta dell'insegnante...

cdimauro
15-01-2008, 21:16
Per carità, questo no...ci mancherebbe che uno deve sapere interrupt, registri e altro. :)
Io dico solo le basi basi...
Quindi il concetto di dato, di operazione, di variabile, di condizione, ecc.

Siamo ben distanti dal concetto di char, short, puntatore, ecc.
in C fai sizeof(tipo variabile);
Come vedi non puoi saperlo a priori, ma non solo: la sizeof da sola non basta quando devi sviluppare un algoritmo (in C) e ti serve NECESSARIAMENTE conoscere, più che la dimensione, il range di numeri rappresentabili (ci sarebbe anche il segno o meno del tipo di dato, ma lasciamo perdere per il momento).

Se vuoi realizzare un'applicazione che faccia dei precisi calcoli, ti tocca andare a vedere i dettagli dell'IMPLEMENTAZIONE del compilatore C o C++ che stai usando e controllare qual è il tipo di dati che ti garantisca sufficiente capacità di rappresentazione numerica. Per QUEL particolare compilatore. Per QUELLA particolare architettura. Per QUEL particolare sistema operativo.

Ma il nocciolo della questione è: è veramente necessario questo livello di dettaglio per risolvere un determinato problema? E' veramente necessario "ottimizzare a manina" un'applicazione? E' questo che gli altri hanno cercato di far presente.

Esempio pratico (in Python, ovviamente :D):
def fatt(n):
return 1 if n <= 1 else n * fatt(n - 1)
Se scrivo fatt(50) ottengo 30414093201713378043612608166064768844377641568960512000000000000

Come vedi non mi sono nemmeno posto il problema di sapere quanto spazio e quali numeri posso rappresentare (a proposito: mi son fermato a 50 per non occupare occupare troppo spazio a video per il risultato :D), né tanto meno la velocità d'esecuzione: m'interessava risolvere il mio problema, e senza perderci tanto tempo.

Ovviamente non è un concetto applicabile sempre, ma non stiamo certo parlando di applicazioni specifiche (time e/o space critical) e per cui è necessario ponderare bene anche in come e quali risorse si usano.

DioBrando
15-01-2008, 22:11
Mai :D
La mia ultima fatica esce su ShaderX6 (http://www.shaderx6.com/).


acc' :D


Ma se vuoi un ottimo libro sul C++, ne esistono due:
Design and Evolution of C++ (http://www.amazon.co.uk/Design-Evolution-C%2B%2B-Bjarne-Stroustrup/dp/0201543303/ref=sr_1_1?ie=UTF8&s=books&qid=1200393153&sr=8-1l)
C++ Inside Object Model (http://www.amazon.co.uk/Inside-Object-Model-Stanley-Lippman/dp/0201834545/ref=sr_1_5?ie=UTF8&s=books&qid=1200393189&sr=1-5)

Sono entrambi dei must-have. Se tutti li leggessero, smetterebbero con la favola "I kernel dei Sistemi Operativi vanno scritti in C e non in C++". Quasi quasi ne mando una copia a Torvalds, ma sapra' leggere?

segnati grazie. :)

lol povero Linus


PS. Mio fratello ha scritto un libro didattico sul C++ ora che ricordo, ma devo cercarne il link.

te lo dicevo io che i fratelli Carucci conquisteranno il mondo :Perfido:

:rotfl:

DioBrando
15-01-2008, 22:31
Ragazzi, se volete programmare bene per lavoro, dovete diventare pragmatici.

A questo proposito, dato che si parla di preparazione per il futuro e fek fa giustamente accenno al problema (molto comune per chi esce dal sistema accademico italiano a differenza di quello anglosassone (IMHO) cioè di essere pragmatici, prendo due piccioni con una fava e segnalo questo must-have per chi non lo conoscesse.
(magari ce ne fosse uno simile per Python :cry: )
Programming Ruby: The Pragmatic Programmers' Guide (http://www.amazon.com/Programming-Ruby-Pragmatic-Programmers-Second/dp/0974514055/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1200435547&sr=1-1)

Qui (http://www.rubycentral.com/pickaxe/) il link per la versione online gratuita (non completa ma cmq sufficientemente esaustiva per iniziare ad approciarsi al linguaggio e alle problematiche esposte).

Il libro (tra l'altro la terza edizione è in Beta e tratta di Ruby 1.9 ovvero l'ultima release uscita...quindi se non avete fretta, forse vi conviene aspettare a comprare la versione cartacea) è scritto per chi non lo sapesse da due dei massimi esperti di metodologie agili ed XP ovvero Andrew hunt e Dave Thomas, che insieme a Martin Fowler Paul Graham ecc. ecc. costituiscono il cuore di questi nuovi approcci e filosofie di sviluppo.


Così faccio contenti Danilo (per Ruby) e fek (per l'agile) e consiglio a non ricordo chi un buon, secondo me, punto di partenza a chi vuole delle basi lavorative solide per il futuro (Ruby potrà non piacere ma contiene tutte le caratteristiche di cui i linguaggi moderni, fortemente OOP, sono propri)

...come sn magnanimo :asd:


P.S.: Francè hai visto la maglietta per la campagna anti-if promossa dall'IAM? E' meravigliosa :D