Newsgroup: it.comp.lang.c++
Titolo: [OT?] Idee per una libreria java-like (scritta in C++)...

Salve...
Ormai sono un paio di mesi che sto svilupando un libreria java-like ma
estendendola con le
caratteristiche del C++ (cercando di prendere il meglio da Java e C++).
Questa libreria è stata creata con in mente la semplicità; in modo da poter
essere utilizzata anche da chi ha appena cominciato a programmare in C++.
Vorrei, da chiunque voglia rispondere a questo thread, avere dei
suggerimenti per estendere le funzionalità di diverse classi come "string",
"vector" ecc. .
In pratica, nel caso non mi fossi spiegato esaurientemente, vorrei
aggiungere nuove "feature" alle varie classi che compongono questa libreria.
Ma ora, essendo l'unico sviluppatore di questo progetto, sono a "corto" di
idee.
Grazie per la vostra attenzione.
Saluti
Rosario Ianuale

 come "string", "vector" ecc.
Ci sono già le classi della libreria standard, perché
riscrivere ciò che è già stato scritto (e molto bene)?
Ciao.
--
BSD is for UNIX-lovers -- linux is for Windows-haters.


Grazie per il tuo intervento.
Saluti
Rosario Ianuale
P.s.: nel caso non fossi stato chiaro nel esporre le mie idee... sarei
felice di rispondere a chiunque voglia continuare questa discussione
(possibilmente non privatamente).

 applicandole al C++.
Ora mi è ben chiaro il tuo obiettivo, che non condivido
affatto.
Java e C++ sono due linguaggi completamente diversi (tranne
per la sintassi simile). Scrivere codice C++ Java-like
significa "castrare" il C++.
In pratica con la tua libreria, impostata in tale maniera, tu
non aiuti i programmatori Java a rendere più efficiente il
loro sw utilizzanto il C++ con maggiore facilità, ma li aiuti
a scrivere "pessimo" codice C++, cosa che non credo sia utile.
Il C++ non ha nulla da invidiare a (o copiare da) Java...
Chi programma in Java deve disimparare tutto e ripartire da
zero se vuole scrivere codice C++. Se pensa che l'approccio
Java sia quello giusto e che vada applicato anche ad altri
linguaggi, commette un madornale errore.
Pertanto non posso che consigliarti di rinunciare allo
sviluppo di una simile libreria, perché, secondo me, solo
dannosa e senza utilità.
Ciao.
P.S.
Non era mia intenzione essere offensivo o sminuire le tue
capacità, sicuramente maggiori delle mie, ma ho voluto esporre
le mie idee e convinzioni senza "compromessi" e "diplomazia".
Ri-ciao.



Saluti
Rosario Ianuale

 C++), meglio dei concetti.
Beh, non è solo sviluppando una simile libreria che puoi
farlo...
Ciao.


 Ciao.
Ciao.


Saluti
Rosario Ianuale
P.s.: grazie per le tue risposte... è stata (o sarà) una discussione molto
stimolante.

 ha scritto nel messaggio
news:8cZn9.56864$e31.1...@twister2.libero.it...

Se ti fa piacere vorrei sentire anche la tua opinione sulla faccenda.
Saluti
Rosario Ianuale

 Oh... dai... che suggerisci...
Ad esempio trovo ottima la libreria AnyGUI che stanno
sviluppando per il Python. Una libreria simile per il C++
sarebbe estremamente utile.


 strumenti, e non il loro mero utilizzo).
Io sono invece dell'idea che sia meglio (e più semplice) prima
utilizzare e comprendere l'utilizzo, e poi comprendere
approfonditamente.



Saluti
Rosario
P.s.: Una cosa che non ho menzionato finora è che la mia libreria è scritta
in ANSI-C++ ed è portabile su qualsiasi compilatore che supporti tale
standard (in pratica gira anche su Linux).

 sapere... (se lo vuoi puoi rispondermi anche in privato).
Si può aprire un progetto su SourceForge, e cercare collaboratori...
Ho suggerito quest'idea perché è una cosa che mi piacerebbe molto
fare, ma il tempo libero che ho è realmente molto poco, e quel poco
lo sto dedicando ad un altro progetto...


 caratteristiche del C++ (cercando di prendere il meglio da Java e C++).
Con qualche specifica eccezione, di cui parlo in seguito, non mi pare 
una buona idea. Nonsostante la somiglianza sintattica tra i due 
linguaggi sia fuorviante, Java e C++ sono linguaggi molto diversi; 
soprattutto sono linguaggi che si *usano* in modo molto diverso.
Non mi e' molto chiaro cosa tu intenda per Java-like: Java e' un 
linguaggio ad eredita' singola e senza meccanismi per la programmazione 
generica. Questo vuol dire che qualsiasi porzione di codice non banale 
in Java sfrutta l'eredita' singola e l'informazione di tipo a runtime 
per fornire meccanisimi generici.
In C++ invece si usa il polimorfismo tramite eredita' solo quando e' 
effettivamente necessario a runtime utilizzare oggetti di classi diverse 
come in modo omogeneo, altrimenti si ricorre ai template.
Questo gia' denota come disegnare una libreria C++ con l'approccio 
generale di Java non puo' che produrre un risultato "contro-natura".
Esistono pero' due aspetti nei quali Java oggettivamente sopravvanza il 
C++; in primo luogo l'esistenza di una libreria molto ampia che risolve 
problemi pratici: networking, database, web, e chi piu' ne ha piu' ne 
metta. In secondo luogo, per tutta quella categoria di problemi in cui 
e' indispensabile poter esplorare in dettaglio il tipo di un oggetto a 
runtime Java mette a disposizione meccanismi che il C++ standard non 
possiede.
Cosi' a mio avviso l'ispirazione che e' utile trarre da Java non e' 
tanto connessa alla filosofia di base, quanto sulle cose che Java 
fornisce gia' pronte. Anzi, forse la miglior fonte di ispirazione in 
questo senso e' Python, la cui libreria standard e' zeppa di moduli che 
risolvono problemi concreti in modo semplice ed efficace. Riscriverne 
qualcuno per il C++, cercando di ottenere risultati altrettanto utili ed 
in linea con la filosofia del linguaggio sarebbe decisamente encomiabile.
La cosa che diventa difficile pero' e' non rifare cose gia' fatte da 
altri, perlomeno non senza fornire concreti vantaggio o almeno un 
approccio significativamente differente. La prima cosa da fare in questo 
senso e' verificare cosa fornisce Boost (
www.boost.org
) e su cosa si sta 
lavorando in quel gruppo.
Ciao,
Nicola

 standard (in pratica gira anche su Linux).
Uhm, su quanti compilatori l'hai provata per poterti permettere questa 
affermazione?
Ciao,
Nicola

 diversi.
Java e C++ sono *profondamente* diversi. Non ha molto senso creare una 
libreria sullo stile di quella di Java, per il semplice motivo che il 
linguaggio non fornisce gli strumenti adatti per realizzarla.
Ad esempio Java fornisce un Vector che puo` contenere qualsiasi Object; 
in C++ 
questo approccio non e` possibile, per vari motivi, tra i quali:
1) non esiste una base comune a tutti gli oggetti: un parziale rimedio 
potrebbe essere quello di costringere gli utenti a derivare da una classe 
base comune, ma probabilmente sarebbe un approccio troppo intrusivo per 
portare reali benefici
2) Ci sarebbero *gravi* problemi a gestire l'ereditarieta` multipla: cosa 
succede ad esempio se un oggetto ha tra le proprie classi base due 
distinte 
istanze del nostro simil-Object?
3) Un approccio simile comporterebbe un uso eccessivo di dynamic_cast per 
gestire correttamente tutte le situazioni. Cio` comporta a codice piu` 
complicato e meno manutenibile.
Per quel che riguarda il GC, anch'esso e` praticamente infattibile in 
C++: in presenza di un GC e delle eccezioni per garantire una corretta 
esecuzione del programma *senza* dover duplicare del codice e` 
*indispensabile* la clausola "finally", che pero` il C++ non supporta. 
Usare il GC significherebbe:
1) scrivere un programma potenzialmente sbagliato
2) dover duplicare il codice di clean-up di ogni procedura.
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 Rosario Ianuale
Ciao, Diego.

Salve...
Innanzi tutto ringrazio tutti quelli hanno partecipato, o che vorrano
partecipare, a questo thread di messaggi - dedicando quel poco tempo che
hanno a rispondermi -.
Più volte mi è stato precisato che per esprimere un opinione concreta - da
programmatori quali siete - avete bisogno di vedere come gira il codice come
è costruita la libreria ecc.; ed è naturale che sia cosi (ma questo non l'ho
avevo calcolato - diciamo che ne sono rimasto sorpreso - essendo
relativamente nuovo di questo NG).
Quando ho spedito il messaggio iniziale al NG non mi aspettavo che il thread
prendesse una piega simile... non per questo dico che sia negativa anzi... .
Le mie domande erano semplicemente queste:
Quale caratteristica/che vorreste vedere implementate in una libreria che vi
aiuti a svolgere al meglio il vostro lavoro?
Quale caratteristica/che vorreste vedere implementate per facilitare
l'apprendimento del C++ a chi viene da Java o da chi sta incominciando a
programmare?
Sarebbe utile costruire una specie di libreria alla "LEGO" in modo da poter
facilitare la "vita programmativa"?
Per inciso: non mi permetterei MAI da "piccolo" programmatore quale sono di
voler sostituire le grandi librerie che esistono su Internet e che
sicuramente sono scritte molto meglio della mia.
Lo stato di sviluppo di questa libreria, se vi può interessare, è ancora in
ALPHA ed è un po' instabile nel senso che la sto' sottoponendo ad un
intensivo test di debug e dove necessario di revisione.
Grazie a tutti
Rosario Ianuale
P.s. per sig. Musatti: come ti ho già scritto; una risposta precisa te la do
tra qualche giorno - ciao -.

 cio' non significa che non sia una cosa positiva.
non vorrei sembrare disfattista, ma se il tuo scopo e` di scrivere una 
libreria "usabile" non penso che tu possa riuscire a migliorare 
significativamente la situazione. Probabilmente il design della STL e` 
quello che piu` di tutti si plasma sul linguaggio: come ti ho gia` detto 
probabilmente il C++ non e` intrinsecamente molto adatto a supportare 
una libreria Java-like.
Se invece lo vuoi fare per esercizio e per imparare cose nuove va 
benissimo come proposito: probabilmente provando "sul campo" riuscirai 
ad impare il C++ meglio di come lo puoi imparare leggendo i nostri 
messaggi.
