Newsgroup: it.comp.lang.c++
Titolo: Differenze tra C++, C#, Visual Basic ...

Vi sarei molto grato se poteste darmi un consiglio.
Ho deciso di investire su me stesso imparando a programmare, visto che 
come matematico lavoro non se ne riesce a trovare. Non sono un absolute 
beginner perche’, come dicevo poc’anzi, mi sono laureato in matematica 
ed il mio corso di studi comprendeva Matlab, Mathematica ed un po’ di C.
Sono pero’ frastornato di fronte alla gamma di linguaggi presenti sul 
mercato; in particolare la mia attenzione si e’ rivolta a
C++
C#
Visual Basic 6.0
Visual Basic Net
Quindi mi pongo due fondamentali domande:
esistono, effettivamente, cose e’ possibile fare in uno di questi 
linguaggi e non negli altri, cioe’ c’e’ ne e’ uno che denuncia limiti 
tali da sconsigliare un lungo periodo di apprendimento ?
qual’e’ di questi linguaggi che permette di ottenere programmi 
massimamente portabili ?
(qui per ‘portabile’ non intendo, ovviamente, da Windows a Unix, ma 
penso alla mandria di PC in configurazione Intel – Xp / Xp Pro / Vista …)
Vi ringrazio molto per l’attenzione e vi auguro buon lavoro.
Giacomo De Gerolamo

 penso alla mandria di PC in configurazione Intel – Xp / Xp Pro / Vista …)
Cioè intendi solo microsoft...... :-/
-- 
God is real, unless if declared integer.
Powered by Debian GNU/Linux

 tali da sconsigliare un lungo periodo di apprendimento ?
Per quello che conosco quei linguaggi, direi di no. Usando C#
e VB.Net prega di non dover mai utilizzare una librerie che
non abbiano una interfaccia .Net
VB 6.0 e' ufficialmente defunto credo, ma gradirei conferme,
che i programmi fatti in VB 6 non funzionino su Vista.
Gli altri sono teoricamente portabili, anche se la portabilita'
di programmi C++ puo' dipendere dalle librerie usate.
HTH
Bye, bye...

 la portabilita' di programmi C++ puo' dipendere dalle librerie usate.
Uhm, vedo che la faccenda e' complessa ...
Mi e' stata fatta anche balenare la possibiita' di usare il VB
per costruire l'interfaccia utente delle applicazioni ed il C/C++
per implementarne le funzioni che esigono maggiori performance
a runtime.
Che ve ne pare di questa soluzione ibrida ?
Un saluto a tutti.
Giacomo

 penso alla mandria di PC in configurazione Intel – Xp / Xp Pro / Vista …)
Ovviamente, "portabile" in generale non ha il significato che gli 
attribuisci tu. Tu chiedi come sviluppare un'applicazione che possa 
continuare a funzionare sulla stessa famiglia di processore, e con la 
stessa famiglia di sistema operativo, senza neanche cambiare produttore 
di processore e di sistema operativo.
Questo mi sembra il minimo che si possa pretendere da un'applicazione. 
Se questo e' il massimo di portabilita', mi chiedo che cosa sia il 
minimo. Forse un'applicazione che funziona solo se lo schermo ha 
esattamente una dimensione di 1024x768 pixel, la scheda video e' di 
marca Nvidia, la lingua di sistema e della tastiera sono "italiano", il 
mouse ha tre tasti e una rotellina, e la stampante e' in formato A3? :)
Comunque, se sei interessato solo alla piattaforma Windows NT/XP/Vista e 
successori, il problema principale di portabilità consiste nel passaggio 
da sistemi a 32 bit a sistemi a 64 bit. Così come Windows 95 era un 
sistema a 32 bit che permetteva l'esecuzione anche di software a 16 bit, 
cosi' i sistemi operativi a 64 bit permettono l'esecuzione anche di 
software a 32 bit. Tuttavia, tale software non sfrutta le potenzialita' 
dei 64 bit, ma lo strato di emulazione ne rallenta le prestazioni.
In tale contesto, Visual Basic 6 e' da sconsigliarsi, in quanto non 
viene piu' sviluppato e quindi non ne verra' prodotta una versione a 64 bit.
Al contrario, i linguaggi che generano bytecode, come C++/CLI, C# e 
VB.NET
, non richiedono nemmeno ricompilazione da parte dello 
sviluppatore, in quanto il bytecode viene compilato sulla macchina 
dell'utente nel linguaggio macchina piu' adatto al sistema.
Il linguaggio C++ nativo invece richiede come minimo la ricompilazione 
da parte dello sviluppatore, e, se si fa uso di chiamate di sistema o di 
librerie che non possono essere ricompilate, possono risultare 
necessarie modifiche ai sorgenti per passare ai 64 bit.
Comunque il framework .NET e' stato ritagliato addosso al linguaggio C#. 
Il linguaggio 
VB.NET
 e' altrettanto portabile, ma e' stato pensato come 
via di mezzo tra Visual Basic e C#, e ha alcune limitazioni rispetto a 
C#. E' consigliato a chi conosce gia' Visual Basic e non conosce i 
linguaggi C, C++, Java. Chi conosce gia' uno di questi ultimi linguaggi, 
e' meglio che usi C#.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

 Che ve ne pare di questa soluzione ibrida ?
Personalmente preferirei fare seppuku piuttosto che usare
il Visul Basic, ma mi rendo perfettamente conto che e' una
posizione da estrtemista. Io utilizzo wxWidgets per le interfacce
grafiche e mi trovo bene. Non credo, pero', che quella da me usata
sia una soluzione valida per un neofita o per chi non conosce il
framework wxWidgets e deve implementare velocemente qualcosa.
HTH
C:\>iao Angelo

 di programmi C++ puo' dipendere dalle librerie usate.
Gli altri sono solo C++, e teoricamente significa utilizzare
rigorosamente soltanto le parti standard del linguaggio e delle librerie...

 Che ve ne pare di questa soluzione ibrida ?
Che se impari ad usare C++ poi sei liberissimo di usare la "droga" MS
anche da C++ e funziona bene. 
Io fra i quattro scarterei VisualBasic in ambo le versioni.
C++ mi garba parecchio, C# lo conosco poco ma mi dicono tutti essere ben
fatto (specie nelle ultime versioni). Ecco, io ti voto C++. *Specie* se
vuoi rischiare di mettere a frutto anche le tue conoscenze di
matematico[0].
Ad ogni buon conto mettiti nell'ordine di idee che C++ č un linguaggio
complesso. E che la "professione" di Informatico oggi richiede *molto*
piů che conoscere uno, due, n linguaggi.
Ci si aspetta che tu sappia maneggiare basi di dati, conoscere principi
di ingegneria del software, design pattern, conoscere modi e processi di
sviluppo, sapere come funzionano i sistemi operativi (o le macchine
virtuali su cui lavori) dal punto di vista di concorrenza e compagnia.
Insomma Matematico + C++ != "Professionista di Informatica".
Se invece volessi fare l'informatico "teorico" le tue conoscenze di
matematica ti aiuterebbero grandemente nel comprendere e spulciare i
problemi tipici dell'informatica, etc etc etc. Ma se nomini VB mi viene
da pensare che tu stia puntando ad altro.
----
[0] posso motivare a parte.
-- 
-riko