Da Java al C++

Questo seminario e' il proseguimento di Java 2 e il suo uso nella simulazione di esperimenti di Fisica . Esso vuole mostrare come sia facile imparare a programmare in C++ dopo che si e' imparato a programmare a oggetti usando Java .La complessita' del linguaggio impone di concentrarci nei dettagli restringendo il campo alle sole applicazioni essenziali della programmazione object oriented(in pratica il contenuto delle prime due lezioni del corso su Java).Questo e' il normale percorso didattico ormai seguito in alcune universita' americane. Come al solito una serie di 3 lezioni Imparate C++ in 3 giorni corredata da numerosi esempi di programmi, sara' la base del seminario.
:info@zitogiuseppe.com

Seminari tenuti al Dipartimento di Fisica di Bari in varie occasioni a partire da Marzo 2000

Al seminario sono collegati i gruppi di esercizi 1,2 .



Materiale usato al seminario disponibile.

Indice

Introduzione

Per dirla in breve:

La struttura di questo seminario

In questo seminario ci proponiamo di seguire lo stesso schema del precedente seminario. Le caratteristiche fondamentali di C++ sono presentate in una serie di lezioni che permettono di "imparare C++ in 3 giorni". La parte piu' importante di queste lezioni sono i numerosi esempi di programmi presentati.

Cos'e' C++?

  1. C++ e' un linguaggio di programmazione generale orientato agli oggetti .
  2. C++, nato circa 10 anni dopo il C, e' stato scritto da Bjarne Stroustrup in modo da essere compatibile col C e da essere efficiente come il C.
  3. C++ non e' ne' portatile ne' sicuro (nel senso di Java) percio' bisogna scordarsi le applicazioni di rete.Dovete inoltre aspettarvi differenze tra una macchina e l'altra e tra un compilatore e l'altro. Ad esempio, i programmi che corredano questo seminario sono stati scritti su una macchina Unix e provati con il compilatore g++ e potrebbero non funzionare su un'altra macchina/compilatore.
  4. C++ solo adesso ha una Standard Template Library o STL con una definizione di alcune classi standard come la classe String. Ma in generale mancano librerie di classi standard per costruire interfacce grafiche,multiprogrammazione o applicazioni di rete.Per questo motivo,questi argomenti sono fuori discussione in un corso introduttivo su C++.
In definitiva, molta della complessita' del C++ nasce dalla necessita' di essere compatibile col C. Ad esempio molte caratteristiche del linguaggio, come le strutture (struct) e le unioni (union) sono ridondanti ora che ci sono le classi ma vengono mantenute per questioni di compatibilita'.Lo stesso vale con i puntatori, anche se qui il discorso e' piu' delicato: secondo i programmatori C/C++ i puntatori sono l'essenza del linguaggio.
Un'altra caratteristica del C/C++ che crea complessita' e' l'uso del preprocessor.Insomma come dice lo stesso Bjarne Stroutstrup:
Non fatevi prendere dal panico,col tempo tutto diventera' chiaro.

Imparate C++ in 3 giorni!

Per imparare C++ in 3 giorni procedete a provare
questa serie di circa 20 programmi presentati in 3 lezioni che vi permetteranno di capire le piu' importanti caratteristiche di C++.

Imparare C++ con Cint e Root

ROOT e' un insieme autoconsistente di tools per l'analisi di dati che puo' essere scaricato gratis dal Cern. Per quanto ci riguarda, il suo interesse e' nel fatto di contenere CINT una versione interpretata di C++:in pratica un C++ interattivo che e' uno strumento ideale per il principiante. Questo anche perche' ROOT contiene tutta una serie di oggetti grafici utilizzabili da CINT che permettono di fare velocemente delle analisi statistiche o delle visualizzazioni in C++. ROOT oltre al manuale, ha degli ottimi tutorial:1 , 2 e 3. Ma soprattutto,per quel che riguarda l'apprendimento del C++, e' interessante questo C++ basics for ROOT User che copre all'incirca il materiale della lezione 1 di questo corso. Tutti gli esercizi di questa lezione possono essere eseguiti con CINT.Interessante anche questo materiale.
Per chi conosce il software del Cern, occorre spiegare che ROOT non e' altro che la versione object-oriented di Paw dove il C++ ha sostituito il Fortran. Le potenzialita' sono identiche, inclusa l'estrema facilita' di uso, veramente eccezionale per un'applicazione basata sulla programmazione in C++:anzi esiste questa paw to root conversion table che permette un rapidissimo apprendimento per esperti di Paw.

C++ e Python

Se state cercando di imparare C++ e non conoscete Python, allora forse vale la pena di cercare di imparare anche Python.Ci sono alcuni validi motivi per farlo. Il primo motivo e' che Python ,anche se non e' un C++ interattivo, permette la creazione di classi ed oggetti in maniera interattiva, rendendo molto piu' semplice l'acquisizione di alcuni concetti base della programmazione ad oggetti. Come esempio consideriamo la realizzazione in Python del programma 1 della seconda lezione di questo corso:
python
class Counter:
   "Un semplice contatore"
   value=0
   def increment(self,n):
     self.value=self.value+n
x = Counter()
print x.value
x.increment(5)
print x.value
CTRL-d
Ecco un esempio di uso didattico di python :
How to Think Like a Computer Scientist

Il secondo motivo e' che voi potete estendere Python con moduli scritti in C.
Il terzo motivo e' che potete includere Python in un vostro programma C++ rendendolo di fatto estendibile e con la possibilita' di scrivere degli script in Python che realizzano particolari funzioni della vostra applicazione.

Trovate tutta la documentazione sul sito di python. Puo essere inoltre interessante questa: Numerical Computing in Python: A Guide for Matlab Users

Aspetti di C++ non trattati

Ecco una lista non esaustiva degli argomenti non affrontati dal corso. Comunque alcuni di questi aspetti sono affrontati in questa raccolta di programmi dimostrativi e in questa lezione sullo Sviluppo di applicazioni grafiche in C++ con Qt,OpenGl e OpenInventor .

Conclusione

Se guardiamo cosa si usa adesso come linguaggi nelle applicazioni "serie",ad esempio negli esperimenti delle alte energie, scopriamo che 95% e' in C++ e 5% e' in Java. Non c'e' dubbio che al momento attuale il C++ sia la soluzione sicura ai problemi piu' difficili come costruire un programma di un milione di righe. D'altra parte il suo insegnamento come primo linguaggio comporta alcune difficolta' data la sua complessita'. Il rischio e' di perdersi nei dettagli. Spero di aver provato con questa serie di lezioni che la maniera ideale (o quasi) di imparare il C++ e' quella di imparare prima Java e poi di passare al C++. E' questo l'approccio che viene usato da molte Universita'.
INDIETRO a Materiali del Corso HTML e Java


Ultimo aggiornamento: