A Component Language for Pointer-Free Concurrent Programming and Its Application to Simulation
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Liste Von Programmiersprachen
www.sf-ag.com Liste von Programmiersprachen A (1) A (21) AMOS BASIC (2) A# (22) AMPL (3) A+ (23) Angel Script (4) ABAP (24) ANSYS Parametric Design Language (5) Action (25) APL (6) Action Script (26) App Inventor (7) Action Oberon (27) Applied Type System (8) ACUCOBOL (28) Apple Script (9) Ada (29) Arden-Syntax (10) ADbasic (30) ARLA (11) Adenine (31) ASIC (12) Agilent VEE (32) Atlas Transformatikon Language (13) AIMMS (33) Autocoder (14) Aldor (34) Auto Hotkey (15) Alef (35) Autolt (16) Aleph (36) AutoLISP (17) ALGOL (ALGOL 60, ALGOL W, ALGOL 68) (37) Automatically Programmed Tools (APT) (18) Alice (38) Avenue (19) AML (39) awk (awk, gawk, mawk, nawk) (20) Amiga BASIC B (1) B (9) Bean Shell (2) B-0 (10) Befunge (3) BANCStar (11) Beta (Programmiersprache) (4) BASIC, siehe auch Liste der BASIC-Dialekte (12) BLISS (Programmiersprache) (5) Basic Calculator (13) Blitz Basic (6) Batch (14) Boo (7) Bash (15) Brainfuck, Branfuck2D (8) Basic Combined Programming Language (BCPL) Stichworte: Hochsprachenliste Letzte Änderung: 27.07.2016 / TS C:\Users\Goose\Downloads\Softwareentwicklung\Hochsprachenliste.doc Seite 1 von 7 www.sf-ag.com C (1) C (20) Cluster (2) C++ (21) Co-array Fortran (3) C-- (22) COBOL (4) C# (23) Cobra (5) C/AL (24) Coffee Script (6) Caml, siehe Objective CAML (25) COMAL (7) Ceylon (26) Cω (8) C for graphics (27) COMIT (9) Chef (28) Common Lisp (10) CHILL (29) Component Pascal (11) Chuck (Programmiersprache) (30) Comskee (12) CL (31) CONZEPT 16 (13) Clarion (32) CPL (14) Clean (33) CURL (15) Clipper (34) Curry (16) CLIPS (35) -
The Zonnon Project: a .NET Language and Compiler Experiment
The Zonnon Project: A .NET Language and Compiler Experiment Jürg Gutknecht Vladimir Romanov Eugene Zueff Swiss Fed Inst of Technology Moscow State University Swiss Fed Inst of Technology (ETH) Computer Science Department (ETH) Zürich, Switzerland Moscow, Russia Zürich, Switzerland [email protected] [email protected] [email protected] ABSTRACT Zonnon is a new programming language that combines the style and the virtues of the Pascal family with a number of novel programming concepts and constructs. It covers a wide range of programming models from algorithms and data structures to interoperating active objects in a distributed system. In contrast to popular object-oriented languages, Zonnon propagates a symmetric compositional inheritance model. In this paper, we first give a brief overview of the language and then focus on the implementation of the compiler and builder on top of .NET, with a particular emphasis on the use of the MS Common Compiler Infrastructure (CCI). The Zonnon compiler is an interesting showcase for the .NET interoperability platform because it implements a non-trivial but still “natural” mapping from the language’s intrinsic object model to the underlying CLR. Keywords Oberon, Zonnon, Compiler, Common Compiler Infrastructure (CCI), Integration. 1. INTRODUCTION: THE BRIEF CCI and b) to experiment with evolutionary language HISTORY OF THE PROJECT concepts. The notion of active object was taken from the Active Oberon language [Gut01]. In addition, two This is a technical paper presenting and describing new concurrency mechanisms have been added: an the current state of the Zonnon project. Zonnon is an accompanying communication mechanism based on evolution of the Pascal, Modula, Oberon language syntax-oriented protocols , borrowed from the Active line [Wir88]. -
Kotlin Coroutines Deep Dive Into Bytecode #Whoami
Kotlin Coroutines Deep Dive into Bytecode #whoami ● Kotlin compiler engineer @ JetBrains ● Mostly working on JVM back-end ● Responsible for (almost) all bugs in coroutines code Agenda I will talk about ● State machines ● Continuations ● Suspend and resume I won’t talk about ● Structured concurrency and cancellation ● async vs launch vs withContext ● and other library related stuff Agenda I will talk about Beware, there will be code. A lot of code. ● State machines ● Continuations ● Suspend and resume I won’t talk about ● Structured concurrency and cancellation ● async vs launch vs withContext ● and other library related stuff Why coroutines ● No dependency on a particular implementation of Futures or other such rich library; ● Cover equally the "async/await" use case and "generator blocks"; ● Make it possible to utilize Kotlin coroutines as wrappers for different existing asynchronous APIs (such as Java NIO, different implementations of Futures, etc). via coroutines KEEP Getting Lazy With Kotlin Pythagorean Triples fun printPythagoreanTriples() { for (i in 1 until 100) { for (j in 1 until i) { for (k in i until 100) { if (i * i + j * j < k * k) { break } if (i * i + j * j == k * k) { println("$i^2 + $j^2 == $k^2") } } } } } Pythagorean Triples fun printPythagoreanTriples() { for (i in 1 until 100) { for (j in 1 until i) { for (k in i until 100) { if (i * i + j * j < k * k) { break } if (i * i + j * j == k * k) { println("$i^2 + $j^2 == $k^2") } } } } } Pythagorean Triples fun printPythagoreanTriples() { for (i in 1 until 100) { for (j -
Introduction to .NET, C#, and Visual Studio
Introduction to .NET, C#, and Visual Studio C# Programming January 8 Part I Administrivia Administrivia • When: Wednesdays 10–11am (and a few Mondays as needed) • Where: Moore 100B • This lab has Windows machines, but feel free to bring laptops • Office Hours: to be announced • Course webpage: http://www.seas.upenn.edu/~cse39905 Course Structure • No quizzes, no exams • Roughly 6 projects • Roughly 2 weeks per project • The final project will be slightly longer and more open-ended • Projects will be due at midnight on the night of the deadline • All assignments should be submitted through the Blackboard Digital Dropbox • Late policy: 15% off each day, up to 3 days late Final Project • Your chance to choose your own project • Brainstorming and planning will begin after spring break • Top projects will be entered into the Xtreme.NET Challenge – hopefully there will be 20 top projects :-) • First prize: Xbox 360! • Judges will include someone from Microsoft recruiting, maybe someone from the C# team • More details to come at http://www.seas.upenn.edu/~cse39905/xtreme Part II What is .NET? The Microsoft .NET Framework • .NET is a development platform that launched in 2000 • Goals include language independence, language integration, web services • Technologies to promote rapid development of secure, connected applications • .NET components include: • Languages (C#, VB, Visual C++, Visual J#, ...) • Common Language Runtime (CLR) • Framework Class Library (FCL) Common Language Runtime • A single runtime environment to execute programs written in any .NET language • Includes a virtual machine • Activates objects, manages memory, performs security checks, collects garbage • To run on the CLR, a language must adhere to a Common Language Specification (CLS) • A language must also build upon base types specified in the Common Type System (CTS) Languages • Language compilers translate source into Microsoft Intermediate Language (MSIL). -
Contention in Structured Concurrency: Provably Efficient Dynamic Non-Zero Indicators for Nested Parallelism
Contention in Structured Concurrency: Provably Efficient Dynamic Non-Zero Indicators for Nested Parallelism Umut A. Acar1;2 Naama Ben-David 1 Mike Rainey 2 January 16, 2017 CMU-CS-16-133 School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 A short version of this work appears in the proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming 2017 (PPoPP '17). 1Carnegie Mellon University, Pittsburgh, PA 2Inria-Paris Keywords: concurrent data structures, non-blocking data structures, contention, nested parallelism, dependency counters Abstract Over the past two decades, many concurrent data structures have been designed and im- plemented. Nearly all such work analyzes concurrent data structures empirically, omit- ting asymptotic bounds on their efficiency, partly because of the complexity of the analysis needed, and partly because of the difficulty of obtaining relevant asymptotic bounds: when the analysis takes into account important practical factors, such as contention, it is difficult or even impossible to prove desirable bounds. In this paper, we show that considering structured concurrency or relaxed concurrency mod- els can enable establishing strong bounds, also for contention. To this end, we first present a dynamic relaxed counter data structure that indicates the non-zero status of the counter. Our data structure extends a recently proposed data structure, called SNZI, allowing our structure to grow dynamically in response to the increasing degree of concurrency in the system. Using the dynamic SNZI data structure, we then present a concurrent data structure for series-parallel directed acyclic graphs (sp-dags), a key data structure widely used in the implementation of modern parallel programming languages. -
Oolong: a Concurrent Object Calculus for Extensibility and Reuse
OOlong: A Concurrent Object Calculus for Extensibility and Reuse Elias Castegren Tobias Wrigstad KTH Royal Institute of Technology Uppsala University Kista, Sweden Uppsala, Sweden [email protected] [email protected] ABSTRACT This avoids tying the language to a specific model of class We present OOlong, an object calculus with interface in- inheritance (e.g., Java's), while still maintaining an object- heritance, structured concurrency and locks. The goal of oriented style of programming. Concurrency is modeled in a the calculus is extensibility and reuse. The semantics are finish/async style, and synchronisation is handled via locks. therefore available in a version for LATEX typesetting (written The semantics are provided both on paper and in a mecha- in Ott), a mechanised version for doing rigorous proofs in nised version written in Coq. The paper version of OOlong Coq, and a prototype interpreter (written in OCaml) for is defined in Ott [25], and all typing rules in this paper are typechecking an running OOlong programs. generated from this definition. To make it easy for other researchers to build on OOlong, we are making the sources of both versions of the semantics publicly available. We also CCS Concepts provide a prototype interpreter written in OCaml. •Theory of computation ! Operational semantics; Concur- rency; Interactive proof systems; •Software and its engineer- With the goal of extensibility and re-usability, we make the ing ! Object oriented languages; Concurrent programming following contributions: structures; Interpreters; • We define the formal semantics of OOlong, motivate the choice of features, and prove type soundness (Sections Keywords 2{5). Object Calculi; Semantics; Mechanisation; Concurrency • We provide a mechanised version of the full semantics and soundness proof, written in Coq (Section 6). -
Towards Mathix / Math-X, a Computer Algebra Language That Can Create Its Own Operating System, and That Is Amazingly User- Friendly and Secure
Towards Mathix / Math-x, a computer algebra language that can create its own operating system, and that is amazingly user- friendly and secure Thomas Colignatus, August 19 2009, some clarifications August 23 2009 http://www.dataweb.nl/~cool Summary Given the current supply and demand for computer languages and systems, there is a clear window of opportunity for the software community to collaborate and create Mathix and Math-x. The base would be Oberon, which itself derives from Algol / Pascal / Modula and which is better designed than Unix / Linux, and which now has the system Bluebottle / A2 at http://bluebottle.ethz.ch. Mathix is defined as Oberon/A2 extended with a suitable computer algebra language (say, CAL). Math-x is defined as Minix ported to Oberon/A2 (via Cyclone) and extended with that CAL. Mathix and Math-x thus can create their own OS. Mathix and Math-x are flexible in that they contain both a strongly typed dialect relevant for OS creation (current Oberon) and a more flexible dialect relevant for the human user (CAL, to be created). The dialects have much syntax in common but the CAL allows more flexibility. The CAL is internally translated into Oberon/A2 which allows compilation as well. 2 2009-08-23-Math-x.nb Note This paper is best understood in the context of my book Elegance with Substance on mathematics education - see http://www.dataweb.nl/~cool/Papers/Math/Index.html. My book advises that each national parliament investigates the stagnation in doing mathematics on the computer in school. This paper suggests how the software community might anticipate on common sense conclusions and start working on improvement. -
Infinite Loop Syntax Support for a Pascal-Family Language
Infinite loop syntax support for a Pascal-family language http://coderesearchlabs.com/articles/ILP.pdf Code Research Laboratories www.coderesearchlabs.com Javier Santo Domingo [email protected] Buenos Aires, Argentina started - April 9th, 2010 published - July 9th, 2010 last revision - May 4th, 2011 copyright is held by the author all trademarks and logos are the property of their respective owners 1. Introduction Infinite loops are a basic logic flow need that is supported by conventional processors and virtual machines (see table A), but there is always a valid solution to avoid them in High Level Languages. In any case, the discussion if it is or not a good practice will never end. There is no code (operative system, service daemon, command line, real-time system, message loop, etc) that can not avoid an infinite loop, that's a fact: you can always write loops with an exit condition. Besides that, and nowadays that code readability is very important (and that goto has been totally removed from good practices), there are many developers that prefer to implement an infinite loop and break it's execution in the middle [1], or that coding a program "designed to never stop" come to solutions with an infinite loop. x86's assembly ARM's assembly .NET's ilasm Java's bytecode Llvm's assembly label: label label: label: Loop: ; something ; something // something ; something ; something jmp label B label br label goto label br label %Loop Infinite Loops (unconditional jumps/branches) in Some Low/Mid Level Of Abstraction Languages table A 2. Different Kind of Loops Usually, how you order the logic for the solution you are writing determines where you will be testing the exit condition for a loop: at the top or at the bottom [2]. -
Systematic Use of Models of Concurrency in Executable Domain-Specific Modeling Languages Florent Latombe
Systematic use of Models of Concurrency in eXecutable Domain-Specific Modeling Languages Florent Latombe To cite this version: Florent Latombe. Systematic use of Models of Concurrency in eXecutable Domain-Specific Modeling Languages. Software Engineering [cs.SE]. Université de Toulouse - Institut National Polytechnique de Toulouse (INPT), 2016. English. tel-01369451 HAL Id: tel-01369451 https://hal.inria.fr/tel-01369451 Submitted on 21 Sep 2016 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. THÈSETHÈSE En vue de l’obtention du DOCTORAT DE L’UNIVERSITÉ DE TOULOUSE Délivré par : l’Institut National Polytechnique de Toulouse (INP Toulouse) Présentée et soutenue le 13/07/2016 par : Florent LATOMBE Systematic use of Models of Concurrency in eXecutable Domain-Specific Modeling Languages JURY Richard PAIGE Professor Rapporteur Antonio VALLECILLO Professor Rapporteur Frédéric BOULANGER Professeur des Universités Examinateur Julien DE ANTONI Maître de Conférences Examinateur Benoît COMBEMALE Maître de Conférences Invité Xavier CRÉGUT Maître de Conférences Encadrant Marc PANTEL Maître de Conférences Encadrant École doctorale et spécialité : MITT : Domaine STIC : Sureté de logiciel et calcul de haute performance Unité de Recherche : IRIT : Institut de Recherche en Informatique de Toulouse (UMR 5505) Directeur(s) de Thèse : Marc PANTEL, Xavier CRÉGUT et Yamine AÏT-AMEUR Rapporteurs : Richard PAIGE et Antonio VALLECILLO All that is gold does not glier, Not all those flho flander are lost; e old that is strong does not flither, Deep roots are not reached by the frost. -
The State of Fibers for the JVM Why All Your JVM Coroutines Are Cool, but Broken, and Project Loom Is Gonna Fix That! Lightweigh
The State of Fibers for the JVM Lightweight Threads Virtual and ... Why all your JVM coroutines are cool, but broken, (Kilim threads, Quasar fibers, Kotlin coroutines, etc.) and Project Loom is gonna fix that! Volkan Yazıcı https://vlkan.com 2019-12-10 @yazicivo 2018-08-25 2018-03-08 Agenda 1) Motivation 2) History 3) Continuations 4) Processes, threads, and fibers 5) Project Loom 6) Structured concurrency 7) Scoped variables Motivation: I/O Quoting from Gor Nishanov's 2016 "LLVM Coroutines: Bringing resumable functions to LLVM" talk. Without I/O, you don’t exist! ● println() ● file access ● network socket access ● database access ● etc. In 1958, ... Quoting from Gor Nishanov's 2016 "LLVM Coroutines: Bringing resumable functions to LLVM" talk. The legend of Melvin Conway Quoting from Gor Nishanov's 2016 "LLVM Coroutines: Bringing resumable functions to LLVM" talk. Subroutine ⊂ Coroutine Coroutine Subroutine A Subroutine B Subroutine A Coroutine C “Coroutines” – Melvin Conway, 1958 … … B start C start call B “Generalization of subroutine” – Donald Knuth, 1968 call C end suspend subroutines coroutines B start resume C allocate frame, allocate frame, suspend call call B pass params pass params free frame, free frame, return resume C return result return result end end suspend No Yes … resume No Yes … Quoting from Gor Nishanov's 2016 "LLVM Coroutines: Bringing resumable functions to LLVM" talk. Where did all the coroutines go? Algol-60 … introduced code blocks and the begin and end pairs for delimiting them. ALGOL 60 was the first language implementing nested function definitions with lexical scope. – Wikipedia “ALGOL 60” Quoting from Gor Nishanov's 2016 "LLVM Coroutines: Bringing resumable functions to LLVM" talk. -
Доповідь Використання Платформи Microsoft .NET Та Мови C# Для
Ⱦɨɩɨɜɿɞɶ ȼɢɤɨɪɢɫɬɚɧɧɹɩɥɚɬɮɨɪɦɢ Microsoft .NET ɬɚɦɨɜɢ C# ɞɥɹ ɧɚɜɱɚɧɧɹɩɪɨɝɪɚɦɭɜɚɧɧɹɜɫɟɪɟɞɧɿɯɡɚɝɚɥɶɧɨɨɫɜɿɬɧɿɯ ɧɚɜɱɚɥɶɧɢɯɡɚɤɥɚɞɚɯ ɒɟɜɱɭɤɉɟɬɪɨȽɟɨɪɝɿɣɨɜɢɱ, ɚɫɩɿɪɚɧɬȱɧɫɬɢɬɭɬɭɿɧɮɨɪɦɚɰɿɣɧɢɯɬɟɯɧɨɥɨɝɿɣɬɚ ɡɚɫɨɛɿɜɧɚɜɱɚɧɧɹȺɤɚɞɟɦɿʀɩɟɞɚɝɨɝɿɱɧɢɯɧɚɭɤɍɤɪɚʀɧɢ Ƚɚɥɭɡɶ ɪɨɡɪɨɛɤɢ ɩɪɨɝɪɚɦɧɨɝɨ ɡɚɛɟɡɩɟɱɟɧɧɹ ɽ ɜɢɡɧɚɱɚɥɶɧɨɸ ɞɥɹ ɪɨɡɜɢɬɤɭ ɿɧɮɨɪɦɚɰɿɣɧɨɝɨ ɫɭɫɩɿɥɶɫɬɜɚ. ɉɪɨɝɪɚɦɭɜɚɧɧɹ ɰɟ ɧɟ ɥɢɲɟɜɢɪɨɛɧɢɰɬɜɨɬɚɧɚɭɤɚɚɣ, ɜɹɤɿɣɫɶɦɿɪɿ, ɫɤɥɚɞɨɜɚɤɭɥɶɬɭɪɢ, ɨɫɜɿɬɢ ɿ ɧɚɜɿɬɶ ɪɿɡɧɨɜɢɞ ɦɢɫɬɟɰɬɜɚ. ȼɚɠɥɢɜɚ ɪɨɥɶ ɜ ɩɿɞɝɨɬɨɜɰɿ ɦɚɣɛɭɬɧɿɯ ɩɪɨɝɪɚɦɿɫɬɿɜ ɧɚɥɟɠɢɬɶ ɫɟɪɟɞɧɿɦ ɡɚɝɚɥɶɧɨɨɫɜɿɬɧɿɦ ɡɚɤɥɚɞɚɦ. ȼɫɭɩɟɪɟɱ ɬɨɦɭ, ɳɨ ɩɪɨɝɪɚɦɭɜɚɧɧɹ ɰɟ ɨɞɢɧ ɡ ɧɚɣɛɿɥɶɲ ɡɚɬɪɟɛɭɜɚɧɢɯ ɜɢɞɿɜ ɥɸɞɫɶɤɨʀ ɞɿɹɥɶɧɨɫɬɿ ɬɚ ɨɞɧɚ ɡ ɧɚɣɰɿɤɚɜɿɲɢɯ ɮɨɪɦ ɬɜɨɪɱɨɫɬɿ ɜ ɨɫɬɚɧɧɿ ɪɨɤɢ ɧɟ ɫɩɨɫɬɟɪɿɝɚɽɬɶɫɹ ɩɿɞɜɢɳɟɧɧɹ ɡɚɰɿɤɚɜɥɟɧɨɫɬɿɞɿɬɟɣɩɪɨɝɪɚɦɭɜɚɧɧɹɦ. ȼɿɪɨɝɿɞɧɨ, ɳɨɨɪɝɚɧɿɡɚɰɿɹɬɚ ɦɟɬɨɞɢɱɧɟ ɡɚɛɟɡɩɟɱɟɧɧɹ ɜɢɜɱɟɧɧɹ ɩɪɨɝɪɚɦɭɜɚɧɧɹ ɫɭɬɬɽɜɨ ɜɿɞɫɬɚɽ ɜɿɞɜɢɦɨɝɱɚɫɭ. Ɋɨɡɜɢɬɨɤ ɨɛɱɢɫɥɸɜɚɥɶɧɨʀ ɬɟɯɧɿɤɢ ɰɟ ɬɚɤɨɠ ɪɨɡɜɢɬɨɤ ɩɪɨɝɪɚɦɧɨɝɨɡɚɛɟɡɩɟɱɟɧɧɹɚɨɬɠɟɿɩɪɨɝɪɚɦɭɜɚɧɧɹ. ɉɨɪɹɞɡ ɫɬɚɧɨɜɥɟɧɧɹɦ ɦɟɬɨɞɿɜ ɩɪɨɝɪɚɦɭɜɚɧɧɹ: ɚɥɝɨɪɢɬɦɿɱɧɟ, ɫɬɪɭɤɬɭɪɧɟ, ɨɛ¶ɽɤɬɧɨɨɪɿɽɧɬɨɜɚɧɟ ɪɨɡɜɢɜɚɸɬɶɫɹ ɿ ɬɟɯɧɨɥɨɝɿʀ ɬɪɚɧɫɥɹɰɿʀ ɤɨɦɩ¶ɸɬɟɪɧɢɯɩɪɨɝɪɚɦ. ɉɟɪɲɿɨɛɱɢɫɥɸɜɚɥɶɧɿɦɚɲɢɧɢɤɟɪɭɜɚɥɢɫɹ ɩɪɨɝɪɚɦɚɦɢ ɪɨɡɪɨɛɥɟɧɢɦɢ ɬɚ ɜɜɟɞɟɧɢɦɢ ɥɸɞɢɧɨɸ ɜ ɦɚɲɢɧɧɢɯ ɤɨɞɚɯ. ɇɚɛɿɪɬɚɤɢɯɤɨɞɿɜɬɚɦɨɜɚɛɟɡɩɨɫɟɪɟɞɧɶɨʀɪɨɛɨɬɢɡɧɢɦɢ - ɚɫɟɦɛɥɟɪ, ɫɩɟɰɢɮɿɱɧɿ ɞɥɹ ɤɨɠɧɨʀ ɧɨɜɨʀ ɚɩɚɪɚɬɧɨʀ ɦɨɞɟɥɿ ɤɨɦɩ¶ɸɬɟɪɿɜ. Ɍɨɛɬɨɩɪɨɝɪɚɦ, ɧɚɜɿɬɶɞɥɹɜɢɪɿɲɟɧɧɹɨɞɧɿɽʀɿɬɿɽʀɠ ɡɚɞɚɱɿ ɞɨɜɨɞɢɥɨɫɶ ɩɢɫɚɬɢ ɫɬɿɥɶɤɢ, ɫɤɿɥɶɤɢ ɛɭɥɨ ɪɿɡɧɢɯ ɦɨɞɟɥɟɣ ɤɨɦɩ¶ɸɬɟɪɿɜ. ɉɨɹɜɚ ɦɨɜ ɩɪɨɝɪɚɦɭɜɚɧɧɹ ɬɚ ʀɯ ɤɨɦɩɿɥɹɬɨɪɿɜ ɞɨɡɜɨɥɢɥɚ, ɲɥɹɯɨɦ ɭɞɨɫɤɨɧɚɥɟɧɧɹ ɤɨɦɩɿɥɹɬɨɪɚ, ɚɞɚɩɬɭɜɚɬɢ ɜɢɤɨɪɢɫɬɚɧɧɹ ɪɨɡɪɨɛɥɟɧɢɯ ɩɪɨɝɪɚɦ -
Project Zonnon: the Language, the Compiler, the Environment
Project Zonnon: The Language, The Compiler, The Environment Eugene Zouev Bergen Language Design Laboratory Bergen University May 19, 2010 Outline Project History Zonnon Language Zonnon Compiler CCI & Zonnon Compilation Model Integration into Visual Studio Zonnon Builder Link, Conclusion, Acknowledgements 2 Project History 1999, Oberon.NET Projects 7 & 7+ launched by Microsoft Research 2001, Active Oberon ETH Zürich; the notion of active object 2004, Active C# ETH Zürich; communication mechanism based on syntax-oriented protocols 2004-2006, Zonnon 3 Zonnon Highlights A member of the family of Pascal,Modula-2, Oberon: compact, easy to learn and use Supports modularity (with importing units and exporting unit members) Supports object-oriented approach based on definition/implementation paradigm and refinement of definitions Supports concurrency based on the notion of active objects and syntax-based communication protocols 4 Zonnon Program Architecture 1 Module Definition Object Implementation 5 Zonnon Program Architecture 1 Module Definition System managed object: - encapsulates resources Unified unit of abstraction: - implements definitions - represents abstract interface - aggregates implementations - refines another definition Object Implementation Program managed actor/resource: - def.implementation of a definition - implements definitions - standalone aggregation unit - aggregates implementations - specifies concurrent behaviour 5 Zonnon Program Architecture 2 Definition D1 Definition D11 (refines D1) Implementation D11 (default for