Newsgroup: it.comp.programmare.win32
Titolo: consiglio

Volevo farmi qualche programmino personale con interfaccia visuale e 
stavo guardando le varie soluzioni che ci sono attualmente in giro con 
alcuni dubbi.
Voi che siete più esperti di me magari riuscite a togliermeli e darmi 
dei consigli utili.
1) Visual Basic 6
	- E' superato?
	- E' semplice
	- Gli eseguibili dipendono dalle sue dll e sono interpretati quindi lenti
2) Visual C++ 6
	- Con le MFC dovrebbe essere semplice ma ci capisco poco e mi sembra 
poco pratico lo stesso. Quali sono i file di mfc da distribuire insieme?
	- Senza MFC c'è da mettersi le mani nei capelli
3) Borland C++ 6
	- Semplice, pratico e veloce
	- Si possono creare eseguibili indipendenti dalle librerie anche con 
VCL? Quali sono le librerie da distribuire insieme altrimenti?
4) SharpDevelop
	- L'ho messo su l'altro giorno e mi pare un ambiente alternativo  al 
.net di microsoft, può creare programmi c# e 
vb.net
 in ambiente visuale.
	- Senza il .net framework la gente non esegue i programmi!
	- I programmi sono interpretati come il java!
5) Dev C++
	- Lo installo ora, vedo che lo usano in parecchi ma se non ho capito 
male non è un vero e proprio ambiente visuale
6) Delphi 7
	- Come Borland C++ 6, forse più semplice ma il pascal sinceramente non 
lo sopporto come linguaggio
7) Netbeans
	- Java è interpretato e inoltre non è il massimo della praticità e 
sveltezza questo ambiente visuale
Inoltre mi chiedo quali linguaggi e ambienti visuali vengano utilizzati 
dai chi crea programmi multipiattaforma ai livelli di firefox.
Ciao!

 Quali sono le librerie da distribuire insieme altrimenti?
Librerie non facenti parte l'ambiente di sviluppo; ad esempio per 
accedere a Postgresql devi avere la libpq.dll :)
<snip>
M.

 dai chi crea programmi multipiattaforma ai livelli di firefox.
Chi t'ha detto che firefox e' stato sviluppato con un ambiente visuale!
Al seguente URL trovi una significativa statistica dei linguaggi usati 
per i progetti open source:
http://sourceforge.net/softwaremap/trove_list.php?form_cat=160
I linguaggi piu' usati sono C++, C, Java, PHP, Perl, Python, Javascript, 
Visual Basic, C#.
Per applicazioni che useranno una manciata di utenti, io consiglio Python.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

 usata da migliaia di utenti.
E' vero che sviluppare applicazioni GUI con C/C++ Win32 o MFC e' piu' 
complicato rispetto all'uso di altri linguaggi/ambienti RAD (o simil-
RAD) (...anche se un buon framework puo' aiutare).
Pero' e' anche vero che l'eseguibile risultante occupa molte meno 
"risorse computazionali" (es.: in termini di spazio di memoria) rispetto 
a quanto accade con linguaggi piu' "facili"/moderni.
Ad esempio, ricordo un post su questo newsgroup in cui si diceva che una 
*semplice* form C# + .NET "mangiava" qualche mega (!!)...
Inoltre, mi incuriosisce quando parli di applicazione "che verra' usata 
da migliaia di utenti". Non ho capito bene a cosa ti riferisci: ad 
applicazioni multithread che devono interagire con molti utenti??
A server che devono rispondere a molti client?
Grazie,
Ciao
Dan

 

Il mio e' un ragionamento economico basato sul rapporto costi/benefici.
Supponiamo un'ora di lavoro di un programmatore costi 40 (scegli tu la 
valuta), che un'ora di attesa improduttiva da parte dell'utente costi 50 
e che un megabyte di RAM costi 3.
Supponiamo che per sviluppare del software con una tecnica a basso 
livello si impiegano 100 ore di un programmatore e si ottiene un 
programma che funziona in 10 MB di RAM e che ha dei tempi di attesa che 
accumulati nel corso di un paio d'anni di utilizzo fanno perdere 
all'utente 2 ore. Se tale software viene usato da un solo utente, il suo 
costo complessivo e':
1 * 100 * 40 + 1 * (10 * 3 + 2 * 50) = 4000 + 1 * (30 + 100) = 4000 + 1 
* 130 = 4000 + 130 = 4130
Se tale software viene usato da 20 utenti, il costo complessivo e':
1 * 100 * 40 + 20 * (10 * 3 + 2 * 50) = 4000 + 20 * 130 = 4000 + 2600 = 6600
Supponiamo, inoltre, che per sviluppare del software con una tecnica ad 
alto livello si impiegano 70 ore di un programmatore e si ottiene un 
programma che funziona in 40 MB di RAM e che ha dei tempi di attesa che 
accumulati nel corso di un paio d'anni di utilizzo fanno perdere 
all'utente 6 ore. Se tale software viene usato da un solo utente, il suo 
costo complessivo e':
1 * 70 * 40 + 1 * (40 * 3 + 6 * 50) = 2800 + 1 * (120 + 300) = 2800 + 1 
* 420 = 2800 + 420 = 3220
Se tale software viene usato da 20 utenti, il costo complessivo e':
1 * 70 * 40 + 20 * (40 * 3 + 6 * 50) = 2800 + 20 * 420  = 2800 + 8400 = 
11200
Ne risulta che se il software sara' usato da un solo utente, e' 
opportuno adottare la tecnica di sviluppo ad alto livello, anche se il 
software richiede il quadruplo della RAM e triplica i tempi di attesa, 
grazie all'incremento di produttivita' del programmatore del 30%; mentre 
se il software sara' usato da 20 utenti risulta opportuno adottare la 
tecnica di sviluppo a basso livello, perche' lo spreco di RAM e di tempo 
d'attesa, essendo moltiplicato per 20 vanifica l'incremento di 
produttivita' del programmatore.
Nel caso di un sistema client/server, gli utenti sono quelli dal lato 
client. Ma il discorso vale per qualunque applicazione. Se un programma 
di videoscrittura mi fa attendere mezzo secondo ogni volta che digito un 
tasto, e quel programma e' usato da 1000 utenti ognuno dei quali lo usa 
mediamente per digitare 100000 tasti, il tempo perso complessivamente e' 
pari a 0.5 * 1000 * 100000 = 50 milioni di secondi.
Infine, a proposito del fatto che un *semplice* form C# + .NET 
"mangiava" qualche mega, osservo che il fatto che un'applicazione banale 
sia esosa non e' indicativa delle prestazioni di un'applicazione reale. 
Infatti, normalmente i linguaggi ad alto livello caricano librerie e 
strutture dati voluminose anche per piccole applicazioni; tuttavia al 
crescere dell'applicazione la richiesta di risorse non cresce 
proporzionalmente.
Per valutare meglio un ambiente dovresti vedere la variazione di memoria 
occupata tra un'applicazione che contiene un semplice form e una che ne 
contiene due.


 [snip]
OK, ragionamento chiarissimo.
Grazie.
Dan


<snip>
Perdonami, ma non  sono d'accordo con le asserzioni fatte; in base a 
quali parametri, stabilisci che in un linguaggio di alto livello ci 
vogliono 70 ore per fare quello che in uno basso ci vogliono 100. A 
seconda del tipo di linguaggio e di applicazione possono essere 
differenti i parametri. In realtà tutte le tue assunzioni mi sembrano 
forzate, che lasciano il tempo che trovano, in quanto molto variabili e 
soggettive.
M.

 vogliono 70 ore per fare quello che in uno basso ci vogliono 100.
Quelli sono parametri dai valori "soggettivi"; non credo ci siano 
metriche "oggettive" a riguardo...
Pero' credo che l'idea che sta dietro il discorso sia condivisibile.

 soggettive.
Faccio un esempio:
e' un dato di fatto che per creare e gestire una finestra in C con Win32
devi scrivere molto codice, in vb6 o 
vb.net
 la finestra l'hai già pronta
con un click. Quanto questo incida sui tempi di sviluppo chiaramente è
soggettivo, ma il concetto di base mi sembra inconfutabile (anche se ci
sono rare eccezioni in senso inverso)
Ciao
Stefano "HappyMan" (Lake Maggiore - Italy)
-- 
The Personal Framework for Object Oriented Windows Development (Win32)
http://www.sgr.info
Email happyman69 (at) 
libero.it


L'idea alla base è corretta. Nel libro di ingegneria del software che 
avevo studiato un po' di tempo fa, c'erano delle classificazioni, in 
termini di righe di codice, tra i vari linguaggi di programmazione, che 
avevano appunto lo scopo di valutare l'impatto di un progetto.
La mia "polemica" (se mi passate il termine ;) ) era relativamente alle 
proporzioni stabilite per il calcolo del costo, che non possono essere 
prese come spunto per una valutazione a priori tra linguaggio di alto e 
di basso livello. Se io anziché 70 ne impiego 20 di ore per ottenere lo 
stesso risultato i conti sballano; tutto qui.
M.

 soggettive.
Ti sei perso un paio di "Supponiamo" che avevo scritto.
Il mio *esempio* serviva a rendere piu' comprensibile una teoria che, 
ovviamente, deve essere espressa con formule contenti variabili.
In pratica, e' molto difficile valutare il tempo di programmazione 
richiesto per sviluppare un programma che soddisfi determinati requisiti 
usando dati strumenti di programmazione, ed e' forse ancora piu' 
difficile valutare quanto tempo degli utenti verra' sprecato e quante 
risorse di calcolo verranno utilizzate dal programma risultante.


 
Quindi concorderai con me che, a questo punto, la valutazione da te 
espressa, non è indicativa dei termini di confronto generale tra 
linguaggi di alto e basso livello. ;)
M.