PDA

View Full Version : La dura via della programmazione --- ENTRATE TUTTI ---


Pagine : [1] 2

MasterOfNewbies
19-05-2008, 00:03
Ciao a tutti, mi presento:

Mi chiamo Michael, ho 17 anni e...a settembre affronterò il primo anno dell'Istituto tecnico industriale dove poi sceglierò indirizzo informatica...gli scorsi anni ho fatto certi casini...prima 2 anni all'istituto tecnico commerciale (sempre in 1°...che asino), inoltre ho lavorato per un pò in un negozio di informatica, ma poi.....lasciamo perdere... :(

Comunque sia ormai ho capito qual'è la mia strada...la programmazione...

Però vorrei cominciare a studiare prima ancora di arrivare a scuola...il problema è: MA COSA?


Io pensavo di cominciare con studiare le basi dell?HTML (che non mi farebbe male) e poi.....già, e poi cosa?


Avevo letto in giro che certi consigliavano ancor prima di studiare un linguaggio, di dedicarsi alla "teoria", parlavano di paradigmi e roba simile (chissà che vuol dire).....




Voi cosa mi consigliate di fare? Pendo dalle vostre labbra, e per favore fate pubblicità a questa discussione, così mi potrà aiutare più gente...ne và del mio futuro! :)


Grazie a tutti in anticipo...e W L'Open Source!!! :D

cdimauro
19-05-2008, 06:34
Studia Python: http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm così imparerai velocemente le fondamenta della programmazione. :cool:

P.S. Ovviamente non sottoscrivo l'ultima parte del tuo messaggio.

||ElChE||88
19-05-2008, 08:08
Studia C#: http://msdn.microsoft.com/en-us/vcsharp/aa336809.aspx così imparerai velocemente le fondamenta della programmazione. :cool:

P.S. Ovviamente non sottoscrivo l'ultima parte del tuo messaggio.



Scusa cdi non ho resistito. :D

cdimauro
19-05-2008, 08:14
GRRRRR. :) Eretico!!!! :p

banryu79
19-05-2008, 09:21
Studia Java (http://it.wikipedia.org/wiki/Linguaggio_di_programmazione_Java), così imparrerai le fondamenta della programmazione e del paradigma OO

PS.: mi astengo da qualsiasi giudizio circa l'ultima frase

:p

khelidan1980
19-05-2008, 09:39
tanto gira e rigira il consiglio cade sempre su quei tre linguaggi,java,C# e python,uno a random direi che va bene! ;)


P.s:l'ultima frase è rischio flame :D

black_sand
19-05-2008, 10:51
Anche io mi accodo e consiglio python.

Poi, più che sottoscrivere l'apprezzamento per l'open source, preferisco spezzare una lancia a favore del free software ^^

Rigo007
19-05-2008, 11:21
Una base di C (ti tornerà poi utile se programmi sistemi embedded).
Poi passerei allo studio del C++ o al Java per imparare la OOP.
'Programma' in ogni caso sia sotto Win che sotto Linux (open mind for a different view!!) :D

Infine mi butterei sul C# e darei un'occhio all'XML.

||ElChE||88
19-05-2008, 11:28
Una base di C (ti tornerà poi utile se programmi sistemi embedded).
E basta con sto C.
E' stato gia detto centinaia di volte che sviluppare una mentalita procedurale è controproducente se poi si vuole passare al OOP.

71104
19-05-2008, 11:34
ma essendo invitati tutti ad entrare nel topic, non avendo nulla da dire possiamo spammare?

banryu79
19-05-2008, 11:53
Una base di C (ti tornerà poi utile se programmi sistemi embedded).
Poi passerei allo studio del C++ o al Java per imparare la OOP.
'Programma' in ogni caso sia sotto Win che sotto Linux (open mind for a different view!!) :D

Infine mi butterei sul C# e darei un'occhio all'XML.

Praticamente così è a posto per i prossimi 20 anni... :D

VICIUS
19-05-2008, 11:59
ma essendo invitati tutti ad entrare nel topic, non avendo nulla da dire possiamo spammare?
Se vuoi essere sospeso si. :D

Il mio consiglio è lascia perder C, C++ o Java. Comincia da python o ruby. Scegline uno a caso, vanno bene tutti e due. Poi un po di html, css e js così fai qualche esperimento con django o rails.

||ElChE||88
19-05-2008, 12:10
addirittura... se uno ha una mente limitata certo... ma se vuoi programmare l'hardware...:mbe:
Ma quale mente limitata. :doh:
Se l'autore vorra programmare hardware potra benissimo imparare il C in un secondo momento. Molto meglio iniziare con un linguaggio come Java/C Sharp e Py...Py...Python.

MasterOfNewbies
19-05-2008, 12:16
Nessuno ha nemmeno minimamente preso in considerazione la possibilità di comiciare con la teoria?

vizzz
19-05-2008, 12:27
Nessuno ha nemmeno minimamente preso in considerazione la possibilità di comiciare con la teoria?

è inutile secondo me se non la affianchi con la pratica delle cose imparate

black_sand
19-05-2008, 12:34
è inutile secondo me se non la affianchi con la pratica delle cose imparate

senza contare che è terribilmente palloso studiare a tavolino senza fare pratica contemporaneamente ^_^

EDIT: tutto sommato però, dopo che ti sei letto un po' di manuale del linguaggio che hai scelto, potresti tranquillamente iniziare a dare un'occhiata alle varie strutture dati e a qualche algoritmo e provare a implementarli per fare esercizio e metterteli bene in testa!

Rigo007
19-05-2008, 12:59
E basta con sto C.
E' stato gia detto centinaia di volte che sviluppare una mentalita procedurale è controproducente se poi si vuole passare al OOP.

Scusami se ho solo dato un consiglio ad una persona che è all'inizio e, sopratutto in questa fase iniziale, sono convinto che un po' di elasticità mentale si debba acquisire: certe cose si imparano molto più facilmente da giovani.
Ho scritto 'basi' di C e ci ho affiancato che la cosa tornerà utile nel programmare sistemi embedded. Vedrà poi lui se la cosa può interessarli o meno, ma sono sicuro che nel mondo del lavoro si troverà in situazioni in cui gli oggetti non sono tutto.
Certo che se poi qualcuno fa fatica a passare da una mentalità procedurale ad una ad oggetti...beh...quasi meglio che cambi mestiere.

MasterOfNewbies
19-05-2008, 13:01
1- Cos'ha il pascal che non và per cominciare?

2- Per curiosità, con il python che tipo di software si possono creare, e con il pascal?

3-ho la terza media, quindi scarsa conoscenza di matematica...è un problema?

4-Ditemi perchè doveri scegliere il python o il pascal o il C

||ElChE||88
19-05-2008, 13:02
Certo che se poi qualcuno fa fatica a passare da una mentalità procedurale ad una ad oggetti...beh...quasi meglio che cambi mestiere.
Potrei dire lo stesso di uno che consiglia il C per iniziare.

^TiGeRShArK^
19-05-2008, 13:15
Scusami se ho solo dato un consiglio ad una persona che è all'inizio e, sopratutto in questa fase iniziale, sono convinto che un po' di elasticità mentale si debba acquisire: certe cose si imparano molto più facilmente da giovani.
Ho scritto 'basi' di C e ci ho affiancato che la cosa tornerà utile nel programmare sistemi embedded. Vedrà poi lui se la cosa può interessarli o meno, ma sono sicuro che nel mondo del lavoro si troverà in situazioni in cui gli oggetti non sono tutto.
Certo che se poi qualcuno fa fatica a passare da una mentalità procedurale ad una ad oggetti...beh...quasi meglio che cambi mestiere.
Certo, allora perchè non imparare il linguaggio Ladder per programmare i PLC? :)
Comunque, nonostante abbia faticato MOLTISSIMO per imparare la programmazione ad oggetti, dopo anni e anni di procedurale, a quanto pare ho fatto bene a non cambiare lavoro :)
Tu, piuttosto, sei davvero sicuro di sapere programmare ad oggetti? :)
Da quello che si scrivi non si direbbe affatto :)

^TiGeRShArK^
19-05-2008, 13:16
Potrei dire lo stesso di uno che consiglia il C per iniziare.
però con maggiore cognizione di causa evidentemente :)

VICIUS
19-05-2008, 13:24
Nessuno ha nemmeno minimamente preso in considerazione la possibilità di comiciare con la teoria?
Gramatiche formali, automi, algebra binaria, logica ... dopo una settimana saresti cotto.

Se stai facendo l'itis molte delle cose che ti servono le farai con calma in matematica e più avanti nel triennio. Se vuoi mantenere vivo l'interesse comincia a paciugare con qualcosa di pratico. Insomma divertiti. :D

wizard1993
19-05-2008, 13:24
io voto java, è la migliore base per partire con l'oop

DanieleC88
19-05-2008, 13:33
1- Cos'ha il pascal che non và per cominciare?
Il fatto che non li usi più nessuno nella pratica? :D
No sul serio, a questo punto prova davvero Python, che gira un po' dappertutto e dovrebbe essere facile. All'inizio puoi usare quel che ti pare in effetti... io ho iniziato dal Visual Basic, e anche se adesso scrivo la maggior parte delle cose in C, probabilmente se avessi cominciato col C avrei avuto molti mal di testa in più e molti risultati in meno (raggiungere velocemente semplici obiettivi agli inizi è importante, meglio evitare le lotte con i segmentation fault :D).
2- Per curiosità, con il python che tipo di software si possono creare, e con il pascal?
I linguaggi di programmazione sono gli strumenti con cui scrivi del software, in fin dei conti tutto dipende da ciò che devi fare. In teoria con qualsiasi linguaggio dovresti poter scrivere quel che vuoi, le uniche limitazioni magari sono le librerie che puoi utilizzare (per creare interfacce grafiche dovrai appoggiarti a qualche toolkit).
3-ho la terza media, quindi scarsa conoscenza di matematica...è un problema?
Anche qui dipende da ciò che devi fare, ma per cominciare non ne hai una così enorme necessità.
4-Ditemi perchè doveri scegliere il python o il pascal o il C
Pascal e C sono linguaggi abbastanza vecchi (il C fra un po' fa 40 anni :D), altri linguaggi più moderni come Java, C#, Python ti permettono di fare circa le stesse cose con meno sforzo, per questo sono più adatti per iniziare. Nulla toglie che poi in un secondo momento tu possa decidere di imparare il C. :)

||ElChE||88
19-05-2008, 13:35
perchè? ti si intreccia il cervello se impari prima il C? :O
Si, anche se non irreversibilmente.

vizzz
19-05-2008, 13:36
io la butto li eh, ma perchè non ti informi sul programma del biennio e del triennio e cominci a portarti avanti?
al 90% trovi C nel primo anno di triennio.

wizard1993
19-05-2008, 13:43
io la butto li eh, ma perchè non ti informi sul programma del biennio e del triennio e cominci a portarti avanti?
al 90% trovi C nel primo anno di triennio.

oramai è più semplice c++; in qualunque caso è meno traumantico il passaggio al c o al c++ dal java o dal c# che dal python che:
1) non è graffa based (la meno)
2)ha un sintassi molto meno rigida dei linguaggi c based

^TiGeRShArK^
19-05-2008, 13:44
perchè? ti si intreccia il cervello se impari prima il C? :O
si :)

MasterOfNewbies
19-05-2008, 14:04
1- Vorrei precisare subito che non ho un gran interesse a fare programmi appositi per winzoz...quindi (per ora) niente basic e compagnia varia....

2- Purtroppo però in ambito Gnu/Linux sono ancora abbastanza ignorante il massimo che sò fare è dare qualche comando nella shell (si kiamava così vero?), quindi volvo chiedervi: E' meglio programmare su winzozz o su Gnu/Linux? Nel caso fosse meglio Linux devo approfondire le mie conoscenze del suddetto?

khelidan1980
19-05-2008, 14:11
Nessuno ha nemmeno minimamente preso in considerazione la possibilità di comiciare con la teoria?

Bhe ti hanno gia risposto,saresti cotto anche in meno di una settimana!;)

Scusami se ho solo dato un consiglio ad una persona che è all'inizio e, sopratutto in questa fase iniziale, sono convinto che un po' di elasticità mentale si debba acquisire: certe cose si imparano molto più facilmente da giovani.
Ho scritto 'basi' di C e ci ho affiancato che la cosa tornerà utile nel programmare sistemi embedded. Vedrà poi lui se la cosa può interessarli o meno, ma sono sicuro che nel mondo del lavoro si troverà in situazioni in cui gli oggetti non sono tutto.
Certo che se poi qualcuno fa fatica a passare da una mentalità procedurale ad una ad oggetti...beh...quasi meglio che cambi mestiere.

Quante probabilità ha di ritrovarsi a programmare embedded in C rispetto a quelle di lavorare con un linguaggio OO?A questo punto io dico meglio padroneggiare la programmazione ad oggetti prima e poi eventualmente passare ad altro!
1- Vorrei precisare subito che non ho un gran interesse a fare programmi appositi per winzoz...quindi (per ora) niente basic e compagnia varia....

2- Purtroppo però in ambito Gnu/Linux sono ancora abbastanza ignorante il massimo che sò fare è dare qualche comando nella shell (si kiamava così vero?), quindi volvo chiedervi: E' meglio programmare su winzozz o su Gnu/Linux? Nel caso fosse meglio Linux devo approfondire le mie conoscenze del suddetto?

Se sei con java o python è la stessa cosa,in alcuni casi su win hai molti piu ambienti ide validi,tipo per il C,mentre con java e python è indifferente,c'è eclipse ad esempio

DanieleC88
19-05-2008, 14:12
1- Vorrei precisare subito che non ho un gran interesse a fare programmi appositi per winzoz...quindi (per ora) niente basic e compagnia varia....
Era solo un esempio per dire che con un linguaggio di più alto livello ti eviti parecchie rogne inutili...
2- Purtroppo però in ambito Gnu/Linux sono ancora abbastanza ignorante il massimo che sò fare è dare qualche comando nella shell (si kiamava così vero?), quindi volvo chiedervi: E' meglio programmare su winzozz o su Gnu/Linux? Nel caso fosse meglio Linux devo approfondire le mie conoscenze del suddetto?
Programma dove vuoi, ed impara il linguaggio, non il sistema operativo... quello verrà dopo, solo se ne avrai bisogno. :)

wizard1993
19-05-2008, 14:12
E' meglio programmare su winzozz o su Gnu/Linux? Nel caso fosse meglio Linux devo approfondire le mie conoscenze del suddetto?

ma anche su entrambi :D
c# java e python sono tutti linguaggi interpretati e possono girare senza modifiche sia su win che sun lin

Rigo007
19-05-2008, 14:16
Tu, piuttosto, sei davvero sicuro di sapere programmare ad oggetti? :)
Da quello che si scrivi non si direbbe affatto :)

Parte del mio lavoro comprende la programmazione in C# (dove, come tu mi insegni, tutto è un oggetto :D )...vedi tu :)

cdimauro
19-05-2008, 14:17
Scusami se ho solo dato un consiglio ad una persona che è all'inizio e, sopratutto in questa fase iniziale, sono convinto che un po' di elasticità mentale si debba acquisire: certe cose si imparano molto più facilmente da giovani.
Ho scritto 'basi' di C e ci ho affiancato che la cosa tornerà utile nel programmare sistemi embedded. Vedrà poi lui se la cosa può interessarli o meno, ma sono sicuro che nel mondo del lavoro si troverà in situazioni in cui gli oggetti non sono tutto.
Certo che se poi qualcuno fa fatica a passare da una mentalità procedurale ad una ad oggetti...beh...quasi meglio che cambi mestiere.
Al tuo posto avrei consigliato il linguaggio macchina: non c'è niente di meglio per capire come funziona "realmente" la macchina. :D
1- Cos'ha il pascal che non và per cominciare?
Perché ci sono linguaggi molto più semplici (e fattelo dire da uno che adora ancora Pascal & derivati). ;)
2- Per curiosità, con il python che tipo di software si possono creare, e con il pascal?
Tantissimi.
3-ho la terza media, quindi scarsa conoscenza di matematica...è un problema?
Dipende dalla complessità dei problemi che dovrai affrontare.

Al momento dovrebbe essere ben più che sufficiente.
4-Ditemi perchè doveri scegliere il python o il pascal o il C
Python perché, come dicevo, è molto più semplice da imparare e da usare.

Pascal lo preferisco nettamente al C: puoi fare le stesse cose, anche scrivere driver e s.o., ma con una sintassi più semplice e leggibile.

Il C lo odio visceralmente. Non ci posso fare niente: è una questione empatica.
Se vuoi essere sospeso si. :D

Il mio consiglio è lascia perder C, C++ o Java. Comincia da python o ruby. Scegline uno a caso, vanno bene tutti e due. Poi un po di html, css e js così fai qualche esperimento con django o rails.
VICIUS = '''Se vuoi essere sospeso si. :D

Il mio consiglio è lascia perder C, C++ o Java. Comincia da python o ruby. Scegline uno a caso, vanno bene tutti e due. Poi un po di html, css e js così fai qualche esperimento con django o rails.'''

print VICIUS.replace('ruby', 'Python').replace('rails', 'django')
:asd:
io voto java, è la migliore base per partire con l'oop
Python è interamente a oggetti: perfino i tipi sono... oggetti. :cool:
Si, anche se non irreversibilmente.
Per alcuni è una reazione irreversibile... :asd:
oramai è più semplice c++;
In base a cosa lo affermi? Vogliamo fare dei confronti?
in qualunque caso è meno traumantico il passaggio al c o al c++ dal java o dal c#
Mi sembra normale: hai elencato tutti linguaggi "C-like" come sintassi. Il fatto che un linguaggio sia C-like NON implica nella maniera più assoluta che sia "peggiore".
che dal python che:
1) non è graffa based (la meno)
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
:asd:
2)ha un sintassi molto meno rigida dei linguaggi c based
Python fa ancora meglio. :O

cdimauro
19-05-2008, 14:21
1- Vorrei precisare subito che non ho un gran interesse a fare programmi appositi per winzoz...quindi (per ora) niente basic e compagnia varia....

2- Purtroppo però in ambito Gnu/Linux sono ancora abbastanza ignorante
Non ti preoccupare: è un pregio. :asd:
il massimo che sò fare è dare qualche comando nella shell (si kiamava così vero?), quindi volvo chiedervi: E' meglio programmare su winzozz o su Gnu/Linux? Nel caso fosse meglio Linux devo approfondire le mie conoscenze del suddetto?
Per programmare mi trovo molto meglio su Windows: si trovano molti più ambienti di sviluppo, e in generale la qualità è particolarmente elevata.
ma anche su entrambi :D
c# java e python sono tutti linguaggi interpretati e possono girare senza modifiche sia su win che sun lin
Partiamo con le classiche leggende metropolitane: i linguaggi che hai elencato NON sono interpretati.

wizard_at
19-05-2008, 14:23
Nessuno ha nemmeno minimamente preso in considerazione la possibilità di comiciare con la teoria?

teoria??? prima la pratica poi si capira' la teoria

1- Cos'ha il pascal che non và per cominciare?

il Pascal in se nulla. per iniziare va bene ma e' mooolto limitato.

1- Vorrei precisare subito che non ho un gran interesse a fare programmi appositi per winzoz...quindi (per ora) niente basic e compagnia varia....

soluzione Java!

secondo me manca una domanda fondamentale:
a scuola cosa studierai???
che linguaggio di insegneranno ottusamente?...io penso conoscendo la scuola italiana a un Basic o a un C/C++ se va bene. Java C# o simili i docenti spesso non sanno neanche come si scriva.

wizard1993
19-05-2008, 14:26
Partiamo con le classiche leggende metropolitane: i linguaggi che hai elencato NON sono interpretati.
per interpretato intendo un lunguaggio che gira su una virtual machine che sia java sia c# sia python hanno (in questo caso è un interprete) e, o che vengano eseguiti da bytecode o direttamente da codice sorgete,
questa la mia definizione di interpretato

cdimauro
19-05-2008, 14:30
il Pascal in se nulla. per iniziare va bene ma e' mooolto limitato.
E' "limitato" molto meno del C, e comparabile a C++ e Java quanto a strumenti di alto livello.
per interpretato intendo un lunguaggio che gira su una virtual machine che sia java sia c# sia python hanno (in questo caso è un interprete) e, o che vengano eseguiti da bytecode o direttamente da codice sorgete,
questa la mia definizione di interpretato
E' la tua, appunto. E nel caso di Python continui a sbagliare.

DanieleC88
19-05-2008, 14:31
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
OMG lo dice davvero :eekk:

MasterOfNewbies
19-05-2008, 14:34
Ho saputo che i primi 2 anni si farà: MS-Office (te pareva) e qualche programmino in C e Pascal...anche un'altra cosa ma non me la ricordo.

Poi nel triennio di tutto e di più...i nomi non me li ricordo ma sembrava roba tosta...molto tosta.

cdimauro
19-05-2008, 14:35
OMG lo dice davvero :eekk:
Certamente: che ti credevi? :O

Prova pure questo, va:

import this

:cool:
Ho saputo che i primi 2 anni si farà: MS-Office (te pareva)
Ottimo. E' cosa buona e giusta. :cool:
e qualche programmino in C e Pascal...anche un'altra cosa ma non me la ricordo.

Poi nel triennio di tutto e di più...i nomi non me li ricordo ma sembrava roba tosta...molto tosta.
Fatti le ossa: comincia con Python. ;)

DanieleC88
19-05-2008, 14:45
Prova pure questo, va:

import this
LOL! :D
If the implementation is hard to explain, it's a bad idea.
Eh... dovrebbero leggerlo i nostri professori questo...

E' "limitato" molto meno del C
Su questa non sono convinto, perché dici che il C è limitato? Io non lo trovo limitato, anzi - sto per dire un'eresia :D - lo trovo piuttosto comodo per certe cose, tutto sta nell'utilizzarlo bene (come per ogni strumento).

variabilepippo
19-05-2008, 14:49
teoria??? prima la pratica poi si capira' la teoria


:muro:

Senza mettere in gioco l'esperienza e la razionalità, ti riporto la definizione di teoria data dal mio dizionario: "insieme di norme e precetti volti a guidare una pratica". Ma come vi vengono in mente certi consigli!? :confused:

wizard_at
19-05-2008, 14:50
Ho saputo che i primi 2 anni si farà: MS-Office (te pareva) e qualche programmino in C e Pascal...anche un'altra cosa ma non me la ricordo.

per ora occupati del biennio e non studiare cio' che farai a scuola altrimenti ti annoi e basta.


pascal e' inferiore al C soprattutto come sintassi. scrivere BEGIN END e' lungo, occupa tanto spazio e soprattutto a me mi fa incaxxare. Possibile che devo scrivere 5lettere ogni volta! La"{" e' molto piu' comoda, pulita e bella.

wizard_at
19-05-2008, 14:53
:muro:

Senza mettere in gioco l'esperienza e la razionalità, ti riporto la definizione di teoria data dal mio dizionario: "insieme di norme e precetti volti a guidare una pratica". Ma come vi vengono in mente certi consigli!? :confused:

se inizia con una tonnellata di teoria divenza 1-scemo 2-rinuncia
se invece inizia studiandosi un manuale in cui la pratica e' affiancata da teoria il tutto diventa piu' facile.
ha 17 anni! l'idea di prendersi in mano un manuale di solo teoria e' da suicidio.

cdimauro
19-05-2008, 14:55
LOL! :D

Eh... dovrebbero leggerlo i nostri professori questo...
Lasciamo perdere, che è meglio. :D
Su questa non sono convinto, perché dici che il C è limitato? Io non lo trovo limitato, anzi - sto per dire un'eresia :D - lo trovo piuttosto comodo per certe cose, tutto sta nell'utilizzarlo bene (come per ogni strumento).
Ovviamente non mi riferisco al Pascal creato da Wirth nei primi anni '70, ma al Turbo Pascal di Borland che ha portato nuova linfa al linguaggio imponendo questa estensione come "Pascal di fatto". ;)
pascal e' inferiore al C soprattutto come sintassi. scrivere BEGIN END e' lungo, occupa tanto spazio e soprattutto a me mi fa incaxxare. Possibile che devo scrivere 5lettere ogni volta! La"{" e' molto piu' comoda, pulita e bella.
Come sempre è una questione di gusti, ma definire "migliore" un linguaggio che preferisce un'accozzaglia di simboli a delle PAROLE (anche se in inglese) e pretendere di spacciarlo per più pulito e bello è una cosa fuori dal mondo.

Il tuo problema è un altro: è il classico "crampo dello scrivano".

banryu79
19-05-2008, 14:58
Come sempre è una questione di gusti, ma definire "migliore" un linguaggio che preferisce un'accozzaglia di simboli a delle PAROLE (anche se in inglese) e pretendere di spacciarlo per più pulito e bello è una cosa fuori dal mondo.

Il tuo problema è un altro: è il classico "crampo dello scrivano".

Credo che su questo punto sia più che altro un de gustibus.

variabilepippo
19-05-2008, 15:00
se inizia con una tonnellata di teoria divenza 1-scemo 2-rinuncia
se invece inizia studiandosi un manuale in cui la pratica e' affiancata da teoria il tutto diventa piu' facile.
ha 17 anni! l'idea di prendersi in mano un manuale di solo teoria e' da suicidio.


Non credo che nessuno abbia consigliato di studiare una "tonnellata di teoria", qui si contesta il principio (sbagliato) che la pratica preceda la teoria. Hai la patente? Ti sei mai chiesto perché l'esame di guida (=pratica) venga preceduto dai test di teoria?


pascal e' inferiore al C soprattutto come sintassi. scrivere BEGIN END e' lungo, occupa tanto spazio e soprattutto a me mi fa incaxxare. Possibile che devo scrivere 5lettere ogni volta! La"{" e' molto piu' comoda, pulita e bella.


Oltre a questa differenza "concettuale" quali altri aspetti della sintassi del Pascal ti sembrano peggiori rispetto agli equivalenti del C (un linguaggio considerato "dirty" per antonomasia)?

Per fortuna è impossibile scrivere cose del genere in Pascal:


#include\
<stdio.h>
#include <stdlib.h>
#include <string.h>

#define w "Hk~HdA=Jk|Jk~LSyL[{M[wMcxNksNss:"
#define r"Ht@H|@=HdJHtJHdYHtY:HtFHtF=JDBIl"\
"DJTEJDFIlMIlM:HdMHdM=I|KIlMJTOJDOIlWITY:8Y"
#define S"IT@I\\@=HdHHtGH|KILJJDIJDH:H|KID"\
"K=HdQHtPH|TIDRJDRJDQ:JC?JK?=JDRJLRI|UItU:8T"
#define _(i,j)L[i=2*T[j,O[i=O[j-R[j,T[i=2*\
R[j-5*T[j+4*O[j-L[j,R[i=3*T[j-R[j-3*O[j+L[j,
#define t"IS?I\\@=HdGHtGIDJILIJDIItHJTFJDF:8J"

#define y yy(4),yy(5), yy(6),yy(7)
#define yy( i)R[i]=T[i],T[i ] =O[i],O[i]=L [i]
#define Y _(0 ], 4] )_ (1 ], 5] )_ (2 ], 6] )_ (3 ], 7] )_=1
#define v(i)( (( R[ i ] * _ + T [ i ]) * _ + O [ i ]) * _ + L [ i ]) *2
double b = 32 ,l ,k ,o ,B ,_ ; int Q , s , V , R [8 ], T[ 8] ,O [8 ], L[ 8] ;
#define q( Q,R ) R= *X ++ % 64 *8 ,R |= *X /8 &7 ,Q=*X++%8,Q=Q*64+*X++%64-256,
# define p "G\\QG\\P=GLPGTPGdMGdNGtOGlOG" "dSGdRGDPGLPG\\LG\\LHtGHtH:"
# define W "Hs?H{?=HdGH|FI\\II\\GJlHJ" "lFL\\DLTCMlAM\\@Ns}Nk|:8G"
# define U "EDGEDH=EtCElDH{~H|AJk}" "Jk?LSzL[|M[wMcxNksNst:"
# define u "Hs?H|@=HdFHtEI" "\\HI\\FJLHJTD:8H"
char * x ,*X , ( * i )[ 640],z[3]="4_",
*Z = "4,8O4.8O4G" r U "4M"u S"4R"u t"4S8CHdDH|E=HtAIDAIt@IlAJTCJDCIlKI\\K:8K"U
"4TDdWDdW=D\\UD\\VF\\FFdHGtCGtEIDBIDDIlBIdDJT@JLC:8D"t"4UGDNG\\L=GDJGLKHL\
FHLGHtEHtE:"p"4ZFDTFLT=G|EGlHITBH|DIlDIdE:HtMH|M=JDBJLDKLAKDALDFKtFKdMK\
\\LJTOJ\\NJTMJTM:8M4aGtFGlG=G|HG|H:G\\IG\\J=G|IG|I:GdKGlL=G|JG|J:4b"W
S"4d"W t t"4g"r w"4iGlIGlK=G|JG|J:4kHl@Ht@=HdDHtCHdPH|P:HdDHdD=It\
BIlDJTEJDFIdNI\\N:8N"w"4lID@IL@=HlIH|FHlPH|NHt^H|^:H|MH|N=J\\D\
J\\GK\\OKTOKDXJtXItZI|YIlWI|V:8^4mHLGH\\G=HLVH\\V:4n" u t t
"4p"W"IT@I\\@=HdHHtGIDKILIJLGJLG:JK?JK?=JDGJLGI|MJDL:8M4\
rHt@H|@=HtDH|BJdLJTH:ITEI\\E=ILPILNNtCNlB:8N4t"W t"4u"
p"4zI[?Il@=HlHH|HIDLILIJDII|HKDAJ|A:JtCJtC=JdLJtJL\
THLdFNk|Nc|\
:8K"; main (
int C,char** A) {for(x=A[1],i=calloc(strlen(x)+2,163840);
C-1;C<3?Q=_= 0,(z[1]=*x++)?((*x++==104?z[1]^=32:--x), X =
strstr(Z,z)) &&(X+=C++):(printf("P2 %d 320 4 ",V=b/2+32),
V*=2,s=Q=0,C =4):C<4?Q-->0?i[(int)((l+=o)+b)][(int)(k+=B)
]=1:_?_-=.5/ 256,o=(v(2)-(l=v(0)))/(Q=16),B=(v(3)-(k=v(1)
))/Q:*X>60?y ,q(L[4],L[5])q(L[6],L[7])*X-61||(++X,y,y,y),
Y:*X>57?++X, y,Y:*X >54?++X,b+=*X++%64*4:--C:printf("%d "
,i[Q][s]+i[Q ][s+1]+i[Q+1][s]+i[Q+1][s+1])&&(Q+=2)<V||(Q=
0,s+=2)<640
||(C=1));}


PS. Se non ti fosse chiaro il codice postato è codice C compilabile!

DanieleC88
19-05-2008, 15:02
Sì, in effetti è una questione di gusti anche secondo me. Ognuno si trova comodo con ciò che vuole, non è da quello che si giudica un linguaggio (non solo, almeno).

Io ad esempio in quanto ad estetica sono un po' in disaccordo con cdimauro, un codice C scritto per benino mi risulta molto "piacevole", il Pascal mi confonde un po' alla lunga. Lo conosco troppo poco per poter giudicare, ma non mi piace troppo nemmeno la sintassi di Python. :ops:

wizard_at
19-05-2008, 15:02
la teoria deve accompagnare la pratica

bl4ckdr4g0n
19-05-2008, 15:04
Non consiglierei mai il python per chi comincia a programmare. E' fin troppo votato alla semplicità e nasconde alcuni elementi chiave come le dichiarazioni ed e' pieno di function built-in che di certo non aiutano chi e' alle prime armi(dato che alla fine il novizio si ritroverà senza aver capito un tubo)

cdimauro
19-05-2008, 15:06
Io ad esempio in quanto ad estetica sono un po' in disaccordo con cdimauro, un codice C scritto per benino mi risulta molto "piacevole", il Pascal mi confonde un po' alla lunga. Lo conosco troppo poco per poter giudicare, ma non mi piace troppo nemmeno la sintassi di Python. :ops:
:mbe: :huh:

cdimauro
19-05-2008, 15:08
Non consiglierei mai il python per chi comincia a programmare. E' fin troppo votato alla semplicità
E' nato per essere chiaro e semplice. :cool:
e nasconde alcuni elementi chiave come le dichiarazioni
Non è un elemento "chiave". Ed è una gran comodità.
ed e' pieno di function built-in che di certo non aiutano chi e' alle prime armi(dato che alla fine il novizio si ritroverà senza aver capito un tubo)
E' pieno di moduli di built-in, sì, ed è un bene. Di funzioni built-in, invece, ce ne sono poche.

DanieleC88
19-05-2008, 15:08
:mbe: :huh:
Che vuoi, sarà la troppa abitudine. :D

cdimauro
19-05-2008, 15:14
Esatto. Sei troppo abituato a leggere quel tipo di sintassi.

Prova a leggere un sorgente in Pascal: è quasi come leggere un testo in inglese. Idem per Python. :)

DanieleC88
19-05-2008, 15:20
Be' in Python non ho mai programmato, ho solo dato uno sguardo a qualche programmino, ma in [Turbo, Object] Pascal ho programmato, prima di passare per il C. Mi ci sono trovato anche bene, con Delphi ho fatto parecchie cose simpatiche, però alla fine non mi ci trovavo del tutto a mio agio.

C'è anche da dire che all'epoca ero sicuramente meno "esperto" di adesso, quindi magari dovrei dare al Pascal una seconda chance. Anche se credo che per prima cosa proverò C#, poi si vedrà... :D

^TiGeRShArK^
19-05-2008, 15:27
Parte del mio lavoro comprende la programmazione in C# (dove, come tu mi insegni, tutto è un oggetto :D )...vedi tu :)

ne ho conosciuti davvero tanti di colleghi che programmavano in java, c# & co. senza avere la minima idea di programmazione ad oggetti :)
Che tu programmi in un linguaggio che supporti la programmazione ad oggetti non implica che tu padroneggi il paradigma di programmazione Object Oriented :)

wizard1993
19-05-2008, 15:49
E' la tua, appunto. E nel caso di Python continui a sbagliare.

puoi per favore spiegarmi dove?

variabilepippo
19-05-2008, 15:51
la teoria deve accompagnare la pratica


Ecco, questa è un'affermazione un po' più condivisibile della precedente (teoria??? PRIMA la pratica POI si capira' la teoria)...:) Diciamo che la teoria dovrebbe essere accompagnata dalla pratica.

khelidan1980
19-05-2008, 15:54
Ecco, questa è un'affermazione un po' più condivisibile della precedente (teoria??? PRIMA la pratica POI si capira' la teoria)...:) Diciamo che la teoria dovrebbe essere accompagnata dalla pratica.

Ma guarda io mi accontenterei anche che la facessero poi la teoria,la maggior parte della gente non la fa proprio!!:O

variabilepippo
19-05-2008, 15:57
Ma guarda io mi accontenterei anche che la facessero poi la teoria,la maggior parte della gente non la fa proprio!!


Forse perché in giro c'è tanta gente che esalta l'importanza della "pratica", così per molti il tempo passa ed l'aver acquisito delle capacità da "smanettone" diventa un alibi per non approfondire gli aspetti teorici. :)

Per wizard_at: non ho ancora capito cosa intendevi con "il pascal e' inferiore al C soprattutto come sintassi", puoi argomentare con delle motivazioni che vadano oltre la questione "fondamentale" del begin/end?

cdimauro
19-05-2008, 15:59
puoi per favore spiegarmi dove?
Qui:
per interpretato intendo un lunguaggio che gira su una virtual machine che sia java sia c# sia python hanno (in questo caso è un interprete)

wizard_at
19-05-2008, 16:21
Per wizard_at: non ho ancora capito cosa intendevi con "il pascal e' inferiore al C soprattutto come sintassi", puoi argomentare con delle motivazioni che vadano oltre la questione "fondamentale" del begin/end?

il pascal a differenza del C ha una sintassi pesante sia da scrivere sia da leggere. da leggere e' facile, sembra di leggere una novella, ma e' lungo.


IF x=0 THEN BEGIN
bla bla bla;
END;
e' si di facile comprensione ma e' un po un linguaggio umano


if (x==0) {
bla bla bla;
}

e' piu' leggero alla vista, anche se piu' "artificiale" e piu' tringato.

altro esempio il for

for (int i=0; i<10; i++){ quello_che_vuoi; }

e' ben diverso da (mi scuso ma non mi ricordo la forma perfetta del for in pascal...e' passato qualche anno)

dichiarare la variabile
for i<1 do
begin
bla bla bla
end;

il C , se il programmatore scrive ordinato e non si mette a fare disegni trani con le lettere, e' piu' snello del Pascal da scrivere. da leggere il Pascal e' una novella metre il C e' un po piu' artificiale ma una volta che ci si e' fatti l'occhio diventa veloce e semplice.

ps: vedendo il tuo avatar direi che tu personalmente preferisci il pascal;)

cdimauro
19-05-2008, 16:25
il pascal a differenza del C ha una sintassi pesante sia da scrivere sia da leggere. da leggere e' facile, sembra di leggere una novella, ma e' lungo.


IF x=0 THEN BEGIN
bla bla bla;
END;
e' si di facile comprensione ma e' un po un linguaggio umano
Ah, perché, i programmatori cosa sono, delle macchine? :p

if (x==0) {
bla bla bla;
}

e' piu' leggero alla vista, anche se piu' "artificiale" e piu' tringato.
E' un'accozzaglia di simboli.
altro esempio il for

for (int i=0; i<10; i++){ quello_che_vuoi; }
Stai barando: questo è C++. In C:
int i;
for (i=0; i<10; i++){ quello_che_vuoi; }
e' ben diverso da (mi scuso ma non mi ricordo la forma perfetta del for in pascal...e' passato qualche anno)

dichiarare la variabile
for i<1 do
begin
bla bla bla
end;

var i: integer;
for i := 1 to 10 do begin
bla bla bla
end;
Molto più comprensibile.
il C , se il programmatore scrive ordinato e non si mette a fare disegni trani con le lettere, e' piu' snello del Pascal da scrivere. da leggere il Pascal e' una novella metre il C e' un po piu' artificiale ma una volta che ci si e' fatti l'occhio diventa veloce e semplice.
De gustibus. Il tuo problema, a quanto pare, è quello che dicevo: il classico crampo dello scrivano.

Per il resto, visto che sono un essere umano, mi scuserai se preferisco linguaggi come il Pascal, che sono a me più vicini. ;)

banryu79
19-05-2008, 16:30
Per il resto, visto che sono un essere umano, mi scuserai se preferisco linguaggi come il Pascal, che sono a me più vicini. ;)

Ah, ma sei un essere umano? :eek:
Pensavo fossi un pitone... :D

wizard_at
19-05-2008, 16:32
il pascal e' bello perche' e' facile da capire.
il C va bene per chi non vuole scrivere troppo...esempio IO

mi scuso per la confusione C / C++ ma non ricordavo vendo abbandonato il c da tempo.

variabilepippo
19-05-2008, 16:44
e' si di facile comprensione ma e' un po un linguaggio umano


Sinceramente è la prima volta che leggo qualcuno lamentarsi della leggibilità di un sorgente, di solito ci si lamenta (soprattutto per i codici scritti in C) dell'illeggibilità e di tutti i bug che si nascondono in porzioni di codice criptico. :cool:

Sai quanto sarebbero più sicuri i software se NON fossero implementati in C/C++?

marco.r
19-05-2008, 16:44
il pascal a differenza del C ha una sintassi pesante sia da scrivere sia da leggere. da leggere e' facile, sembra di leggere una novella, ma e' lungo.

La sintassi e' un problema relativo.
Avere singoli caratteri al posto di keywords non e' un risparmio se poi devo scrivere tre volte tanto codice per fare le stesse cose (non mi riferisco in particolare a C vs. Pascal, diciamo C vs. resto del mondo :D)

VICIUS
19-05-2008, 16:45
Stai barando: questo è C++. In C:
Questa volta sbagli. Quella sintassi è completamente valida in C99.

shinya
19-05-2008, 16:45
Se vuoi scrivere poco allora dovresti guardare haskell, un qualsiasi lisp o APL (o varianti...tipo J).

variabilepippo
19-05-2008, 16:49
Per restare off-topic: :)

If C gives you enough rope to hang yourself, C++ gives you enough rope to bind and gag your neighborhood, rig the sails on a small ship, and still have enough rope left over to hang yourself from the yardarm.

C gives you enough rope to hang yourself. C++ also gives you the tree object to tie it to.

Writing in C or C++ is like running a chain saw with all the safety guards removed,

C is a language that combines all the elegance and power of assembly language with all the readability and maintainability of assembly language.

In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg." — Bjarne Stroustrup

DanieleC88
19-05-2008, 17:02
Ma che accanimento. :eek:

cdimauro
19-05-2008, 17:03
Ah, ma sei un essere umano? :eek:
Pensavo fossi un pitone... :D
Il pitone c'è, quello è sicuro. :O :oink:
il pascal e' bello perche' e' facile da capire.
il C va bene per chi non vuole scrivere troppo...esempio IO

mi scuso per la confusione C / C++ ma non ricordavo vendo abbandonato il c da tempo.
Se vuoi scrivere poco c'è Python. :O

Ci sarebbe anche Perl, ma fa concorrenza a C quanto a codice illegibile. :asd:

Sul C, come ricorda il buon Vicius, hai ragione, ma è solo per una botta di culo. :O
Sinceramente è la prima volta che leggo qualcuno lamentarsi della leggibilità di un sorgente, di solito ci si lamenta (soprattutto per i codici scritti in C) dell'illeggibilità e di tutti i bug che si nascondono in porzioni di codice criptico. :cool:

Sai quanto sarebbero più sicuri i software se NON fossero implementati in C/C++?
*
La sintassi e' un problema relativo.
Avere singoli caratteri al posto di keywords non e' un risparmio se poi devo scrivere tre volte tanto codice per fare le stesse cose (non mi riferisco in particolare a C vs. Pascal, diciamo C vs. resto del mondo :D)
*
Questa volta sbagli. Quella sintassi è completamente valida in C99.
Vero.
Per restare off-topic: :)

If C gives you enough rope to hang yourself, C++ gives you enough rope to bind and gag your neighborhood, rig the sails on a small ship, and still have enough rope left over to hang yourself from the yardarm.

C gives you enough rope to hang yourself. C++ also gives you the tree object to tie it to.

Writing in C or C++ is like running a chain saw with all the safety guards removed,

C is a language that combines all the elegance and power of assembly language with all the readability and maintainability of assembly language.

In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg." — Bjarne Stroustrup
*********** :D
Ma che accanimento. :eek:
Terapeutico. :O :asd:

banryu79
19-05-2008, 17:03
E' il thread del momento, siamo già arrivati a pagina 4 :sofico:



Il pitone c'è, quello è sicuro.

Non dire così che poi pensano male di me, che ho tirato in ballo l'argomento... lol

Simonex84
19-05-2008, 17:08
Mi infilo anche io nel 3ad, dopo 5 anni di ITIS Perito Informatico e 4 di Politecnico Ingegneria Informatica posso ufficialmente dire che odio programmare :D :D

Però adoro fare tutto quello che avviene prima e dopo la programmazione, analisi e test.

wizard_at
19-05-2008, 17:15
E' il thread del momento, siamo già arrivati a pagina 4 :sofico:


...del momento ma completamente OT se si legge il titolo!

ritornando all'inizio del tutto....inizia con un linguaggio a caso tra C++, Pascal, Java, C#, Python.

lascia perdere di sicuro HTML che non e' un linguaggio di programmazione

cdimauro
19-05-2008, 17:17
Mi infilo anche io nel 3ad, dopo 5 anni di ITIS Perito Informatico e 4 di Politecnico Ingegneria Informatica posso ufficialmente dire che odio programmare :D :D

Però adoro fare tutto quello che avviene prima e dopo la programmazione, analisi e test.
Ah Quindi ti piacciono i preliminari e le conclusioni... :O

















































:asd:

Simonex84
19-05-2008, 17:19
Ah Quindi ti piacciono i preliminari e le conclusioni... :O


Si la parte centrale è troppo faticosa :D

Ma stiamo ancora parlando di programmazione :mbe: :confused: :D :oink:

marko.fatto
19-05-2008, 17:22
oltre all'ot sta prendendo pure una brutta piega :asd:

comunque al biennio all'itis ti becchi pascal o C fatto dal prof di mate di solito..
e se sei fortunato al triennio java, se no C++ a mo di C per il primo anno poi "entrano" gli oggetti

wizard_at
19-05-2008, 17:25
oltre all'ot sta prendendo pure una brutta piega :asd:

comunque al biennio all'itis ti becchi pascal o C fatto dal prof di mate di solito..
e se sei fortunato al triennio java, se no C++ a mo di C per il primo anno poi "entrano" gli oggetti

java non penso ma potrebbe essere...e anche se fai java gli oggetti li vedi bene dopo un po.
diciamo che la differenza tra studiare un manuale e andare a scuola per imparare un linguaggio e' che il manuale un poco lo finisci e poi pratichi, la scuola te la trascini 5 anni e alla fine devi ancora praticare seriamente.

Java mi sembra strano visto che ha una evoluzione veloce e non penso che i docenti siano al passo con i tempi.

Simonex84
19-05-2008, 17:27
La cosa fondamentale è imparare a creare l'algoritmo che poi seguirà il programma aiutandosi con dei diagrammi a blocchi, una volta fatto quello si tratta solo di tradurre il diagramma nel linguaggio che hai deciso di usare.

Un'altra cosa molto importante è imparare ad usare bene gli oggetti e capire le loro proprietà.

DanieleC88
19-05-2008, 17:29
Java mi sembra strano visto che ha una evoluzione veloce e non penso che i docenti siano al passo con i tempi.
Sto studiando informatica, e se sarò fortunato Java lo vedrò al terzo anno, temo. :p

Ziosilvio
19-05-2008, 17:34
vorrei cominciare a studiare prima ancora di arrivare a scuola...il problema è: MA COSA?
Studia Python: http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm così imparerai velocemente le fondamenta della programmazione. :cool:
Assolutamente sì.
E con quel libro impari la pratica e anche la teoria.

MasterDany
19-05-2008, 18:01
Io consgilio java per due motivi:
- secondo me ha una sintassi apprezzabile(adesso qualcuno mi spara)
-introduce benissimmo l'OOP ,infatti sto leggendo un po' di Python e C# e devo dire che mi trovo benissimo,venendo da Java.

Imparati Java.

wizard_at
19-05-2008, 18:12
- secondo me ha una sintassi apprezzabile(adesso qualcuno mi spara)


probabile.

Java potrebbe andare bene ma mi sembra un po problematico come inizio visto che poi a scuola affrontera' Pascal e C che hanno approcci completamente differenti

MasterDany
19-05-2008, 18:13
si ma almeno impari un linguaggio che fa molto curriculum se ne discuteva tempo fa sul forum...è il più richiesto..

wizard_at
19-05-2008, 18:16
si ma almeno impari un linguaggio che fa molto curriculum se ne discuteva tempo fa sul forum...è il più richiesto..

vero ma secondo me puo' confondere le idee.

marko.fatto
19-05-2008, 18:58
Java mi sembra strano visto che ha una evoluzione veloce e non penso che i docenti siano al passo con i tempi.

all'itis di mestre fanno java :fagiano:
noi C++ :(

cdimauro
19-05-2008, 19:02
Io consgilio java per due motivi:
- secondo me ha una sintassi apprezzabile(adesso qualcuno mi spara)
-introduce benissimmo l'OOP ,infatti sto leggendo un po' di Python e C# e devo dire che mi trovo benissimo,venendo da Java.

Imparati Java.
:eek:

http://www.ppcg.eu.org/gfx/creator.jpg

"Guido, perdona loro perché non sanno quel che fanno"

Tommo
19-05-2008, 19:07
:eek:

http://www.ppcg.eu.org/gfx/creator.jpg

"Guido, perdona loro perché non sanno quel che fanno"

Si no ma basta con sto Python :rolleyes: :D

DanieleC88
19-05-2008, 19:11
Si no ma basta con sto Python :rolleyes: :D

Non hai ancora visto niente. :O

Albi89
19-05-2008, 19:16
:eek:

http://www.ppcg.eu.org/gfx/creator.jpg

"Guido, perdona loro perché non sanno quel che fanno"

Ma guarda te se mi hai fatto venire interesse per il python :fagiano:

wizard_at
19-05-2008, 19:40
Ma guarda te se mi hai fatto venire interesse per il python :fagiano:

interesse per phyton 0...sara' che sono etero:D

71104
19-05-2008, 19:43
:eek:

http://www.ppcg.eu.org/gfx/creator.jpg

"Guido, perdona loro perché non sanno quel che fanno"

i monitors CRT dietro servono forse a suggerire in maniera subliminale che Python è un linguaggio obsoleto? :D

71104
19-05-2008, 19:45
Sto studiando informatica, e se sarò fortunato Java lo vedrò al terzo anno, temo. :p
Java da noi* lo fanno fare a Programmazione di Rete; inoltre lo fanno fare anche nella maggior parte dei corsi di Programmazione a Oggetti, sebbene ci sia un prof che si ostina col C++ :|

*per gli altri che leggono, io e Daniele andiamo alla stessa università :O

DanieleC88
19-05-2008, 20:12
Jinoltre lo fanno fare anche nella maggior parte dei corsi di Programmazione a Oggetti
Ah bene, allora forse già l'anno prossimo saprò. Bene bene. :D
sebbene ci sia un prof che si ostina col C++ :|
È quello che inizia per S? :mbe:

khelidan1980
19-05-2008, 20:16
dopo sto thread il tipo come minimo si trasferisce all'itis di agraria!:asd:

MasterOfNewbies
19-05-2008, 20:22
Siiiiiiiiiiii! W la natura!

cdimauro
19-05-2008, 21:12
Si no ma basta con sto Python :rolleyes: :D
:mbe: "Un profeta non è disprezzato se non nella sua patria e in casa sua". E non fece molti miracoli a causa della loro incredulità. :read:
Ma guarda te se mi hai fatto venire interesse per il python :fagiano:
:D Abile e arruolato. :)
interesse per phyton 0...sara' che sono etero:D
E ti devi spaventare per questo: il pythonista cucca alla grande. :O
i monitors CRT dietro servono forse a suggerire in maniera subliminale che Python è un linguaggio obsoleto? :D
Come me, d'altra parte: adoro i CRT, e spero che il mio Hitachi muoia il più tardi possibile. ;)

wizard_at
19-05-2008, 21:16
E ti devi spaventare per questo: il pythonista cucca alla grande. :O


non lo metto in dubbio( "ti va di provare in mio python? ti faccio vedere il Java")

Albi89
19-05-2008, 21:34
Comunque la verità è che probabilmente il nostro povero compagno si ritroverà a studiare il becero "C da itis"... pesantemente infarcito di goto, 3 o 4 break in ogni for e altre amenità varie.
In fondo quindi "credo", pur condividendo pienamente le obiezioni anti-C portate dagli altri utenti, che potrebbe non essere una cattiva idea iniziare a studiare uno dei linguaggi che userai a scuola.

Questo non toglie che lo studio scolastico del C (o meglio, almeno ultimamente, del sottoinsieme C del C++) può essere davvero pericoloso e controproducente per il futuro: ho conosciuto molti periti informatici che si sono poi iscritti a corsi di studio della fac. di ingegneria, e quasi tutti (dove "quasi" sta per tutti meno uno, due) avevano un'idea molto distorta del linguaggio in questione... molto spesso incapaci addirittura di interpretare i messaggi del compilatore...

Addirittura, visto che argomenti come il processo di compilazione non vengono trattati a sufficienza a scuola, le direttive di include vengono scritte "per atto di fede"... ed è stato davvero divertente vedere gente che malediceva il compilatore perchè "mi da errore su using namescape(?!?)".
Probabilmente affrontare durante la scuola un linguaggio complesso (oltre che "tuttelecosecattivechevolete") come il C a scuola è un po' una zappa sui piedi dei poveri studenti... però visto che la situazione è questa, temo che dovrai essere pronto ad affrontarla e quindi potrebbe essere tempo ben speso approfondire quello che, per forza di cose, a scuola farai solo perchè "copi quello che scrive il prof".

P.S. alla faccia del rispetto per i 56k, vedo van rossum ovunque :sofico:

MasterOfNewbies
19-05-2008, 21:50
Io sono più confuso di prima: java - python - pascal- c - c++ - php e quant'altro......aiuto!

DanieleC88
19-05-2008, 21:54
Riassumendo, per i tuoi scopi personali la cosa migliore sarebbe imparare linguaggi di alto livello, prendi ad esempio Python come consigliato da cdimauro che, accoppiato ad un buon manuale come quello linkato precedentemente, ti insegnerebbe a programmare discretamente bene ed in poco tempo.

A secondo delle cose che dovrai studiare, comunque, potresti preferire l'approccio tosto e darti fin da subito a C e C++ (in modo da sfruttare direttamente in ambito scolastico le conoscenze acquisite), anche se magari vorrai abbandonarli in un futuro, visti i mal di testa che inizialmente ti causeranno.

:D

Simonex84
19-05-2008, 21:56
Io sono più confuso di prima: java - python - pascal- c - c++ - php e quant'altro......aiuto!

Io ti do un consiglio diverso da tutti.

Lascia stare i linguaggi.

1) impara a schematizzare con un diagramma a blocchi un algoritmo
2) impara come funzionano i controlli (if ..... then) e come funzionano i cicli (for....)

Tutta la programmazione si basa su queste due cose fondamentali.

A questo punto puoi concentrarti a studiare la sintassi di un linguaggio, ma se hai schematizzato per bene un algoritmo è solo una questione di tradurre il diagramma in codice.

Se proprio vuoi imparare un linguagigo i più diffusi ed usati sono C/C++ e Java, parti col primo che è più "semplice".

DanieleC88
19-05-2008, 21:58
Ah dimenticavo: i programmatori in fondo sono dei romanticoni. Dovremmo sapere bene che, in quanto semplice strumento, un linguaggio di programmazione diventa perfetto o da evitare a seconda dei reali bisogni di ogni diversa cosa da fare, e andrebbe scelto quindi accuratamente... Invece i linguaggi finiscono per diventare come le religioni: ognuno ha il suo preferito e lo difende fino alla morte, accusando gli altri di blasfemia. :D

Quindi, magari, dai un'occhiata a quelli che ti sono stati consigliati, ma scegli con la tua testa e mettiti al lavoro con una buona dose di pazienza (che non deve mai mancare; se accompagnata da molta passione, poi, il risultato diventa anche migliore).

ciao ;)

MasterOfNewbies
19-05-2008, 22:10
Hey, mi stò orientando sul C ragazzi

Simonex84
19-05-2008, 22:12
Hey, mi stò orientando sul C ragazzi

http://andrea7c3.homelinux.org/Programmazione/C++/tutorial/

;)

cdimauro
19-05-2008, 22:13
Io sono più confuso di prima: java - python - pascal- c - c++ - php e quant'altro......aiuto!
In 26 anni che programmo, con decine di linguaggi di programmazione studiati e usati, per diletto e per lavoro, qualcosina credo di averla imparata, non credi?

Vuoi imparare a programmare? Python + il libro di cui ho postato il link. Vedrai che imparerai molto velocemente, e... sarà pure divertente. ;)

Se poi vuoi fare la fine dei classici studenti dell'ITIS che devono sorbirsi le cazzate del prof. di "informatica" (lo metto tra virgolette, perché generalmente si tratta di qualche docente di matematica, fisica o simile, che hanno fatto il classico corso di aggiornamento da 2 soldi e si sono scoperti informatici patentati), accomodati pure col C.

x Simonex84: i diagrammi e gli schemi lasciali perdere perché distolgono dall'obbiettivo primario di un programmatore. Creare codice. In maniera semplice e veloce.

E con Python e il suo interprete interattivo si impara presto a programmare, perché è molto facile smanettare facendo prove su prove e vedendo in tempo reale i risultati. ;)

DanieleC88
19-05-2008, 22:16
In 26 anni che programmo
:eekk:

:ave:

Simonex84
19-05-2008, 22:18
x Simonex84: i diagrammi e gli schemi lasciali perdere perché distolgono dall'obbiettivo primario di un programmatore. Creare codice. In maniera semplice e veloce.


Non sono daccordo, prima si fa l'algoritmo poi si traduce in codice.

Se non sai cosa devi fare che codice crei??

-Slash
19-05-2008, 22:42
tra java,c++ e c# la sintassi è molto simile, quindi puoi imparare un'altro di questi linguaggi facilmente. python invece ha una sintassi un po' piu particolare.

siccome è forse preferibile impararne uno piu ad alto livello ti consiglio java, visto il tuo entusiasmo per l'open source.

cdimauro
19-05-2008, 22:43
Non sono daccordo, prima si fa l'algoritmo poi si traduce in codice.

Se non sai cosa devi fare che codice crei??
Scusami, non sei d'accordo quando prima hai affermato tranquillamente questo: "posso ufficialmente dire che odio programmare".

Io amo programmare: lo faccio da parecchio tempo e sono passato anche dai famigerati diagrammi di flusso fino a quelli di classe, di stato, ecc. dell'UML.

Secondo te dovrei prima scrivere l'algoritmo di tutto e poi passare al codice. Bene, e se le specifiche cambiano man mano? Mi rifaccio i diagrammi, ovviamente. Quando la vedo una soluzione funzionante? Nel 2100?

Un programmatore sa che è tipico del codice evolvere fino alla soluzione finale. La programmazione è un processo prettamente iterativo... dello sviluppo del codice.

Da quel che hai scritto non ho difficoltà a credere che odii programmare.
ti consiglio java.

tra l'altro tra java,c++ e c# la sintassi è molto simile, quindi puoi imparare un'altro di questi linguaggi facilmente. python invece ha una sintassi un po' piu particolare.
E molto più semplice. :cool:

Albi89
19-05-2008, 22:44
Non sono daccordo, prima si fa l'algoritmo poi si traduce in codice.

Se non sai cosa devi fare che codice crei??

Scusa ma se non programma, cosa traduce in codice?
E poi, come puoi pensare che qualcuno socializzi con, che so, le strutture di controllo se non le sperimenta?
E' vero che la prima fase di apprendimento di un linguaggio di programmazione è un po' avulsa dal contesto, nel senso che un linguaggio varrebbe l'altro, ma deve comunque scegliere uno strumento per l'apprendimento... se questi "diagrammi" rimangono solo su carta, non comprenderà mai errori di progettazione anche banali che però, almeno a me, capitano ancora.

marco.r
19-05-2008, 22:47
Se vuoi scrivere poco allora dovresti guardare haskell, un qualsiasi lisp o APL (o varianti...tipo J).

Sono un amante del codice conciso, ma in alcuni casi forse si esagera...

da http://en.wikipedia.org/wiki/APL_%28programming_language%29

The following expression sorts a word list stored in matrix X according to word length:

X[⍋X+.≠' ';]

The following function "life", written in Dyalog APL, takes a boolean matrix and calculates the new generation according to Conway's Game of Life:

http://upload.wikimedia.org/wikipedia/en/f/ff/LifeInApl.gif

In the following example, also Dyalog, the first line assigns some HTML code to a variable "txt" and then uses an APL expression to remove all the HTML tags, returning the text only as shown in the last line.

http://upload.wikimedia.org/wikipedia/en/0/09/StripHtmlFromText.gif

The following expression finds all prime numbers from 1 to R (presuming an index origin of 1). In both time and space, the calculation is O(R²).

(∼R∈R∘.×R)/R←1↓⍳R

:eek: :D

Haskell va gia' molto meglio ... :p

DanieleC88
19-05-2008, 22:50
Sono un amante del codice conciso, ma in alcuni casi forse si esagera...

[...]

Haskell va gia' molto meglio ... :p
Cosa sarebbe, arabo? :D

marco.r
19-05-2008, 22:52
Cosa sarebbe, arabo? :D

Almeno quello qualcuno lo capisce...
tu pensa che ci facevano pure le tastiere apposta :D
http://en.wikipedia.org/wiki/APL_(programming_language)#APL_symbols_and_keyboard_layout
Immagino che molti operatori fossero di ispirazione matematica, ma non ho mai osato addentrarmi nella questione :p

DanieleC88
19-05-2008, 22:55
Un layout apposito solo per quel "coso"? :mbe:

...L'ho sempre detto io che troppa matematica fa male. :D
Se permettete mi tengo stretto il C a questo punto! :p

Albi89
19-05-2008, 23:02
Un layout apposito solo per quel "coso"? :mbe:

...L'ho sempre detto io che troppa matematica fa male. :D
Se permettete mi tengo stretto il C a questo punto! :p

Mostruosamente mostruoso :sofico:
Ma quanto leggo è un linguaggio molto antico e impiegato soprattutto per calcolo vettoriale e matriciale... non penso sia adatto ai problemi di oggi, insomma, intendo quelli su computer dotati di schermi :fagiano:

marco.r
19-05-2008, 23:16
Il tuo schermo non e' forse una matrice di punti ? (E, per inciso, perche' problemi di matrici e vettori non dovrebbero essere attuali ? :confused: )
In realta' oggi con il fiorire di computer multi-core, calcolo su gpu etc. un linguaggio inerentemente parallelo come APL non andrebbe male, solo che con un linguaggio decente quelle astrazioni riesci a costruirtele facilmente, al costo di pochi caratteri in piu' (e maggior leggibilita' aggiungerei)

ndakota
19-05-2008, 23:19
Comunque la verità è che probabilmente il nostro povero compagno si ritroverà a studiare il becero "C da itis"... pesantemente infarcito di goto, 3 o 4 break in ogni for e altre amenità varie.
In fondo quindi "credo", pur condividendo pienamente le obiezioni anti-C portate dagli altri utenti, che potrebbe non essere una cattiva idea iniziare a studiare uno dei linguaggi che userai a scuola.

Questo non toglie che lo studio scolastico del C (o meglio, almeno ultimamente, del sottoinsieme C del C++) può essere davvero pericoloso e controproducente per il futuro: ho conosciuto molti periti informatici che si sono poi iscritti a corsi di studio della fac. di ingegneria, e quasi tutti (dove "quasi" sta per tutti meno uno, due) avevano un'idea molto distorta del linguaggio in questione... molto spesso incapaci addirittura di interpretare i messaggi del compilatore...

Addirittura, visto che argomenti come il processo di compilazione non vengono trattati a sufficienza a scuola, le direttive di include vengono scritte "per atto di fede"... ed è stato davvero divertente vedere gente che malediceva il compilatore perchè "mi da errore su using namescape(?!?)".
Probabilmente affrontare durante la scuola un linguaggio complesso (oltre che "tuttelecosecattivechevolete") come il C a scuola è un po' una zappa sui piedi dei poveri studenti... però visto che la situazione è questa, temo che dovrai essere pronto ad affrontarla e quindi potrebbe essere tempo ben speso approfondire quello che, per forza di cose, a scuola farai solo perchè "copi quello che scrive il prof".

P.S. alla faccia del rispetto per i 56k, vedo van rossum ovunque :sofico:

naaaaaaaaa.. sono in quarta itis e ne il prof di info ne di sistemi ci permettono di usarli.. :)

DanieleC88
19-05-2008, 23:23
naaaaaaaaa.. sono in quarta itis e ne il prof di info ne di sistemi ci permettono di usarli.. :)
Allelujah! :yeah:

^TiGeRShArK^
20-05-2008, 01:04
Io ti do un consiglio diverso da tutti.

Lascia stare i linguaggi.

1) impara a schematizzare con un diagramma a blocchi un algoritmo
2) impara come funzionano i controlli (if ..... then) e come funzionano i cicli (for....)

Tutta la programmazione si basa su queste due cose fondamentali.

A questo punto puoi concentrarti a studiare la sintassi di un linguaggio, ma se hai schematizzato per bene un algoritmo è solo una questione di tradurre il diagramma in codice.

Se proprio vuoi imparare un linguagigo i più diffusi ed usati sono C/C++ e Java, parti col primo che è più "semplice".

...ma anche no.. :fagiano:
Con la programmazione ad oggetti idealmente gli if dovrebbero essere, per quanto possibile, banditi.
E, con la programmazione funzionale, è possibile fare lo stesso anche per molti cicli.
Il vero problema è "imparare a risolvere i problemi".
Che lo faccia con dei diagrammi a blocchi ( che poi in pratica non gli servono a niente) o con del codice è assolutamente indifferente.
Il suo scopo deve essere entrare in una certa mentalità ed usare lo strumento + adatto per risolvere il problema.
E imho qui i diagrammi di flusso sono troppo limitati dato che ti danno solo una visione "castrata" dell'insieme, non facendoti vedere altri problemi che ti si presenteranno quando andrai a scrivere codice.
E' per questo ormai che per scrivere un programma faccio prima tutti gli spike che mi servono per risolvere i vari problemi e quindi unifico il tutto creando gli oggetti necessari che inglobano le soluzioni precedentemente trovate :p

^TiGeRShArK^
20-05-2008, 01:06
Ah dimenticavo: i programmatori in fondo sono dei romanticoni. Dovremmo sapere bene che, in quanto semplice strumento, un linguaggio di programmazione diventa perfetto o da evitare a seconda dei reali bisogni di ogni diversa cosa da fare, e andrebbe scelto quindi accuratamente... Invece i linguaggi finiscono per diventare come le religioni: ognuno ha il suo preferito e lo difende fino alla morte, accusando gli altri di blasfemia. :D

Quindi, magari, dai un'occhiata a quelli che ti sono stati consigliati, ma scegli con la tua testa e mettiti al lavoro con una buona dose di pazienza (che non deve mai mancare; se accompagnata da molta passione, poi, il risultato diventa anche migliore).

ciao ;)
Io invece sono + per l'approccio pratico...
uso il linguaggio che mi viene meglio usare per quel determinato problema a scelta tra python, ruby, java e C#.
...sicuramente non mi metterò ad usare C o C++ a meno di non esserne costretto :asd:

^TiGeRShArK^
20-05-2008, 01:08
x Simonex84: i diagrammi e gli schemi lasciali perdere perché distolgono dall'obbiettivo primario di un programmatore. Creare codice. In maniera semplice e veloce.

;)

^TiGeRShArK^
20-05-2008, 01:10
Non sono daccordo, prima si fa l'algoritmo poi si traduce in codice.

Se non sai cosa devi fare che codice crei??

:mbe:
appunto...
se non sai qual'è il problema che algoritmo usi? :fagiano.
e tieni conto che SEMPRE per capire appieno il problema devi scrivere codice.
Puoi pensare a tutto quello che vuoi e farti mille pippe mentali.
Ma ci sarà sempre qualcosa che ti sfuggirà e che sarà ovvia solo quando ti troverai ad implementarla.
L'analisi fine a se stessa imho non ha il minimo senso se non quello di far bestemmiare i "poveri" programmatori quando si troveranno di fronte al problema REALE che sicuramente sarà completamente diverso rispetto alla teoria.

sottovento
20-05-2008, 01:12
Si dai, mi ci metto anch'io: basandomi sulla mia esperienza, ti consiglio di imparare l'ADA. Mi e' servito molto dal punto di vista professionale (insomma, ho portato a casa i soldini)

^TiGeRShArK^
20-05-2008, 01:12
Sono un amante del codice conciso, ma in alcuni casi forse si esagera...

da http://en.wikipedia.org/wiki/APL_%28programming_language%29

The following expression sorts a word list stored in matrix X according to word length:

X[⍋X+.≠' ';]

The following function "life", written in Dyalog APL, takes a boolean matrix and calculates the new generation according to Conway's Game of Life:

http://upload.wikimedia.org/wikipedia/en/f/ff/LifeInApl.gif

In the following example, also Dyalog, the first line assigns some HTML code to a variable "txt" and then uses an APL expression to remove all the HTML tags, returning the text only as shown in the last line.

http://upload.wikimedia.org/wikipedia/en/0/09/StripHtmlFromText.gif

The following expression finds all prime numbers from 1 to R (presuming an index origin of 1). In both time and space, the calculation is O(R²).

(∼R∈R∘.×R)/R←1↓⍳R

:eek: :D

Haskell va gia' molto meglio ... :p
:eek:
oh porca :mbe:
ma chi l'ha fatto un fondamentalista islamico? :asd:
certi caratteri mi sembrano arabo :p

^TiGeRShArK^
20-05-2008, 01:13
Cosa sarebbe, arabo? :D
appunto :D

^TiGeRShArK^
20-05-2008, 01:16
Si dai, mi ci metto anch'io: basandomi sulla mia esperienza, ti consiglio di imparare l'ADA. Mi e' servito molto dal punto di vista professionale (insomma, ho portato a casa i soldini)
L'ADA non l'ho mai studiato, ma se non sbaglio un mio amico che lavora in augusta mi ha detto che lo usavano per i sistemi di controllo degli elicotteri... una figata praticamente :D
(sempre se ricordo bene a quest'ora col neurone in folle.. :stordita: )

okay
20-05-2008, 03:51
Ciao a tutti, mi presento:

Mi chiamo Michael, ho 17 anni e...a settembre affronterò il primo anno dell'Istituto tecnico industriale dove poi sceglierò indirizzo informatica...gli scorsi anni ho fatto certi casini...prima 2 anni all'istituto tecnico commerciale (sempre in 1°...che asino), inoltre ho lavorato per un pò in un negozio di informatica, ma poi.....lasciamo perdere... :(

Comunque sia ormai ho capito qual'è la mia strada...la programmazione...

Però vorrei cominciare a studiare prima ancora di arrivare a scuola...il problema è: MA COSA?


Io pensavo di cominciare con studiare le basi dell?HTML (che non mi farebbe male) e poi.....già, e poi cosa?


Avevo letto in giro che certi consigliavano ancor prima di studiare un linguaggio, di dedicarsi alla "teoria", parlavano di paradigmi e roba simile (chissà che vuol dire).....




Voi cosa mi consigliate di fare? Pendo dalle vostre labbra, e per favore fate pubblicità a questa discussione, così mi potrà aiutare più gente...ne và del mio futuro! :)


Grazie a tutti in anticipo...e W L'Open Source!!! :D

Inizia con il basic

Simonex84
20-05-2008, 08:12
Scusa ma se non programma, cosa traduce in codice?
E poi, come puoi pensare che qualcuno socializzi con, che so, le strutture di controllo se non le sperimenta?
E' vero che la prima fase di apprendimento di un linguaggio di programmazione è un po' avulsa dal contesto, nel senso che un linguaggio varrebbe l'altro, ma deve comunque scegliere uno strumento per l'apprendimento... se questi "diagrammi" rimangono solo su carta, non comprenderà mai errori di progettazione anche banali che però, almeno a me, capitano ancora.

Scusami, non sei d'accordo quando prima hai affermato tranquillamente questo: "posso ufficialmente dire che odio programmare".

Io amo programmare: lo faccio da parecchio tempo e sono passato anche dai famigerati diagrammi di flusso fino a quelli di classe, di stato, ecc. dell'UML.

Secondo te dovrei prima scrivere l'algoritmo di tutto e poi passare al codice. Bene, e se le specifiche cambiano man mano? Mi rifaccio i diagrammi, ovviamente. Quando la vedo una soluzione funzionante? Nel 2100?

Un programmatore sa che è tipico del codice evolvere fino alla soluzione finale. La programmazione è un processo prettamente iterativo... dello sviluppo del codice.

Da quel che hai scritto non ho difficoltà a credere che odii programmare.

E molto più semplice. :cool:

Io ho imparato così prima si schematizza l'algoritmo poi si passa a scrivere il codice.

Ovviamente poi dipende sempre dalla complessità del progetto, se devo ordinare dei numeri parto subito a scrivere codice, se il programma è più complesso mi metto li carta matita e gomma a fare diagrammi e schemi.

Ho detto che odio programmare nel senso che odio mettermi a scrivere codice, creare l'algoritmo è decisamente più bello e divertente.

Simonex84
20-05-2008, 08:19
:mbe:
appunto...
se non sai qual'è il problema che algoritmo usi? :fagiano.
e tieni conto che SEMPRE per capire appieno il problema devi scrivere codice.
Puoi pensare a tutto quello che vuoi e farti mille pippe mentali.
Ma ci sarà sempre qualcosa che ti sfuggirà e che sarà ovvia solo quando ti troverai ad implementarla.
L'analisi fine a se stessa imho non ha il minimo senso se non quello di far bestemmiare i "poveri" programmatori quando si troveranno di fronte al problema REALE che sicuramente sarà completamente diverso rispetto alla teoria.

Sembra che con la parola "Diagramma a Blocchi" abbia detto una bestemmia, dipende sempre tutto dalla complessità del programma, questo ragazzo deve inizare da zero, partirà con cose molto semplici.

Poi ognuno faccia come vuole, se io non ho carta e matita ma solo un pc con un editor, se il programma è complicato (e per la tesi ho tirato bestemmie in turco), non combino nulla.

black_sand
20-05-2008, 08:35
Io ho imparato così prima si schematizza l'algoritmo poi si passa a scrivere il codice.

Ovviamente poi dipende sempre dalla complessità del progetto, se devo ordinare dei numeri parto subito a scrivere codice, se il programma è più complesso mi metto li carta matita e gomma a fare diagrammi e schemi.

Ho detto che odio programmare nel senso che odio mettermi a scrivere codice, creare l'algoritmo è decisamente più bello e divertente.

Io *amo* scrivere codice, però concordo...
è inutile se hai un problema da risolvere metterti a scrivere subito codice come una scimmia e andare per tentativi... poi ovviamente finisce che vai per tentativi cmq in genere, però sono convinto che è sempre una buona idea mettere prima sulla carta (almeno a grandi linee) un algoritmo in pseudo codice o qlc...
per usare un paragone scolastico (scusatemi, nn mi veniva in mente nulla di meglio ^_^' ) è un po' come fare una scaletta prima del tema; è logico che puoi sbattertene e il tema viene fuori cmq alla fine, ma ti semplifica di molto la vita farti un'idea prima.

Simonex84
20-05-2008, 08:39
Io *amo* scrivere codice, però concordo...
è inutile se hai un problema da risolvere metterti a scrivere subito codice come una scimmia e andare per tentativi... poi ovviamente finisce che vai per tentativi cmq in genere, però sono convinto che è sempre una buona idea mettere prima sulla carta (almeno a grandi linee) un algoritmo in pseudo codice o qlc...
per usare un paragone scolastico (scusatemi, nn mi veniva in mente nulla di meglio ^_^' ) è un po' come fare una scaletta prima del tema; è logico che puoi sbattertene e il tema viene fuori cmq alla fine, ma ti semplifica di molto la vita farti un'idea prima.

Anche perchè è così che va fatto, il mio prof di Ingegneria del Software lo diceva all'inizio di ogni lezione "Scrivere codice è solo l'ultimo passo, prima si progetta la soluzione"

Poi lui era esagerato perchè voleva mille-mila diagrammi UML anche per cose semplicissime.

banryu79
20-05-2008, 08:48
Hey, mi stò orientando sul C ragazzi

Cazz... ne abbiamo perso un'altro :eek:

No dai, scherzi a parte, anche io ti consiglio di partire con Python; in fondo condivido quasi tutte le argomentazioni di cdimauro.

Daltronde avrai tempo a scuola di "soffrire" con il C...
Non sarebbe male riuscire a ritagliarsi anche la propria fetta di soddisfazione dedicandosi a qualcosa come Python, considerando che come "side effect" ci sarebbero pure buone probabilità di trovarsi agevolati anche nell'affrontare appunto quello che ti presenteranno durante l'anno scolastico.

Ciao :)

shinya
20-05-2008, 09:11
Sono un amante del codice conciso, ma in alcuni casi forse si esagera...

Guarda, APL sembra anche a me una lingua aliena. Nel senso di extraterrestre intendo...roba tipo cerchi nel grano e cosi via.
Ci sono varianti più moderne, tipo J (che è free) è K (che non lo è, ma che sembra sia usato in ambiti particolari come certo software bancario http://en.wikipedia.org/wiki/K_programming_language ).
J è nella mia lista di linguaggi da studiare :)

Haskell va gia' molto meglio ... :p

Dopo l'entusiasmo iniziale con haskell, ne ho abbandonato un pò il lo studio perchè mi ha scoraggiato. Mi ha scoraggiato perchè dalla mia piccola esperienza, il linguaggio perde tutta la sua semplicità e chiarezza nell'esprimere concetti quando si vuole scrivere codice un pò performante. (devo ancora vedere un esempio in haskell del crivello di eratostene equivalente a quello che scriverei in un linguaggio procedurale...)

E poi sinceramente credo di non essere abbastanza intelligente per pensare ai problemi pratici in termini di monadi, functor, arrow, ecc...

In questo ultimo periodo sto cercando di imparare bene lisp (CL per la precisione), e mi sta affascinando.

Dico questo un pò per agganciarmi al topic principale. Mi fa un pò sorridere ad esempio che tutti tranne te qui non sapessero dell'esistenza di APL; con questo non voglio dire che siete un baraccone di ignoranti, voglio dire che c'è un atteggiamento di fondo nei confronti della "programmazione" in senso stretto che non è trasversale alla materia.

Cioè, quando uno fa una domanda su un possibile percorso formativo, le risposte si aggirano tutte su questo stile:"vai con python, poi puoi impararti java cosi impari bene l'OOP, poi puoi andare su C# che è una figata e poi se proprio vuoi diventare un mostro ti impari C/C++ per andare a basso livello".

Il problema di questo approccio è che i problemi si affrontano sempre dallo stesso punto di vista, cambiando un pò le cose... in C usi una mappa di puntatori a funzione, in Java usi il polimorfismo ("magari ti impari anche i Design Pattern", che fa sempre figo, cosi quando usi una chiamata polimorfica la puoi chiamare Strategy Pattern). Non sto ovviamente dicendo che programmare in C o in Java siano due cose equivalenti, o che le cose si facciano allo stesso modo. Sono un pò diverse. Ma non completamente diverse.

Ed è questo atteggiamento un pò pressapochista che mi urta, perchè va bene cominciare con uno di quei linguaggi, ma dopo aver imparato java non ha senso passare a c#. Cioè, serve se devi usarlo per lavoro, ma se vuoi imparare qualcosa di nuovo, no.

Senza poi contare che quando leggo cose tipo "se vuoi imparare l'OOP studia java" mi vengono i brividi.
La frase giusta è "se vuoi imparare l'OOP studia Smalltalk. O Lisp."

Se dovessi consigliare un percorso alternativo, che so che tutti derideranno, potrebbe essere imparare un linguaggio semplice per iniziare e poi un linguaggio per ogni paradigma:

Inizio: python
Procedurale/Oggetti: java o c# o continuare con python (come sopra, smalltalk se vuoi la vera minestra)
Funzionale: lisp o scheme o haskell o continuare con python (in una delle mille implementazioni...sono interessanti anche quelle che compilano su jvm, tipo clojure)
Array processing: J
... e cosi via...

Ovviamente va avanti ad infinitum.

E per i libri, ce n'è uno in particolare, tra i tanti, che non può essere ignorato: http://mitpress.mit.edu/sicp/

DanieleC88
20-05-2008, 09:11
Io invece sono + per l'approccio pratico...
uso il linguaggio che mi viene meglio usare per quel determinato problema a scelta tra python, ruby, java e C#.
...sicuramente non mi metterò ad usare C o C++ a meno di non esserne costretto :asd:
Sì, su questo sono d'accordo, uno sceglie anche saggiamente, ma sotto sotto c'è sempre quello preferito (vedi Python per cdimauro). :D

Era tanto per sdrammatizzare. :p

khelidan1980
20-05-2008, 09:20
Sembra che con la parola "Diagramma a Blocchi" abbia detto una bestemmia, dipende sempre tutto dalla complessità del programma, questo ragazzo deve inizare da zero, partirà con cose molto semplici.

Poi ognuno faccia come vuole, se io non ho carta e matita ma solo un pc con un editor, se il programma è complicato (e per la tesi ho tirato bestemmie in turco), non combino nulla.

Si ma forse stiamo sviando,lui ha quanto 15 anni e vuole semplicemente imparare le basi della programmazione,per questo imho il meglio è python,e non mi sembra che su libri di questo genere partono a spiegarti l'ingegneria del sw,si parte con le cose semplici,fare imput output,imparare i costrutti,accennare la programmazione ad oggetti ecc....l'ing arriva dopo,e come hai detto tu serve a risolvere problemi complicati,non certo ad affacciarsi alla programmazione!

L'ADA non l'ho mai studiato, ma se non sbaglio un mio amico che lavora in augusta mi ha detto che lo usavano per i sistemi di controllo degli elicotteri... una figata praticamente :D
(sempre se ricordo bene a quest'ora col neurone in folle.. :stordita: )

Probabile,era ed è molto usato in campo militare

Simonex84
20-05-2008, 09:23
L'ADA non l'ho mai studiato, ma se non sbaglio un mio amico che lavora in augusta mi ha detto che lo usavano per i sistemi di controllo degli elicotteri... una figata praticamente :D
(sempre se ricordo bene a quest'ora col neurone in folle.. :stordita: )

Fra 1 mese dovrò imparare perfettamente ADA, e ti confermo che viene usato per il controllo dei sistemi di volo di aerei ed elicotteri, e sarà il mio prox lavoro :D

Simonex84
20-05-2008, 09:25
Compito per MasterOfNewbies

Facci un programma che legge due numeri da tastiera e visualizza il maggiore :D :D

EDIT: il tuo primo programma deve assolutamente essere: http://it.wikipedia.org/wiki/Hello_world

Albi89
20-05-2008, 09:27
Il tuo schermo non e' forse una matrice di punti ? (E, per inciso, perche' problemi di matrici e vettori non dovrebbero essere attuali ? :confused: )
In realta' oggi con il fiorire di computer multi-core, calcolo su gpu etc. un linguaggio inerentemente parallelo come APL non andrebbe male, solo che con un linguaggio decente quelle astrazioni riesci a costruirtele facilmente, al costo di pochi caratteri in piu' (e maggior leggibilita' aggiungerei)
Non intendo dire che calcolo vettoriale e matriciale non siano problemi attuali, ma solo che si tratta a quanto ho capito di un linguaggio per applicazioni matematiche/statistiche e di simulazione, e per questo al giorno d'oggi ci sono altri linguaggi più semplici e utilizzati (come MATLAB, Scilab...).
Quella sugli schermi era una battuta, anche se mi sono chiamato una pronta risposta :oink:

naaaaaaaaa.. sono in quarta itis e ne il prof di info ne di sistemi ci permettono di usarli.. :)
E sei molto fortunato, negli esami di programmazione vedo molti ragazzi degli itis in difficoltà proprio perchè non riescono a perdere certe cattive abitudini.

Io ho imparato così prima si schematizza l'algoritmo poi si passa a scrivere il codice.
Sì ma infatti penso che nessuno si sieda davanti al pc e inizi a scrivere codice così come viene, però è un consiglio un po' fuori luogo per chi deve cominciare a creare programmi del tipo "stampa 10 volte viva la mamma", e magari non conosce neanche il concetto di algoritmo.
Penso che in questo senso la cosa migliore sia tuffarsi alla scoperta dei principi della sintassi di un linguaggio e sperimentarli con pazienza.

cdimauro
20-05-2008, 09:37
Io ho imparato così prima si schematizza l'algoritmo poi si passa a scrivere il codice.

Ovviamente poi dipende sempre dalla complessità del progetto, se devo ordinare dei numeri parto subito a scrivere codice, se il programma è più complesso mi metto li carta matita e gomma a fare diagrammi e schemi.

Ho detto che odio programmare nel senso che odio mettermi a scrivere codice, creare l'algoritmo è decisamente più bello e divertente.
E per farlo non devi necessariamente passare da un diagramma a blocchi.

Se un problema è complesso, è naturale "spezzettarlo" e trattare le parti separatamente. Non è richiesto espressamente l'uso di carta e penna.
Io *amo* scrivere codice, però concordo...
è inutile se hai un problema da risolvere metterti a scrivere subito codice come una scimmia e andare per tentativi... poi ovviamente finisce che vai per tentativi cmq in genere, però sono convinto che è sempre una buona idea mettere prima sulla carta (almeno a grandi linee) un algoritmo in pseudo codice o qlc...
per usare un paragone scolastico (scusatemi, nn mi veniva in mente nulla di meglio ^_^' ) è un po' come fare una scaletta prima del tema; è logico che puoi sbattertene e il tema viene fuori cmq alla fine, ma ti semplifica di molto la vita farti un'idea prima.
Per Python è stata coniata l'espressione "pseudocodice eseguibile".
Anche perchè è così che va fatto, il mio prof di Ingegneria del Software lo diceva all'inizio di ogni lezione "Scrivere codice è solo l'ultimo passo, prima si progetta la soluzione"

Poi lui era esagerato perchè voleva mille-mila diagrammi UML anche per cose semplicissime.
Ecco come si fa a rovinare i ragazzi. :rolleyes:

In primis bisogna mettere in chiaro che scrivere subito codice NON equivale a NON progettare il software.

In secondo luogo, nella vita reale ti accorgerai che al cliente non interessa uno schema UML, per quanto bello possa essere, ma un prototipo dell'applicazione.
C'è una LEGGERISSIMA differenza fra presentare tanti bei diagrammi dopo 15 giorni, e presentare un prototipo magari con una finestrella e un solo pulsante con scritto "Calcola...".
Il cliente ha una PERCEZIONE completamente diversa delle due cose.

A parte la percezione, è lavorando subito al codice che spesso ti accorgi delle magagne.

Per maggiori informazioni: http://it.wikipedia.org/wiki/Metodologia_agile
Cazz... ne abbiamo perso un'altro :eek:

No dai, scherzi a parte, anche io ti consiglio di partire con Python; in fondo condivido quasi tutte le argomentazioni di cdimauro.

Daltronde avrai tempo a scuola di "soffrire" con il C...
Non sarebbe male riuscire a ritagliarsi anche la propria fetta di soddisfazione dedicandosi a qualcosa come Python, considerando che come "side effect" ci sarebbero pure buone probabilità di trovarsi agevolati anche nell'affrontare appunto quello che ti presenteranno durante l'anno scolastico.

Ciao :)
********************* :D
Senza poi contare che quando leggo cose tipo "se vuoi imparare l'OOP studia java" mi vengono i brividi.
La frase giusta è "se vuoi imparare l'OOP studia Smalltalk. O Lisp."
Che non hanno il monopolio della programmazione a oggetti. ;)
Se dovessi consigliare un percorso alternativo, che so che tutti derideranno, potrebbe essere imparare un linguaggio semplice per iniziare e poi un linguaggio per ogni paradigma:

Inizio: python
Procedurale/Oggetti: java o c# o continuare con python (come sopra, smalltalk se vuoi la vera minestra)
Funzionale: lisp o scheme o haskell o continuare con python (in una delle mille implementazioni...sono interessanti anche quelle che compilano su jvm, tipo clojure)
Array processing: J
... e cosi via...

Ovviamente va avanti ad infinitum.
E la definizione di "vera minestra"? :O :D
Compito per MasterOfNewbies

Facci un programma che legge due numeri da tastiera e visualizza il maggiore :D :D

EDIT: il tuo primo programma deve assolutamente essere: http://it.wikipedia.org/wiki/Hello_world
print "Hello, world!"
Fammelo in UML. :asd:

Simonex84
20-05-2008, 09:45
E per farlo non devi necessariamente passare da un diagramma a blocchi.

Se un problema è complesso, è naturale "spezzettarlo" e trattare le parti separatamente. Non è richiesto espressamente l'uso di carta e penna.

Ecco come si fa a rovinare i ragazzi. :rolleyes:

In primis bisogna mettere in chiaro che scrivere subito codice NON equivale a NON progettare il software.

In secondo luogo, nella vita reale ti accorgerai che al cliente non interessa uno schema UML, per quanto bello possa essere, ma un prototipo dell'applicazione.
C'è una LEGGERISSIMA differenza fra presentare tanti bei diagrammi dopo 15 giorni, e presentare un prototipo magari con una finestrella e un solo pulsante con scritto "Calcola...".
Il cliente ha una PERCEZIONE completamente diversa delle due cose.

A parte la percezione, è lavorando subito al codice che spesso ti accorgi delle magagne.

Per maggiori informazioni: http://it.wikipedia.org/wiki/Metodologia_agile


print "Hello, world!"
Fammelo in UML. :asd:

Qualcosa mi dice che non ti piace l'UML.

Comunque ognuno lavora come meglio crede.

In fin dei conti quello che volevo far capire è che non serve conoscere un casino di linguaggi a memoria, quello che conta è essere in grado di creare l'algoritmo o comunquie trovare la soluzione al problema, poi se devi scriverlo in un linguaggio che non si conosce basta prendere un manuale.

cdimauro
20-05-2008, 09:48
Certo, come se per passare da C a Java/C# bastasse leggersi un manuale...

Simonex84
20-05-2008, 09:53
Certo, come se per passare da C a Java/C# bastasse leggersi un manuale...

Non mi vuoi proprio capire, se sai programmare ad oggetti, se sai cose sono e come si gestiscono le eccezzioni ma non conosci l'esatta sintassi java ti basta un semplice manuale.

Almeno a me basta, io ho sempre usato C/C++, poi per la tesi ho dovuto fare delle cose in java ed in matlab ed è bastato l'help per imparare ad usarli.

black_sand
20-05-2008, 09:54
E per farlo non devi necessariamente passare da un diagramma a blocchi.

Se un problema è complesso, è naturale "spezzettarlo" e trattare le parti separatamente. Non è richiesto espressamente l'uso di carta e penna.

Per Python è stata coniata l'espressione "pseudocodice eseguibile".

Ecco come si fa a rovinare i ragazzi. :rolleyes:


Sei sicuro di nn intendere lo "spezzettare" il codice solo come un approcio top down? secondo me è proprio diverso dallo scrivere pseudo codice e fare qualche diagramma uml.. e nn è che lo devi fare per forza su carta ^_^


In primis bisogna mettere in chiaro che scrivere subito codice NON equivale a NON progettare il software.

In secondo luogo, nella vita reale ti accorgerai che al cliente non interessa uno schema UML, per quanto bello possa essere, ma un prototipo dell'applicazione.
C'è una LEGGERISSIMA differenza fra presentare tanti bei diagrammi dopo 15 giorni, e presentare un prototipo magari con una finestrella e un solo pulsante con scritto "Calcola...".
Il cliente ha una PERCEZIONE completamente diversa delle due cose.


In progetti di dimensioni "nn banali" sarebbe pura follia nn progettare... certo, farlo senza i crismi del caso equivale a nn farlo o addirittura peggio..

L'uml credo sia più utile per capirsi fra programmatori senza dover leggere il codice (magari complesso) altrui che nn per fare vedere un disegno dell'asilo al cliente (cui fra l'altro nn frega proprio nulla e in genere [molto spesso temo] è quello che ha le idee più confuse di tutti :D )

vi rimando a questa simpatica vignetta, sperando che nn l'abbia già postata qualcun altro in giro:
http://www.lifelogs.net/show.php/29314_softwareengineering.jpg

cdimauro
20-05-2008, 09:59
Non mi vuoi proprio capire, se sai programmare ad oggetti, se sai cose sono e come si gestiscono le eccezzioni ma non conosci l'esatta sintassi java ti basta un semplice manuale.

Almeno a me basta, io ho sempre usato C/C++, poi per la tesi ho dovuto fare delle cose in java ed in matlab ed è bastato l'help per imparare ad usarli.
Ma non sei un programmatore Java. La mentalità del programmatore Java l'acquisisci col tempo, lavorandoci.
Sei sicuro di nn intendere lo "spezzettare" il codice solo come un approcio top down? secondo me è proprio diverso dallo scrivere pseudo codice e fare qualche diagramma uml.. e nn è che lo devi fare per forza su carta ^_^

In progetti di dimensioni "nn banali" sarebbe pura follia nn progettare... certo, farlo senza i crismi del caso equivale a nn farlo o addirittura peggio..
Ripeto: scrivere codice da subito non equivale a NON progettare. Anche per progetti non banali. ;)
L'uml credo sia più utile per capirsi fra programmatori senza dover leggere il codice (magari complesso) altrui che nn per fare vedere un disegno dell'asilo al cliente (cui fra l'altro nn frega proprio nulla e in genere [molto spesso temo] è quello che ha le idee più confuse di tutti :D )
L'UML è comodo generarlo (SE serve) a partire dal codice.
vi rimando a questa simpatica vignetta, sperando che nn l'abbia già postata qualcun altro in giro:
http://www.lifelogs.net/show.php/29314_softwareengineering.jpg
Già vista e girata ai miei colleghi. :D

Per tutti e due: http://it.wikipedia.org/wiki/Metodologia_agile ;)

Simonex84
20-05-2008, 09:59
http://www.lifelogs.net/show.php/29314_softwareengineering.jpg

Fantastica :D

Simonex84
20-05-2008, 10:01
L'UML è comodo generarlo (SE serve) a partire dal codice.

Questa frase per un qualunque ingegnere è un'eresia

va sempre fatto il contrario, dall'UML si crea il codice.

cdimauro
20-05-2008, 10:04
Questa frase per un qualunque ingegnere è un'eresia
Infatti io non sono un ingegnere. :D
va sempre fatto il contrario, dall'UML si crea il codice.
I programmatori, ingegneri o no, la pensano diversamente. ;)

Simonex84
20-05-2008, 10:06
Infatti io non sono un ingegnere. :D

I programmatori, ingegneri o no, la pensano diversamente. ;)

Adesso capisco il tuo punto di vista ;)

cdimauro
20-05-2008, 10:07
Mi pare di no. Dopo aver letto questo http://it.wikipedia.org/wiki/Metodologia_agile probabilmente lo capirai. ;)

black_sand
20-05-2008, 10:08
Per tutti e due: http://it.wikipedia.org/wiki/Metodologia_agile ;)

Con me sfondi una porta aperta parlando di metodologia agile, però mi è già capitato di avere clienti che se ne fregano e vogliono solo il prodotto finito (che ovviamente è solo per c**o se va bene cosi come viene, e di fortuna ce n'è poca in giro temo ^^' ) o gente che addirittura rema contro :(

Senza contare che imo c'è ancora troppa gente in giro che pensa che la metodologia agile sia una pratica sessuale...

Simonex84
20-05-2008, 10:11
Mi pare di no. Dopo aver letto questo http://it.wikipedia.org/wiki/Metodologia_agile probabilmente lo capirai. ;)

In pausa pranzo lo leggo, adesso dovrei tornare a lavorare :D

cdimauro
20-05-2008, 10:14
Con me sfondi una porta aperta parlando di metodologia agile, però mi è già capitato di avere clienti che se ne fregano e vogliono solo il prodotto finito (che ovviamente è solo per c**o se va bene cosi come viene, e di fortuna ce n'è poca in giro temo ^^' )
Beh, allora tanto meglio: si arriva prima al prodotto finito. :D
o gente che addirittura rema contro :(
Che ci vuoi fare: proprio gli informatici sono i peggiori reazionari. :muro:
Senza contare che imo c'è ancora troppa gente in giro che pensa che la metodologia agile sia una pratica sessuale...
:eek:

shinya
20-05-2008, 10:18
Che non hanno il monopolio della programmazione a oggetti. ;)


Non ho fatto un discorso di mercato del lavoro. Che vuol dire monopolio? Che la maggioranza usa java/c#?


E la definizione di "vera minestra"? :O :D


"OOP to me means only messaging, local retention and protection and
hiding of state-process, and extreme late-binding of all things. It
can be done in Smalltalk and in LISP. There are possibly other
systems in which this is possible, but I'm not aware of them."
Alan Kay

black_sand
20-05-2008, 10:25
"OOP to me means only messaging, local retention and protection and
hiding of state-process, and extreme late-binding of all things. It
can be done in Smalltalk and in LISP. There are possibly other
systems in which this is possible, but I'm not aware of them."
Alan Kay

perfettamente d'accordo, ti faccio notare però che potrei mettermi a programmare ad oggetti anche in ocaml, ma sarei pazzo a farlo..
perchè farsi del male? ;) meglio usare un linguaggio più "mirato", no?

banryu79
20-05-2008, 10:33
Oddio, però Smalltalk ha un certo fascino...
Ho letto l'articolo sui retroscena e il contesto in cui è nato smalltalk, e la sua filosofia OO pura mi ha stuzzicato.

Ieri ho trovato il sito degli estimatori europei di Smalltalk e mi sono scaricato Squeak.
Lo tengo nel cassetto per il periodo post giugno: sarà l'esplorazione di questa estate.

cdimauro
20-05-2008, 10:53
Non ho fatto un discorso di mercato del lavoro. Che vuol dire monopolio? Che la maggioranza usa java/c#?
Mi riferivo a SmallTalk e LISP: non hanno il monopolio della programmazione a oggetti.
"OOP to me means only messaging, local retention and protection and
hiding of state-process, and extreme late-binding of all things. It
can be done in Smalltalk and in LISP. There are possibly other
systems in which this is possible, but I'm not aware of them."
Alan Kay
;)

^TiGeRShArK^
20-05-2008, 11:19
Sembra che con la parola "Diagramma a Blocchi" abbia detto una bestemmia, dipende sempre tutto dalla complessità del programma, questo ragazzo deve inizare da zero, partirà con cose molto semplici.

Poi ognuno faccia come vuole, se io non ho carta e matita ma solo un pc con un editor, se il programma è complicato (e per la tesi ho tirato bestemmie in turco), non combino nulla.

:mbe:
io invece tutto l'opposto, dato che, come giustamente ricordava cesare, le specifiche è matematico che cambieranno.
E poichè cambiano le specifiche tutto il lavoro di progettazione che hai fatto in precedenza è stata solo fatica sprecata e devi rifarlo perdendo altro tempo dato che le specifiche cambieranno di nuovo :p
Invece progettando mentre scrivi il codice, rendendoti conto perfettamente dei problemi che dovrai affrontare, scrivendo solo il minimo indispensabile per far funzionare il programma, senza fare voli pindarici su quello che ti potrà servire in futuro, hai una flessibilità maggiore.
E soprattutto non sprechi tempo per prevedere gli N casi che molto probabilmente non ti troverai mai ad affrontare ma che nella tua accurata progettazione hai dovuto per forza di cose prevedere.
Alla fine l'importante è avere un software che funziona nel minor tempo possibile.
E devo dire che questa metodologia di continous design, almeno per me, sta dando i suoi frutti :p

^TiGeRShArK^
20-05-2008, 11:23
Anche perchè è così che va fatto, il mio prof di Ingegneria del Software lo diceva all'inizio di ogni lezione "Scrivere codice è solo l'ultimo passo, prima si progetta la soluzione"

Poi lui era esagerato perchè voleva mille-mila diagrammi UML anche per cose semplicissime.
E come fai a progettare la soluzione se non conosci gli n problemi di cui ti renderai conto solo quando andrai a scrivere il codice? :mbe:
e, soprattutto, come farai a proporre una soluzione valida per un problema che è sicuramente diverso da quello che ti è stato originariamente presentato? :mbe:
Questo meccanismo di progettazione va benissimo per cose statiche come l'ingegneria civile.
Là è il top perchè le specifiche sono completamente note a priori e immutabili.
Ma voler applicare una metodologia statica che va bene per l'ingegneria civile ad una cosa prettamente dinamica come la scrittura di un software, imho è abbastanza utopistico... :stordita:

Simonex84
20-05-2008, 11:30
:mbe:
io invece tutto l'opposto, dato che, come giustamente ricordava cesare, le specifiche è matematico che cambieranno.
E poichè cambiano le specifiche tutto il lavoro di progettazione che hai fatto in precedenza è stata solo fatica sprecata e devi rifarlo perdendo altro tempo dato che le specifiche cambieranno di nuovo :p
Invece progettando mentre scrivi il codice, rendendoti conto perfettamente dei problemi che dovrai affrontare, scrivendo solo il minimo indispensabile per far funzionare il programma, senza fare voli pindarici su quello che ti potrà servire in futuro, hai una flessibilità maggiore.
E soprattutto non sprechi tempo per prevedere gli N casi che molto probabilmente non ti troverai mai ad affrontare ma che nella tua accurata progettazione hai dovuto per forza di cose prevedere.
Alla fine l'importante è avere un software che funziona nel minor tempo possibile.
E devo dire che questa metodologia di continous design, almeno per me, sta dando i suoi frutti :p

Ma è ovvio che non si deve fare sempre prima tutto su carta e poi in codice, ci vuole un po' di elasticità.

Però una progettazione generale prima va fatta, poi i veri problemi saltano fuori durante la programmazione vera e propria però ci devono essere delle linee guida generali create in fase di progettazione.

per esempio in progettazione penso: qua ci vorrà un determinato controllo, mi segno cosa riceve e cosa deve restituire, più o meno come penso di farlo e poi parto a programmare. di certo non faccio tutto in diagrammi/speudo codice e poi lo traduco, quello lo facevo in seconda superiore, dove mi mettevo a disegnare anche if e for.

Ho consigliato all'inizio di fare tanti diagrammi perchè a me erano serviti molto, poi però ogni cervello funziona a suo modo.

^TiGeRShArK^
20-05-2008, 11:30
Dico questo un pò per agganciarmi al topic principale. Mi fa un pò sorridere ad esempio che tutti tranne te qui non sapessero dell'esistenza di APL; con questo non voglio dire che siete un baraccone di ignoranti, voglio dire che c'è un atteggiamento di fondo nei confronti della "programmazione" in senso stretto che non è trasversale alla materia.

..forse che è un bene non conoscere un linguaggio con una sintassi così orribile? :fagiano:

Ed è questo atteggiamento un pò pressapochista che mi urta, perchè va bene cominciare con uno di quei linguaggi, ma dopo aver imparato java non ha senso passare a c#. Cioè, serve se devi usarlo per lavoro, ma se vuoi imparare qualcosa di nuovo, no.

Mai usato LINQ, vero? ;)

Senza poi contare che quando leggo cose tipo "se vuoi imparare l'OOP studia java" mi vengono i brividi.
La frase giusta è "se vuoi imparare l'OOP studia Smalltalk. O Lisp."

Snceramente preferisco la sintassi di java, C#, Python o Ruby a quella di Smalltalk, che mi ricorda, per certi versi, l'orrida sintassi dell'Objective-C. :stordita:

^TiGeRShArK^
20-05-2008, 11:36
In secondo luogo, nella vita reale ti accorgerai che al cliente non interessa uno schema UML, per quanto bello possa essere, ma un prototipo dell'applicazione.
C'è una LEGGERISSIMA differenza fra presentare tanti bei diagrammi dopo 15 giorni, e presentare un prototipo magari con una finestrella e un solo pulsante con scritto "Calcola...".
Il cliente ha una PERCEZIONE completamente diversa delle due cose.

Esempio perfetto dato che giusto ieri ho fatto vedere al mio cliente lo stato attuale del software su cui sto lavorando attualmente, dopo 20 giorni part-time, discutendone con lui i vari aspetti, le varie migliorie da apportare, e le cose che non andavano bene, direttamente sul software stesso :)
Pensa cosa avremmo capito sia io che lui a discutere le stesse cose su dei diagrammi UML :p
E inoltre praticamente tutti i problemi principali sono già risolti.
Basta solo assemblare il tutto per avere un prodotto perfettamente funzionante :D

Simonex84
20-05-2008, 11:44
Esempio perfetto dato che giusto ieri ho fatto vedere al mio cliente lo stato attuale del software su cui sto lavorando attualmente, dopo 20 giorni part-time, discutendone con lui i vari aspetti, le varie migliorie da apportare, e le cose che non andavano bene, direttamente sul software stesso :)
Pensa cosa avremmo capito sia io che lui a discutere le stesse cose su dei diagrammi UML :p
E inoltre praticamente tutti i problemi principali sono già risolti.
Basta solo assemblare il tutto per avere un prodotto perfettamente funzionante :D

Ma il diagramma UML serve a te e chi collabora al progetto, il cliente mica deve vederlo.

^TiGeRShArK^
20-05-2008, 11:50
Questa frase per un qualunque ingegnere è un'eresia

va sempre fatto il contrario, dall'UML si crea il codice.
:fagiano:
sono iscritto all'albo da un paio di anni ormai...
perchè dovrebbe essere un'eresia per me? :stordita:
Alla fine quando lavoravo con dei progetti davvero enormi l'UML serviva...
Ma solo per riuscire a capirci qualcosa di come diamine erano intrecciate le varie classi (a proposito... mai vista una progettazione + assurda.. :muro: ).
Secondo me la principale pecca di quel software era proprio l'over-engineering... oltre al fatto che chi ci ha lavorato non è che sapesse programmare propriamente bene... :stordita:
Imho resta sempre + efficiente il continuous design rispetto alla progettazione iniziale.
Un documento interessante da leggere al riguardo è questo:
http://martinfowler.com/ieeeSoftware/continuousDesign.pdf
che presenta con un paio di esempi reali il vantaggio del continuous design :p

^TiGeRShArK^
20-05-2008, 11:55
per esempio in progettazione penso: qua ci vorrà un determinato controllo, mi segno cosa riceve e cosa deve restituire, più o meno come penso di farlo e poi parto a programmare. di certo non faccio tutto in diagrammi/speudo codice e poi lo traduco, quello lo facevo in seconda superiore, dove mi mettevo a disegnare anche if e for.

boh..
io invece penso ai problemi da risolvere non certo ai controlli e cose varie che saranno solo successivi, quando si dovrà curare dell'interfaccia utente.....
Una volta individuati i problemi principali inizio a risolverli nel modo + immediato possibile.
E una volta che funzionano vado di refactoring per semplificare il codice.
A quel punto assemblo il tutto e aggiungo l'interfaccia per l'utente che, dato il buon livello medio del codice ottenuto, è piuttosto banale da implementare...

Simonex84
20-05-2008, 11:55
:fagiano:
sono iscritto all'albo da un paio di anni ormai...
perchè dovrebbe essere un'eresia per me? :stordita:
Alla fine quando lavoravo con dei progetti davvero enormi l'UML serviva...
Ma solo per riuscire a capirci qualcosa di come diamine erano intrecciate le varie classi (a proposito... mai vista una progettazione + assurda.. :muro: ).
Secondo me la principale pecca di quel software era proprio l'over-engineering... oltre al fatto che chi ci ha lavorato non è che sapesse programmare propriamente bene... :stordita:
Imho resta sempre + efficiente il continuous design rispetto alla progettazione iniziale.
Un documento interessante da leggere al riguardo è questo:
http://martinfowler.com/ieeeSoftware/continuousDesign.pdf
che presenta con un paio di esempi reali il vantaggio del continuous design :p

Io per ora ho partecipato ad un solo progetto importante e dio benedica l'UML.

^TiGeRShArK^
20-05-2008, 11:57
Ma il diagramma UML serve a te e chi collabora al progetto, il cliente mica deve vederlo.
...si, ma il concetto era che perdendo tempo a fare una progettazione puntigliosa iniziale, hai sottratto tempo alla scrittura di codice, hai veicolato il flusso della tua applicazione in una direzione che non puoi sapere a priori se è quella giusta e quindi al cliente non avrai niente di funzionante da proporre in 15 giorni...
Ti resteranno solo i diagrammi UML :p

^TiGeRShArK^
20-05-2008, 12:01
Io per ora ho partecipato ad un solo progetto importante e dio benedica l'UML.
Quanto importante?
Il mio primo progetto lavorativo era sulle 30K LOC da integrare in un progetto + grande da 300K LOC.
Poi sono passato a due progetti da circa 1M LOC ciascuno, che tra l'altro funzionavano per grazia di dio....
Ovviamente senza UML non ci avrei capito una mazza, nonostante gli ottimi strumenti di Eclipse.
Ma, come diceva giustamente cesare, per usare l'UML con questa finalità puoi benissimo generarlo successivamente dal codice ;)
imho, se ci fossero state persone capaci di programmare e se si fossero applicate tecniche di extreme programming, la code base sarebbe stata infinitamente migliore.

MasterDany
20-05-2008, 12:43
Guarda, APL sembra anche a me una lingua aliena. Nel senso di extraterrestre intendo...roba tipo cerchi nel grano e cosi via.
Ci sono varianti più moderne, tipo J (che è free) è K (che non lo è, ma che sembra sia usato in ambiti particolari come certo software bancario http://en.wikipedia.org/wiki/K_programming_language ).
J è nella mia lista di linguaggi da studiare :)



Dopo l'entusiasmo iniziale con haskell, ne ho abbandonato un pò il lo studio perchè mi ha scoraggiato. Mi ha scoraggiato perchè dalla mia piccola esperienza, il linguaggio perde tutta la sua semplicità e chiarezza nell'esprimere concetti quando si vuole scrivere codice un pò performante. (devo ancora vedere un esempio in haskell del crivello di eratostene equivalente a quello che scriverei in un linguaggio procedurale...)

E poi sinceramente credo di non essere abbastanza intelligente per pensare ai problemi pratici in termini di monadi, functor, arrow, ecc...

In questo ultimo periodo sto cercando di imparare bene lisp (CL per la precisione), e mi sta affascinando.

Dico questo un pò per agganciarmi al topic principale. Mi fa un pò sorridere ad esempio che tutti tranne te qui non sapessero dell'esistenza di APL; con questo non voglio dire che siete un baraccone di ignoranti, voglio dire che c'è un atteggiamento di fondo nei confronti della "programmazione" in senso stretto che non è trasversale alla materia.

Cioè, quando uno fa una domanda su un possibile percorso formativo, le risposte si aggirano tutte su questo stile:"vai con python, poi puoi impararti java cosi impari bene l'OOP, poi puoi andare su C# che è una figata e poi se proprio vuoi diventare un mostro ti impari C/C++ per andare a basso livello".

Il problema di questo approccio è che i problemi si affrontano sempre dallo stesso punto di vista, cambiando un pò le cose... in C usi una mappa di puntatori a funzione, in Java usi il polimorfismo ("magari ti impari anche i Design Pattern", che fa sempre figo, cosi quando usi una chiamata polimorfica la puoi chiamare Strategy Pattern). Non sto ovviamente dicendo che programmare in C o in Java siano due cose equivalenti, o che le cose si facciano allo stesso modo. Sono un pò diverse. Ma non completamente diverse.

Ed è questo atteggiamento un pò pressapochista che mi urta, perchè va bene cominciare con uno di quei linguaggi, ma dopo aver imparato java non ha senso passare a c#. Cioè, serve se devi usarlo per lavoro, ma se vuoi imparare qualcosa di nuovo, no.

Senza poi contare che quando leggo cose tipo "se vuoi imparare l'OOP studia java" mi vengono i brividi.
La frase giusta è "se vuoi imparare l'OOP studia Smalltalk. O Lisp."

Se dovessi consigliare un percorso alternativo, che so che tutti derideranno, potrebbe essere imparare un linguaggio semplice per iniziare e poi un linguaggio per ogni paradigma:

Inizio: python
Procedurale/Oggetti: java o c# o continuare con python (come sopra, smalltalk se vuoi la vera minestra)
Funzionale: lisp o scheme o haskell o continuare con python (in una delle mille implementazioni...sono interessanti anche quelle che compilano su jvm, tipo clojure)
Array processing: J
... e cosi via...

Ovviamente va avanti ad infinitum.

E per i libri, ce n'è uno in particolare, tra i tanti, che non può essere ignorato: http://mitpress.mit.edu/sicp/
SE conosci java ci metti 3-4 orette per imparare C# non vede perchè non dovrebbe ampliare le sue conoscenze. ;)

banryu79
20-05-2008, 12:45
SE conosci java ci metti 3-4 orette per imparare C# non vede perchè non dovrebbe ampliare le sue conoscenze. ;)

:eek:
Ma voi per "imparare" cosa intendete esattamente?

DanieleC88
20-05-2008, 12:46
SE conosci java ci metti 3-4 orette per imparare C# non vede perchè non dovrebbe ampliare le sue conoscenze. ;)
A parte che dubito che con 3 ore tu possa imparare un linguaggio (un po' della sua sintassi, semmai), ma c'era proprio bisogno di quotare *TUTTO* il messaggio per dire questo? :p

MasterOfNewbies
20-05-2008, 12:47
Siete "leggermente" OT..... :rolleyes: :mbe: :rolleyes:



Potreste aiutare a me? Oh, scusate il disturbo eh... :stordita:

MasterDany
20-05-2008, 12:48
Java non lo mai imparato..impara si intende conoscere il linguaggio ma non saperci programmare sono due mesi-tre mesi che studio Java 2 ore al giorno ancora ho qualche difficoltà anche se sto accumulando molte cose :)
L'altro giorno insieme ad un amico stavo cercando di fare un semplice programma(per un gioco) mi sono ritrovato 20000000000000000 bug :stordita:
che ancora devo risolvere.

MasterDany
20-05-2008, 12:49
A parte che dubito che con 3 ore tu possa imparare un linguaggio (un po' della sua sintassi, semmai), ma c'era proprio bisogno di quotare *TUTTO* il messaggio per dire questo? :p

vabbè :) :D

banryu79
20-05-2008, 12:50
Master, ormai mi pare chiaro: secondo i post fin qua pubblicati si nota che l'opinione "di maggioranza" sia favorevole alla scelta di un linguaggio moderno & di alto livello per cominciare.

Quindi NON C, tanto qualcosa lo vedrai a scuola. Poi lo puoi approfondire.

Io fossi in te proverei a partire con Python, punto.

Simonex84
20-05-2008, 12:56
Quanto importante?
Il mio primo progetto lavorativo era sulle 30K LOC da integrare in un progetto + grande da 300K LOC.
Poi sono passato a due progetti da circa 1M LOC ciascuno, che tra l'altro funzionavano per grazia di dio....
Ovviamente senza UML non ci avrei capito una mazza, nonostante gli ottimi strumenti di Eclipse.
Ma, come diceva giustamente cesare, per usare l'UML con questa finalità puoi benissimo generarlo successivamente dal codice ;)
imho, se ci fossero state persone capaci di programmare e se si fossero applicate tecniche di extreme programming, la code base sarebbe stata infinitamente migliore.

Un'applicazione per effettuare raccomandazioni di film per iptv.

Quello che prima intendevo dire con "eresia" è che UML (Unified Modeling Language) fa usato per modellizzare una realtà, poi su questo modello programmo, crearlo dopo il codice non ha senso.

Simonex84
20-05-2008, 12:58
Siete "leggermente" OT..... :rolleyes: :mbe: :rolleyes:



Potreste aiutare a me? Oh, scusate il disturbo eh... :stordita:

Ci siamo lasciati prendere la mano :D :D

Vai di Python o C ;)

shinya
20-05-2008, 13:04
..forse che è un bene non conoscere un linguaggio con una sintassi così orribile? :fagiano:

Mai usato LINQ, vero? ;)

Snceramente preferisco la sintassi di java, C#, Python o Ruby a quella di Smalltalk, che mi ricorda, per certi versi, l'orrida sintassi dell'Objective-C. :stordita:

Conosco LINQ. Se posso dire, il principio "data as code" non è nulla di completamente nuovo. E' nuovo se non hai visto altro che non sia java, c# (pre 3.0), c++, c, ecc... cioè se hai seguito un solo percorso formativo.

E comunque il senso del mio messaggio non era quello.

^TiGeRShArK^
20-05-2008, 13:10
Conosco LINQ. Se posso dire, il principio "data as code" non è nulla di completamente nuovo. E' nuovo se non hai visto altro che non sia java, c# (pre 3.0), c++, c, ecc... cioè se hai seguito un solo percorso formativo.

E comunque il senso del mio messaggio non era quello.

beh.. tu dicevi che il C# non aggiunge nulla rispetto a java, ed evidentemente sbagliavi vista la possibilità di utilizzare la programmazione funzionale supportata nativamente con il C#, cosa che in Java non puoi fare allo stato attuale ;)

VICIUS
20-05-2008, 13:37
Quello che prima intendevo dire con "eresia" è che UML (Unified Modeling Language) fa usato per modellizzare una realtà, poi su questo modello programmo, crearlo dopo il codice non ha senso.

Essendo un linguaggio conciso, standard e molto diffuso è perfettamente logico usarlo anche per altre cose oltre alla fase di progetto iniziale. Se un indiano ti chiede di spiegargli a grandi linee la struttura del progetto non impari il sanscrito, e non perdi nemmeno una giornata a scrivere un tomo di 20 pagine di inglese. Fai in 30 minuti uno schema uml e hai risolto il problema.

Piuttosto pensare di separare le fasi di analisi e progetto da quella di scrittura del codice intestardendosi ad usare uml per modellare l'intera applicazione è una follia. L'ingegneria del software non è come l'ingegneria civile in cui si hanno costanti e leggi fisiche immutabili ed i requisiti praticamente stazionari. In informatica tutto può cambiare. Se ogni volta che il committente cambia idea devo ripartire dalla fase di analisi e aggiornare tutti i modelli il progetto non lo finirò mai.

Come è già stato detto qualche tempo fa in una discussione simile, la risorsa più scarsa non è la potenza di calcolo, la memoria o lo spazio su disco ma il tempo del programmatore.

DanieleC88
20-05-2008, 13:44
Se un indiano ti chiede di spiegargli a grandi linee la struttura del progetto non impari il sanscrito
La prova tangibile che quest'uomo è un genio, LOL! :rotfl:

cdimauro
20-05-2008, 13:47
Visto che ci siamo, buttiamo un carico: http://martinfowler.com/articles/designDead.html :D

P.S. Ovviamente quoto integralmente quanto detto da "Tiger" e "VICIUS". ;)

khelidan1980
20-05-2008, 14:05
Siete "leggermente" OT..... :rolleyes: :mbe: :rolleyes:



Potreste aiutare a me? Oh, scusate il disturbo eh... :stordita:

Credo che le due linee di pensiero siano:

-vuoi portarti avanti un po sul programma del triennio, incomincia a guardare il C


-vuoi imaprare a programmare bene e divertendoti,python

cdimauro
20-05-2008, 14:27
Manca la terza. Vuoi farti del male? Il C. :D

E' per i giapponesi che, si sa, se non soffrono non godono. :asd:

sottovento
20-05-2008, 14:38
L'ADA non l'ho mai studiato, ma se non sbaglio un mio amico che lavora in augusta mi ha detto che lo usavano per i sistemi di controllo degli elicotteri... una figata praticamente :D
(sempre se ricordo bene a quest'ora col neurone in folle.. :stordita: )

Si, l'ambito e' quello, anche se il sottoscritto l'ha usato nel settore aerospaziale (dovrei dire spaziale ma suona male).
Cmq e' un linguaggio vecchio, ma pedantemente tipizzato per cui e' usato soprattutto quando paghi cari gli errori di programmazione.

wizard_at
20-05-2008, 15:12
ho lasciato questo tread ieri sera ed oggi le pagine si sono duplicate!

comunque vai su Pyhton o su Java o su C#...linguaggi abbastanza recenti

[B][SIZE="5"]
EDIT: il tuo primo programma deve assolutamente essere: http://it.wikipedia.org/wiki/Hello_world

sempre fatti! ma a posto di "Hello World!" scrivevo insulti

cdimauro
20-05-2008, 15:18
I flame sono come i bug: si moltiplicano sempre e non diminuiscono mai. :O

black_sand
20-05-2008, 15:40
I flame sono come i bug: si moltiplicano sempre e non diminuiscono mai. :O

Un lampo di ovvietà mi ha appena accecato! ^_^

cdimauro
20-05-2008, 15:43
Murphy non sbaglia mai. :cool:

wizard_at
20-05-2008, 15:58
scusare la demenza: cosa e' un bug e cosa e' un flame. una vaga idea la ho ma nulla di preciso.

ps: scrivo qui per non fare un 3d inutile: in Java ho:

class tuasorella{
tuasorella(int i) {codice vario}
}

e in main voglio fare un array di tipo "tuasorella"...come scrivo?

tuasorella tuofratello[] = new tuasorella[69](90)???

cdimauro
20-05-2008, 16:01
http://it.wikipedia.org/wiki/Bug_(informatica)
http://it.wikipedia.org/wiki/Flame

wizard_at
20-05-2008, 16:09
ok grazie...

ps: il link a bug ha un parentesi non inclusa non riporta nel posta giusto

marco.r
20-05-2008, 17:58
Dopo l'entusiasmo iniziale con haskell, ne ho abbandonato un pò il lo studio perchè mi ha scoraggiato. Mi ha scoraggiato perchè dalla mia piccola esperienza, il linguaggio perde tutta la sua semplicità e chiarezza nell'esprimere concetti quando si vuole scrivere codice un pò performante. (devo ancora vedere un esempio in haskell del crivello di eratostene equivalente a quello che scriverei in un linguaggio procedurale...)

Scriverlo come lo scriveresti in un linguaggio procedurale si puo', il problema e' che poi sembra appunto codice procedurale. Viene fuori qualcosa tipo il seguente:

updateArray :: Int -> (IOUArray Int Bool) -> Int -> IO ()
updateArray size table n
= do isPrime <- readArray table n
if isPrime then do let update m = writeArray table m False
sequence_ $ map update [n*2,n*3..size]
else return ()


sieve :: Int -> IO (IOUArray Int Bool)
sieve size
= do table <- newArray (2,size) True
sequence_ $ map (updateArray size table) [2..size]
return table

Non bellissimo, devo ammetterlo :p.
Nella mia esperienza comunque il problema non sono tanto le prestazioni in se', quelle sono ottenibili. Il problema semmai e' che non sempre e' chiaro dove bisogna intervenire (a causa della lazyness e delle varie ottimizzazioni che il compilatore effettua) e che a volte bisogna andare "a basso livello".
C'e' chi ha evidenziato meglio di me questi problemi :p:
http://neilmitchell.blogspot.com/2008/05/haskell-and-performance.html

Comunque in generale se uno non ha grandi pretese le performance sono buone, sicuramente meglio di linguaggi dinamici come python, ruby, perl...


In questo ultimo periodo sto cercando di imparare bene lisp (CL per la precisione), e mi sta affascinando.

Idem :p, sto cercando di usarlo un po' con l'OpenGL


Il problema di questo approccio è che i problemi si affrontano sempre dallo stesso punto di vista, cambiando un pò le cose... in C usi una mappa di puntatori a funzione, in Java usi il polimorfismo ("magari ti impari anche i Design Pattern", che fa sempre figo, cosi quando usi una chiamata polimorfica la puoi chiamare Strategy Pattern). Non sto ovviamente dicendo che programmare in C o in Java siano due cose equivalenti, o che le cose si facciano allo stesso modo. Sono un pò diverse. Ma non completamente diverse.

Ed è questo atteggiamento un pò pressapochista che mi urta, perchè va bene cominciare con uno di quei linguaggi, ma dopo aver imparato java non ha senso passare a c#. Cioè, serve se devi usarlo per lavoro, ma se vuoi imparare qualcosa di nuovo, no.

Su questo sono completamente d'accordo. Ma con me sfondi una porta aperta, visto che sono in stato di perenne insoddisfazione con i linguaggi che conosco e vado sempre in cerca di "esperienze nuove" :p :D.


Senza poi contare che quando leggo cose tipo "se vuoi imparare l'OOP studia java" mi vengono i brividi.
La frase giusta è "se vuoi imparare l'OOP studia Smalltalk. O Lisp."

Beh, diciamo che probabilmente quella di Smalltalk e' piu' "canonica". Non che CLOS non sia OOP pure anzi, c'ha pure alcune caratteristiche che in altri linguaggi OO non trovi, come il multi-dispatch, o i combinatori di metodi', pero' sicuramente la complessita' e' maggiore, tanto che non consiglierei di cominciare con Lisp, per l'object orientation perlomeno.


Funzionale: lisp o scheme o haskell o continuare con python (in una delle mille implementazioni...sono interessanti anche quelle che compilano su jvm, tipo clojure)

In realta' io suggerirei di provarne almeno due, diciamo haskell e CL (o scheme), visto che sono comunque approcci abbastanza diversi e comunque c'e' tanta carne al fuoco (high order functions, macros, lazyness, continuazioni ...) che merita di essere gustata tutta (ma ammetto di essere di parte :p ).


Array processing: J
... e cosi via...

Francamente non mi ha mai veramente convinto... rimango dell'idea che con un linguaggio "buono" la maggior parte delle cose riesci a reimplementartele (o a farle reimplementare), anche se e' comunque uno spunto interessante.


Ovviamente va avanti ad infinitum.


Concordo ancora, anzi aggiungerei

"A language that doesn't affect the way you think about programming, is not worth knowing." - Alan Perlis

:D


E per i libri, ce n'è uno in particolare, tra i tanti, che non può essere ignorato: http://mitpress.mit.edu/sicp/
Verissimo, ma probabilmente sarebbe indigesto all'autore del thread, visto che fa ancora le superiori.

marco.r
20-05-2008, 21:24
Mi riferivo a SmallTalk e LISP: non hanno il monopolio della programmazione a oggetti.

;)

Visto che e' detto dalla persona stessa che ha coniato il termine penso un po' di autorevolezza ce la possa avere :D.
Comunque lui stesso ammette che tra la OOP che ha concepito lui e quella che si e' diffusa c'e' una certa differenza. Qui c'e' un passo dove spiega un po' piu' apertamente il passaggio precedentemente riportato:
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht72Ht/doc_kay_oop_en

cdimauro
21-05-2008, 06:54
Lo sapevo, ma sul neologismo non ho nulla da dire: è farina del suo sacco.

Ho, invece, da dire sul fatto che la programmazione a oggetti sarebbe soltanto quella che lui stesso ammette essere la SUA idea. E da lì, infatti, la mia risposta. :)

Anche perché la programmazione a oggetti esisteva già prima di SmallTalk, a cui Alan Key ha lavorato. E, scambio di messaggi o chiamate a metodi che sia, sempre di interazione fra oggetti si tratta. ;)

P.S. Per il link di cui sopra: "HTTP/1.1 403 Access Denied." :mad:

marco.r
21-05-2008, 09:17
Doh ! Eppure ieri funzionava :confused:
Tra l'altro la cache di google per quella pagina e' disabilitata... :(

Simonex84
21-05-2008, 09:38
Questo dovete troppo vederlo

http://lolcode.com/ :D :D

LMCH
22-05-2008, 00:04
Però vorrei cominciare a studiare prima ancora di arrivare a scuola...il problema è: MA COSA?


Se non lo conosci gia bene, esiste un linguaggio che *devi* saper usare
ed e' ... l'inglese. :read:

Documentazione tecnica, pubblicazioni in cui spiegano a cosa serve
la supercazzola che insegnano a scuola senza spiegarti perche
ti torna utile, oppure roba che prima non capivi ma che spiegata
in modo diverso diventa semplicissima, ecc. ecc.
Nel 90% troverai quel che ti serve scritto in lingua inglese.

Ad esempio se conosci gia abbastanza bene l'inglese dai
un occhiata qui:
http://www.htdp.org/

E' un corso completo con testo, esercizi e software
per imparare BENE le basi della programmazione.
Proprio perche "ti insegnano a programmare", invece
di usare un linguaggio molto utilizzato ne utilizzano
uno molto semplice (lo Scheme) e poi quel che avrai imparato
lo potrai riutilizzare con qualsiasi altro linguaggio.

Questo perche i linguaggi di programmazione sono solo
un mezzo con cui "spiegare al computer cosa deve fare"
alcuni sono piu semplici per certi utilizzi, altri sono
piu efficienti per altri utilizzi, ma alla fine quel che conta
e sapere "quel che si deve far fare al computer" e non
come gli si spiega la cosa (poi naturalmente uno ha
le sue preferenze sul linguaggio di programmazione
che preferisce ecc. ecc.).

Un altra cosa molto importante e' la matematica
perche torna utile per rappresentare ed elaborare
i dati tramite i computer.

Per esempio attualmente sto realizzando
un programma che a partire da un disegno in DXF
deve muovere una macchina per eseguire un certo
lavoro "girando attorno" dentro e fuori sagome di vario
tipo, per capire dove andare "a destra oppure a sinistra"
del percorso il programma usa il prodotto vettoriale
di vettori.

Quando lo avevo studiato :muro: era una di quelle cose
che sembravano uscite dalla mente di un matematico
stitico che non faceva sesso da anni manco con se stesso.

Nove volte su dieci quanto a scuola ti spiegano per la prima volta
il prodotto vettoriale di vettori tridimensionali nello stesso momento
una vocina nella testa ti sussurra "non ti servira' maiiii dimenticalooo"
ed e' una palla da ricordare.

Anni dopo, quando l'ho utilizzato "sul serio" per la prima volta
e' diventato tutto d'un tratto semplicissimo perche finalmente
alcune cose "strane" di come era definito diventavano
ovvie vedendo per cosa poteva essere usato "nella vita reale".

Una cosa simile succede con i numeri complessi
(quando te li spiegano ti viene da chiederti chi
e' lo spacciatore da qui i matematici si riforniscono
ma poi vedrai che tornano utili per progettare
circuiti elettrici ed altre cose "reali").

E' estremamente raro trovare qualcuno che ti spiega
nel modo *per te* migliore qualcosa che e' complicato
(alcuni imparano meglio se gli si fanno molti esempi, altri
imparano meglio se gli si spiega la cosa per immagini, ecc. ecc.)
e nove volte su dieci e' piu facile che qualcuno lo abbia
gia scritto in inglese che in italiano.

Ad esempio, hai presente cosa e' l' "elaborazione numerica dei segnali" ?
Consiste nell'usare un computer per analizzare e manipolare
segnali radio, audio, immagini, filmati, fare la risonanza magnetica
nucleare, ecc. ecc.
Quando la studierai a scuola o all'universita molto probabilmente
ti spareranno mitragliate di roba teorica che almeno nelle
prime settimane ti fara' venir voglia di lasciar perdere. :confused:

Se invece conosci l'inglese e dai un occhiata qui:
http://www.dspguide.com
Troverai un libro completo (scaricabile anche in formato pdf)
dove oltre a darti una prima infarinatura riguardo
l'elaborazione numerica dei segnali (Digital Signal Processing)
che ti mette gia in grado di fare qualcosa di interessante
e rende piu facile capire anche le parti teoriche piu complesse
di cui in quel libro si fa solo qualche cenno

Ora, non prendere paura, non devi metterti a parlare
con accento del oxfordiano nel giro di poche settimane, ma
ti consiglio di pensarci su, magari leggendo roba in inglese
su argomenti che ti interessano, lurkando nei newsgroup
e nei forum ecc. ecc. (a scuola arrancavo per avere la sufficienza
in inglese, il salto di qualita' l'ho fatto quando mi sono reso conto
che in inglese trovavo molta piu roba interessante che in italiano)


Io pensavo di cominciare con studiare le basi dell?HTML (che non mi farebbe male) e poi.....già, e poi cosa?


L'html e' *molto* semplice da capire ed usare (inizialmente
la parte piu difficile e' ricordarsi i vari tag se si costruiscono pagine html
usando il notepad), e' un buon inizio nel senso che puoi usarlo per
far qualcosa di concreto (si puo studiare per anni e ricordarsi tutto
ma non c'e' soddisfazione migliore di vedere che "fai succedere qualcosa"
quando metti in pratica quel che hai studiato).

Ci sono modi peggiori di iniziare (io ho imparato il Logo per conto
mio ed eseguivo i programmi "eseguendoli da me" con carta e penna)
l'importante e' continuare un passo dopo l'altro, poi un giorno
guarderai indietro e ti renderai conto che un passo alla volta
sei andato molto lontano, l'importanti e' divertirsi o avere piccole
soddisfazioni in quel che si fa un passo alla volta, poi il resto viene da se.


Avevo letto in giro che certi consigliavano ancor prima di studiare un linguaggio, di dedicarsi alla "teoria", parlavano di paradigmi e roba simile (chissà che vuol dire).....


Di solito si inizia con qualcosa di molto semplice che non richiede
molta teoria, poi quando si vuole andare oltre le cose semplici
la teoria diventa dannatamente utile perche
"ti fa capire meglio il quadro generale" e ti fa fare un gran salto
di qualita in quel che puo fare, senza contare che ti permette
di evitare tutti gli errori :confused: e tutte le sfighe :muro:
che hanno dovuto affrontare quelli che un passo alla volta
hanno contribuito all'ideazione ed alla messa a punto di tutta
quella roba teorica. ;)

cdimauro
22-05-2008, 06:45
Lo Scheme per iniziare? E gli parli pure dei DSP? Poi l'HTML non è un linguaggio (Turing-completo): potrà fare soltanto qualche paginetta web.

Ma vogliamo farlo scappare il ragazzo? :asd:

banryu79
22-05-2008, 10:36
Però quoto in toto sul fatto di imparare bene l'inglese: è la lingua franca della programmazione.
Senza puoi fare lo stesso, ma è come essere zoppi, imho

cdimauro
22-05-2008, 10:39
Ma infatti, su questo nulla da dire: conoscere l'inglese è molto importante per chi deve programmare, e in generale avere a che fare con l'informatica. :)

ramarromarrone
22-05-2008, 10:39
se devi cominciare proprio da 0 assoluto mi verrebbe da consigliarti il Pascal...
tuttavia è un liguaggio abbastanza obsoleto quindi conviene puntare subito a

java (è semplice, è OO, c'è tantissimo materiale reperibile, è il linguaggio + usato in assoluto, è multipiattaforma, è molto potente puoi fare abbastanza facilmente qualsiasi cosa programmazione grafica, web, data base, applicazioni generiche....)

oppure python sta crescendo molto e se ne parla molto bene (non lo conosco), ho visto che c'è tantissimo materiale su cui lavorare.

all'itis del c ti insegneranno solo ( e male,malissimo) la sintassi quindi se vorrai impararlo dovrai farlo per i fatti tuoi (magari all'uni o magari sul lavoro o magari per diletto) ma dopo essertiu fatto le ossa con java.
in questo forum se ne parla sempre malissimo di c ( con argomentazioni tra l'altro molto dubbie) ma vabbè i gusti son gusti.

cdimauro
22-05-2008, 10:46
se devi cominciare proprio da 0 assoluto mi verrebbe da consigliarti il Pascal...
tuttavia è un liguaggio abbastanza obsoleto quindi conviene puntare subito a
Ma anche no: se dovessimo fare dei confronti con le evoluzioni del Pascal, sarebbero altri linguaggi ben più blasonati a poter essere definiti "obsoleti". ;)
java (è semplice, è OO, c'è tantissimo materiale reperibile, è il linguaggio + usato in assoluto, è multipiattaforma, è molto potente puoi fare abbastanza facilmente qualsiasi cosa programmazione grafica, web, data base, applicazioni generiche....)
Vero, ma la maggior parte delle sue qualità sono attribuibili anche ad altri linguaggi molto più semplici da imparare. :O
oppure python sta crescendo molto e se ne parla molto bene (non lo conosco), ho visto che c'è tantissimo materiale su cui lavorare.
Esatto. :)
all'itis del c ti insegneranno solo ( e male,malissimo) la sintassi quindi se vorrai impararlo dovrai farlo per i fatti tuoi (magari all'uni o magari sul lavoro o magari per diletto) ma dopo essertiu fatto le ossa con java.
in questo forum se ne parla sempre malissimo di c ( con argomentazioni tra l'altro molto dubbie) ma vabbè i gusti son gusti.
Se le argomentazioni le ritieni "dubbie" non hai che da contestarle. Io sono disponibilissimo a discutere quando e come vuoi.

Il C è un linguaggio preistorico, aberrato e aberrante.

banryu79
22-05-2008, 10:55
Il C è un linguaggio preistorico, aberrato e aberrante.

Scusa cidimauro, in genere sono d'accordo con te, ma rimane sempre da considerare il fatto che comunque il C è pur sempre uno strumento utile da utilizzare in alcuni contesti, forse (in ambiti molto di nicchia) insostituibile.

Nel software su cui lavoro (java based) una parte integrante (algoritmo di nesting) è stata scritta completamente in C (1.motivi di portabilità, il modulo di nesting non è nostro, siamo proprietari solo di una sua estensione, e gira sia sotto windows che sotto linux 2. motivi di performance nei calcoli, l'algoritmo è molto complesso e molto CPU intensive.)

Resta il fatto che come linguaggio è orribile, però forse non è sempre e comunque sostituibile...

cdimauro
22-05-2008, 11:08
Questo dipende dalla sua diffusione. Purtroppo linguaggi come C++ non lo sono altrettanto, pur potendo rimpiazzare alla perfezione il C per qualunque utilizzo.

banryu79
22-05-2008, 11:13
Questo dipende dalla sua diffusione. Purtroppo linguaggi come C++ non lo sono altrettanto, pur potendo rimpiazzare alla perfezione il C per qualunque utilizzo.

Il C++ in effetti ha eliminato molti "pitfall" del C.

Però è forse un linguaggio ancora più difficile da utilizzare (figuriamoci da utilizzare bene).

In compenso non è così orribile come il C.

cdimauro
22-05-2008, 11:20
Per me sono orribili entrambi :D, ma almeno il C++ è un linguaggio moderno, che offre un nuovo paradigma di programmazione e costrutti sintattici di più alto livello e decisamente utili. :)

Che sia più difficile da usare è fuor di dubbio: richiede parecchia pratica, ma i vantaggi sono notevoli, per cui ne vale sicuramente la pena sforzarsi di più per apprenderlo e usarlo al posto del C.

Poi è chiaro che è anche una questione di capacità individuali: c'è chi non riescirà mai a programmare in C++ a causa della natura matrigna. :asd:

banryu79
22-05-2008, 12:05
Poi è chiaro che è anche una questione di capacità individuali: c'è chi non riescirà mai a programmare in C++ a causa della natura matrigna. :asd:
:confused:
...
Torvalds? :tapiro:

-Slash
22-05-2008, 13:26
io sinceramente trovo la sintassi c++ e java molto piu piacevole di quella di python...

wizard_at
22-05-2008, 13:45
io sinceramente trovo la sintassi c++ e java molto piu piacevole di quella di python...

Qualcuno che appoggio pienamente!
ricordando inoltre che e' solo questione di "gusti".

MasterDany
22-05-2008, 13:46
Conosco poco python comunque la sinstassi non mi dispiace.


(ora cdmauro fa festa :D )

MasterDany
22-05-2008, 13:48
comunque secondo me devi buttarti o su Java o su Python. :)

wizard_at
22-05-2008, 14:01
comunque secondo me devi buttarti o su Java o su Python. :)

quoto.
direi che e' la decisione definitiva

grigor91
22-05-2008, 14:14
io fino ad ora ho studiato a scuola pascal(pochissimo) e C(poco);
differenze rilevanti non ne ho trovate per quel poco che ho visto e neanche difficoltà particolari. Leggendo del C come di un linguaggio appestato mi aspetterei che altri linguaggi (vedi python) leggano nella mente e scrivano il codice da soli; Altrimenti queste critiche sono ingiustificate.

cdimauro
22-05-2008, 14:19
Per i miracoli ci stiamo attrezzando. :cool:

Per il resto, sui gusti non ho mai detto nulla: ognuno ha i suoi, e se si trova la sintassi dei linguaggi C-like "più piacevole"... amen. ;)

P.S. Le critiche al C NON sono ingiustificate. Qui ne abbiamo già parlato non poche volte.

P.P.S. Il tapiro è azzeccato. :asd:

khelidan1980
22-05-2008, 14:33
io fino ad ora ho studiato a scuola pascal(pochissimo) e C(poco);
differenze rilevanti non ne ho trovate per quel poco che ho visto e neanche difficoltà particolari. Leggendo del C come di un linguaggio appestato mi aspetterei che altri linguaggi (vedi python) leggano nella mente e scrivano il codice da soli; Altrimenti queste critiche sono ingiustificate.

Differenza di produttività?

MasterDany
22-05-2008, 14:34
Differenza di produttività?
si vede che lo consce poco :D

grigor91
22-05-2008, 14:54
Per i miracoli ci stiamo attrezzando. :cool:

Per il resto, sui gusti non ho mai detto nulla: ognuno ha i suoi, e se si trova la sintassi dei linguaggi C-like "più piacevole"... amen. ;)

P.S. Le critiche al C NON sono ingiustificate. Qui ne abbiamo già parlato non poche volte.

P.P.S. Il tapiro è azzeccato. :asd:

non dico che le critiche al C siano ingiustificate, più che altro il tono con cui viene criticato che mi sembra eccessivo. Il C è stato creato non per essere facile, ma per permettere di risolvere problemi che altrimenti andrebbero scritti in assembly. probabilmente si insegna a scuola( questa è una mia impressione) perchè permettere di risolvere un'ampissima gamma di problemi. Se fosse stato più semplice e simile al linguaggio umano non sarebbe così

Albi89
22-05-2008, 15:08
non dico che le critiche al C siano ingiustificate, più che altro il tono con cui viene criticato che mi sembra eccessivo. Il C è stato creato non per essere facile, ma per permettere di risolvere problemi che altrimenti andrebbero scritti in assembly. probabilmente si insegna a scuola( questa è una mia impressione) perchè permettere di risolvere un'ampissima gamma di problemi. Se fosse stato più semplice e simile al linguaggio umano non sarebbe così

Sinceramente non ricordo se se n'è parlato nelle altre 12 pagine di discussione, dunque non ti biasimo se non sei andato a controllare.

Da una parte, è vero che il C permette di risolvere una gamma ampissima di problemi, ma è anche vero che il sottoinsieme di questi problemi non risolubile con altri linguaggi di alto livello è minimo.
Allo stesso tempo, soluzioni di alto livello con, ad esempio, controlli sulla gestione della memoria "succhiano" potenza di calcolo ma per applicazioni non critiche, al giorno d'oggi, questo non è affatto un problema.

Bisognerebbe giudicare anche quanto un linguaggio è error prone rispetto a problemi reali: non è un mistero che il C (ma anche il C++) lo siano in modo maggiore. E chi dice che non è vero mente. :fagiano:
Quando non ho niente da fare, mi diverto a fare dei bei cicli di new e delete delle mie classi e a osservare divertito la lancetta della ram salire: di solito eliminare questi memory leak è a dir poco stressante.
Per non parlare dei pomeriggi persi a inseguire segmentation faults causati da un +1 dentro una parentesi piuttosto che fuori.
In quelle 2 ore magari potevo aggiungere qualcosa di sfavillosamente figo al mio programma, non trovi?

D'altra parte (e mi stupisco di non aver trovato discussioni al proposito) si avvicina c++0x.
In particolare, ho notato che anche nelle faq di Stroustrup si consiglia l'adozione degli "smart pointers" di boost: questo insieme ad un uso accorto della STL potrebbe portare ad un codice C++ effettivamente più semplice ed high level.
Però, d'altra parte, lo renderanno ancora più grande e difficile da interpretare, per non parlare del tempo che trascorrerà per adattare i compilatori al nuovo standard.

Insomma, se si cerca un linguaggio che permetta di risolvere problemi ottimizzando la "risorsa più scarsa" (ossia il tempo a disposizione del programmatore) i linguaggi più indicati sono altri.
Tra l'altro, checchè ne dicano i prof universitari, il C++ non è neanche un linguaggio così richiesto: Java ad esempio "tira" molto di più.

cdimauro
22-05-2008, 15:14
non dico che le critiche al C siano ingiustificate, più che altro il tono con cui viene criticato che mi sembra eccessivo. Il C è stato creato non per essere facile, ma per permettere di risolvere problemi che altrimenti andrebbero scritti in assembly. probabilmente si insegna a scuola( questa è una mia impressione) perchè permettere di risolvere un'ampissima gamma di problemi. Se fosse stato più semplice e simile al linguaggio umano non sarebbe così
A parte quanto scritto da Albi89, con cui mi ritrovo, quando il C è stato creato esistevano già dei linguaggi che permettevano la scrittura di applicazioni a basso livello, e anche di s.o..

Il C non ha portato NESSUNA innovazione nella letteratura informatica riguardo ai linguaggi di programmazione, a parte una sintassi che è stata scelta appositamente per scrivere meno caratteri (come, tra l'altro, è attestato dagli stessi creatori).

wizard_at
22-05-2008, 15:36
Il C non ha portato NESSUNA innovazione nella letteratura informatica riguardo ai linguaggi di programmazione, a parte una sintassi che è stata scelta appositamente per scrivere meno caratteri (come, tra l'altro, è attestato dagli stessi creatori).

cosa per cui tutti coloro che odiano scrivere troppo o cose inutili sono molto grati:D

DanieleC88
22-05-2008, 15:42
A parte quanto scritto da Albi89, con cui mi ritrovo, quando il C è stato creato esistevano già dei linguaggi che permettevano la scrittura di applicazioni a basso livello, e anche di s.o..
Per scrivere un sistema operativo che linguaggio useresti? Non sono esperto di linguaggi di programmazione - non ne conosco così tanti - ma il C mi sembra... "molto adatto" per queste cose. :D
In fondo anche Windows è scritto in C, o sbaglio? Ci sarà un motivo. :p

cdimauro
22-05-2008, 15:53
cosa per cui tutti coloro che odiano scrivere troppo o cose inutili sono molto grati:D
Ma questo lo sappiamo già: tutte vittime del crampo dello scrivano. :D
Per scrivere un sistema operativo che linguaggio useresti? Non sono esperto di linguaggi di programmazione - non ne conosco così tanti - ma il C mi sembra... "molto adatto" per queste cose. :D
Adesso C++. Ai tempi il Pascal.
In fondo anche Windows è scritto in C, o sbaglio? Ci sarà un motivo. :p
No, dovrebbe essere scritto in C++ esponendo però le API in C.

cdimauro
22-05-2008, 15:54
DOPPIO.

grigor91
22-05-2008, 15:57
Bisognerebbe giudicare anche quanto un linguaggio è error prone rispetto a problemi reali: non è un mistero che il C (ma anche il C++) lo siano in modo maggiore. E chi dice che non è vero mente. :fagiano:
Quando non ho niente da fare, mi diverto a fare dei bei cicli di new e delete delle mie classi e a osservare divertito la lancetta della ram salire: di solito eliminare questi memory leak è a dir poco stressante.
Per non parlare dei pomeriggi persi a inseguire segmentation faults causati da un +1 dentro una parentesi piuttosto che fuori.
In quelle 2 ore magari potevo aggiungere qualcosa di sfavillosamente figo al mio programma, non trovi?




Ho sperimentato di persona questo: ti appaiono una ventina di errori solo per una graffa dimenticata; comunque dopo quanche programma(non secoli di duro allenamento) quando guardi il log capisci a prima vista se è quello li l'errore.
Poi si sa che un vantaggio dei linguaggi interpretati è la facilità di debugging.
Oltre a questo se impari a correggere gli errori in C con altri linguaggi non te ne accorgerai nemmeno.

Non capisco perche il C debba essere criminalizzato in questo modo visto che quello per cui è stato creato lo fa benissimo. Un linguaggio che è utilizzato da 35 anni non dovrebbere essere apostrofato come antiquato solo perche non rientra negli utilizzi che si fanno, altrimenti sarebbe in disuso.

DanieleC88
22-05-2008, 16:07
No, dovrebbe essere scritto in C++ esponendo però le API in C.
Su questo purtroppo ho avuto sempre dubbi - in fondo non mi sembra che abbiano mai rivelato questi dettagli - comunque dovrebbe usare Assembly, C e C++, per quanto ne so, anche se ovviamente potrei sbagliarmi.

Io sono del parere che con un utilizzo sapiente del C, il linguaggio non sia così terribile come dici, ma continua ad essere questione di gusti IMHO. :)

^TiGeRShArK^
22-05-2008, 16:15
Ho sperimentato di persona questo: ti appaiono una ventina di errori solo per una graffa dimenticata; comunque dopo quanche programma(non secoli di duro allenamento) quando guardi il log capisci a prima vista se è quello li l'errore.
Poi si sa che un vantaggio dei linguaggi interpretati è la facilità di debugging.
Oltre a questo se impari a correggere gli errori in C con altri linguaggi non te ne accorgerai nemmeno.

Non capisco perche il C debba essere criminalizzato in questo modo visto che quello per cui è stato creato lo fa benissimo. Un linguaggio che è utilizzato da 35 anni non dovrebbere essere apostrofato come antiquato solo perche non rientra negli utilizzi che si fanno, altrimenti sarebbe in disuso.
:mbe:
secondo te è così facile risolvere i problemi in codice c/c++? :mbe:
Allora com'è che quelli di firefox ci hanno messo anni a risolvere l'evidente memory leak?
Magari sarà facile in un programmino da 10K LOC (e nemmeno tanto....)
Ma in altre realtà non mi pare così banale... :fagiano:

grigor91
22-05-2008, 16:37
:mbe:
secondo te è così facile risolvere i problemi in codice c/c++? :mbe:
Allora com'è che quelli di firefox ci hanno messo anni a risolvere l'evidente memory leak?
Magari sarà facile in un programmino da 10K LOC (e nemmeno tanto....)
Ma in altre realtà non mi pare così banale... :fagiano:

non è facile, ma non è impossibile se organizzi il programma bene. il C non è stato ideato per essere facile da corregere, altrimenti sarebbe interpretato.

Non conosco bene la storia di firefox, ma avendo presente quanti errori ha fatto la Microsoft, non me la prenderei se anche qualcun'altro ogni tanto abbia qualche problema.

PS: non ho mai avuto firefox

DanieleC88
22-05-2008, 16:41
PS: non ho mai avuto firefox
Giusto, Opera rulez. :D

Vedremo per Firefox 3, spero che i memleak siano stati davvero corretti per bene come dicono.

VICIUS
22-05-2008, 16:55
Su questo purtroppo ho avuto sempre dubbi - in fondo non mi sembra che abbiano mai rivelato questi dettagli - comunque dovrebbe usare Assembly, C e C++, per quanto ne so, anche se ovviamente potrei sbagliarmi.

Io sono del parere che con un utilizzo sapiente del C, il linguaggio non sia così terribile come dici, ma continua ad essere questione di gusti IMHO. :)
Se non ricordo male qualche anno fa finirono su reti p2p alcune parti dei sorgenti di windows 2000. Scorrendo i sorgenti si poteva vedere che la maggior parte del codice era scritto in c++.

Vedremo per Firefox 3, spero che i memleak siano stati davvero corretti per bene come dicono.
Niente più leak a quanto pare ma uccide il sistema chiamando fsync un enormità di volte. :asd:

DanieleC88
22-05-2008, 18:02
Se non ricordo male qualche anno fa finirono su reti p2p alcune parti dei sorgenti di windows 2000. Scorrendo i sorgenti si poteva vedere che la maggior parte del codice era scritto in c++.
È cosa buona e giusta™. Ma erano veri i codici, o era un fake?
Niente più leak a quanto pare ma uccide il sistema chiamando fsync un enormità di volte. :asd:
Ah ok, di male in peggio insomma. :p

LMCH
22-05-2008, 18:09
Lo Scheme per iniziare?

Era uno degli esempi riguardo cosa si puo trovare in inglese
e che invece in italiano non si trova, ma non e' stato
buttato li a caso.

Dai un occhiata al sito che avevo indicato.
Lo Scheme e' l'ideale per iniziare perche ha una sintassi
tra le piu semplici in circolazione ed il sito non si chiama
"impara un linguaggio di programmazione"
ma
"How to Design programs"
ovvero
"Come *progettare* programmi".

E' la stessa differenza che c'e' tra uno che ti insegna
un paio di mosse di arti marziali
(livello Giggino er bulletto, basta che uno conosca una
mossa piu di te e ti gonfia come una zampogna)
ed uno che invece ti insegna come acquisire lo zen
di tutte le arti marziali
(livello Chuck Norris, ha sempre un calcio rotante rovesciato
adatto ad ogni situazione).

Nonostante sia roba dell' MIT e' un corso completo
per prendere uno che non sa programmare e metterlo
i grado di farlo, facendogli anche capire la differenza
tra "conoscere un linguaggio di programmazione"
e saper programmare.
Oltre al libro zeppo di esempi ed esercizi che
crescono gradualmente di complessita hanno
realizzato un ambiente di sviluppo completo (Dr. Scheme)
che fosse il piu semplice possibile da usare.

Quelli la continuano ad usare lo Scheme per il corso
del primo anno perche dati alla mano chi ha fatto
il corso usando lo Scheme (imparando a programmare
e spendendo il meno possibile ad imparare
"un linguaggio di programmazione") quando nel secondo
anno passa al C++ o al Java scavalca in punteggio quelli
che erano partiti da subito con C++ o Java
(perche quelli avevano perso piu tempo ad imparare
il linguaggio invece che ad imparare a programmare).

Una volta che uno "sa" programmare non e' cosi difficile
imparare un nuovo linguaggio di programmazione, semmai
al di sopra del livello hobbystico il difficile e' imparare
ad usare tutti i tool e le librerie "di appoggio" che ti
semplificano il lavoro (es: un conto e' scrivere
un programma in C++ "crudo" ed un altro e' scrivere
lo stesso programma in C++ ed usando anche
le STL).

E gli parli pure dei DSP?

Era un altro esempio di roba tosta che in italiano nessuno
ha il coraggio di spiegarti in parole semplici prima di esporti
alla teoria delle trasformate ecc. ecc.
Io come altri quella roba l'ho imparata partendo dalla
teoria pura e poi solo alla fine arrivando davvero alla pratica, ma
in quel libro procedono in modo diverso facendoti capire "cosa significa"
e "perche e' cosi importante" e quindi diventa tutto
piu semplice da imparare ed utilizzare (sia ben chiaro
non "facile", ma "piu semplice").

Poi l'HTML non è un linguaggio (Turing-completo): potrà fare soltanto qualche paginetta web.

E secondo te perche avevo scritto
"Ci sono modi peggiori per iniziare .." ? ;)
Azz! Io ho iniziato senza neanche un computer! :(

cdimauro
22-05-2008, 18:12
Poi si sa che un vantaggio dei linguaggi interpretati è la facilità di debugging.
Sono pochi i linguaggi interpretati ormai.

Tra l'altro l'implementazione di un linguaggio è una cosa (posso realizzare indifferentemente un interprete o un compilatore per un dato linguaggio) e la sua sintassi è tutt'altra cosa.
Oltre a questo se impari a correggere gli errori in C con altri linguaggi non te ne accorgerai nemmeno.
Gli altri linguaggi hanno problemi che possono essere anche molto diversi da quelli che si trovano nel C. Dunque non sarebbe (sempre) applicabile l'esperienza col C.

A parte questo, di programmatori C che hanno imparato a usare il linguaggio e non commettono nessun errore devo ancora vederne. :O
Non capisco perche il C debba essere criminalizzato in questo modo visto che quello per cui è stato creato lo fa benissimo. Un linguaggio che è utilizzato da 35 anni non dovrebbere essere apostrofato come antiquato solo perche non rientra negli utilizzi che si fanno, altrimenti sarebbe in disuso.
La risposta è nel grassetto.
Io sono del parere che con un utilizzo sapiente del C, il linguaggio non sia così terribile come dici, ma continua ad essere questione di gusti IMHO. :)
Il linguaggio è terribile. :D
Poi può piacere o meno, è una questione di gusti e qui non metto bocca. ;)
non è facile, ma non è impossibile se organizzi il programma bene.
Non conosco una metodologia di organizzazione delle applicazioni che porta a non commettere errori.
il C non è stato ideato per essere facile da corregere, altrimenti sarebbe interpretato.
Vedi sopra: interpretazione e compilazione non riguardano il linguaggio di per sé.
Non conosco bene la storia di firefox, ma avendo presente quanti errori ha fatto la Microsoft, non me la prenderei se anche qualcun'altro ogni tanto abbia qualche problema.

PS: non ho mai avuto firefox
Non importa: il confronto che hai portato non c'entra nulla. Le due cose non sono logicamente connesse.
Giusto, Opera rulez. :D
:ave:
Se non ricordo male qualche anno fa finirono su reti p2p alcune parti dei sorgenti di windows 2000. Scorrendo i sorgenti si poteva vedere che la maggior parte del codice era scritto in c++.
*
Niente più leak a quanto pare ma uccide il sistema chiamando fsync un enormità di volte. :asd:
"I bug non si correggono: si evolvono". :O :asd:

banryu79
22-05-2008, 18:18
Quote:
Niente più leak a quanto pare ma uccide il sistema chiamando fsync un enormità di volte.

"I bug non si correggono: si evolvono". :O :asd:


Non è un "bug evoluto", è una "feature ottimizzabile" :O

cdimauro
22-05-2008, 18:20
È cosa buona e giusta™. Ma erano veri i codici, o era un fake?
Veri, veri. :cool:
Ah ok, di male in peggio insomma. :p
Naaaa. Non fare il pessimista. :asd:
Era uno degli esempi riguardo cosa si puo trovare in inglese
e che invece in italiano non si trova, ma non e' stato
buttato li a caso.

Dai un occhiata al sito che avevo indicato.
Lo Scheme e' l'ideale per iniziare perche ha una sintassi
tra le piu semplici in circolazione ed il sito non si chiama
"impara un linguaggio di programmazione"
ma
"How to Design programs"
ovvero
"Come *progettare* programmi".

E' la stessa differenza che c'e' tra uno che ti insegna
un paio di mosse di arti marziali
(livello Giggino er bulletto, basta che uno conosca una
mossa piu di te e ti gonfia come una zampogna)
ed uno che invece ti insegna come acquisire lo zen
di tutte le arti marziali
(livello Chuck Norris, ha sempre un calcio rotante rovesciato
adatto ad ogni situazione).

Nonostante sia roba dell' MIT e' un corso completo
per prendere uno che non sa programmare e metterlo
i grado di farlo, facendogli anche capire la differenza
tra "conoscere un linguaggio di programmazione"
e saper programmare.
Oltre al libro zeppo di esempi ed esercizi che
crescono gradualmente di complessita hanno
realizzato un ambiente di sviluppo completo (Dr. Scheme)
che fosse il piu semplice possibile da usare.

Quelli la continuano ad usare lo Scheme per il corso
del primo anno perche dati alla mano chi ha fatto
il corso usando lo Scheme (imparando a programmare
e spendendo il meno possibile ad imparare
"un linguaggio di programmazione") quando nel secondo
anno passa al C++ o al Java scavalca in punteggio quelli
che erano partiti da subito con C++ o Java
(perche quelli avevano perso piu tempo ad imparare
il linguaggio invece che ad imparare a programmare).

Una volta che uno "sa" programmare non e' cosi difficile
imparare un nuovo linguaggio di programmazione, semmai
al di sopra del livello hobbystico il difficile e' imparare
ad usare tutti i tool e le librerie "di appoggio" che ti
semplificano il lavoro (es: un conto e' scrivere
un programma in C++ "crudo" ed un altro e' scrivere
lo stesso programma in C++ ed usando anche
le STL).
Capito, ma prova questo: http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm Da notare il titolo. :cool:
Era un altro esempio di roba tosta che in italiano nessuno
ha il coraggio di spiegarti in parole semplici prima di esporti
alla teoria delle trasformate ecc. ecc.
Io come altri quella roba l'ho imparata partendo dalla
teoria pura e poi solo alla fine arrivando davvero alla pratica, ma
in quel libro procedono in modo diverso facendoti capire "cosa significa"
e "perche e' cosi importante" e quindi diventa tutto
piu semplice da imparare ed utilizzare (sia ben chiaro
non "facile", ma "piu semplice").
OK, ho capito.
E secondo te perche avevo scritto
"Ci sono modi peggiori per iniziare .." ? ;)
Azz! Io ho iniziato senza neanche un computer! :(
Idem: due anni e mezzo a smanettare con carta e penna, a consumare riviste a forza di leggerle, prima di metter le mani sul mio Commodore Plus 4. :cool:
Non è un "bug evoluto", è una "feature ottimizzabile" :O
Avvisami quando l'avranno fatto. :asd:

MasterDany
22-05-2008, 18:21
Non è un bug, è una feature :O

:O siete grandi su sto forum.Una vola alla serimana viene aperto un thread su "Con quale linguaggio devo cominciare" voi vi sbizzarrite e devo dire che sono chiacchierate di programmazione piacevoli :D .Dovrebbero farvi santi.


San cdmauro ;)

LMCH
22-05-2008, 18:23
Tra l'altro, checchè ne dicano i prof universitari, il C++ non è neanche un linguaggio così richiesto: Java ad esempio "tira" molto di più.


Dipende molto dal settore applicativo.
Java ormai sta prendendo il posto del COBOL come
"linguaggio per applicazioni aziendali"
(con IBM e Sun che lo spingono, sarebbe anche strano
che non ci riuscisse) ma nel settore delle applicazioni embedded
il C ed C++ regnano sovrani (per non parlare
dei linguaggi tipo ladder e/o function block che invece
vanno per la maggiore con i PLC).

^TiGeRShArK^
22-05-2008, 18:36
Dipende molto dal settore applicativo.
Java ormai sta prendendo il posto del COBOL come
"linguaggio per applicazioni aziendali"
(con IBM e Sun che lo spingono, sarebbe anche strano
che non ci riuscisse) ma nel settore delle applicazioni embedded
il C ed C++ regnano sovrani (per non parlare
dei linguaggi tipo ladder e/o function block che invece
vanno per la maggiore con i PLC).
ah... quanti bei ricordi... :cry:
ero l'unico folle ad aver fatto l'esame direttamente in ladder senza scriverlo prima in SFC e poi tradurlo :asd:

Rigo007
22-05-2008, 18:45
Una base di C (ti tornerà poi utile se programmi sistemi embedded).
Poi passerei allo studio del C++ o al Java per imparare la OOP.
'Programma' in ogni caso sia sotto Win che sotto Linux (open mind for a different view!!) :D

Infine mi butterei sul C# e darei un'occhio all'XML.

Dopo tutto allora il consiglio che ho dato in prima pagina non va così male :)

DanieleC88
22-05-2008, 18:53
Una vola alla serimana viene aperto un thread su "Con quale linguaggio devo cominciare"
In un forum sulla programmazione, è ovviamente la cosa più chiesta.
voi vi sbizzarrite e devo dire che sono chiacchierate di programmazione piacevoli :D
Sennò non continueremmo. :D
San cdmauro ;)
C'è anche una i, non è mica un compact disc. :Prrr:

grigor91
22-05-2008, 19:37
A parte questo, di programmatori C che hanno imparato a usare il linguaggio e non commettono nessun errore devo ancora vederne.


Non a non commetteli ma a capire di che tipo li hanno fatti.




Non capisco perche il C debba essere criminalizzato in questo modo visto che quello per cui è stato creato lo fa benissimo. Un linguaggio che è utilizzato da 35 anni non dovrebbere essere apostrofato come antiquato solo perche non rientra negli utilizzi che si fanno, altrimenti sarebbe in disuso.

La risposta è nel grassetto.



Antiquato significa caduto in disuso; se il C fosse antiquato sarebbe già stato sostituito e non più utilizzato. Se non è così ci sarà un motivo. L'età non è per forza sinonimo di arretratezza, anzi è una prova che è un linguaggio valido.

[/QUOTE]

Il linguaggio è terribile. :D
Poi può piacere o meno, è una questione di gusti e qui non metto bocca. ;)


terribile=complesso -> hai ragione
terribile=inutile -> non sono d'accordo


Non conosco una metodologia di organizzazione delle applicazioni che porta a non commettere errori.


Come prima non intendo dire non faccia commettere errori, ma che semplifichi la loro correzione.

Albi89
22-05-2008, 20:39
Non a non commetteli ma a capire di che tipo li hanno fatti.
Sì ma, come ho capito dal tuo post precedente, tu parli di altri tipi di errori.
Il ; i la {, o unt al posto di int, sono piccoli errori sintattici su cui non è necessario soffermarsi.
Gli errori seri di cui stiamo parlando sono errori di gestione della memoria spesso sepolti in parti di codice poco utilizzate.

Antiquato significa caduto in disuso; se il C fosse antiquato sarebbe già stato sostituito e non più utilizzato. Se non è così ci sarà un motivo. L'età non è per forza sinonimo di arretratezza, anzi è una prova che è un linguaggio valido.
Non necessariamente: antiquato significa o antico, o perlomeno retrò :fagiano:
E che sia antiquato non c'è dubbio: però è stato un linguaggio utilizzatissimo e quindi non tutti sono disposti a pagare lo scotto della riscrittura del proprio codice. Quindi per il mantenimento (che è una parte altrettanto onerosa del ciclo di vita di un software) è necessario qualcuno che lo conosca.
Se tutti "dimenticassero" il C di colpo sarebbe uno scenario degno di un romanzo di Asimov... una montagna di software che funziona e nessuno sa perchè? :sofico:

cdimauro
22-05-2008, 20:53
Non a non commetteli ma a capire di che tipo li hanno fatti.
Ed è inutile allora: anche se si commette un certo errore, non è affatto detto che non ricapiterà in futuro. Tutt'altro.
Antiquato significa caduto in disuso; se il C fosse antiquato sarebbe già stato sostituito e non più utilizzato. Se non è così ci sarà un motivo. L'età non è per forza sinonimo di arretratezza, anzi è una prova che è un linguaggio valido.
terribile=complesso -> hai ragione
terribile=inutile -> non sono d'accordo
terribile=pericoloso e dannoso.

Inutile lo è di per sé, senza bisogno di essere "terribile", perché esistono diversi linguaggi che sono perfettamente in grado di rimpiazzarlo, offrendo strumento decisamente migliori per lo sviluppo del software.
Come prima non intendo dire non faccia commettere errori, ma che semplifichi la loro correzione.
Hai studi che comprovino che l'avere imparato a programmare in C possa aiutare a commettere meno errori, utilizzando particolari metodologie (quali?) di sviluppo del codice?

Perché è questa la sintesi di quello che hai scritto finora.
Sì ma, come ho capito dal tuo post precedente, tu parli di altri tipi di errori.
Il ; i la {, o unt al posto di int, sono piccoli errori sintattici su cui non è necessario soffermarsi.
Gli errori seri di cui stiamo parlando sono errori di gestione della memoria spesso sepolti in parti di codice poco utilizzate.
Ovviamente quoto integralmente.
Non necessariamente: antiquato significa o antico, o perlomeno retrò :fagiano:
E che sia antiquato non c'è dubbio: però è stato un linguaggio utilizzatissimo e quindi non tutti sono disposti a pagare lo scotto della riscrittura del proprio codice. Quindi per il mantenimento (che è una parte altrettanto onerosa del ciclo di vita di un software) è necessario qualcuno che lo conosca.
Se tutti "dimenticassero" il C di colpo sarebbe uno scenario degno di un romanzo di Asimov... una montagna di software che funziona e nessuno sa perchè? :sofico:
Già. Una delle più grosse piaghe dell'informatica è il codice legacy. Un'altra il NON adeguamento degli strumenti di lavoro, come il C che è un linguaggio rimasto praticamente monolitico.

marco.r
22-05-2008, 21:01
Giusto, Opera rulez. :D

Vedremo per Firefox 3, spero che i memleak siano stati davvero corretti per bene come dicono.


Curioso che fino a che non sono stati corretti i leak non esistevano, si trattava solo di "uso aggressivo della memoria" :asd:

marco.r
22-05-2008, 21:13
cosa per cui tutti coloro che odiano scrivere troppo o cose inutili sono molto grati:D

Il C tanto nella sintassi quando nella semantica tende a favorire le microottimizzazioni.
In C ho { e }, in ruby ho do e end, eppure per incrementare di uno gli elementi di un array in C scrivo

for ( int i=0 ; i<size ; ++i )
{
x[i]++;
}

e in ruby

x.map! do |n|
n+1
end

In tre righe di codice ci si è già mangiati il "vantaggio" di una sintassi più concisa.

marco.r
22-05-2008, 21:30
Per scrivere un sistema operativo che linguaggio useresti? Non sono esperto di linguaggi di programmazione - non ne conosco così tanti - ma il C mi sembra... "molto adatto" per queste cose. :D
In fondo anche Windows è scritto in C, o sbaglio? Ci sarà un motivo. :p

Qualsiasi linguaggio che generi codice macchina puo' in linea di principio andare bene. E non solo, visto che ci sono stati esempi (anche commerciali) di sistemi operativi basati su Lisp o Forth, dove il codice (anche del sistema operativo stesso) veniva perlopiu' eseguito sotto forma di bytecode.
In Forth c'hanno pure scritto i firmare (vedi OpenFirmware su Mac/PPC e macchine Sun)

Il motivo principale del successo del C e' stato soprattutto il successo della piattaforma sulla/per la quale e' nato, ovvero Unix.

cdimauro
22-05-2008, 21:34
Condivido pienamente.

Albi89
22-05-2008, 22:36
Il C tanto nella sintassi quando nella semantica tende a favorire le microottimizzazioni.
In C ho { e }, in ruby ho do e end, eppure per incrementare di uno gli elementi di un array in C scrivo

for ( int i=0 ; i<size ; ++i )
{
x[i]++;
}

e in ruby

x.map! do |n|
n+1
end

In tre righe di codice ci si è già mangiati il "vantaggio" di una sintassi più concisa.

Però questa è cattiveria :sofico:

A parte il fatto che le graffe le hai messe per infierire :D , almeno QUESTO esempio se la giocherebbe alla pari come chiarezza e concisione, è anche vero che si parla sempre di scrivere MENO codice rispetto ai linguaggi assembly.

In un confronto con linguaggi di oggi è ovvio che il C cederà sempre, solo il fatto di dover implementare da soli qualsiasi tipo di container aggiunge uno sproposito di righe :O