XVRC2 Emanuele Ruffaldi Giugno 2006. Tre esperimenti con S3D ► Estensioni del Linguaggio ► Pre-Compilatore ► Esecuzione dentro il Java L C J.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Recupero debito quarto anno Primo incontro
PHP.
Marco Barisione Estendere Python in C.
Universita di Camerino
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Algoritmi e Programmazione
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Massa Laura Mela Enrica
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
MultiSet, Liste Ordinate
Le gerarchie di tipi.
Generalità Linguaggio e Macchina Astratta
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Differenze tra C e C++ Commenti: Adesso puoi inserire dei commenti tra // e la fine della linea. Usare le librerie C: In C++ puoi anche chiamare una funzione.
Introduzione al linguaggio C
Fondamenti di Informatica
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Introduzione al linguaggio C++ 5 lezioni
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Introduzione al linguaggio Java
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
Eliana minicozzi linguaggi L1 Lezione3.
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
Approfondimento delle classi
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Dichiarazioni e tipi predefiniti nel linguaggio C
Le funzioni.
Argomenti della lezione
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Introduzione a C#.
Javascript: fondamenti, concetti, modello a oggetti
Definizione ed Implementazione della rappresentazione interna delle espressioni del linguaggio PERLA di Stefano Vettor.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Java come linguaggio di programmazione
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Astrazione procedurale ed eccezioni
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Introduzione a Javascript
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Ripasso su Java. Introduzione Per risolvere problemi complessi, i linguaggi di programmazione forniscono costrutti per realizzare nuove funzioni che trasformino.
LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Cose nuove di Java (prima a chiacchiera, poi formalmente)
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
28/12/2001package 1 Package Pacchetti e interfacce.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

XVRC2 Emanuele Ruffaldi Giugno 2006

Tre esperimenti con S3D ► Estensioni del Linguaggio ► Pre-Compilatore ► Esecuzione dentro il Java L C J

Estensioni del Linguaggio ► Utilizzo di tipi ► Dichiarazione opzionale di tipi per variabili, argomenti, funzoni ► Compatibile con S3D attuale ► Proprieta’ per le classi ► Invocazione di metodi associati (es. get/setName) ► Metodi per tipi primitivi ► Per stringhe, array e vettori L

Estensione - Tipi ► Tipi possibili  int,float,string,bool  vector e vector[N] con dimensione  array  Classi e tipo generico object  void  any = tipo generico  auto ► I tipi vengono validati e propagati dal compilatore ► Quando non e’ possibile si usa il tipo generico any L

Estensioni - Dichiarazioni ► Variabili  var myVar : int ► Funzioni  function myFx(a : vector, b : float) : void ► Quando non viene specificato e’ any ► La sintassi scelta e’ compatibile con la sintassi corrente di XVR. La retrocompatibilita’ e’ ottenibile usando commenti:  function myFx(a /*: vector*/, b /*: float*/) /*: void*/ ► Le dichiarazioni extern valgono anche per le variabili e per le classi L

Estensioni - auto ► Il tipo auto viene usato per dire che una variabile ha un tipo dipendente dall’espressione di inizializzazione (C#3.0)  var myVar : auto = “Hello”  Ora myVar e’ di tipo stringa ► Utile nel caso dell’inlining quando l’espressione di inizializzazione dipende da un argomento L

Estensioni - optional ► Un argomento di una funzione puo’ essere optional in tal caso viene considerato del tipo dichiarato ma puo’ essere void  function myFx(pos:int, rot:vector,optional)  == void e valtype non vengono ottimizzate L

Estesioni - inlining ► Una funzione puo’ essere dichiarata inline ► In tal caso il compilatore XVRC2 prova a renderla tale ove possibile propagando i tipi ► Usando argomenti “any” si puo’ ottenere qualcosa di simile ai template L

Estensioni – metodi per tipi primitivi ► Una funzione puo’ essere usata come un metodo per un tipo primitivo. In alcuni linguaggi si chiamano extension methods  extern function len(value: any,this) : int  Permette di scrivere: [1,2].len()  e [1,2,3].cross([3,45,5]); ► Basta che il primo parametro abbia il modificatore this L

Estensioni – proprieta’ ► Supporto di attributi che in fase di lettura/scrittura vengono gestiti da metodi ► Quando una variabile non e’ presente nella classe ma esiste setXXX  myobj.name = 10  Invoca myobj.setName(10) L

Pre-Compilatore ► Pre-Compilatore che prende il codice S3D esteso e genera codice S3D per il compilatore standard  Validazione dei tipi  Estensioni del linguaggio S3D++S3DS3D.BIN XVRC2S3DC C

Pre-Compilatore - implementazione ► Implementato in Java usando il parser ANTLR ► Gerarchia di classi per gestire Espressioni, Statement e Tipi  fold(), clone(), ToJava(), ToXVR() C

Pre-Compilatore Inlining ► XVRC2 supporta il constant folding e l’inlining  function WhatX(value : string ) :string inline  {  if(value == "Green")  return "Yes";  else  return "No";  }  Chiamando: WhatX(“Green”)  Il compilatore sostituisce direttamente con “Green” ► Utile per argomenti di tipo any o optional  Vengono risolte: valtype(v:any) e == void ► Il compilatore propaga il tipo dei parametri dentro le espressioni della funzione ► Il costant folding supporta alcune funzioni stringa e matematiche: len,upper,sqrt e gli swizzle C

XVR in Java ► XVRC2 invece di generare codice S3D puo’ generare codice Java ► Un minimo runtime basato su JOGL permette di creare applicazioni basate su OpenGL (e OpenAL) J Per Java 1.5 e 1.4

XVR in Java - Architettura ► Funzioni e variabili globali generano XVRMain.java ► Una classe S3D diventa una classe Java S3D++ XVRMain.java Class1.java MyClass.java jxvr runtime XVRC2 jxvrapp.jar Applicazione o Applet Java J

XVR in Java - tipi ► Mapping dei tipi  int,bool,string,float,void equivalenti  vector => float []  Classi => classi Java, derivate da XVRBaseClass  any => Object  array => java.util.ArrayList ► Caso speciale: string e vector sono byvalue in XVR e byreference in Java ► Le operazioni tipizzate sono convertite direttamente in Java, quando si usa any occorre chiamare funzioni di supporto  a + b => a + b se I tipi sono noti  a + b => XVRAny.op(a,b,’+’) J

XVR in Java - integrazione ► Importazione automatica delle costanti e funzione OpenGL dichiarate in JOGL ► Importazione dei metodi di XVRScene marcati come funzioni globali (es. glColor, len, SetActiveTexture …) ► Non e’ stato ancora implementato ma e’ possibile importare quasi ogni classe Java in XVR J

XVR in Java – classi XVR ► CVmTexture  NOW: texture semplici, niente flags  NEVER: resize, AddSlice ► CVmBillboard  Semplificato, niente rotazione al momento J

XVR in Java – (S)Vantaggi ► Vantaggi  Multipiattaforma  Performance (per codice con tipi)  Integrazione di software esistente  Strumenti di sviluppo  Debugging in Eclipse (se XVRC2 implementasse JSR-45 SMAP) ► Svantaggi  Mancanza delle librerie di XVR  Mancanza delle librerie di XVR  Pesantezza del runtime in download J

Missing… ► Estensioni aggiuntive possibili  Interfacce  Operatore [] definito dalla classe  Eccezioni (solo versione XVR for Java) ► Compilatore  Manca foreach, while, switch,static  Migliori messaggi di errore ► XVR for Java  Demo stage, qualche limitazione  LJWGL