Newsgroup: it.comp.programmare
Titolo: c#

qualcuno mi può spiegare la differenza tra C++ e C#?
grazie
davide

 qualcuno mi pu spiegare la differenza tra C++ e C#?
C++ e' un linguaggio di programmazione Object Oriented standardizzato
dall'ANSI che consente di produrre codice eseguibile usando un compilatore
specifico per ogni macchina/ambiente. C# e' un porting di Java
(quindi compatibile solo con Windows) fatto dalla Microsoft che non puo'
usare la parola "Java" senno' Bill Gates diventa blu'.
Davide

C# e' un porting di Java
.....non è per nulla esatto..
----
Lawrence "Rhymes" Oluyede
rhy...@myself.com

 Davide
mi dispiace contraddirti ma molto di cio' che scrivi non e' esatto,
e puo' confondere l'OP che chiede info.
preciso brevemente qualcosa,(da quel poco che so):
-C++ e' un linguaggio "standard ANSI"  *che supporta* *anche* la
programmazione OO, oltre che la procedurale e la generica. nel mondo reale
e' implementato differentemente e con varie librerie aggiuntive da
moltissimi compilatori per la maggioranza (se non tutte) le piattaforme
hw-sw. i compilatori suddetti sono piu' o meno standard, al momento penso
che nessuno sia *totalmente* standard.
esempi piu' "famosi" sono C++Builder(x win), Visual C++(x win), gcc (x
linux) ...
-C# e' un linguaggio proprietario MS (domanda: non lo dovevano presentare x
standardizzarlo?) afferente alla piattaforma .NET che *dovrebbe* unire i
pregi di C++ alla semplicita' di Java.
*non* e' un porting di java, anzi, da alcuni msg che ho letto sembra anche
abbastanza differente,
se non per alcune caratteristiche di base come la GC, l'ereditarieta'
singola e , mi sembra, la scomparsa dei puntatori (ma qui potrei sbagliarmi
di grosso). il compilatore C# produrra' non codice macchina bensi' un codice
di livello intermedio (come *tutti* i linguaggi di .NET) eseguito poi dalla
VM di .NET.
tra tutte le sigle e definizioni che ho messo in questo post, ci si
potrebbero scrivere decine di libri,
penso quindi non sia produttivo andare oltre....
spero di essers stato utile e non aver detto troppe castronerie! :-)
--
Ciao by Allanon

 wrote in message
news:9v833p$dgcgv$1...@ID-18487.news.dfncis.de...

C# non c'incastra nulla con Java (salvo il fatto che è un linguaggio ad
esso concorrente, come Python, smallscript, VBScript e altri). NON è
assolutamente un port di Java.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 di grosso). 
i puntatori ci sono.
Maurizio
-- 
Maurizio Sambati
Skice Software
E-mail: 
gsm...@inwind.it
--------------------------

 i puntatori ci sono.
quindi c'e' la gestione tipo C++ con allocazione su stack o su heap, a
scelta dell'utente? o e' alla java, dove tutto (eccetto i tipi predefiniti)
sono puntatori?
cmq avevo sentito (di cio' ne sono sicuro) che non ci saranno piu' i simboli
"::", ".", "->" ma solo il "."
chissa' se questo giovera'... boh!
--
Ciao by Allanon

 > C++ e' un linguaggio di programmazione Object Oriented standardizzato
......

 chissa' se questo giovera'... boh!
per me creano solo confusione.
Anche in Java comunque non esistevano "::" e "->": IMHO la mancanza 
dell'operatore -> si poteva anche capire dato che alla fine si 
maneggiava sempre e solo con puntatori, però personalmente l'operatore 
:: mi sembra essenziale: la differenza tra una classe ed un istanza è 
importante! ;-)
Maurizio
P.S. BTW anche io non ne so effettivamente molto di C#, devo ancora 
comprarmi qualche libro.


 strutture (struct)
[cut: interessante! :-) ]
denghiu' :-)
interessante e preciso!
--
Ciao by Allanon

 assolutamente un port di Java.
Beh, che non sia un port e' vero, ma che ci incastri nulla e' molto poco 
vero. C# nasce proprio dall'impossibilita' per Microsoft di piegare Java 
ai suoi voleri, motivo per il quale fra l'altro ha perso una causa 
multimiliardaria con Sun.
In seguito all'impossibilita' di continuare con VisualJ, ha tirato fuori 
dal cappello C# (inserito nell'architettura .Net), ovviamente inserendo 
anche diverse novita' nel linguaggio.
Il progettista di C# e' persona di sicura bravura, (viene da Borland e 
creo' - o fu uno dei creatori, cito a memoria - il mitico Turbo Pascal).
Tutti gli altri linguaggi che citi invece sono nello scope dei linguaggi 
di scripting e non dei linguaggi general purpose come Java e C#, e 
quelli davvero non c'azzeccano ne' con l'uno ne' con l'altro :)
.Net sta a C# come J2EE sta a Java
-----------------------------------
Ma in realta' .Net puo' esser 'programmato' con qualsiasi linguaggio sia 
in grado di generare il bytecode MS (che non si chiama bytecode perche' 
MS ha ribattezzato *tutti* i termini java, ovviamente, ma non mi ricordo 
il nome 'nuovo'), ma gira solo su windows (nonostante ci possano essere 
dei port, che sono anche stati annunciati ma ai quali credo molto poco).
Anche Java opportunamente rivisto (J#) puo' generare il bytecode MS, ed 
anche il nuovo futuro VB (Cobol ed altri a seguire). Di fatto pero' solo 
utilizzando C# si potranno avere *tutte* le funzioni di .Net, quindi C# 
*e'* il linguaggio per fare .Net.
J2EE invece gira su qualsiasi piattaforma (da Solaris a Windows), ma 
puo' essere programmato solo in Java. Quindi la portabilita' e' vista da 
un altro angolo (ne' potrebbe essere altrimenti, visto che MS *vende* 
sistemi operativi costosi, Sun vende hardware costoso) rispetto a Java. 
Dal lato tecnico le differenze sono molte meno delle similitudini, ed e' 
impressionante guardare come ogni keyword java abbia la sua 
corrispondente C# (col nome cambiato).
Un altro punto importante e' che Java esiste e funziona da 6 anni, .Net 
non esiste. Sembra poco, ma il problema di C# vs Java e' che in Java ci 
sono librerie, framework e virtual machines per tutto, dai telefonini, i 
chip embedded e le carte di credito fino ai super server clusterizzati, 
mentre chiaramente C#, non essendo ancora stato rilasciato, non ha 
praticamente nulla di tutto questo
Un altro punto e' che Ms ha dalla sua un marketing incredibile e molto 
da investire (essendo di fatto VB stato scalzato da Java).
staremo a vedere...
uL

puo' essere programmato solo in Java.
Perché?
-- 
                    Marco Barisione (ICQ 84277092)
Se sei interessato alla creazione di un newsgroup generico in cui si
possa parlare di quei linguaggi di programmazione senza un gruppo
apposito vota per it.comp.lang su it.news.votazioni.

 praticamente nulla di tutto questo
Non ha nulla fatto da terze parti, ma visto che chi sviluppera' in C#
nell'immediato sviluppera' prodotti per sistemi M$ sappi che tutti 
i prodotti M$ saranno compatibili con la tecnologia .NET questo
vuol dire ad esempio usare da un programma scritto in quello che vuoi, non
solo il C#, che generi IL gli oggetti che ad esempio SQL Server "esporta".
Non considerando il fatto che gia esiste una versione di Python .NET
-- 
Posted from 
nts-03.mm.eutelsat.org
 [194.214.173.15] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Teoricamente si potrebbe utilizzare un altro linguaggio, in pratica no. 
Comunque essendo in J2EE 1.3 obbligatorio il supporto ad IIOP 
l'interoperabilita' con CORBA e' dovuta (prima era opzionale, sebbene 
diffusa negli application server di fascia alta)
 
uL


Per carita', comunque la differenza di diffusione fra i due sistemi non puo' assolutamente
essere messa in discussione. Vedremo fra 6 anni, se la piattaforma .NET sara' diffusa
quanto lo e' quella Java attualmente
Ciao,
    Bruno.
|
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://bbruno.fasturl.it
|
| 
http://members.xoom.it/bbruno
| 
http://digilander.iol.it/bbossola
|

 piu' o meno le stesse cose)
Be il discorso non e' far vedere o meno, il vero linguaggio "nuovo" di M$ e'
IL e nessuno ti vieta di programmare direttamente in questo linguaggio
 tutti gli altri ling della .NET afferiscono a questo dal C++ managed (che
schifo),
al C#, compilare un programma .NET vuol dire "tradurre" un programma scritto
in C# in uno scritto in IL.
Il fatto che terze parti hanno dei prodotti che fanno questa traduzione
anche
da Python non e' un fatto sponsorizato da M$ ma subito.
Ciao
Gaetano.


 da investire (essendo di fatto VB stato scalzato da Java).
VB non è stato scalzato da Java. Il vero problema è che spesso VB è 
utilizzato per scopi per i quali non è il linguaggio più adatto... :-)
Maurizio


 utilizzato per scopi per i quali non è il linguaggio più adatto... :-)
Parlavo solo di numeri: una volta VB era, proprio per i motivi che dici 
tu, il linguaggio piu' utilizzato, mi sembra proprio quest'anno le due 
curve  (una scende, l'altra sale) si siano incrociate. Fonte Gartner 
group. E non credo MS sia proprio felice di questa situazione.
ciao
uL

 
Ok... ma voglio vedere quanti di questi compilatori alternativi di MSIL 
sopravviveranno il prossimo anno. Ora che e' tutto nuovo si fa anche un 
po' a gara a chi supportera' prima *anche* il .Net.
Anche Eiffel, la creatura di B.Meyer, genera bytecode Java (e presto 
.Net), ma vorrei contare chi lo ha mai usato per questi scopi al di 
fuori dell'universita'.
In effetti anche Java in un certo senso e' indipendente dal linguaggio, 
ma rimane pura teoria. Per esempio le JSP possono utilizzare per lo 
scripting qualsiasi linguaggio, ma a tutt'oggi solo Java e' implementato
ciao!
Nell'attesa di vedere in effetti di cosa si tratta, C# permette di fare 
le stesse cose che si fanno con Java/J2EE rimanendo su piattaforma MS, e 
offr el apossibilita' teorica di continuare ad usare una versione plus 
del tuo linguaggio preferito. Si vedra'....
uL

da investire (essendo di fatto VB stato scalzato da Java).
VB scalzato da Java? Non credo proprio. Semmai VBScript non è riuscito a
scalzare Javascript. Ma le applicazioni che si facevano in VB prima di
internet si continua a farle in VB. I concorrenti di VB sono al momento
più Python e C# che non Java e PHP.


 famigerati Web Services (ma questo merita un altro thread)
Per nulla. I Web Services sono proprio la tecnologia a cui MS pensa da
oltre 10 anni (e la SUN ha cercato di contrastare "inventando" Jini o
qualche altro nome del genere e del quale ho sentito parlare per un po e
poi sparire). E non c'è solo MS in gioco. Il grosso del lavoro lo ha
fatto IBM.
Nota che C# ha come principale target proprio questa visione. Ovvero le
architetture di domani non saranno basate su grossi server che
gestiscono applicazioni e siti monolitici ma piuttosto su sistemi
distribuiti basati su comunicazioni superveloci e che parlano tramite
Soap. Almeno questa è la visione di MS/IBM.
Il thread giusto (o almeno il subject) è proprio questo dato che .NET e
C# servono proprio per facilitare/permettere la ridefinizione dei
sistemi in direzione di questa visione. Semmai è la discussione su Java
che meriterebbe un altro thread (e un altro NG).


 da Python non e' un fatto sponsorizato da M$ ma subito.
Sponsorizzato forse no (ma non ci giurerei). Subito certamente no. MS
spera con tutte le forze che i sistemi di sviluppo per .NET si
moltiplichino.


 
Puo' sembrare... ma il fatto e' che C# e' solo per Microsoft (davvero 
pensi che qualcuno utilizzera' .Net su Linux? La comunita' Linux e' 
molto darwiniana in questo ed ha opposto molta resistenza anche a Java 
stesso nei primi anni) e non sono cosi' sicuro (per usare un 
eufemismo)che Microsoft conquistera' il mondo (non quello client, 
chiaro) con i suoi sistemi operativi.
Se c# fosse multipiatatforma il tuo discorso filerebbe, ma non lo e'. 
Prova a dire ad una banca di sostituire tutti i server Unix con Windows 
2000...
Se poi C# sostituira' Java, lo sapremo solo fra qualche anno, e chi 
potra' si riciclera' (in fondo cambia poco...)
Per le altre osservazioni che hai fatto,leggiti gli altri messaggi nello 
stesso thread.
ciao
uL

 concorrenti in questo sono un'infinità)
Applicazioni client e applicazioni standalone le puoi fare piò o meno
con tutti i linguaggi.
Resta fuori un'altra cosa: lo sviluppo di componenti. Anzi: lo sviluppo
di componenti che non hanno bisogno di risiedere sulla stessa machina in
cui girano le applicazioni (siano esse server o client).
Lo puoi fare in C# e in quasi tutti i linguaggi ... che girano sotto
.NET.
Le puoi fare anche in altri linguaggi, java compreso, ma la differenza
in termini di difficoltà è paragonabile a quella fra programmare una GUI
in assembler o farla in VB.


 Soap. Almeno questa è la visione di MS/IBM.
Visto che i Web Service sono inerentemente multipiattaforma, non vedo 
proprio come C# possa sotituire Java, almeno al suo stato attuale. 
Magari complementarlo per architetture solo Windows, questo si. A meno 
che Ms, ripeto, non conquisti tutto il mondo o pieghi XML al suo volere.
ciao
uL

group. E non credo MS sia proprio felice di questa situazione.
Dipende da cosa e come misuri il discorso. VB non è mai stato il
linguaggio più utilizzato. Solo il linguaggio più utilizzato "per un
certo dipo di applicazioni". E per QUEL tipo di applicazioni lo è
ancora. Sparo dei numeri a caso giusto per spiegare cosa intendo.
Era pre-internet.
Programmatori VB 100
Totale programmatori 300
Era post-internet.
Programmatori VB 300
Programmatori Java 350
Totale programmatori 1000
oppure in termini di numero di applicazioni
Era pre-internet.
Applicazioni VB 100
Totale Applicazioni 500
Era post-internet.
Applicazioni VB 200
Applicazioni Java 600
Totale Applicazioni 1800
In altre parole: ora ci sono una marea di programmatori in più e una
marea di applicazioni in più. Ma non sono nell'ambito del dominio
coperto da VB. E il numero di "applicazioni tipo java" supera quello di
"applicazioni tipo VB". Ma nello stesso tempo VB e le sue applicazioni
si sono comunque evoluti e sono comunque cresiuti.


 potra' si riciclera' (in fondo cambia poco...)
Jup. Ma non credo che lo sostituirà come java non ha sostituito VB. Java
ha vinto la battaglia per la conquista delle applicazioni Web di prima
generazione (basate su architattura client-server o su architettura
server+browser-on-light-client. Praticamente il 90% delle applicazioni
nate fra il 1997 ed oggi è di questo tipo. La sepranza ho l'impressione
che sia di passare oltre e vincere la battaglia successiva. Ovvero la
previsione è che questo tipo di applicazione andrà a scemare e che il
90% delle applicazioni che verranno sviluppate fra il 2007 e il 2012
saranno basate su architettura multitier superdistribuita. E .NET mira a
vincere su questo fronte.


 ancora. Sparo dei numeri a caso giusto per spiegare cosa intendo.
Come no? E' vero che il panorama informatico e' cresciuto, quindi lo 
share del VB e' diminuito notevolmente, ma i dati parlano chiaro. 
Utilizzando come parametro il numero di sviluppatori VB, il sorpasso di 
Java e' avvenuto negli ultimi mesi del 2001 (o nei primi del 2002). 
Tutto qua.(fonte Gartner Group, ripeto)

 vincere su questo fronte.
Appunto, quello di cui parlavo nei primi post.Le architetture multitier 
superdistribuite oggi sono appannaggio esclusivo di J2EE. E li' si gioca 
la battaglia, con tutte le note che ho gia' fatto (ossia che c# parte 
sfavorito - in parte per la giovinezza (risolvibile, ma in quanto?) i 
parte per l'ingombrante presenza del S.O. dietro di se'. (sunto troppo 
sunto, ma piu' o meno quello che ho detto nei post precedenti)
uL

che Ms, ripeto, non conquisti tutto il mondo o pieghi XML al suo
volere.
Credo che l'idea finale sia che una qualunque classe definita in C# può
essere immediatamente esposta come componente Web senza bisogno di
scrivere altro codice. E che in futuro possa anche vedere i suoi servizi
direttamente registrati (vedi il lavoro di ricerca di IBM e in parte di
MS sull'evoluzione per Web Service della vecchia idea CORBA di un broker
di servizi).


 di servizi).
Vedremo vedremo... comunque un po' di concorrenza non fa male a nessuno. 
  Speriamo solo (ma non credo MS abbia piu' lo stesso potere di allora) 
che vengano utilizzati solo mezzi leciti, non come in passato.
uL

 piu' o meno le stesse cose)
Non capisco quello che vuoi dire.


che vengano utilizzati solo mezzi leciti, non come in passato.
Vengono usati mezzi illeciti anche da altre società. Solo che alcune
cose che sono lecite, quando le fa MS diventano illecite perchè è troppo
grossa è fa troppa paura e molte cose illecite fatte da altri non
saltano mai fuori perchè le dimensioni sono tali che la cosa non
interessa a nessuno.
Vuoi un esempio? Parliamo di sviluppare un SW è di metterlo a
disposizione gratis di chiunque. Se lo fa MS la cosa è illegale (vedi le
cause relative a IE, per esempio). Se lo fa qualcun'altro non lo è (se
lo fosse tutto il SW freeware sarebbe illegale).


scripting qualsiasi linguaggio, ma a tutt'oggi solo Java e' implementato
Ma PSP (Python Server Pages) non è l'equivalente delle JSP in Python?


 Si. E anche in C#, C++, SmallScript etc.
sì certo, era per citare i linguaggi che avevi scritto te. ("per 
esempio") ;-)


 scalzare Javascript. 
Ricordiamoci comunque che Java e Javascript non c'incastrano niente 
l'uno con l'altro. ;-)


 stesso nei primi anni) 
Se non seguiranno l'onda della rivoluzione ci perderebbero più loro.
Se gli USA del Sud avessero continuato con la loro politica schiavista e 
di esportazione del cotone, senza seguire l'evoluzione degli stati del 
Nord, probabilmente avrebbero fatto più brutta fine. (in fondo si 
comportavano esattamente come colonie, come lo erano prima 
dell'indipendenza)


 l'uno con l'altro. ;-)
Lo so. Come anche VB e VBScript del resto.


 chissa' se questo giovera'... boh!
dubito. L'operatore "." e' stato IMHO troppo sovraccaricato e questo 
portera' ad un peggioramento della leggibilita' del codice.
In C++ se vedo:
        pippo::x = 3;
        pluto.x = 3;
        topolino->x = 3;
So all'istante che "pippo" e' un identificatore di scope, "pluto" e' 
una istanza di una classe e "topolino" e' un puntatore ad una classe.
In C# (e se non erro anche in Java):
        pippo.x = 3;
        pluto.x = 3;
Come cavolo si fa a capire ad occhio cosa sono "pippo" o "pluto"?
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 dell'indipendenza)
Fammi capire cos aintendi con questo parallelismo storico: credi che se 
se Linux non si Microsoftizzera' scomparira'? Io non credo proprio... 
anzi, mi sembra che MS stia venendo a patti con il resto del mondo. I 
Web services stessi e Soap 'rompono' con la tradizione di MS.
Ed anche alcune decisioni dettate dalla necessita' di perdere grossi 
clienti in Europa sono piu' o meno verso una qualche forma di apertura.
uL

 
Sinceramente non so di cosa si tratti (ma posso immaginarlo). Da 
specifiche JSP 1.2, solo Java risulta possibile come linguaggio di 
'scripting' (in questo caso si comporta come tale) per le JSP.
ciao
uL
 

 lo fosse tutto il SW freeware sarebbe illegale).
E' chiaro, ma non e' per persecuzioni o per altro (le toghe rosse? :)). 
E' insito nell'Antitrust, colonna portante del sistema capitalistico 
americano. Se io comincio a regalare il mio software per desktop, non 
cambia molto. Se lo regala Sun, comincia a cambiare qualcosina. Se lo 
regala chi ha il 90% dell'installato di PC nel mondo cambia molto. Nel 
momento in cui Sun raggiungesse una posizione tale da essere di freno al 
progresso informatico invece che da traino, le parti si rovescerebbero 
senza pieta' alcuna.
Se Sun regalasse software (non so , un Cluster, per fare un esempio) nel 
mondo high-end in cui e' leader di mercato, probabilemente IBM e HP si 
altererebbero un pochino! Se lo regalasse Ms, invece, in qesto caso non 
cambierebbe nulla.
E' l'unico sistema che c'e', per ora, per evitare gli abusi. Il software 
freeware non c'entra proprio niente!!! Non e' il prodotto in se', ma il 
'mandante' che fa la differenza. (ovviamente questa e' una semplificazione)
Per fare un ulteriore esempio MS ha proposto di pagare una delle varie 
multe regalando hardware con windows, cercando almeno di rientrare sul 
piano di immagine e/o sul piano di futura base clienti (o utenti?), ma 
sembra che non glielo permetteranno proprio per lo stesso motivo.
A qualcuno puo' sembrare come una persecuzione, ma d'altronde se 
qualcuno raggiunge una posizione tale da poter essere da "filtro" al 
progresso informatico, non c'e' altra soluzione che dividerlo in piu' 
parti ben "coese" e con "accoppiamento" zero, per restare in terminologia OO
Ma li avete letti qualche anno fa gli "Halloween doc" sul progetto di MS 
di 'cambiare' un po' i protocolli per evitare che l'open source avesse 
la meglio nel mondo Internet? Sarebbe stato un freno, oppure no? Se 
pensi di no, e' difficile allora discutere (non che non sia 
interessante, non fraintendere)!!!
uL

 Non capisco quello che vuoi dire.
Era solo troppo sintetico e poco chiaro... che IMHO non credo che nel 
tempo ci sara' molto supporto a .Net da parte di realta' come Linux, per 
motivi sparsi qua e la' nelle precedenti mail. Tutto qua. 'sto thread 
sta diventando uno stress... :)
ciao
uL

 Come cavolo si fa a capire ad occhio cosa sono "pippo" o "pluto"?
E perche' 'ad occhio' questo sarebbe importante?
uL

Come cavolo si fa a capire ad occhio cosa sono "pippo" o "pluto"?
Io trovo piů semplice l'uso del solo ".", č cosě fondamentale sapere
cosa sono pippo e pluto? Inoltre l'uso del solo "." aiuta ad imparare
visto che l'esistenza di "." "->" e "::" crea confusione in chi deve
imparare.


'scripting' (in questo caso si comporta come tale) per le JSP.
Io non se so niente, mi potresti dire perché? Tieni presente che per
Python esiste anche Jython, cioč un interprete per Python in Java che
ti permette di usare da Python le librerie di Java (ma anche di questo
so pochissimo).


 esprimere un parere)
Per noi "Javaioli" c'è J# ... (Visual J#)
...sembra quasi una battuta ;)
C#, J#, cambia la sintassi (?),
ma alla fine diventa sempre Clr.
-- 
Teòria
(forza Mono)

 imparare.
Come ho scritto precedentemente in un altro post, è condivisibile la 
scelta di eliminare l'operatore "->" dato come è impostato il 
linguaggio. Non credo invece che sia giusta l'eliminazione 
dell'operatore "::".


 sta diventando uno stress... :)
ok, allora su questo punto mi pare che io abbia scritto qualcosa ieri. 
(perchč uno stress? A me piacciono i thread cosě...)


Ciao Marco, da quanto non ci si sente...
cmq secondo me meglio lasciarli... cosě eviti di andare 20 pag su per il
codice, per vedere come hai dichirato quell'oggetto.
Ciao
CyberBoy

 (perchè uno stress? A me piacciono i thread così...)
no, e' solo perche' mi sembra di aver ripetuto le stesse cose 20 volte. 
E sono pure un tipo prolisso ;)
uL

 
Jython e' sostnazialmente solo un modo per accedere alle librerie di 
Java da Python (a proposito di importanza delle librerie...), se vuoi 
usare Python.
Invece le JSP sono un modo per separare i contenuti HTML dal codice che 
li 'gestisce'. Usando le servlet devi infatti scrivere del codice Java 
noiosisissimo che genera anche HTMl statico (una serie di println nel 
peggiore dei casi, una libreria che oggettifica HTML nel migliore).
Le JSP rivoltano il problema, inserendo del codice di scripting 
direttamente nell'HTML. La pagina 'html' in questione viene poi tradotta 
in una servlet che fa sostanzialmente quello che avresti fatto tu a 
mano, ossia un a serie di println per l'HTML statico (ma il alvoro 
antipatico lo ha fatto il compilatore, quindi...).
Ecco, il codice di scripting inserito nell'html e' in Java, in modo che 
il compilatore jsp traduca il tutto molto linearmente (sostanzialemnte 
le righe java nell"html" vengono riportate pari pari nella servlet, con 
poche eccezioni). Se il JSPC (JSP Compiler) traducesse invece anche da 
un altro linguaggio in Java, ecco che le JSP potrebbero utilizzare un 
qualsiasi altro scripting.
Ecco, questo e' considerato possibile da specifica, ma attualmente non 
implementato, quindi di fatto le JSP utilizzano solo Java per lo scripting.
P.S. mettere codice html in java e' "brutto", ma lo e' anche mettere 
codice java in html. Percio' le jsp prevedono meccanismi migliori da un 
punto di vista di qualita' del codice come i  bean e le custom taglib.

 
Non lo so... devo pensarci meglio, ma al volo mi sembra che possa 
cozzare un po' con i principi di information hiding. Allora, estendendo 
questo ragionamento, sarebbe corretto inserire il tipo nel nome di una 
variabile (la famigerata notazione Hungarian, tipo Ifrequency, fNum, 
ecc.), che e' invece una bad practice in ottica OO. E' vero che al volo 
vedi una variabile di che tipo e', ma poi ti rendi molto piu' difficile 
la possibilita' di 'plasmare' il codice, per esempio far diventare la 
var un qualcosa di piu' di un tipo base, oppure dichiararla diversamente.
Mi sembra lo stesso nel caso di :: e ., ma il caso e' in effetti un po' 
piu' sottile.
ciao

sorgente.
Uno studio sostiene che un linguaggio č piů semplice se ha pochi
simboli fondamentali (non a livello di Lisp perň).
Python ad esempio (il linguaggio + semplice che esista) ha solo il "."
sia per i namespace sia per le variabili di classe o di istanza. Mi
rendo conto perň che per Python il discorso č un po' diverso visto che
č  dinamico e anche le classi sono oggetti proprio come le istanze
delle classi.


 
Anche in Java le classi sono oggetti.
uL

li 'gestisce'. [...]
Mi sa che le PSP fanno le stesse cose ma qualcuno che le conosce
dovrebbe confermarlo.


 
Nno ci siamo capiti: tutte queste tecnologie fanno la stessa cosa, da 
ASP fino ad arrivare a XSP. Ma le *JSP* si fanno solo in Java, anche se 
potrebbero essere fatte con un altro linguaggio (come accennato nelle 
specifiche)
Sorry, ma non ci stiamo capendo.
ciao
uL

 90 prima di tutti i casini legali con Java.
mmm.. falso, assolutamente falso, non vero, ecc. ecc. Mi sembrano 
asserzioni un po' azzardate.
Stavo rileggendo questi post dopo aver approfondito un po' la sintassi 
di C# con un simpatico articolo (fra l'altro pro C#, il nemico va ben 
conosciuto :)). Beh, le idee potranno anche essere antecedenti, ma basta 
essere un po' obiettivi e leggere dei listati per vedere che il 
linguaggio e' sostanzialmente identico.
E' stato replicato tutto cio' che c'e' in Java,e ripeto, aggiunta 
qualche feature (a dir la verita' ne manca anche qualcuna).
Chi vuole giudicare da se', e *conosce* Java, si legga
http://www.25hoursaday.com/CsharpVsJava.html
 (ripeto, pro C#)
il resto sorry, ma sono solo chiacchiere.
E non mi sembra proprio un caso di evoluzione convergente, non con 6 
anni di differenza. Se mi dici invece che alla Ms ci hanno messo 6 anni 
di piu' per aggiungere un paio di keyword ed hanno cominciato insieme o 
prima di Java allora cadiamo quasi nel ridicolo (Java e' uscito a fine 
95 e il suo sviluppo e' iniziato nei primi anni '90)
Ti diro' di piu': e' evidente che .Net prevedeva Visual J come 
linguaggio principe... e mi bastera' fare qualche ricerca sulle riviste 
di 3 o 4 anni fa per provarlo.
Per l'importanza che puo' avere, ti faro' sapere, se ti interessa.
ciao
uL

 Come cavolo si fa a capire ad occhio cosa sono "pippo" o "pluto"?
concordo...
PS: anche se e' un discorso piu' da iclc++, in pippo::x dici che pippo e' un
identificatore di scope,
pero' potrebbe essere una classe e "x" un membro statico.
o comunque la tua definizione comprende anche questo caso?
--
Ciao by Allanon

 ecc.), che e' invece una bad practice in ottica OO. 
Sono contro la notazione ungherese, abituato come sono a programmare in 
C++, non mi sono mai ritrovato a dover usare tale notazione per 
migliorare la leggibilità (se mai dovesse essere questa la sua funzione 
:-) ): la classe o la variabile o il namespace e chi più ne ha più ne 
metta, descrive già abbondantemente tramite il suo utilizzo che cosa è, 
l'importante è avere uno stile coerente, per questo l'operatore :: è 
importante, ed in C++ lo è anche l'operatore ->. La notazione ungherese 
alla fine a me crea più che altro confusione, ma è solo una opinione 
personale.


 
Piu' che confusione, e' *contraria* ai sani principi di information 
hiding, e mal si sposa dunque con l'OO. Ma si sa, spessi si crede che 
fare information hiding voglia dire solo incapsulare qualche variabile 
membro e fare un po di accessor. Chi volesse approfondire questi 
argomenti (c++isti, ma anche in minor misura javisti e c#isti), si legga 
il "manuale di stile" di C.Pescio.
uL

 pero' potrebbe essere una classe e "x" un membro statico.
Ma già la cerchia si restringe
--
Luigi
http://web.tiscali.it/luigi_web
byte...@hotmail.com
ICQ 46240443

 o comunque la tua definizione comprende anche questo caso?
afaik comprende anche questo caso. "identificatore di scope" e' un 
concetto piu' esteso di namespace; namespace, classi, strutture sono 
tutti identificatori di scope.


 imparare.
non sono gli operatori -> e :: a creare confusione. Semmai un newbie 
puo' essere confuso e non capire sino in fondo la differenza tra 
istanza, puntatore e namespace; ma una volta che ha capito cosa sono 
non ha difficolta' a capire quando utilizzare un operatore o quando 
utilizzare l'altro.
Usare solo l'operatore "." non elimina la complessita' della faccenda, 
la nasconde soltanto; questo significa che chi deve imparare puo' 
continuare per mesi a scrivere codice che funziona senza aver capito 
sino in fondo quando e' che si riferisce ad un membro statico ed uno 
non statico o, nel caso del C++, senza aver capito quando utilizza un 
puntatore, un namespace o una istanza!
Ma prima o poi si trovera' in enorme difficolta', senza dubbio.


 Ifrequency, fNum, ecc.), che e' invece una bad practice in ottica OO.
secondo me non e' un esempio calzante.
La notazione ungherese era utile soprattutto in C nel tentativo di 
convivere con lo scarso controllo sui tipi che esso offre. In C++ non 
e' necessaria grazie al maggior controllo offerto, e sino a qua siamo 
d'accordo.
Sono anche d'accordo quando dici che non rispetta l'information hiding; 
pero' cerchiamo di capire cosa significa veramente questa frase; 
esempio (in C++ e usando una pseudo notazione ungherese):
        int int_prova =1;
        for( int i=1; i< numeric_limits<int>::max(); i++ )
                int_prova*= i;
Quando ci accorgiamo che la nostra variabile int_prova va 
necessariamente in overflow, decidiamo che e' meglio cambiare; quindi 
scriviamo la nostra bella classe:
        class BigNum {...};
che ha lo scopo di incapsulare il concetto di "numero naturale", senza 
problemi di overflow (l'implementazione di questa classe non sara' 
proprio semplice, ma non e' questo che ci interessa).
A questo punto il nostro codice diventa:
        BigNum int_prova = 1;
        for( int i=1; i< numeric_limits<int>::max(); i++ )
                int_prova*= i;
Ecco l'inconveniente: il nome della variabile e il suo tipo non sono 
"allineati", percio' dobbiamo anche cambiare il nome della variabile in 
"big_prova" o qualcosa del genere. 
Ecco uno dei motivi fondamentali per cui la notazione ungherese (e le 
sue "cugine" ;-) non e' calzante in C++: se non la usiamo e abbiamo gli 
strumenti necessari (nel nostro caso ci serve una classe BigNum che si 
comporta allo stesso modo di un "int", eccezion fatta per l'overflow) 
possiamo limitare le nostre modifiche ad una parte localizzata di 
codice (nel nostro esempio una sola riga).
Ma se proviamo ad applicare lo stesso ragionamento sostituendo "nomi di 
variabili" con "operatore . oppure ::" e "tipo di variabile" con 
"identificatore di scope oppure istanza di classe" ci accorgiamo che 
non funziona piu': il nostro esempio funzionava perche' BigNum e int 
sono due implementazini diverse della stessa astrazione (quella di 
numero intero); essi hanno lo stesso comportamento (eccezion fatta per 
la gestione dell'overflow, che e' poi quello che ci interessava) e la 
stessa interfaccia.
Ma un namespace ed una istanza di una classe hanno comportamenti e 
"interfacce" decisamente differenti: non sono due cose interscambiabili 
e soprattutto non sono due implementazioni diverse per lo stesso 
concetto astratto: sono due implementazioni di due concetti *diversi*, 
e pertanto e' meglio tenere le cose separate, per non fare confusione.


 E perche' 'ad occhio' questo sarebbe importante?
scommetto che non hai mai dovuto mettere mano a codice scritto da 
altri; io purtroppo per lavoro ho dovuto, e ti assicuro che non e' 
stato piacevole, considerando lo stile con cui questo codice era 
scritto. Se almeno il linguaggio ti da una mano per capire "ad occhio" 
cosa fa una cosa e cosa fa un'altra almeno l'impresa e' piu' semplice.


 linguaggio e' sostanzialmente identico.
questo e' falso, e non e' una frase azzardata. Premetto che non conosco 
a fondo ne' Java ne C#, ma conosco qualcosina di entrambi (piu' C# che 
Java); e, pur avendone una scarsa conscenza, mi sono accorto di alcune 
importanti differenze, tra cui:
- C# introduce il concetto di variabile "definitely assigned"; IMHO 
questa e' una delle novita' migliori che potessero trovare, e non mi 
dispiacerebbe se ci fosse anche in C++ (anche se ci sarebbero delle 
complicazioni non da poco per introdurla in C++, cmq non e' questo il 
discorso
- collegato al precedente, C# permette di scegliere il tipo di 
passaggio di un parametro alla funzione (entrata, entrata-uscita, 
uscita)
- C# permette di definire nuovi "value type", mentre in Java questi 
sono limitati ai tipi built-in
- Java non prevede il concetto di delegate
- Java non ha il concetto di codice "unsafe", "checked" e "unchecked"
- C# permette di fare l'overload degli operatori
Pur essendoci moltissimi punti di contatto, puoi anche vedere che si 
tratta di linguaggio diversi. E IMHO C# tra i due ne esce vincitore 
(sto parlando del linguaggio in se', senza riferirmi ne alla libreria 
standard ne' ai compilatori ne' alle piattaforme supportate), come del 
resto e' comprensibile, essendo uscito qualche anno dopo.


 ci ha messo tanto sforzo e la semplice ma geniale idea di Soap.
di preciso, cosa e' Soap?


 > chissa' se questo giovera'... boh!
Non credo proprio...


 tutti identificatori di scope.
dengh'iu'
--
Ciao by Allanon

 tutti identificatori di scope.
Umh... ma lo scope nasce proprio con la definizione di essi
Con identificatore intendi "definitori" di scope?
Ciao
--


 Classe* oggetto = new Classe;
infatti e' questa la semantica da tenere *sempre* presente!
cmq Antonio intende dire che non sono puntatori "C-style", nel senso che non
hanno tutte le caratteristiche di codesti puntatori. ad esempio l'aritmetica
dei puntatori C-style e' inesistente in java.
come dicevo in un altro msg, basta solo mettersi d'accordo sulla coppia
termine->definizione.
--
Ciao by Allanon

e pertanto e' meglio tenere le cose separate, per non fare confusione.
Questo in C++, io non conosco Java o C# ma in Python le classi, le
istanze e i moduli sonbo tutti oggetti allo stesso modo quindi non
avrebbe senso fare differenze.


dei puntatori C-style e' inesistente in java.
Giustamente, non avrebbe senso in un linguaggio di alto livello.


uscita)
Questo mi piace come idea anche se non so come sia effettivamente
implementato in C#


 questo e' falso, e non e' una frase azzardata. 
Con questo ragionamento, ogni nuova versione di Java dovrebbe cambiare nome.
Pensa cosa dovrebbe succedere con l'introduzione dei generics!
E' chiaro che ci sono delle differenze fra Java e C#, ma non mi sembrano
differenze significative.
Novita' importanti in un linguaggio possono essere l'introduzione della garbage
collection, non qualche scorciatoia sintattica (comoda per carita', ma tu
cambieresti linguaggio perche' ci sono i delegates?).
Non tenendo i considerazione che non e' vero che in C# ci sono solo novita', ma
mancano anche diverse cosette (tutte piu' o meno di relativa importanza, tranne
proprio la xportabilita')
Comunque, la questione e' di lana caprina. IMHO un nome migliore sarebbe stato
"Java revisited for Microsoft - JRM", ma va bene anche cosi'...
uL
-- 
Posted from 
hebrides.eu.sun.com
 [192.18.240.6] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 cosa fa una cosa e cosa fa un'altra almeno l'impresa e' piu' semplice.
Non e' certo questo il problema di fare una review del codice scritto da altri,
soprattutto se scritto male.


 sbagliando! e prima uno se ne accorge meglio e'! :-)
Io intendevo dire che lo usi cosě dal punto di vista sintattico... infatti
non fai
oggetto->metodo()
ma
oggetto.metodo()
Ciao
--


di 3 o 4 anni fa per provarlo.
Certo. Visto che esisteva già un linguaggio (Java) che aveva l'80% delle
caratteristiche necessarie, avrebbe avuto del tutto senso estendere quel
linguaggio con il 20% mancante. Visual J era un tentativo di definire
uno Java "esteso" in modo che potesse essere usato come base di .NET.
Java può essere un linguaggio .NET fra i tanti ma non è sufficiente per
gestire al 100% la piattaforma. Dato che Sun ha deciso che la cosa non
era permessa, MS ha dovuto rinunciare a estendere Java e definire un
nuovo linguaggio che avesse, oltre a quello che ha java, anche quello
che Java non aveva ma che serviva per .NET.
Ma ciò non toglie che le caratteristiche desiderate nel nuovo linguaggio
(una parte delle quali esistevano già in COM e nell'IDL usato da MS per
le interfacce COM) fossero in parte già definite e in parte "pensate"
fin da prima che uscisse Java. Che il linguaggio fosse un Java esteso o
un C# non era certo definito. Ma C# non è stato pensato come alternativa
a Java. Semmai il contrario: non è stato possibile estendere Java per
usarlo al posto di C#.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 implementato in C#
Si, piace anche a me... ho letto rapidamente prima come funziona:
se hai una funzione che restituisce la somma, quando la devi usare invece di
fare:
int somma = 0;
somma = sum (2, 4);
in C# fai
int somma = 0;
sum (2, 4, out somma)  // out è una keyword
C# mi sta piacendo per alcuni versi... peccato che sia MS :(


 "Java revisited for Microsoft - JRM", ma va bene anche cosi'...
Qesta era proprio l'idea. Salvo che le revisioni che MS gli voleva
apportare erano già in gestazione prima che uscisse Java. Poi a MS è
stato vietato di incorporarle in Java. Pertanto le ha incorporate in un
linguaggio da lei definito (C#) e in una estensione proprietaria di un
linguaggio standard (managed C++).


parti ben "coese" e con "accoppiamento" zero, per restare in
terminologia OO
Se raggiunge tale posizione illegalmente si. Se la raggiunge legalmente,
è suo diritto mantenerla.


 delle classi.
Scusa ma ... smalltalk non ha neppure quello. Dovrebbe essere (e imo č)
il linguaggio piů semplice di tutti!


il linguaggio più semplice di tutti!
Ma lo sai che io non lo conosco!
Comunque io mi riferivo ad un post di Alex Martelli:
http://groups.google.com/groups?as_umsgid=9n2gkj%241h8%2...@serv1.iunet.it&hl=it


 avrebbe senso fare differenze.
come si comporta il Python se richiamo una funzione membro di una classe 
non statica senza che io abbia un istanza? (insomma Classe.Funzione())


 proprio la xportabilita')
C# potrŕ comunque essere portabile. Ogni programma compilato in IL potrŕ 
essere eseguito da una VM compatibile alle specifiche .NET.
BTW, mi dici cosa manca a C# che Java ha?


 implementato in C#
- passaggio normale (per valore)
- passaggio per reference (keyword ref, impone che la variabile sia 
comunque inizializzata)
- passaggio per reference di sola uscita (keyword out, la variabile 
viene inizializzata dalla funzione)



http://groups.google.com/groups?as_umsgid=9n2gkj%241h8%2...@serv1.iunet.i
t&hl=it
Lo avevo già letto tempo fa. E' vero che Python è il linguaggio che più
si è basato su quegli studi. Ma non è vero che è il linguaggio più
semplice (se omettiamo linguaggi tipo logo, che non sono linguaggi
general purpose) . IMO smalltalk è più semplice. Anche se non si basa su
quegli studi (ovvio: è stato inventato parecchi anni prima!).


 fastidio.
E nemmeno lei visto che ogni volta che esce qualche cosa esce fuori
con 1000 ed un problema e i successivi SP fissano 200 problemi e ne
tirano fuori altri 400 (non scordiamoci la figuraccia di Bil Gates
quando gli si pianto il sistema operativo durante una DEMO).
Ciao
Gaetano.
-- 
Posted from 
nts-03.mm.eutelsat.org
 [194.214.173.15] 


non statica senza che io abbia un istanza? (insomma Classe.Funzione())
Il primo argomento delle funzioni membro è self che non è implicito,
quindi se ho:
class Classe:
    def pippo(self, n):
        print n
c = Classe() # crea un'istanza di Classe
c.pippo(5) # stampa 5
Classe.pippo(5) # errore la funzione richiede 2 argomenti
Classe.pippo(c, 5) # corretto anche se non usato eccetto
                   # in casi particolari


quando gli si pianto il sistema operativo durante una DEMO).
quando quando? ^_^ hai un link?
----
Lawrence "Rhymes" Oluyede
rhy...@myself.com

quando gli si pianto il sistema operativo durante una DEMO).
Scopo di MS è vendere. Un prodotto di MS esce non appena è tale che gli
utenti saranno disposti a comperarlo. Aspettare che il prodotto sia
stabile significherebbe perdere quote di mercato. Pertanto il prodotto
esce anche se non funziona al 100%. L'utente è libero di non comperarlo.
Molti utenti aspettano a comperare le nuove versioni fino a che non si
sono dimostrate stabili. Ma non TUTTI gli utenti lo fanno. MS fa un
calcolo e appena il calcolo dice che vendere il prodotto diventa
conveniente, lo vende.
La cosa a me da fastidio. Ma con questo non mi permetterei mai di dire
che è sbagliata. Solo che a me da fastidio.
Ci si attacca spesso a questo per dire che MS sbaglia. Ma andrebbe
notato (e l'ho detto mille volte) che MS ha ragione quando dice che di
un prodotto non conta la solidità e la correttezza ne il livello
tecnologico ma solo ed esclusivamente l'appeal verso l'utente medio e la
vendibilità. Se non fosse così avremmo avuto dei dektop multimediali,
con audio e video integrati e sistema di sviluppo OO, prima che windows
scoprisse l'esistenza dei CD Rom. E la piattaforma dominante sarebbe
oggi non una evoluzione di Windows by Gates ma una evoluzione di Next by
Jobs.


 quando quando? ^_^ hai un link?
http://www.cnn.com/TECH/computing/9804/20/gates.comdex/
c'e' anche il video!!!


 esce anche se non funziona al 100%. L'utente è libero di non comperarlo.
Libero? Di far cosa ? Dal vedersi recapitare un documento  per word scritto
con l'ultimissima versione XPYZ che io non posso leggere perche' gli altri
lo hanno comprato e io non volevo ?


lo hanno comprato e io non volevo ?
Libero di imporre un formato per tutti i documenti in ingresso. Molte
aziende lo fanno. Naturalmente per imporre un formato ai tuoi
corrispondenti devi essere più forte dei tuoi corrispondenti. Se non sei
più forte dei tuoi corrispondenti saranno loro ad importi il formato. Ma
devi prendertela con loro (o con la tua debolezza) non con MS.
Per assurdo MS sta lavorando in direzione di una maggiore
intescambiabilità. Per esempio dicendo che i documenti che escono dalle
boundary di una organizzazione dovrebbero essere in HTML.
Ma MS non puù certo imporre agli utenti di non spedire documenti in un
formato diverso dall'HTML (altro che antitrust se lo facesse).
Molte aziende di una certa dimensione, comunque, non accettano documenti
che non si conformano alle specifiche dell'azienda. E se queste
specifiche in passato si limitavano a documenti testo (.txt) e documenti
Acrobat (.pdf) oggi sempre più spesso tendono ad accettare documenti
html.


 Con identificatore intendi "definitori" di scope?
se vuoi vederla cosi' fai pure; in pratica:
namespace X {
        class Y {};
}
class Z {
        struct W {};
};
X, X::Y, Z, Z::W sono tutti identificatori di scope. Gli scope non si 
"definiscono"; al massimo si definisce una namespace, una struct o una 
classe, che implicitamente creano anche uno spazio dei nomi associato.
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 oggetto.metodo()
ah, ok| :-)
that's all
--
Ciao by Allanon

 Cioč?
ti impedisce di utilizzare variabili non inizializzate; se scrivi
        int i;
        int j = i;
ti da errore, dato che cerchi di leggere il valore di "i" prima che 
essa sia inizializzata.
E la cosa e' ancora piu' completa se consideriamo che per inizializzare 
una variabile possiamo passara ad una funzione come parametro di uscita.
In sostanza: dovrebbe permettere di individuare a compile-time numerosi 
bug, soprattutto quelli dei principianti.


 da altri, soprattutto se scritto male.
e' vero. Pero' se ai problemi gia' esistenti vogliamo aggiungerne dei 
nuovi, beh, mi sembra controproducente.



Scusa ma un linguaggio e' fatto anche di questo. Il miglior linguaggio in giro adesso, e
non ho nessun problema a dirlo, e' Ruby: purtoppo, non se lo caga quasi nessuno proprio
per alcune di queste mancanze.
Non e' sufficiente, comunque, arrivare dopo per acquisire automaticamente l'esperienza di
tutti gli altri: bisogna averla fatta. E storicamente M$ non e' mai stata particolarmente
esperta in OO. Vedremo, vedremo...
Ciao,
    Bruno.
|
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://bbruno.fasturl.it
|
| 
http://members.xoom.it/bbruno
| 
http://digilander.iol.it/bbossola
|


Non per dire, ma in Java c'e' gia' da parecchietto (almeno dal 1996, versione 1.02).
E' altresi' vero non e' che se lo sia inventata la Sun (il lint insegna)


                    # in casi particolari
cosa intendi allora col dire che le "classi sono oggetti come le 
istanze"?
Maurizio
-- 
Maurizio Sambati
Skice Software
E-mail: 
gsm...@inwind.it
--------------------------

 classe, che implicitamente creano anche uno spazio dei nomi associato.
hai notato le virgolette nella parola *definiscono* ? :)
--
Luigi
http://web.tiscali.it/luigi_web
byte...@hotmail.com
ICQ 46240443

istanze"?
class C:
    pass #vuol dire che la classe è vuota
C.a = 13 # valido
x = C() # crea un'istanza di C
x.b = 15 # valido
-- 
                    Marco Barisione (ICQ 84277092)
Se sei interessato alla creazione di un newsgroup generico in cui si
possa parlare di quei linguaggi di programmazione senza un gruppo
apposito vota per it.comp.lang su it.news.votazioni.

per alcune di queste mancanze.
Dici? Io gli ho solo dato un'occhiata ma mi sembra un misto fra Python
e Perl con niente di veramente speciale per giustuficarne lo studio,
mi dici meglio cosa ti piace cosě tanto di Ruby?


 | A Java Software Engineer :-)
spero che non sei di quelli che difendono il Java ad oltranza... ;-) 
(non ti preoccupare io non sono di quelli che invece lo detestano)


 E' altresi' vero non e' che se lo sia inventata la Sun (il lint
insegna)
Non semplificare:
int i=3;
int j;
int k;
k=foo(i,j);
dove foo prende come secondo parametro una reference solo output e
pertanto j viene inizializzato dalla chiamata a foo, come lo esprimi in
Java?
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 x.b = 15 # valido
Se C è vuota, cosa vuol dire C.a ?


Se C č vuota, cosa vuol dire C.a ?
"C.a = 13" imposta il valore della variabile di classe "a" a 13. Se a
non esiste viene creata, non č infatti necessaria la dichiarazione.


Java?
Più ci penso più l'uso do out, ref ecc. in C# mi piace.


- troppe keyword (alcune veramente brutte)
Puoi fare qualche esempio di keyword secondo te inutili 
(e del loro significato e del perché MS non poteva farne as meno)?
A proposito dove posso trovare qualche documento sintetico non solo
tecnico su C# non banale per chi sa già programmare e che tratti il
linguaggio in sé e non soprattutto l'integrazione con .net. Per
intenderci non mi deve spiegare cosa è una variabile, come è bello
.net o simili. Chiedo troppo?



Tu stai proponendo un altro quesito, introducendo *adesso*, in questo, messaggio, una
nuovo problema, ovvero l'inizializzazione di una variabile come side-effect di una
chiamata ad una funzione. In Java questo non e' effettuabile, non ce ne e' bisogno, e il
problema non si pone.
FYI, comunque, il lint gia' lo faceva anche per le variabili passate per indirizzo in C
(per intenderci, &j) nel 1992 (10 anni fa). Non si tratta certo di un'innovazione, ne' per
C# ne' per Java.



I motivi sono molti :-) e sarebbe un po' lunghetto elencarteli! Ti consiglio di darci
un'occhiata piu' in profondita', poi se vuoi ne riparliamo.
("misto fra Python e Perl"? Se ti sentisse Katsu!)



A oltranza no, pero' mi aspetto sempre delle motivazioni valide. Ammetto certo i limiti di
Java, e non penso che sia il migliore linguaggio in assoluto, ma quando mi cercano di
vendere che C# e' meglio perche' ha una serie di funzioni che in Java ci sono da N anni,
beh!!!
Ciao,
    Bruno.
|
| Bruno Bossola
| A Java Software Engineer :-)


 Java?
Il discorso non era questo, cmq non dovrebbe essere
k = foo (i, out j)  ?
ciao


 non esiste viene creata, non è infatti necessaria la dichiarazione.
perfetto, grazie! ;-)
(preciso che al contrario di quanto è stato detto da qualcun'altro in un 
post, in Java le classi sono classi, non oggetti)


 beh!!!
ti elenco le cose utili che imho mancano in Java rispetto a C#, quindi 
dimmi se in Java esistono in realtà:
- unsafe
- fixed e stackalloc (le unisco, ma non fanno nulla di simile... servono 
quando si usano i puntatori)
- checked e unchecked
- le proprietà
- possibilità di avere una lista di parametri variabile passati ad una 
funzione (una specie più evoluta dell'ellissi del C)
- possibilità di definire una nuova funzione membro con lo stesso nome 
di una funzione derivata senza però derivarla (spero di essere stato 
chiaro in così poche righe... ;-) )
- conversioni implicite ed esplicite
- ogni costante usata fa parte della propria classe (1 è una costante 
numerica, ma è possibile usare i metodi della classe numerica a cui 
appartiene)
- delegate (intesi come puntatori a funzione)
- definire degli eventi
- ref e out
- tipi numerici senza segno
- foreach
- enum (qui ho un dubbio veramente serio, credo che in Java esistano)
- le struct (intese nel senso C#iano e non C++ista)
- il modificatore internal
spero di non aver dimenticato niente. :-)
Magari oltre a dirmi che esistono anche in Java, dimmi anche come si 
usano.


 linguaggio in sé e non soprattutto l'integrazione con .net. 
prova fra i documenti ufficiali (
www.microsoft.com
) o cerca con Google. 
:-)


 essere eseguito da una VM compatibile alle specifiche .NET.
In teoria e' possibile (e si fa) scrivere del codice C portabile. Ma la 
portabilita' non e' un concetto teorico. Quando ci sara' tutto a 
disposizione, vedremo se veramente si potra' fare del codice portabile e 
soprattutto se qualcuno lo fara'.
uL

o cerca con Google.
Anche qui solo elogi di C# e .net o pagine il cui riassunto č "MS č il
diavolo che vuole dominare il mondo e per farlo vuole eliminare Java
con il suo clone C#".


 è suo diritto mantenerla.
E' una tua opinione personale. Ma l'antitrust non funziona cosi', ha 
altri scopi, e la legalita' non e' una discriminante per lo Sherman Act.
Comunque sei ovviamente libero di credere che funzioni cosi'!
uL

 post, in Java le classi sono classi, non oggetti)
Ma quando crei una classe, essa è un'oggetto di tipo classe. Infatti c'è la
classe Class. Sbaglio?


> se qualcuno vuole spiegarmi il senso di readonly...
Se non sbaglio i campi readonly possono essere modificati solo dai
costruttori della stessa classe... in pratica sarebbero const all'esterno
della classe in cui sono definiti...


 
Precisi male, oppure intendi qualcos'altro (se e' cosi', spiegalo)
In Java anche le classi sono oggetti. Sono istanze della classe Class. 
Per questo Java riesce a fare facilmente molte cose carine come il 
loading dinamico delle classi (stranamente non presente in C#), la 
reflection, e soprattutto tutta la gestione della security. Non che non 
si possano fare altrimenti, ma certo il fatto che le classi siano 
oggetti rende la cosa piu' semplice.
Tutto qua.
ciao
uL

In Java anche le classi sono oggetti. Sono istanze della classe Class. 
Se hai una funzione f può avere come argomento una classe e non
un'istanza?


 tratta certo di un'innovazione, ne' per C# ne' per Java.
il lint non era un compilatore. Un compilatore C compila 
tranquillamente codice che usa variabili non inizializzate. Un 
compilatore C# no.
E, ripeto, non sono certo un tifoso del C#, anzi. Pero' questa 
caratterstica in particolare e' IMHO ottima.
ciao anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 della classe in cui sono definiti...
il fatto è che ci sono appunto i const... l'utilità pratica quale sarebbe?


 In Java anche le classi sono oggetti. 
Intendo dire che scrivendo:
class Pippo
{
   public int a;
}
non posso poi fare:
Pippo.a = 4;
...almeno non mi risulta. ;-)



Il punto della discussione era quello di motivare la presunta superiorita' del C# nei
confronti di java: in questo caso non vi e' alcuna superiorita', perche' entrambi i
compilatori dei linguaggi, nell'ambito della sintassi fornita dal linguaggio stesso,
forniscono questa funzionalita'. Java gia' da 6 anni a questa parte.


- il modificatore internal
?
Ciao,
    Bruno.
|
| Bruno Bossola
| A Java Software Engineer :-)


apposito vota per it.comp.lang su it.news.votazioni.
|



Beh, vorrei vedere!
Per modificare la variabile a devi avere un'oggetto (istanza della classe), in quanto la
variabile e' definita come variabile di istanza. 
E' ovviamente possibile dichiarare una variabile "di classe" anteponendo la keyword
"static" alla sua definizione.
class Pippo
{
   static public int a;		// static indica che e' una variabile di classe
}
Poi _posso_ fare:
Pippo.a = 4;
Modificando il valore della variabile a della classe "Pippo".
Ciao,
    Bruno.


 un'istanza?
Certo, essendo un'istanza di Class....
tityrus

 Maurizio
Se a fosse una variabile di classe (static), la risposta sarebbe: puoi.
tityrus

 ?
i membri internal sono accessibili solo negli stessi assembly 
(equivalenti più o meno ai file .class generati da Java) in cui sono 
stati definiti.



Boh! Che c'entrano i "file" con gli oggetti?
Comunque grazie delle info!


 tityrus
non mi risulta che io abbia messo static. L'ho fatto apposta.


 Comunque grazie delle info!
E' interessante sapere anche il tuo parere.


> il fatto è che ci sono appunto i const... l'utilità pratica quale sarebbe?
Se rileggi, avevo scritto "const all'esterno della classe in cui sono
definiti". Se dichiari const un membro, non lo modifiche nemmeno all'interno
della classe.


Allora non capisco io: puoi spiegarci cosa dovrebbe fare quel pezzo di codice?



Yep!


information hiding (io so che ci sono quelle variabili).
Secondo me no, non è detto che per forza ci sia una variabile sotto:
protected int variabile;
public int proprieta
{
   set
   {
      if( value < 100 )
         variabile = value;
   }
   get
   {
      return variabile;
   }
}
Di fatto si cpomporta come se se "proprieta" fosse una variabile, ma
di fatto ci sono due funzioni che non presuppongono l'esistenza di una
variabile sotto, esempio (non se se è giusto perché non conosco C#):
public  String CurDir{
    set{SetCurrentDirectory(value);}
    get{return GetCurrentDirectory();}
}
-- 


sono allocati nello stack invece che nell'heap.
Ma era proprio necessario avere struct? E se volessi una class nello
stack o una struct nell'heap?


possibile che causi rigidita'.
Non capisco molto, dopotutto mi sembra che in Python il "for" si
comporta esattamente come "foreach" di C#.


 Non c'entrano nulla. :-D
comunque adesso che ci penso gli assembly sono piuttosto diversi dai 
.class... Un assembly è più simile ad un componente che ad una classe.


 }
Questa mi era sfuggita... nel mio esempio stampaTutto() può essere 
chiamata così:
stampaTutto( 1, "ciao", MiaClasse, 1.2 );
Nel tuo esempio andrebbe prima riempita la collection, o sbaglio?


 Allora non capisco io: puoi spiegarci cosa dovrebbe fare quel pezzo di codice?
In Python funziona. E' questa la differenza. Almeno a quanto ho capito 
dall'esempio di Marco... ;-)



Se a e' una variabile di classe, allora la sintassi nella definizione e' sbagliata, devi
usare il modificatore "static" per indicarlo.
Se a e' una variabile di istanza, allora la sintassi dell'assegnamento e' sbagliata, devi
creare un'istanza di quella classe per poterne modificare il valore di un attributo.



Si, ma, scusa, da sviluppatore OO; non mi sognerei mai di fare una chiamata del genere :-D
(Bertrand Mayer si farebbe quattro risate :-D)



Scusa, non capisco io qui :-D 
Cos'e' un assembly?
Ciao,
    Bruno.
P.S.
Ah, da domani sono in ferie fino al 2/1/2002, quindi non so quanto potro' rispondere! In
ogni caso, buon Natale e buon anno!



Ho gia' risposto (credo?) in un altro post, comunque riporto:
Quel costrutto e' preso paro paro dal concetto di "collezioni, logiche e blocchi" di
SmallTalk. Solo che ne hanno preso solo un pezzo (quello piu' semplice), e per di piu'
neanche puo' essere esteso! E se voglio fare una inject? Una detect? Che faccio, le
riscrivo? Se devo modificarne la semantica per una mia particolare collezione?
(l' operazione di inject ti permette di inserire, con una regola precisa, un oggetto in
una collezione; l'operazione di detect ti permette di trovare, con una regola precisa, un
oggetto all'interno di una collezione)
Che cosa esattamente non e' chiaro?


creare un'istanza di quella classe per poterne modificare il valore di un attributo.
Sì invece in Python le variabili di istanza vanno create all'interno
di __init__ (il costruttore), quindi le variabili definite all'interno
della classe,m cioè:
class Pippo:
    a = 5
Sono equivalenti alle static in Java


Se devo modificarne la semantica per una mia particolare collezione?
Cosda intendi esattamente con questo?


E' possibile che non abbia capito io. Chiariamoci.
Secondo me sarebbe come dici tu se cose come l'aritmetica dei
puntatori fossero usabili ovunque, invece da quello che ho capito per
usare i puntatori alla maniera del C devi dire al compilatore "so
quelo che sto facendo e so che è pericoloso" come con la new in cui
dici "so quello che sto facendo".


 dall'esempio di Marco... ;-)
In Python funziona perchč non č obbligatorio dichiarare le veriabili. In
altre parole č come se Pyton aggiungesse automaticamente la
dichiarazione (compresa la keyword static).
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 stack o una struct nell'heap?
usi il C++ :-)
BTW, per quanto riguarda le classi nello stack credo che sia possibile 
tramite stackalloc(), invece le struct... quelle credo che debbano 
restare nello stack. (altrimenti non avrebbero senso)


 Cos'e' un assembly?
In soldoni: puň essere un componente o un'applicazione che mette a 
disposizione un'interfaccia per essere sfruttati anche da altri 
programmi. (un esempio di assembly sono i webservice)


 Sono equivalenti alle static in Java
allora non ho capito un accidenti.
Se facciamo: (in pseudo-Python)
Classe istanza = new Classe(); // va usata new?
Classe.a = 5;
quanto vale istanza.a ?


quanto vale istanza.a ?
class Classe: pass # classe vuota
istanza = Classe() # niente new e niente tipo
Classe.a = 5
print istanza.a # stampa 5 perché istanza non ha un membro
                # a quindi cerca in Classe (e poi dopo se non lo trova
                # cerca nelle classi base).
istanza.a = 13  # imposta la a dell'istanza non di tutta la classe
print Classe.a  # stampa sempre 5 perché istanza.a è una variabile
                # diversa da Classe.a


>> _ufficialmente_ la creazione di nuovi tipi primitivi (struct).
visto che spesso tiri fuori l'OO puro e lo accosti a Java: Java *non* 
supporta pienamente il paradigma OO. Non c'e' nulla di male in questo, 
pero' e' un dato di fatto.
Cosi' come il C++ non supporta pienamente il paradigma OO (anche se vi 
si avvicina piu' che Java).
Cosi' come il C# non supporta pienamente il paradigma OO.
Se vuoi un linguaggio pure-OO allora passa a Smalltalk o Eiffel (che 
peraltro io non conosco).
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 questa funzionalita'. Java gia' da 6 anni a questa parte.
Java non permette di passare parametri di tipi built-in per riferimento.
E cmq inizialmente non volevo discutere della superiorita' di C# 
rispetto a Java: volevo solo farti notare che sono due linguaggi 
diversi, e non uno la copia dell'altro.


 peraltro io non conosco).
Smalltalk o derivati si. Eiffel IMO č un OO solo in parte. In cambio
supporta molto bene il programming by contract (č nato apposta).
Comunque fra imparare Smalltalk e imparare Eiffell ...


Eiffel [...] supporta molto bene il programming by contract
Ne sento spesso parlare ma non so cosa sia, cos'è esattamente?


 Ne sento spesso parlare ma non so cosa sia, cos'è esattamente?
 
probabilmente qualcuno piu' esperto di me (Andrea, ci sei? :-) ti puo' 
dare risposte piu' esaurienti, cmq:
secondo la filosofia del "programming by contract" tutti i metodi e le 
funzioni sono accociati ad un "contratto di utilizzo": il chiamante e' 
obbligato a rispettare questo contratto, altrimenti la funzione non 
esegue il suo compito (il "come" la funzione non esegue il compito non 
e' unico e puo' cambiare: in C++ potrebbe essere una eccezione o una 
assert, ad esempio).
Solitamente i contratti comprendono "precondizioni", "postcondizioni" e 
"invarianti". Le precondizioni sono quelle condizioni che devono essere 
verificate prima della chiamata alla funzione (tipicamente si tratta di 
restrizioni sui parametri, ma possono comprendere anche altro). Le 
"postcondizioni" sono quelle condizioni su cui il chiamate puo' fare 
affidamento dopo la chiamata; l'invariante e' una condizione che serve 
a garantire che lo stato interno della classe sia consistente.
Forse con alcuni esempi le cose sono piu' chiare; in C++:
        double sqrt(double x); // radice quadrata
In questo caso la precondizione per poter chiamare la funzione e' che x 
sia un valore positivo; la postcondizione e' che il risultato della 
funzione e' anch'esso positivo.
class Rational {
        int num, denom;
public:
        ...
};
Supponiamo che Rational sia una classe che ci permette di memorizzare e 
gestire le frazioni; per semplificarci il lavoro, possiamo decidere che 
la frazione deve essere memorizzata internamente come "ridotta ai 
minimi termini"; quindi, quando scriviamo una funzione membro, possiamo 
assumere che non esistono divisori in comune tra num e denom (eccetto 
1). Questo e' l'invariante della classe e tutti i metodi devono 
assolutamente rispettarlo, pena grossi guai; secondo la filosofia del 
Programming by Contract l'invariante deve essere rispettato in ogni 
momento dell'esecuzione; tuttavia esiste una eccezione: l'invariante 
puo' essere temporaneamente invalidato all'interno di un metodo, 
purche' sia cmq ripristinato prima della conclusione del metodo stesso 
(se non fosse permessa questa eccezione potrebbe risultare 
impossibile modificare lo stato interno della classe).
spero di essere stato chiaro e di non avero commesso errori,


Odio rimettere in vita thread morti, ma mi sono imbattuto in 
un'intervista all'architetto principale di C# e non ho saputo resistere 
alla tentazione di mettere in luce le varie "omissioni di verita'".
La prossima volta, fai un po' piu' di attenzione con le "Assertion" 
(forse perche' non ci sono in C#? ;))
AF> Falso. Lo sviluppo di C# è iniziato parecchio prima della causa legale.
eWEEK: Quando vi siete messi a lavorare sul linguaggio C#?
Hejlsberg: Verso la fine del 1998. In quel periodo avevamo deciso, per 
diversi motivi, di creare una nuova piattaforma (.Net, appunto) 
piuttosto che proseguire con il graduale sviluppo di COM (Component 
Object Model) e di DNA (Distributed interNet Application), due 
importanti tecnologie a quel tempo
Ma dai... dalla *fine* del 1998? Ma non era iniziato prima della causa 
con Sun?
AF> C# non c'incastra nulla con Java
eWEEK: Molti hanno individuato delle somiglianze fra Java e C#.
Hejlsberg: [cut]
Potreste dire che il codice di C# assomiglia al codice di Java, ma anche il codice di Java assomiglia al codice del linguaggio C.
E noi ci siamo ispirati a Java come Java si è ispirato al linguaggio C.

E noi ci siamo ispirati a Java come Java si è ispirato al linguaggio C.
Appunto Java c'incastra ben poco con il C, l'apparenza è nella forma
(uso di graffe, punti e virgola) e in alcune regole ma sono veramente
molto diversi.


 molto diversi.
Gia'... il che non si puo' dire di Java e C#, invece. La risposta di 
Hejlsberg era un'evidente provocazione... e il tuo followup non aggiunge 
niente alla discussione
Mi premeva invece soprattutto sottolineare come C# fosse stato pensato 
da molto poco tempo e con evidente ispirazione a Java, sia nella 
tempistica che nel design. Il che e' evidente a molti (ma non a tutti, 
chiaramente) anche dall'intervista del suo progettista capo.
Comunque, era solo per amor della precisione e per antipatia verso le 
affermazioni "assertive" che poi spesso si rivelano infondate ma a cui 
qualcuno potrebbe credere, per chissa' quale motivo. Che fosse ispirato 
o meno a Java, di certo a me non cambia nulla!
Detto questo, un buon natale a tutti i programmatori, qualsiasi 
"linguaggio" preferiscano.
uL

da molto poco tempo e con evidente ispirazione a Java
Io non conosco java e c# quindi non posso dire se sono uguali o no, ma
quello che mi sembra Andrea Ferro e altri dicessero è che C# non è
identico a Java, come troppi sostengono (su qualche sito c'era
qualcuno che sosteneva che il compilatore C# avrebbe compilato un
sorgente Java).
Pur non conoscendo Java una cosa che non mi è mai piaciuta è l'uso
continuo dei cast, anche C# costringe ad usarli sempre?


 continuo dei cast, anche C# costringe ad usarli sempre?
Dicono che Variant risolva questi ed altri problemi :-))
ciao e buon ultimo dell'anno a tutti
tityrus

 dare risposte piu' esaurienti, cmq:
No. Per un po' non ci sono stato :-)
Comunque più o meno è come dici tu.
Aggiungi che l'invariante è un invariante di classe (non ha a che vedere
con il metodo). In altre parole è sia precondizione che postcondizione
di tutti i metodi della classe. Invece precondizione e postcondizione
dovrebbero descrivere appieno il funzionamento del metodo e la
variazione che ne risulta nella classe. Infine precondizioni,
postcondizioni e invarianti dovrebbero essere espressi in un linguaggio
formale e pertanto verificabili in automatico a runtime (e in certi casi
anche a compile time).
In altre parole confronta una dichiarazione di interfaccia (come avresti
in C++ o in linguaggi simili) con una dichiarazione per contratto (le
faccio in pseudo C per semplicità):
struct Stack;
void initStack( Stack *s );
void push( Stack *s, int i );
void pop( Stack *s );
int top( Stack *s );
int size( Stack *s );
// nota: nelle post condizioni s' si riferisce allo stack prima
// dell'esecuzione del metodo
struct Stack;
void initStack( Stack *s ) : post{ size(s)==0; } ;
void push( Stack *s, int i ) : post{ size(s)==size(s')+1; top(s)==i; } ;
void pop( Stack *s ) : pre{ size(s)>0; } post{ size(s)==size(s')-1; } ;
int top( Stack *s ) : pre{ size(s)>0; } post{ s==s'; } ;
int size( Stack *s ) : post{ s==s'; } ;


con Sun?
Mumble. In buona parte la risposta di Hejlsberg te la dice precisa. Il
C# in quanto tale è probabilmente nato verso la fine del 1998. Ma le
idee e le tecnologie che MS voleva mettere sul mercato e che metterà sul
mercato con C# e .NET sono prededenti. Da quei progetti di ricerca erano
nati prima prodotti come VB5 e OLE2 e successivamente tutta la
piattaforma COM (e DCOM), il Transaction Server, la DNA e un paio di
altre tecnologie meno conosciute.
Tutto sta a decidere cosa si intende con "Inizio del lavoro". Le prime
idee sono precedenti persino a Win95. La necessità del supporto da parte
dei linguaggi esitenti era conosciuta ai tempi di VB5 e poi VB6 e di
Visual Java. La decisione di iniziare un massiccio progetto di sviluppo
è avvenuta in qualche momento fra il 1996 e il 1997 (verso la fine del
1997 MS lanciò una massiccia campagna di assunzioni a livello
internazionale cercando sviluppatori di codice, ho provato a vedere di
ritrovare gli annunci, ma tutte le riviste del tempo sono oramai
"archiviate" nel limbo del riciclo. Però ricordo che traspariva in
maniera chiara cosa stavano facendo). La formulazione finale del
progetto, ovvero la decisione di sviluppare da capo una intera
piattaforma basata su metodologie e criteri completamente nuovi è
avvenuta durante il 1998. MS ha assunto centinaia di programmatori.
Quando, esattamente, hanno iniziato a definire i singoli componenti
nella forma attuale (MSIL, C#, il runtime .NET etc. etc.) non lo so. Se
Hejlsberg dice che il momento in cui hanno incominciato a lavorare sul
C# è la fine del '98 posso crederci. Ma per allora avevano già deciso
cosa il C# avrebbe dovuto fare e deciso che lo avrebbero fatto con un
nuovo linguaggio (il C#) invece che con linguaggi esistenti (VB, C++ e
Java come candidati). E probabilmente avevano anche deciso per buona
parte la struttura del runtime di .NET e del p-code di supporto (MSIL).


> > Ne sento spesso parlare ma non so cosa sia, cos'è esattamente?
abbiamo pubblicato da poco un articolo al riguardo su Programmazione.it:
http://www.programmazione.it/index.php?entity=earticle&idArticle=652
