Newsgroup: it.comp.lang.c++
Titolo: Perche' C++?

Salve,
mi interesserebbe avere il vostro parere su un argomento: devo iniziare
a vedere un tool di programmazione di titpo RAD io programmavo sotto dos
in C, sapreste darmi dei motivi per passare al C++ e non ad esempio a
Java?
grazie
Edoardo

Il C++ e' un linguaggio Object Oriented, conserva anzi aumenta la
rigorosita' del C, permette l'ereditarieta' multiplia, ti consente di
scrivere applicazioni molto efficienti, dispone di strumenti di sviluppo
potenti.
Java e' un linguaggio Object Oriented derivato dal C++, non permette
l'ereditarieta' multipla (molti dicono che non serve!), semplifica alcune
complicazioni del C (non ha i .h), nasce per essere indipendente dalla
piattaforma, e' proprieta' di Sun. Comincia a disporre di strumenti di
sviluppo potenti.
Il C++ e' affermato, affidabile, standard.
Java e' in evoluzione, non ha uno standard, e' legato a Sun.
Mia opinione: tutti quelli che hanno sviluppato in C per Dos, in C per
Windows, in Clipper per Dos, in Visual Basic per Windows non si sono mai
preoccupati di essere indipendenti dalla piattaforma. Perche' dovrebbero
farlo adesso quando l'unica piattaforma per PC e' Windows?
Ciao.
Antonio Donatiello.

...

L'unico motivo reale sarebbe se le tue applicazioni sono in quella
sparuta minoranza che deve fare calcoli veramente complicati
e pesanti, con prestazioni cruciali; nella grande maggioranza dei
casi, Java (o Visual Basic, Delphi, ecc ecc) ti offriranno invece
maggiore facilita` di apprendimento e di uso, e quindi maggiore
produttivita` (Java, fra tutte, e` forse la scelta migliore, avendo
il vantaggio di portabilita`, buoni strumenti gratuiti disponibili in
rete, eccetera).  C++ offre inoltre maggiore facilita` di "accesso
a _bassissimo_ livello" al sistema operativo, ma al giorno d'oggi,
per fortuna, c'e` sempre meno bisogno di interazioni del genere
(a meno che tu non debba scrivere device driver o simili, nel
qual caso naturalmente il quadro cambia in modo drastico).
Alex

farlo adesso quando l'unica piattaforma per PC e' Windows?
Forse perche` le prospettive di Linux come piattaforma per PC sono
in rapida crescita, con un market share che cresce piu` rapidamente
di Windows NT (che, con Linux, e' l'unico altro sistema operativo per
PC con market share crescente -- contando Win95 e Win98 come
sostanzialmente "lo stesso sistema"); Linux e` il sistema piu` diffuso
come piattaforma per server di Web, battendo sostanzialmente NT
come diffusione (tutti gli altri sistemi si dividono meno del 10% restante,
Linux e NT insieme coprendo oltre il 90%), ad esempio; i recenti
grossi investimenti di Intel in Red Hat, principale azienda che fa di
Linux una distribuzione commerciale, hanno fatto scalpore -- e` la
prima volta che Intel investe in un fornitore di sistemi operativi che
fa concorrenza a Microsoft.  (Forse di conseguenza, e`, credo, la
prima volta che Linux raggiunge le pagine della rivista "The
Economist", che lo presenta come principale concorrente di MS
visti questi recenti sviluppi; si veda anche il mio post di oggi su
it.comp.linux [in inglese perche` cross-post su comp.arch]).
Comunque -- queste sono altre considerazioni, che possono certo
guidare la scelta fra Java-della-Microsoft (con WFC, splendido
framework ottimizzato per Windows; l'avesse il VC++, un framework
cosi`...!) e Java-degli-altri (con Swing ecc, meno ottimizzati per
Windows ma portabili anche su Linux e in altri ambienti), ad esempio,
ma non cambiano il fatto che nella gran parte dei casi Java puo`
offrire maggiore facilita` di apprendimento, e maggior produttivita`
del programmatore, rispetto al C++ (nonostante la mancanza della
pur preziosa programmazione generica del C++, l'equilibrio resta
a favore di Java; personalmente, valuto che un programmatore che
conosca alla perfezione entrambi gli ambienti puo` guadagnare un
20-30% di produttivita` complessiva, "dal design alla manutenzione",
imperniando il lavoro su Java invece che su C++... e "conoscere
alla perfezione" e` pure piu` agevole per Java che per C++!) -- a
prezzo, sostanzialmente, di un peggioramento delle prestazioni
(piu` grave per strumenti di sviluppo, come quelli Microsoft, che
non generano eseguibili in codice nativo; ma pur sempre presente
anche per quei compilatori, come l'High Performance Compiler
gratuitamente scaricabile da 
www.alphaworks.ibm.com
, che pure
generano .EXE nativi), peggioramento che puo` avere importanza
zero per la maggior parte delle applicazioni (che comunque
passano la gran parte del proprio tempo a interagire con SO,
DB, GUI, ...), ed essere invece un fattore fondamentale per
quelle rare applicazioni che eseguono in effetti calcoli molto
pesanti e complicati.
Alex

Assolutamente *NO*: Java NON e` per nulla "derivato dal C++
Ti consiglio di leggere il documento
http://java.sun.com/docs/overviews/java/java-overview-1.html
 dove tra le
altre cose c'e' scritto:
"So even though we found that C++ was unsuitable, we designed Java as
closely to C++ as possible in order to make the system more comprehensible."
Se per te questo non vuol dire che deriva dal C++...
Aggiungo che al momento Java e' proprieta' di Sun e rilascia la licenza a
terzi per sviluppare gli ambienti di sviluppo con alcuni vincoli da
rispettare. Fino a prova contraria!
Per quanto riguarda le piattaforme alternative a Windows e' una storia
lunga. L'unico che rosicchia mercato e' il Macintosh che nessuno cita mai.
Linux e' piu' installato che utilizzato. NT comincia a scalzare Unix come
Web Server.
E magari c'e' anche qualcuno che crede nei Network PC!
Ciao.
Antonio Donatiello

 NT comincia a scalzare Unix come Web Server.
ROFL! ROFL! ROFL!
					The Dragon

E magari c'e' anche qualcuno che crede nei Network PC!
Si`, ci sono varie ditte che "ci credono", e infatti ci investono non
poco (Oracle, ad esempio).  Il loro successo commerciale e`
ancora tutto da vedere; piu` probabile, forse, che il concetto si
concretizzi in "macchine" che non si presentano _come_ PC, pur
avendo tutta la dotazione necessaria per qualificarsi come "network
PC", bensi`, ad esempio, come "televisori intelligenti" e simili
aggeggi "specializzati".
Alex

Se chi ha inventato il linguaggio dice che sono partiti dal C++ io credo a
loro. Se in seguito non hanno tenuto fede al loro obiettivo non e' certo
colpa mia!
Inoltre, io non ho mai detto che Java e' uguale al C++ o che e' il
linguaggio al quale assomiglia di piu'. Io ho semplicemente ricordato un
dato storico incontestabile.
Da "The Java Language Specification" su 
www.javasoft.com
 da te citato:
"Java is a general-purpose, concurrent, class-based, object-oriented
language. It is designed to be simple enough that many programmers can
achieve fluency in the language. Java is related to C and C++ but is
organized rather differently, with a number of aspects of C and C++ omitted
and a few ideas from other languages included. Java is intended to be a
production language, not a research language, and so, as C. A. R. Hoare
suggested in his classic paper on language design, the design of Java has
avoided including new and untested features. "
Confermo che secondo me si puo' dire che Java deriva dal C++.
Rispetto alla proprieta' di Java ancora una volta confondi il ragionamento.
Io non mai citato la causa tra Sun e Microsoft e posso essere d'accordo con
te nel pensare ad una svolta positiva per Microsoft. Io ho semplicemente
fatto notare che ad oggi Java e' copyright di Sun tanto e' vero che devi
avere la loro autorizzazione per sviluppare un compilatore. Inoltre mi
risulta che uno dei motivi per i quali le commissioni ANSI abbiano rifiutato
di legittimare lo standard sia proprio il fatto che e' di proprieta' di Sun
(ma d'altronde di sono tanti "industry standard" che non hanno bisogno di
un'approvazione).
Ciao.
Antonio Donatiello

un'approvazione).
Certamente. Uno standard ufficiale, tuttavia, tende a "consolidare"
fortemente la situazione di "mercato" di una tecnologia, e costituisce
prerequisito legale per il suo uso in vari ambiti; e` quindi del tutto
comprensibile che sia desiderabile, per chi ha il massimo di know
how su una data tecnologia e si aspetta grandi vantaggi dalla sua
affermazione, che quella tecnologia sia ufficialmente "sancita" da
uno standard vero e proprio. Queste sanzioni non si ottengono
pero` (almeno cosi` ha sinora ribadito ISO) compatibilmente con
il mantenimento del "controllo tecnico" sugli standard della stessa
tecnologia.
A;ex

sarebbero facilmente potute evitare).
La seconda e` decisamente meno leggibile della prima, e nonostante io
scriva quasi al 99% in C/C++ devo dire che la facilita` di
manutenzione di Java trae parecchio vantaggio da operatori cosi`
umanizzati.
Piuttosto mi chiedo perche` non sia stata implementata la possibilita`
di utilizzare i prototipi in stile C/C++
-- 
Gargamella from Nonsense Delivering Service
remove *dinkyisland* from address to mail me

Alex Martelli (tra le l'altre migliaia di parole) ha scritto:
"C'e` una soglia sul massimo numero di affermazioni false che si
possono fare in un singolo post?  Se c'e`, penso che tu l'abbia superata con
quest'ultima ridicolaggine."
Ti ringrazio per l'offesa gratuita.
Non ho piu' nulla da dirti.
Antonio Donatiello
PS: Naturalmente resto della mia idea.

PS: Naturalmente resto della mia idea.
E allora perche` non accetti la scommessa che avevo
proposto nel post cui hai replicato (evitando accuratamente 
di riportarla)?  Se tu fossi veramente convinto di aver ragione,
staresti buttando via una cena gratis nel miglior ristorante
a tua scelta -- che spreco...!  Non sara` che non sei poi
cosi` tanto _sicuro_ di avere ragione...?  Per caso che hai
controllato cosa significa "copyright" e ti sei reso conto di
quale mostruosita` sia dire che "Java e` copyright", o che
per un verso o per l'altro tu ti sia reso conto di anche una
sola delle varie "svirgolate per la tangente" dei tuoi post...?
Ah, ma forse invece sei solo inappetente, le cene nei
buoni ristoranti non ti interessano punto, e vivi d'aria...?
Alex