Very little workshop on HLS:
Mention of Synthesizing hardware using high level language, in particular C-like languages. Analysis of existent old language since 1980 to 2000: Cones, HardwareC, Transmogrifier C, SystemC, C2Verilog, Handel-C. Open problems using C-like languages (taken from Stephen Edwards' "The challenges of synthesizing Hardware from C-like languages").
Hardware design and synthesis using Esterel, reactive and synchronous language, ideal to describe a *behavioural* structure of hardware concurrent real-time controller and to test formal correctness. Easiness in creation of VHDL, Verilog, SystemC, Finite State Automata, dataflow design, and implementation on ASIC or FPGA or RePIC (processor architecture supporting direct esterel execution).
Example of a Preudo-Random Bit Sequence using Esterel versus the implementation using OrCAD software
Lucidi relativi al DVD di Programmazione in CFulvio Corno
Copia integrale dei lucidi presenti nel DVD di Programmazione in C del Politecnico di Torino. Il DVD è visibile on-line all'indirizzo http://corsiadistanza.polito.it/on-line/Prog_in_C/index2.htm
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Daniele Falamesca
Argomenti Trattati nel Corso:
Fondamenti
Costruttori del Linguaggio
Vettori
Record
Funzioni
Ricorsione
Puntatori
Strutture Dinamiche
Programmazione ad Oggetti
Nel Corso saranno presenti circa 60 Esercizi Svolti per aiutarvi a comprendere i concetti delle Lezioni
Very little workshop on HLS:
Mention of Synthesizing hardware using high level language, in particular C-like languages. Analysis of existent old language since 1980 to 2000: Cones, HardwareC, Transmogrifier C, SystemC, C2Verilog, Handel-C. Open problems using C-like languages (taken from Stephen Edwards' "The challenges of synthesizing Hardware from C-like languages").
Hardware design and synthesis using Esterel, reactive and synchronous language, ideal to describe a *behavioural* structure of hardware concurrent real-time controller and to test formal correctness. Easiness in creation of VHDL, Verilog, SystemC, Finite State Automata, dataflow design, and implementation on ASIC or FPGA or RePIC (processor architecture supporting direct esterel execution).
Example of a Preudo-Random Bit Sequence using Esterel versus the implementation using OrCAD software
Lucidi relativi al DVD di Programmazione in CFulvio Corno
Copia integrale dei lucidi presenti nel DVD di Programmazione in C del Politecnico di Torino. Il DVD è visibile on-line all'indirizzo http://corsiadistanza.polito.it/on-line/Prog_in_C/index2.htm
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Daniele Falamesca
Argomenti Trattati nel Corso:
Fondamenti
Costruttori del Linguaggio
Vettori
Record
Funzioni
Ricorsione
Puntatori
Strutture Dinamiche
Programmazione ad Oggetti
Nel Corso saranno presenti circa 60 Esercizi Svolti per aiutarvi a comprendere i concetti delle Lezioni
Questa è un'altra spiegazione più semplice e diretta del concetto di linguaggio di programmazione e della differenza che c'è tra compilatore ed interprete.
Studio dei tre tools di analisi CFlow , Fjalar e Metre. Verranno messi a confronto per i loro requisiti di installazione, semplicità di utilizzo e funzionalità offerte.
The document discusses various topics related to urban planning, design, and research including how engineers shape urban spaces, using tools like GPS and GIS, housing projects in Bolivia, the relationship between producers, clients, and users, standardization aids, teachers summarizing for students, intervisibility and safety, the complexity of planning requiring multiple sectors, spatial visions as action plans not final products, pre-research mapping, integrating top-down and bottom-up approaches, and presenting assignments.
Questa è un'altra spiegazione più semplice e diretta del concetto di linguaggio di programmazione e della differenza che c'è tra compilatore ed interprete.
Studio dei tre tools di analisi CFlow , Fjalar e Metre. Verranno messi a confronto per i loro requisiti di installazione, semplicità di utilizzo e funzionalità offerte.
The document discusses various topics related to urban planning, design, and research including how engineers shape urban spaces, using tools like GPS and GIS, housing projects in Bolivia, the relationship between producers, clients, and users, standardization aids, teachers summarizing for students, intervisibility and safety, the complexity of planning requiring multiple sectors, spatial visions as action plans not final products, pre-research mapping, integrating top-down and bottom-up approaches, and presenting assignments.
This document discusses software services and cloud computing architectures. It begins by providing context on the growing service economy and how businesses are increasingly offering services rather than products. It then defines software-as-a-service (SaaS) and describes how SaaS delivers software applications over the internet, with updates and management occurring remotely. Finally, the document discusses service-oriented architectures and how they support the development and delivery of software services.
Slide del webinar Intel rivolte a tutti coloro che, avendo già una conoscenza base della programmazione NDK per Android, vogliono esplorare gli strumenti necessari per compilare codice nativo espressamente dedicato a dispositivi basati su processori Intel. E' affrontato il porting di codice c/c++ per dispositivi basati su architettura Intel originariamente creato su altre architetture. Sono presentati 3 casi d’uso, mostrando con livelli di difficoltà crescenti il processo completo di creazione di una semplice applicazione Android basata su NDK, confrontando i flag di compilazione necessari per ottimizzare un'applicazione Android basata su NDK affinché sia utilizzabile su dispositivi basati su architettura Intel.
Implementation of a Brute Force attack on the cryptosystem D.E.S. through an infrastructure of distributed and parallel computing.
Implementazione di un attacco a Forza Bruta sul Crittosistema D.E.S. tramite un’infrastruttura di calcolo distribuito e parallelo
In queste slide, presentate durante il Google Developer Group Dev Fest Mediterranean 2014 vi è una introduzione alla "Continuous integration" una pratica di sviluppo software dove i membri di un team integrano il loro lavoro frequentemente.Sono inoltre presentati alcuni tool integrabili in una "build" per misurare la qualità del codice PHP così da rispettare diverse metriche ed avere codice di qualità.
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Codemotion
A key component of the creation of cross-platform applications to be able to share code among several specific projects and platform dependent. Each different platform can only use the class libraries that have been developed for that specific platform. In Xamarin there are two main approaches to the sharing code: Using Shared Asset Projects (Shared Library) and the Portable Class Library (PCL) Projects. In this session we will see how and when to use the shared library, or the PCL library and we will try to answer the question: Shared or PCL?
co-authors: Scola Davide and Maia Nicoletta
Small workshop on Inferno, Limbo and the Dis virtual machine.
Inferno is a new operative system developped for creation and support of network systems and distribuited services.
There are three fundamental programming principles: all resources are files in a hierarchic file system, the network is a unic namespace like a file system hierarchic, it uses Styx that is a standard protocol of comunication for local and remote resources.
Limbo is the programming language for the Inferno OS.
The language is Object Based, you can compile it or interpret it with the Dis virtual machine (like Java virtual machine with a JIT compiler).
Limbo has a native support for: array, string, int, float, tuple (like record), channel (linda-like), and other...
The Limbo's channels are used to comunicate with other processes or with thread.
The Dis virtual machine is an environment for Limbo programs and it has important features: CISC architecture, memory-to-memory, many high level types, just in time compiler, ecc...
In the end of presentation there is a comparison between Dis, Java VM and C# .Net VM.
The document discusses architecture-centric software development processes. It describes traditional waterfall and iterative development models, and notes that iterative models allow for more flexibility to changing requirements. Agile development methods like eXtreme Programming (XP) are discussed, which emphasize iterative development, collaboration, and rapid delivery of working software. Key practices of XP are outlined, including user stories, testing, pair programming, refactoring, and continuous integration. The role of architecture in agile processes is also addressed.
This document discusses software product lines and product line architectures. It defines a software product line as a set of software systems that share a common set of features addressing a particular market segment. Product lines are developed from a common set of core assets in a prescribed way to reduce costs and increase reuse. A product line architecture is a common framework that standardizes components and maximizes reuse potential. It specifies common functionality and identifies variation points across related products. Variability management is important for providing flexibility without compromising commonality.
6 - Architetture Software - Model transformationMajong DevJfu
This document discusses model transformations in Model-Driven Architecture (MDA). It defines computation independent models (CIMs), platform independent models (PIMs), and platform specific models (PSMs). It explains that model transformations are used to map between these different abstraction levels and ensure consistency. It also discusses model mappings, approaches to transformations, and tools like EMF and ATL that support transformations in Eclipse.
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
The document discusses metamodeling and the Model Driven Architecture (MDA). It covers topics such as model driven engineering, metamodeling, metamodeling in UML, and the OMG technologies that support MDA. Metamodeling involves modeling modeling elements and their relationships. Metamodels define the structure of models, while models are instances that conform to metamodels. The MDA uses metamodels and models to develop and transform systems.
This document provides an overview of software architectures by presenting examples of architectures from various software systems. It begins with an introduction to software architecture and what it entails. It then shows numerous diagrams and visualizations of architectures for different types of systems, such as editors, compilers, operating systems, middleware, and web applications. These examples are intended to demonstrate common architectural patterns and styles. The document discusses analyzing and comparing the architectures visually and recognizing patterns within them.
The document discusses architectural styles and decomposition techniques for software systems. It describes layering and tiering as basic decomposition approaches, with layers representing different levels of abstraction and tiers representing peer modules within the same layer. Several common architectural styles are then introduced, including pipes and filters, repository, client/server, model-view-controller, service-oriented, and peer-to-peer. Closed and open layered architectures are contrasted, and examples of layered systems like virtual machines and the OSI model are provided. Finally, the document notes that complete decompositions often involve both layering and partitioning techniques.
The document discusses key concepts in software architecture, including:
1) Software architecture establishes the overall structure and organization of a system, including its components and relationships.
2) Architectural design involves decomposing a system into subsystems or modules to improve modifiability, reusability, and portability.
3) Key principles for architectural design include simplicity, modularity, low coupling, separation of concerns, abstraction, and postponing decisions.
1 - Architetture Software - Software as a productMajong DevJfu
This document discusses software as a product and industry. It covers how software is a key component in modern technologies and industries. The software industry has grown significantly in recent decades. The document discusses different types of software such as embedded software, middleware, and software as a service. It also covers topics like software architecture, engineering, components, ecosystems, and the challenges in developing software. Overall, the document provides an overview of software as an industrial product and the software development industry.
10 - Architetture Software - More architectural stylesMajong DevJfu
The Microkernel pattern partitions an operating system into isolated, minimal components that communicate through a small, fixed message-passing interface, allowing components to be developed and upgraded independently while maintaining overall system stability and security.
The document discusses architectural UML and provides information on:
1) The elements of a software architecture including views, models, and diagrams.
2) How UML can be used to represent different architectural views including design, process, development, and physical views.
3) An example of using UML models and diagrams to represent different views of a chess game architecture.
UML allows for extending diagrams and modeling elements through three main techniques:
1. Stereotypes allow applying tags to existing modeling elements like classes, associations, etc. to add domain-specific meaning.
2. Profiles extend UML with new modeling elements tailored for specific domains or platforms.
3. Extension mechanisms allow precisely defining new constructs that integrate with the UML metamodel. Together these techniques make UML extensible for multiple domains.
The document discusses metamodeling and the Model Driven Architecture (MDA). It provides an overview of model driven engineering and metamodeling. Specifically, it discusses how metamodels define the structure of models through concepts like classes and relationships. The Model Driven Architecture uses metamodels and modeling to develop software systems from models.
Here are the key differences between objects and classes in UML:
- Classes define the general characteristics (attributes and operations) that objects of that class will have. Objects are specific instances of a class.
- Classes are static definitions, while objects are dynamic instances of classes that exist at run time.
- In class diagrams, classes are represented as boxes containing the attributes and operations. Objects are represented as boxes with the class name followed by a colon and the object name (e.g. Person:John).
- Classes define the common properties for a set of objects, while each object is a unique instance of a class with its own identity and particular values for attributes.
- Classes are abstractions,
The document discusses architectural styles and decomposition techniques. It describes layers as hierarchical sets of subsystems that provide related services by utilizing underlying layers. Tiers partition a system into peer subsystems responsible for classes of services. Common architectural styles include pipes and filters, repository, client/server, model-view-controller, service-oriented, and peer-to-peer. Layers and tiers are often combined for complete decomposition, with subsystems divided into tiers and each tier organized into layers. The pipe and filter style focuses on dynamic interaction by processing data streams through filters connected by pipes.
- Reference architectures that provide templates for common system types
- Design patterns that capture successful solutions to recurring problems
- Architectural patterns that describe best practices for system organization
- Legacy applications that can be analyzed for reusable architectural elements
This document discusses software as a product and the software industry. It covers topics such as why software is important, emerging technologies according to Gartner's hype cycle from 2005-2010, software being an industrial product, the size of the worldwide software industry, different types of software including embedded software and software as a service. It also discusses software components, software architecture and engineering issues, producing software is difficult due to complexity, low productivity in the industry, the software development process, different process models, lifecycle differences around the world, development activities, process models, and software standards.
This short document contains 5 headings but provides no other details or context. It lists the headings "My Heading Here First Second Third Fourth Fifth" but does not elaborate on or explain these headings.
This document provides an overview of various types of architectural standards including conceptual standards like IEEE 1471 and DoDAF that define viewpoints and views, notational standards like UML and SysML, and process standards like TOGAF and RUP. It discusses the benefits of standards in promoting interoperability and network effects while also noting drawbacks like limiting flexibility. The document advises deciding when to adopt a standard based on whether in the early or late phase of a project.
The document discusses architectural adaptation and software evolution. It characterizes different types of changes that can occur, including corrective changes, new features, and changes to the operating environment. It also describes different levels at which changes can be made, from the component interior to the overall system configuration. Effective adaptation requires techniques like explicit architectural models, adaptable connectors, and message-based communication. The roles of change agents, strategic and tactical planning, and quiescence are also outlined.
1. Parte 1
Strumenti per la
generazione di eseguibili
Linguaggi dinamici – A.A. 2009/2010
1
2. Compilatori ed interpreti
„ Esistono diversi strumenti per la generazione
di codice eseguibile
„ Tali strumenti sono classificabili in due
categorie distinte:
„ Compilatori
„ Interpreti
„ I due strumenti non si escludono
necessariamente!
„ Alcuni linguaggi sono compilati
g gg p
„ Alcuni linguaggi sono interpretati
„ Alcuni linguaggi sono compilati ed interpretati
Linguaggi dinamici – A.A. 2009/2010
2
3. Compilatore
„ Un compilatore è un software che traduce
testo scritto in un linguaggio di
programmazione (codice sorgente) in un altro
linguaggio di programmazione (codice
guagg o d p og a a o e (cod ce
oggetto), solitamente a più basso livello
„ Classico esempio: C Æ codice macchina
„ Le operazioni di traduzione sono svolte in una
sequenza di task ben precisa
Linguaggi dinamici – A.A. 2009/2010
3
4. Compilatore
„ Operazioni svolte da un compilatore
„ Preprocessing: il testo del codice sorgente
viene trasformato prima della compilazione
„ Analisi l
A li i lessicale: il testo del codice sorgente
i l t t d l di t
viene diviso in porzioni con senso sintattico
(token); viene generata una “rappresentazione
rappresentazione
intermedia” del codice
„ Generazione del codice: la rappresentazione
intermedia viene tradotta nel formato finale
„ Ottimizzazione del codice: il codice risultante
viene ottimizzato secondo un qualche criterio
Linguaggi dinamici – A.A. 2009/2010
4
5. Compilatore: analisi sintattica
„ Obiettivo: produrre una tabella di token con il
loro significato
„ Token: è un blocco di testo categorizzato
(ossia,
(ossia avente un significato ben preciso nella
sintassi del linguaggio)
„ Esempio: la seguente operazione (sum=3+2),
E i l t i ( 3 2)
produce la seguente tabella
Token Categoria
sum IDENTIFIER
= ASSIGN_OP
ASSIGN OP
3 NUMBER
+ ADD_OPERATOR
_
2 NUMBER
Linguaggi dinamici – A.A. 2009/2010
5
6. Compilatore: analisi sintattica
„ L'analisi sintattica avviene tramite i processi di
scanning e di tokenization
„ Scanner: macchina a stati finiti che riconosce
possibili token
„ Es.: un intero è un (possibile) carattere +/-
seguito da una sequenza di digit
it d di it
„ Tokenizer: classificazione dei singoli blocchi
individuati tramite lo scanner
Linguaggi dinamici – A.A. 2009/2010
6
7. Compilatore: generazione del codice
„ La generazione del codice si preoccupa di
trasformare il formato intermedio in quello
finale, che può essere eseguito direttamente
da ca co ato e
dal calcolatore
„ L'input al modulo di generazione di codice è la
rappresentazione intermedia:
„ Parse tree
„ Abstract S t T
Ab t t Syntax Tree
„ Tale rappresentazione viene convertita in una
sequenza di istruzioni (che può ancora essere
intermedia)
Linguaggi dinamici – A.A. 2009/2010
7
8. Compilatore: generazione del codice
„ La generazione del codice avviene attraverso I
processi di instruction selection, instruction
selection
scheduling e register allocation
„ Instruction selection: vengono scelte le
istruzioni da utilizzare per la conversione
„ Instruction scheduling: si sceglie la sequenza
I t ti h d li i li l
in cui tali istruzioni vengono piazzate
(ottimizzazione per l CPU in pipeline)
( tti i i le i i li )
„ Register allocation: si decide come allocare le
variabili ai registri della CPU
Linguaggi dinamici – A.A. 2009/2010
8
9. Compilazione Just In Time
„ La generazione del codice può avvenire in due
fasi distinte:
„ a tempo di compilazione (compilation time)
„ attempo di esecuzione (run time)
i ( ti )
„ In quest'ultimo caso, si parla di Compilazione
Just In Time (JIT)
„ Viene anche chiamata dynamic translation
„ Utilizzata da JAVA
Linguaggi dinamici – A.A. 2009/2010
9
10. Interprete
„ Un interprete è un software che prende
porzioni ben definite (statement) di un testo
scritto in un linguaggio di programmazione
(cod ce sorgente), e traduce u a t o
(codice so ge te), le t aduce in un altro
linguaggio di programmazione (codice
oggetto) e le esegue
gg ) g
„ Non viene prodotto un programma eseguibile;
il programma scritto rimane nel codice
sorgente del linguaggio interpretato
Linguaggi dinamici – A.A. 2009/2010
10
11. Linguaggi interpretati vs. compilati
„ Vantaggi di un linguaggio interpretato:
„ È molto più semplice da correggere, dal
correggere
momento che l'esecuzione avviene uno
statement alla volta
„ Maggiore portabilità
„ Svantaggi di un linguaggio interpretato:
S t i li i i t t t
„ È molto più lento nell'esecuzione
(traduzione a run time di uno statement alla
volta)
„ Richiede la presenza del software interprete sul
calcolatore
Linguaggi dinamici – A.A. 2009/2010
11
12. Parte 1
Architettura di un
linguaggio dinamico
Linguaggi dinamici – A.A. 2009/2010
12
13. Modelli di riferimento
„ La totalità dei linguaggi dinamici moderni mira
alla portabilità; a tal scopo adotta un formato
scopo,
di rappresentazione del codice indipendente
da a a c tettu a
dalla architettura
„ A seconda del tipo di formato, si distinguono
due diversi modelli di esecuzione:
„ Modello “Bytecode”
„ Modello “Ab t
M d ll “Abstract S t T
t Syntax Tree”
”
Linguaggi dinamici – A.A. 2009/2010
13
14. Modello “Bytecode”
„ Il modello bytecode prevede l'utilizzo di
distinti moduli software: un compilatore un
compilatore,
interprete ed una macchina virtuale
„ Compilatore:
„ Traduce il codice sorgente in una
rappresentazione a più basso livello portabile
livello,
ed ottimizzabile (bytecode)
„ Parecchi linguaggi hanno la possibilità di
operare una compilazione Just-In-Time
Linguaggi dinamici – A.A. 2009/2010
14
15. Modello “Bytecode”
„ Il modello bytecode prevede l'utilizzo di
distinti moduli software: un compilatore un
compilatore,
interprete ed una macchina virtuale
„ Interprete:
„ Prende singole sequenze di bytecode e le
traduce in operazioni da eseguire sul
calcolatore
„ Queste sequenze possono essere interpretate o
compilate in codice macchina (JIT)
Linguaggi dinamici – A.A. 2009/2010
15
16. Modello “Bytecode”
„ Il modello bytecode prevede l'utilizzo di
distinti moduli software: un compilatore un
compilatore,
interprete ed una macchina virtuale
„ Macchina virtuale:
„ Fornisce una astrazione di un sistema operativo
„ Traduce le richieste di sistema (scritte in un
T d l i hi i ( i i
linguaggio portabile) nelle richieste concrete al
vero sistema operativo
„ Le funzionalità di base della macchina virtuale
sono contenute nella libreria di funzioni detta
t t ll lib i f i i d tt
runtime library
„ Runtime library + MV = Runtime Environment
R ti lib R ti E i t
Linguaggi dinamici – A.A. 2009/2010
16
17. Modello “Abstract Syntax Tree”
„ Il modello abstract syntax tree prevede
l utilizzo
l'utilizzo di un compilatore e di un interprete
„ Compilatore:
„ Traduce il codice sorgente in una
T d di t i
rappresentazione ad albero sintattico (Abstract
Syntax Tree)
„ Durante la fase di compilazione può essere
inserita una fase di compilazione ed
interpretazione di codice (inizializzazione)
„ Bl
Blocchi BEGIN/END
hi
Linguaggi dinamici – A.A. 2009/2010
17
18. Modello “Abstract Syntax Tree”
„ Il modello abstract syntax tree prevede
l utilizzo
l'utilizzo di un compilatore e di un interprete
„ Interprete:
„ Esegue uno statement di codice (tramite
E t t t di (t it
algoritmi di visita sull'albero sintattico)
„ Può
P ò essere inserita una fase di compilazione
i i f il i
durante l'interpretazione
„ Comando eval()
Linguaggi dinamici – A.A. 2009/2010
18