Towards JIT compilation for IO language
|
|
- Britney Bryan
- 3 years ago
- Views:
Transcription
1 1 27 (2010 ) Towards JIT compilation for IO language IO [6] is a relatively new pure object-oriented language, providing dynamic features comparable with popular scripting languages like Python or Ruby. IO has simple but flexible syntax, allowing for metaprogramming at the syntax tree level. Some aspects of the syntax, such as operator and assignment reshuffling, make IO source code feel natural. Availability of runtime code modification and simple grammar makes IO a good choice as a dynamic programming language research vehicle. In this work we describe our approach to dynamic compilation of programs in IO. Inline caching and speculative inlining provide high performance benefits if the program behavior is stable. We explore programs with multiple or alternating behaviors, and propose multi-version speculative inlining with fine-grained invalidation. 1 Introduction Dynamic languages such as Ruby, Python and Javascript enjoy increasing popularity. Advanced optimization techniques, including just-in-time compilation and trace compilation are increasingly used in dynamic language implementation with good results. However, the potential of dynamic languages is not yet fully tapped. A particular technique of our interest is dynamic delegation, and its limited form, dynamic mixin. As other researchers has shown, dynamic mixin can be used as a basis for implementation of substantial subset of aspect-oriented programming [10] and contextoriented programming [14]. In our previous work [16] we proposed a caching Salikh Zakirov,, Tokyo Institute of Technology, Dept. of Mathematical and Computing Sciences. Shigeru Chiba,, Tokyo Institute of Technology, Dept. of Mathematical and Computing Sciences. Etsuya Shibayama,, University of Tokyo, Information Technology Center. optimization for dynamic method dispatch, which takes dynamic mixin into account. We evaluated the performance of the technique implementation it in the mainline Ruby interpreter (version 1.9.1) by modifying the inline cache handling code. However, we noted that high cost of the method dispatch in the interpreter make inline cache hit about 63% as expensive as inline cache miss, and the benefits of increasing inline cache hit ratio are small. We speculated further, that the technique can be used with much higher benefits in an environment with dynamic compilation. In this work we set out to experimentally verify that claim. More long-term goals of this project include testing a hypothesis whether it is possible and practical to use unrestricted dynamic language as a base system language, and implement other languages on top of it. To achieve maximal flexibility and control over code inlining optimization in the compiler, we chose to implement a dynamic compilation system from scratch. To expedite the development process, we use LLVM [11] as the back-end system, which fa-
2 2 27 (2010 ) cilitates development, gives a clearly defined target of compilation, and provides with ready-to-use lowlevel code optimizer. As the source language of our system, we chose the language IO [6]. It satisfies requirements as a target language of our research due to the following properties: IO is a purely object-oriented prototype-based dynamically typed language with multiple inheritance. IO object model is highly unified, having object slots and delegation as core concepts. Global constants are stored as slots in a context object, local variables as slots in an activation object. Methods source code is available for introspection and modification in the form of abstract syntax tree (AST). IO has minimal, but highly readable syntax. The above leads us to believe that challenge of compiling IO includes all of the challenges applicable to the mainstream dynamic languages. However, the highly unified concept world of IO object model gives hope on unified handling of issues traditionally handled separately, such as namespaces, dynamic dispatch and code modification. The generality of IO language also gives us a hope, that IO-specific optimization can be reused directly by implementing other languages on top of the IO object model. 2 Delegation and dynamic mixin Prototype object model, on which IO language is based, is highly expressive and capable of supporting wide range of programming paradigms: popular static class hierarchy-based object models, aspectoriented programming, and context-oriented programming. This power is based on the ability to modify delegation pointer of an object during program run time. In Fig. 1 the example of the context switching is shown. In IO every syntactic confoo := method(bar println) contexta := Object clone do( bar := method("in context A") ) contextb := Object clone do( bar := method("in context B") ) thislocalcontext setproto(contexta); foo > in context A thislocalcontext setproto(contextb); foo > in context B 1 Context-oriented programming in IO struction is a message send, messages are separated by spaces, and arguments are optionally specified in parentheses. The result of one message send is the receiver for the next message, and for the first message the implicit receiver is an activation object. method() is a message to define a new method, var := expr is implicitly translated to setslot("var", expr) before execution. The message setslot() sets a slot in a receiver object, do() temporarily switches the context to define slots in objects other than toplevel context object. setproto() dynamically modifies delegation pointer of a receiver. Arguments to methods are passed in unevaluated AST from, and can be evaluated on demand, arbitrary number of times and in arbitrary context, which allows expressing of control flow constructs and new method definitions as regular method calls. Dynamic mixin is a technique to temporarily modify object hierarchy by inserting a mixed-in object (Fig. 2). Dynamic mixin insertion can be done in a straightforward way by assigning the delegation pointer to insert a new object into delegation chain, so it is a special case of dynamic delegate pointer modification. While being less general than arbitrary delegation pointer assignment, dynamic mixin can be used to represent useful techniques, such as aspect-oriented programming [10] and context-oriented programming [14]. In these
3 27 (2010 ) 3 Dog := Object clone do( bark := method( "woof-woof /Hey!/" println) ) Pochi := Dog clone do( beg := method( bark "wooo /I want that/" println) ) GoodManners := Dog clone do( bark := method("..." println) ) Pochi beg > woof-woof! wooo Pochi setproto(goodmanners) //insert a mixin Pochi beg >... wooo Pochi setproto(pochi proto proto) //remove 2 Dynamic mixin example uses dynamic mixin operations (insertion or removal) are performed at high frequency, for example, at every invocation of a particular method. Many current implementations of dynamic languages make an assumption that object hierarchy is not changing frequently, and leave it as an expensive operation, so programs using dynamic mixin exhibit low performance [16]. We believe that dynamic mixin is a useful operation and that its potential uses have enough regularity so as to enable efficient optimization. Dynamic dispatch has been attracting attention of researchers for a long time, so a number of optimization techniques has been proposed: inline caching, guarded devirtualization, speculative method inlining. Application of any of these techniques to optimize method calls brings an important issue of invalidation: in the case when subsequent dynamic code redefinition occurs or object hierarchy changes it may be necessary to reconsider the optimized block of code, invalidate cached value or recompile binary code. In our previous work [16] we proposed the invalidation state tracking mechanism based on method lookup. Dependency of inline caches on object changes is organized through state objects, which are implemented as integer counters. When the result of method lookup is cached, it also stores a snapshot of counter, and checks it on each use. Related objects also receive a pointer to the state object, and increment counter in a state object on each modification that can affect the outcome of the method dispatch. State objects are allocated dynamically and associated with sets of polymorphic methods that are called from the same call site, and a pointer to the state object is installed in method table in each object that is being traversed during method lookup. In this way we can maintain an invariant: whenever a target of dynamic dispatch changes, so does the associated state object. The invariant on state objects allows to cache the state on mixin insertion and rewind system to the prior state on mixin removal. On mixin insertion, we record old and updated value of state objects in the cache associated with object, to which mixin is installed. On mixin removal we can check if there were any other invalidations, by comparing the updated state value in the cache with current value. If there were no interfering invalidations, we can be sure that removal of the mixin brings the system to exactly the same state that it was in before mixin installation, and so we can restore the old values of state objects. Call sites that see several alternating targets of the dispatch can use cache with multiple entries (similar to polymorphic inline caching), so that all of the dispatch targets are served from cache. This techniques is applicable to dynamic mixin, and can be generalized to cover arbitrary delegation pointer changes. In this work we set out to explore if we can benefit from this
4 4 27 (2010 ) caching scheme in the dynamic compilation system, by compiling several versions of the code according to the alternating states of the system. 3 Approach to compilation We implemented a minimal interpreter of IO language in Objective-C, and then proceeded to write a dynamic compiler, using mix of interpreted IO code and native Objective-C++ code for interfacing with LLVM infrastructure. Since everything in an IO program is a message send, using method-based compilation would produce very small units of compilation consisting entirely of method calls, with overhead of method call dominating the execution time. For this reason it is essential to use inlining to increase the size of a compilation unit. Inlining a method requires knowledge of the target method, we resolve that by using the value cached during interpreted execution of the method. The cached method targets are likely to be the ones called during subsequent execution, but for the correctness it is necessary to insert a guard with a check of whether the type of the receiver and state matches the cached values. In case of guard failure, the execution falls back to interpreter. When inline cache has multiple dispatch targets recorded, we generate code for each of the cached values separately, effectively producing an inlined version of polymorphic inline cache. Code for control flow constructs such as while() and if(), and arithmetic operations is generated by compiler intrinsics. Limitations Our implementation is in its early stage of development, and has many limitations. Only the small subset of the IO standard library has been implemented: few methods necessary for compiler construction. Compiler itself has even more limitations. Currently it is limited to compiling integer arithmetic (without overflow checking) and guarded method inlining. When dynamic type guard fails, execution of the the whole method is restarted from the top under interpreter, so this restricts compilation to methods without side effects. Using the language under development for development itself has some benefits and drawbacks. Main benefit is the flexibility of the chosen implementation language. The drawbacks include absent error reporting, missing standard functionality and difficulties in error localizing, because any misbehavior may be caused either by the bug in the developed code itself, or in the underlying interpreter. 4 Evaluation Due to the incomplete compiler implementation, our current evaluation options are limited to microbenchmarks. A microbenchmark is structured as a tight loop with a object method call in it, and a target method does integer arithmetic. By varying the number of target methods and compilation options we intend to evaluate the costs of type guard, state check, multi-version inlined code. Performing the experiments and measurements remains a task to complete in near future. 5 Related work The problem of compilation of dynamic languages has been thoroughly researched to date. Smalltalk [7] was first to use just-in-time compilation for a dynamic language. Self [4] is the project that pioneered many of the commonly used techniques, including polymorphic inline caches and type-split compilation. Psyco [12] implemented a specific form of compilation named just-in-time specialization, which generates code as the program executes, and generates new branches of code on type guard failures. Trace-based compilation [8] [17] similarly compiles along a particular program execution path (trace), but it does compilation in
5 27 (2010 ) 5 a bulk after the trace collection is complete. number of dynamic languages have tracing compiler implementations: Python [3], Javascript [5] [9]. PyPy [13] is notable for its use of a statically typable language RPython [1], which is a proper subset of full dynamic Python language. Interesting feature of RPython is the bootstrapping phase, that allows use of advanced dynamic features, like extensible classes and generative programming. Portable approach to compilation by using compilation to C source code has been proposed for Lua [15] and PHP [2]. 6 Conclusion We devised and started implementation of a dynamic compiler for IO language, intended as a research vehicle for optimization of dynamic languages, in particular inlining and inline caching. Our first target for evaluation is guarded multiversion compilation based on the method call profile collected in polymorphic inline cache. Due to the limitations of current compiler, we are benchmarking a small integer numeric benchmark code in interpreted and compiled modes, with and without using dynamic mixin. Completing of the compiler to cover the IO language completely remains our major future task. Acknowledgments We thank Sebastian Günther for helpful comments on a draft of this paper. [ 1 ] Ancona, D., Ancona, M., Cuni, A., and Matsakis, N.: RPython: a step towards reconciling dynamically and statically typed OO languages, Proceedings of the 2007 symposium on Dynamic languages, ACM, 2007, pp. 64. [ 2 ] Biggar, P., de Vries, E., and Gregg, D.: A practical solution for scripting language compilers, SAC 09: Proceedings of the 2009 ACM symposium on Applied Computing, New York, NY, USA, ACM, 2009, pp A [ 3 ] Bolz, C., Cuni, A., Fijalkowski, M., and Rigo, A.: Tracing the meta-level: PyPy s tracing JIT compiler, Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems, ACM, 2009, pp [ 4 ] Chambers, C., Ungar, D., and Lee, E.: An efficient implementation of SELF, a dynamically-typed object-oriented language based on prototypes, LISP and Symbolic Computation, Vol. 4, No. 3(1991), pp [ 5 ] Chang, M., Smith, E., Reitmaier, R., Bebenita, M., Gal, A., Wimmer, C., Eich, B., and Franz, M.: Tracing for web 3.0: trace compilation for the next generation web applications, VEE 09: Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, New York, NY, USA, ACM, 2009, pp [ 6 ] Dekorte, S.: Io: a small programming language, Companion to the 20th annual ACM SIG- PLAN conference on Object-oriented programming, systems, languages, and applications, ACM, 2005, pp [ 7 ] Deutsch, L. P. and Schiffman, A. M.: Efficient implementation of the smalltalk-80 system, POPL 84: Proceedings of the 11th ACM SIGACT- SIGPLAN symposium on Principles of programming languages, New York, NY, USA, ACM, 1984, pp [ 8 ] Gal, A. and Franz, M.: Incremental dynamic code generation with trace trees, Technical Report ICS-TR-06-16, Donald Bren School of Information and Computer Science, University of California, Irvine, [ 9 ] Gal, A., Eich, B., Shaver, M., Anderson, D., Mandelin, D., Haghighat, M. R., Kaplan, B., Hoare, G., Zbarsky, B., Orendorff, J., Ruderman, J., Smith, E. W., Reitmaier, R., Bebenita, M., Chang, M., and Franz, M.: Trace-based just-in-time type specialization for dynamic languages, PLDI 09: Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation, New York, NY, USA, ACM, 2009, pp [10] Haupt, M. and Schippers, H.: A Machine Model for Aspect-Oriented Programming, Proceedings ECOOP 09, LNCS 4609, Springer Berlin / Heidelberg, 2007, pp [11] Lattner, C. and Adve, V.: LLVM: A compilation framework for lifelong program analysis & transformation, Proc. of the 2004 International Symposium on Code Generation and Optimization (CGO 04), [12] Rigo, A.: Representation-based just-in-time specialization and the psyco prototype for python, Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, ACM, 2004, pp [13] Rigo, A. and Pedroni, S.: PyPy s approach
6 6 27 (2010 ) to virtual machine construction, Companion to the 21st ACM SIGPLAN symposium on Objectoriented programming systems, languages, and applications, ACM, 2006, pp [14] Schippers, H., Haupt, M., and Hirschfeld, R.: An implementation substrate for languages composing modularized crosscutting concerns, Proceedings of the 2009 ACM symposium on Applied Computing, ACM New York, NY, USA, 2009, pp [15] Williams, K., McCandless, J., and Gregg, D.: Portable Just-in-time Specialization of Dynamically Typed Scripting Languages, (2010), pp [16] Zakirov, S., Chiba, S., and Shibayama, E.: Optimizing dynamic dispatch with fine-grained state tracking, Proceedings of DLS 10, to appear. [17] Zaleski, M., Brown, A., and Stoodley, K.: Yeti: a gradually extensible trace interpreter, Proceedings of the 3rd international conference on Virtual execution environments, ACM, 2007, pp. 93.
Area 1 (Virtual Machines and Compilation)
Area 1 (Virtual Machines and Compilation) Danny Yoo (dyoo@cs.wpi.edu) Abstract The ideas behind tracing JITs go back to the late 1970s, but have become especially popular lately. Explain the principles
Object-Oriented Software Specification in Programming Language Design and Implementation
Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php info@kitestechnology.com technologykites@gmail.com Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
Virtual Machine Learning: Thinking Like a Computer Architect
Virtual Machine Learning: Thinking Like a Computer Architect Michael Hind IBM T.J. Watson Research Center March 21, 2005 CGO 05 Keynote 2005 IBM Corporation What is this talk about? Virtual Machines? 2
Link-Time Static Analysis for Efficient Separate Compilation of Object-Oriented Languages
Link-Time Static Analysis for Efficient Separate Compilation of Object-Oriented Languages Jean Privat Roland Ducournau LIRMM CNRS/Université Montpellier II France Program Analysis for Software Tools and
Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine
Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine Maxime Chevalier-Boisvert Erick Lavoie Marc Feeley Bruno Dufour {chevalma, lavoeric, feeley, dufour}@iro.umontreal.ca DIRO - Université de
1/20/2016 INTRODUCTION
INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
Object Instance Profiling
Object Instance Profiling Lubomír Bulej 1,2, Lukáš Marek 1, Petr Tůma 1 Technical report No. 2009/7, November 2009 Version 1.0, November 2009 1 Distributed Systems Research Group, Department of Software
language 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
Trace-based Just-in-Time Type Specialization for Dynamic Languages
Trace-based Just-in-Time Type Specialization for Dynamic Languages Andreas Gal +, Brendan Eich, Mike Shaver, David Anderson, David Mandelin, Mohammad R. Haghighat $, Blake Kaplan, Graydon Hoare, Boris
Object Oriented Database Management System for Decision Support System.
International Refereed Journal of Engineering and Science (IRJES) ISSN (Online) 2319-183X, (Print) 2319-1821 Volume 3, Issue 6 (June 2014), PP.55-59 Object Oriented Database Management System for Decision
Chapter 1. Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: cid021000@utdallas.edu Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
1. Overview of the Java Language
1. Overview of the Java Language What Is the Java Technology? Java technology is: A programming language A development environment An application environment A deployment environment It is similar in syntax
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead
Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages
ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
A Modern Objective-C Runtime
A Modern Objective-C Runtime Vol. 8, No. 1, January February 2009 David Chisnall In light of the recent modifications to the de facto standard implementation Objective- C language by Apple Inc., the GNU
Performance Measurement of Dynamically Compiled Java Executions
Performance Measurement of Dynamically Compiled Java Executions Tia Newhall and Barton P. Miller University of Wisconsin Madison Madison, WI 53706-1685 USA +1 (608) 262-1204 {newhall,bart}@cs.wisc.edu
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
Object Oriented Design
Object Oriented Design Kenneth M. Anderson Lecture 20 CSCI 5828: Foundations of Software Engineering OO Design 1 Object-Oriented Design Traditional procedural systems separate data and procedures, and
Chapter 13: Program Development and Programming Languages
15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Java has become enormously popular. Java s rapid rise and wide acceptance can be traced to its design
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS David L. Spooner Computer Science Department Rensselaer Polytechnic Institute Troy, New York 12180 The object-oriented programming
Object Oriented Programming With C++(10CS36) Question Bank. UNIT 1: Introduction to C++
Question Bank UNIT 1: Introduction to C++ 1. What is Procedure-oriented Programming System? Dec 2005 2. What is Object-oriented Programming System? June 2006 3. Explain the console I/O functions supported
Virtual-Machine Abstraction and Optimization Techniques
Replace this file with prentcsmacro.sty for your meeting, or with entcsmacro.sty for your meeting. Both can be found at the ENTCS Macro Home Page. Virtual-Machine Abstraction and Optimization Techniques
Evolution of the Major Programming Languages
142 Evolution of the Major Programming Languages Object Oriented Programming: Smalltalk Object-Oriented: It s fundamental characteristics are: Data abstraction, Inheritance and Dynamic Binding. The essence
Semester Review. CSC 301, Fall 2015
Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!
General Introduction
Managed Runtime Technology: General Introduction Xiao-Feng Li (xiaofeng.li@gmail.com) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime
DESIGN PATTERN GENERATOR FOR PYTHON
Project Number. GFP1405 DESIGN PATTERN GENERATOR FOR PYTHON A Major Qualifying Project Report: submitted to the faculty of the WORCESTER POLYTECHNIC INSTITUTE in partial fulfillment of the requirements
1 Introduction. 2 An Interpreter. 2.1 Handling Source Code
1 Introduction The purpose of this assignment is to write an interpreter for a small subset of the Lisp programming language. The interpreter should be able to perform simple arithmetic and comparisons
From Faust to Web Audio: Compiling Faust to JavaScript using Emscripten
From Faust to Web Audio: Compiling Faust to JavaScript using Emscripten Myles Borins Center For Computer Research in Music and Acoustics Stanford University Stanford, California United States, mborins@ccrma.stanford.edu
Embedded Software Development with MPS
Embedded Software Development with MPS Markus Voelter independent/itemis The Limitations of C and Modeling Tools Embedded software is usually implemented in C. The language is relatively close to the hardware,
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1
The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
INHERITANCE, SUBTYPING, PROTOTYPES in Object-Oriented Languages. Orlin Grigorov McMaster University CAS 706, Fall 2006 ogrigorov@gmail.
INHERITANCE, SUBTYPING, PROTOTYPES in Object-Oriented Languages Orlin Grigorov McMaster University CAS 706, Fall 2006 ogrigorov@gmail.com Two kinds of OO programming languages CLASS-BASED Classes Instances
Modern Web Development with Dart. Alan Knight Google
Modern Web Development with Dart Alan Knight Google Smalltalk Industry Conference 2013 The Web As an application platform We want... Large, extensible widget set Simple, clean APIs Model/View separation
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions Slide 1 Outline Principles for performance oriented design Performance testing Performance tuning General
Jonathan Worthington Scarborough Linux User Group
Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.
An Object Storage Model for the Truffle Language Implementation Framework
An Object Storage Model for the Truffle Language Implementation Framework Andreas Wöß Christian Wirth Daniele Bonetta Chris Seaton Christian Humer Hanspeter Mössenböck Institute for System Software, Johannes
A Comparison of Programming Languages for Graphical User Interface Programming
University of Tennessee, Knoxville Trace: Tennessee Research and Creative Exchange University of Tennessee Honors Thesis Projects University of Tennessee Honors Program 4-2002 A Comparison of Programming
The V8 JavaScript Engine
The V8 JavaScript Engine Design, Implementation, Testing and Benchmarking Mads Ager, Software Engineer Agenda Part 1: What is JavaScript? Part 2: V8 internals Part 3: V8 testing and benchmarking What is
Deoptimization for Dynamic Language JITs on Typed, Stack-based Virtual Machines
Deoptimization for Dynamic Language JITs on Typed, Stack-based Virtual Machines Madhukar N Kedlaya Behnam Robatmili Călin Caşcaval Ben Hardekopf University of California, Santa Barbara Qualcomm Research
An Exception Monitoring System for Java
An Exception Monitoring System for Java Heejung Ohe and Byeong-Mo Chang Department of Computer Science, Sookmyung Women s University, Seoul 140-742, Korea {lutino, chang@sookmyung.ac.kr Abstract. Exception
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
Course Title: Software Development
Course Title: Software Development Unit: Customer Service Content Standard(s) and Depth of 1. Analyze customer software needs and system requirements to design an information technology-based project plan.
Pattern-based Program Visualization
Pattern-based Program Visualization Daniela da Cruz 1, Pedro Rangel Henriques 1, and Maria João Varanda Pereira 2 1 University of Minho - Department of Computer Science, Campus de Gualtar, 4715-057, Braga,
On the Applicability of Io, a Prototype-Based Programming Language
On the Applicability of Io, a Prototype-Based Programming Language Darren Broemmer CS210 Summer 2007 Abstract Over the last decade, Java has become a commonly used programming language because it addresses
Data Model Bugs. Ivan Bocić and Tevfik Bultan
Data Model Bugs Ivan Bocić and Tevfik Bultan Department of Computer Science University of California, Santa Barbara, USA bo@cs.ucsb.edu bultan@cs.ucsb.edu Abstract. In today s internet-centric world, web
The Smalltalk Programming Language. Beatrice Åkerblom beatrice@dsv.su.se
The Smalltalk Programming Language Beatrice Åkerblom beatrice@dsv.su.se 'The best way to predict the future is to invent it' - Alan Kay. History of Smalltalk Influenced by Lisp and Simula Object-oriented
Language Based Virtual Machines... or why speed matters. by Lars Bak, Google Inc
Language Based Virtual Machines... or why speed matters by Lars Bak, Google Inc Agenda Motivation for virtual machines HotSpot V8 Dart What I ve learned Background 25+ years optimizing implementations
Reducing Memory in Software-Based Thread-Level Speculation for JavaScript Virtual Machine Execution of Web Applications
Reducing Memory in Software-Based Thread-Level Speculation for JavaScript Virtual Machine Execution of Web Applications Abstract Thread-Level Speculation has been used to take advantage of multicore processors
Chapter 13: Program Development and Programming Languages
Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented
Can interpreting be as fast as byte compiling? + Other developments in pqr
Can interpreting be as fast as byte compiling? + Other developments in pqr Radford M. Neal, University of Toronto Dept. of Statistical Sciences and Dept. of Computer Science http://www.cs.utoronto.ca/
JavaScript Patterns. Stoyan Stefanov. O'REILLY' Beijing Cambridge Farnham Koln Sebastopol Tokyo
JavaScript Patterns Stoyan Stefanov O'REILLY' Beijing Cambridge Farnham Koln Sebastopol Tokyo Table of Contents Preface xi 1. Introduction 1 Patterns 1 JavaScript: Concepts 3 Object-Oriented 3 No Classes
The Mjølner BETA system
FakePart I FakePartTitle Software development environments CHAPTER 2 The Mjølner BETA system Peter Andersen, Lars Bak, Søren Brandt, Jørgen Lindskov Knudsen, Ole Lehrmann Madsen, Kim Jensen Møller, Claus
TECH. Requirements. Why are requirements important? The Requirements Process REQUIREMENTS ELICITATION AND ANALYSIS. Requirements vs.
CH04 Capturing the Requirements Understanding what the customers and users expect the system to do * The Requirements Process * Types of Requirements * Characteristics of Requirements * How to Express
Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam.
Compilers Spring term Mick O Donnell: michael.odonnell@uam.es Alfonso Ortega: alfonso.ortega@uam.es Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer
Checking Access to Protected Members in the Java Virtual Machine
Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/
Object-based vs. Class-based Languages
Abstract Object-based vs. Class-based Languages Luca Cardelli Digital Equipment Corporation Systems Research Center PLDIÕ96 Tutorial Class-based object-oriented programming languages take object generators
PARALLEL JAVASCRIPT. Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology)
PARALLEL JAVASCRIPT Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology) JAVASCRIPT Not connected with Java Scheme and self (dressed in c clothing) Lots of design errors (like automatic semicolon
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment Wyatt Spear, Allen Malony, Alan Morris, Sameer Shende {wspear, malony, amorris, sameer}@cs.uoregon.edu
HOTPATH VM. An Effective JIT Compiler for Resource-constrained Devices
HOTPATH VM An Effective JIT Compiler for Resource-constrained Devices based on the paper by Andreas Gal, Christian W. Probst and Michael Franz, VEE 06 INTRODUCTION INTRODUCTION Most important factor: speed
Chapter 3.2 C++, Java, and Scripting Languages. The major programming languages used in game development.
Chapter 3.2 C++, Java, and Scripting Languages The major programming languages used in game development. C++ C used to be the most popular language for games Today, C++ is the language of choice for game
McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0
1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science Program Schedule CTech Computer Science Credits CS101 Computer Science I 3 MATH100 Foundations of Mathematics and
The Clean programming language. Group 25, Jingui Li, Daren Tuzi
The Clean programming language Group 25, Jingui Li, Daren Tuzi The Clean programming language Overview The Clean programming language first appeared in 1987 and is still being further developed. It was
Sources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
Advanced Computer Architecture-CS501. Computer Systems Design and Architecture 2.1, 2.2, 3.2
Lecture Handout Computer Architecture Lecture No. 2 Reading Material Vincent P. Heuring&Harry F. Jordan Chapter 2,Chapter3 Computer Systems Design and Architecture 2.1, 2.2, 3.2 Summary 1) A taxonomy of
An Efficient Implementation of SELF, a Dynamically-Typed Object-Oriented Language Based on Prototypes *
To be published in: LISP AND SYMBOLIC COMPUTATION: An International Journal, 4, 3, 1991 1991 Kluwer Academic Publishers - Manufactured in The Netherlands An Efficient Implementation of SELF, a Dynamically-Typed
Pattern-based Program Visualization
Proceedings of the International Multiconference on Computer Science and Information Technology pp. 1025 1036 ISSN 1896-7094 c 2007 PIPS Pattern-based Program Visualization Daniela da Cruz 1, Pedro Rangel
APPLE: Advanced Procedural Programming Language Elements
APPLE: Advanced Procedural Programming Language Elements Christian Heinlein Dept. of Computer Structures, University of Ulm, Germany heinlein@informatik.uni ulm.de Abstract. Today s programming languages
Instruction Set Architecture (ISA)
Instruction Set Architecture (ISA) * Instruction set architecture of a machine fills the semantic gap between the user and the machine. * ISA serves as the starting point for the design of a new machine
Syntax Check of Embedded SQL in C++ with Proto
Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 383 390. Syntax Check of Embedded SQL in C++ with Proto Zalán Szűgyi, Zoltán Porkoláb
Verifying Semantic of System Composition for an Aspect-Oriented Approach
2012 International Conference on System Engineering and Modeling (ICSEM 2012) IPCSIT vol. 34 (2012) (2012) IACSIT Press, Singapore Verifying Semantic of System Composition for an Aspect-Oriented Approach
Automatic Test Factoring for Java
Automatic Test Factoring for Java David Saff, Shay Artzi, Jeff H. Perkins, and Michael D. Ernst MIT Computer Science and Artificial Intelligence Lab The Stata Center, 32 Vassar Street Cambridge, MA 02139
Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World
Chapter 13 Computer Programs and Programming Languages Discovering Computers 2012 Your Interactive Guide to the Digital World Objectives Overview Differentiate between machine and assembly languages Identify
Persistent Binary Search Trees
Persistent Binary Search Trees Datastructures, UvA. May 30, 2008 0440949, Andreas van Cranenburgh Abstract A persistent binary tree allows access to all previous versions of the tree. This paper presents
programming languages, programming language standards and compiler validation
Software Quality Issues when choosing a Programming Language C.J.Burgess Department of Computer Science, University of Bristol, Bristol, BS8 1TR, England Abstract For high quality software, an important
Automatic test factoring for Java
Automatic test factoring for Java David Saff Shay Artzi Jeff H. Perkins Michael D. Ernst MIT Computer Science and Artificial Intelligence Lab The Stata Center, 32 Vassar Street Cambridge, MA 02139 USA
Generating Aspect Code from UML Models
Generating Aspect Code from UML Models Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany Iris.Groher@fh-hagenberg.at Stefan Schulze Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich,
Checked Load: Architectural Support for JavaScript Type-Checking on Mobile Processors
Checked Load: Architectural Support for JavaScript Type-Checking on Mobile Processors Owen Anderson Emily Fortuna Luis Ceze Susan Eggers Computer Science and Engineering, University of Washington http://sampa.cs.washington.edu
Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the.
Objectif This six-day instructor-led course provides students with the knowledge and skills to develop applications in the.net 3.5 using the C# 3.0 programming language. C# is one of the most popular programming
AN ENABLING OPTIMIZATION FOR C++ VIRTUAL FUNCTIONS
AN ENABLING OPTIMIZATION FOR C++ VIRTUAL FUNCTIONS Bradley M. Kuhn bkuhn@acm.org David W. Binkley binkley@cs.loyola.edu Computer Science Department Loyola College in Maryland 4501 N. Charles Street Baltimore,
Static detection of C++ vtable escape vulnerabilities in binary code
Static detection of C++ vtable escape vulnerabilities in binary code David Dewey Jonathon Giffin School of Computer Science Georgia Institute of Technology ddewey, giffin@gatech.edu Common problem in C++
Cobol. By: Steven Conner. COBOL, COmmon Business Oriented Language, one of the. oldest programming languages, was designed in the last six
Cobol By: Steven Conner History: COBOL, COmmon Business Oriented Language, one of the oldest programming languages, was designed in the last six months of 1959 by the CODASYL Committee, COnference on DAta
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
Storage Allocation in Typed Languages
Storage Allocation in Typed Languages Butler W. Lampson Xerox Corporation Palo Alto Research Center Appeared in Proc. 5th Ann. III Conf: Implementation and Design of Algorithmic Languages, Guidel, France,
MEAP Edition Manning Early Access Program Nim in Action Version 1
MEAP Edition Manning Early Access Program Nim in Action Version 1 Copyright 2016 Manning Publications For more information on this and other Manning titles go to www.manning.com Welcome Thank you for purchasing
ALLIED PAPER : DISCRETE MATHEMATICS (for B.Sc. Computer Technology & B.Sc. Multimedia and Web Technology)
ALLIED PAPER : DISCRETE MATHEMATICS (for B.Sc. Computer Technology & B.Sc. Multimedia and Web Technology) Subject Description: This subject deals with discrete structures like set theory, mathematical
Code Generation for High-Assurance Java Card Applets
Code Generation for High-Assurance Java Card Applets Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/ coglio
This paper should be referenced as:
This paper should be referenced as: Connor, R.C.H., Dearle, A., Morrison, R. & Brown, A.L. An Object Addressing Mechanism for Statically Typed Languages with Multiple Inheritance. In Proc. OOPSLA'89, New
Instrumenting V8 to Measure the Efficacy of Dynamic Optimizations on Production Code
Instrumenting V8 to Measure the Efficacy of Dynamic Optimizations on Production Code Michael Maass March 2013 CMU-ISR-13-103 Ilari Shafer Institute for Software Research School of Computer Science Carnegie
The Nature and Importance of a Programming Paradigm
Multiple Software Development Paradigms and Multi-Paradigm Software Development Valentino Vranić vranic@elf.stuba.sk Abstract: While OOP (including OOA/D) is reaching the level of maturity of structured
A Programming Language for Mechanical Translation Victor H. Yngve, Massachusetts Institute of Technology, Cambridge, Massachusetts
[Mechanical Translation, vol.5, no.1, July 1958; pp. 25-41] A Programming Language for Mechanical Translation Victor H. Yngve, Massachusetts Institute of Technology, Cambridge, Massachusetts A notational