Efficiency of Subtype Test in Object Oriented Languages with Generics

Size: px
Start display at page:

Download "Efficiency of Subtype Test in Object Oriented Languages with Generics"

Transcription

1 Efficiency of Subtype Tt in Object Oriented Languag with Generics Alexandre Terrasa Université du Québec à Montréal Jean Privat Université du Québec à Montréal ABSTRACT In a programming language, the choice of a generics typing policy impacts both typing tt mantics and type safety. In this paper, we compare the cost of the generic policy chon and analyze its impacts on the subtype tt performance. To make this comparison we implement two compilers for the Nit language. One appli covariant policy using a homogeneous implementation and the cond appli an erad policy and implementation. We compare the time efficiency of our solution against engin for C++, C#, Eiffel, Java and Scala. Rults show that our implementations give the bt performanc compared to existing solutions. We also compare covariant and erad polici on existing Nit programs using our two compilers. Rults show that covariance do not imply significant overhead regarding subtype tt performanc. Due to the small difference between the costs of the different polici, the choice of a policy by a language digner should not be influenced by performance considerations. Categori and Subject Dcriptors D.3.3 [Programming Languag]: Language Constructs and Featur; D.3.4 [Programming Languag]: Procsors Compilers General Terms Experimentation, Languag, Subtyping, Performance Keywords generics, typing policy, covariance, erasure, generics implementation, homogeneous, heterogeneous, subtype tt, multiple inheritance 1. INTRODUCTION Genericity is an important feature of statically typed object oriented languag, pecially for librari and reusable components. Several languag provide genericity featur and generic typing policy vary between them. In a programming language, the generics typing policy specifi the rul regarding type parameters, type arguments and generic class. The choice of a typing policy impacts both typing tt mantics and type safety. In this paper, we compare the runtime cost of the chon generics policy and its impacts on the subtype tt performanc. Comparing objectively the typing polici is not an easy task since each policy has different rul. Indeed, changing a language policy has dramatic effects becau: i) it chang the exprsivens of the language; ii) it chang the mantics of the program: implicit casts can be removed or added at different plac; iii) the mantics of the subtype tt instanceof or explicit casts depends on the policy. 1.1 Generics Typing Polici Basically, at runtime, one can consider three famili of typing polici: invariance, covariance, and erasure. The choice of a policy affects the mantics and the number of subtype tts to be performed at runtime. Invariance. There is no subtyping relationship between the generic variations of a class. Invariant typing policy guarante that static typing is enough to ensure the dynamic type safety. This is the policy applied by C++: A, B, G A, G B : G A <: G B A = B Covariance. A subtyping relationship exists between two generic variations bad on the relationship of the type arguments: A, B, G A, G B : G A <: G B A <: B To ensure type safety, languag may u two different approach. The first, ud by C# with its variant generic interfac, is to introduce limitations and static rul to ensure type safety at compile time. The cond, ud by Eiffel, delegat the checks at runtime and add some covariant casts to ensure type safety.

2 Erasure. The typ arguments are not considered and all generic variations of a class are subtyp of each other. This is the policy applied at runtime by Java and Scala: G A, G B : G A <: G B Erasure can be en as the way to do genericity without generic class. To ensure type safety, the compiler automatically adds erasure casts to change the type of the method argument or the return type according to the static bounds specified. While erasure can avoid some covariance casts, erasure casts reprent an overhead that is not required by the covariant policy. 1.2 Generics Implementations Invariant and covariant generic polici can be implemented by both heterogeneous and homogeneous implementation. The main difference between the approach is whether the generic variations of a class share the same implementation or not. Heterogeneous. With the heterogeneous implementation the compiler generat a customized version of the compiled class for each generic variation. In each customized variation of a class, typ parameters are replaced by concrete typ. Since each customized version is considered as a distinct class subtyp tts can be rolved in the same way than with non-generic typ. This is the implementation ud for C++ templat and SmartEiffel. Homogeneous. With the homogeneous implementation all the generic variations of a class share the same compiled code. Therefore, referenc to type parameters and open typ [7] must be rolved at runtime. This is the implementation ud by EiffelStudio and C#. Erad. The erad implementation behave like implementations without genericity. At compile time, all referenc to type parameters in the class body are replaced by their static bounds. The same compiled version of a generic class is shared by all its instanc. Erasure casts are done using the static bounds in the compiled class. Subtyping tts with erad genericity behave exactly like non-generic subtype tts, only the class type is taken into account in subtype tt. The erad policy rults from an erad implementation. This is the implementation ud by Java and Scala. 1.3 The Nit Language Comparing generics typing polici and implementations is a difficult task and we had two difficult constraints to solve: Having real-world programs that behave exactly the same way with both polici. This is a difficult task. Having two compilers that generate the same machine code except for what is related to the polici and the typing implementation. This is easier becau we can implement them. We ba our study on the Nit language 1. Nit is an evolution of the PRM language which was dedicated to exhaustive asssments of various implementation techniqu and compilation schem [4, 8]. Nit is an object oriented language with static typing. Its featur include nullable typ [6] and virtual typ [9]. The Nit specification stat that the policy involved is covariant (the same was true in PRM). However, the main parate compiler, nitc, implements genericity with an unsafe erasure policy (i.e., without automatic casts) and has a lot of TODO and FIXME in its source-code. There are two other engin, ud for education purpos, nit, a naive and really inefficient interpreter, and, a global compiler with heavy customization. Both implement the real covariant mantic but on a subt of the language. Conquently, most of the existing Nit programs, including and nit, behave exactly the same way either with a covariant policy or with an erad policy. With the Nit language, we have a tt platform to compare polici and implementations. To make this comparison we created two new implementations of the Nit compiler. follows the covariant policy using a homogeneous implementation. -e us an erad implementation and policy. Both engin were digned to provide maximum scalability for tting. 1.4 Comparing Polici and Implementations In the rt of this paper, Section 2 prents the micro benchmarks ud to verify that our solution is in the same magnitude of existing implementations. We compare the time efficiency of our solution against implementations ud in other languag and compilers using generated type hierarchi. Rults with compilers for C++, C#, Eiffel, Java, Scala and Nit show that our implementations give good performanc compared to existing solutions. Section 3 compar covariant and erad polici on Nit programs and discuss the performanc of the covariant compiler versus an erad compiler. Rults show that covariance do not imply significant overhead regarding subtype tt performanc. Finally, Section 4 prents our conclusions and future work. 2. LANGUAGES COMPARISON In this ction we compare the behavior of multipl engin (1 compilers and 2 virtual machin) for the languag C++, C#, Eiffel, Java, Scala and Nit on some unrealistic micro-benchmarks. Unlike the study propod by Garcia [5] that provid a comprehensive study of faciliti for generic programming in the languag, this evaluation aims to compare the implementation of subtype tt for generics with all other mechanisms being different. This evaluation aims to answer veral qutions: i) Do the Nit implementations have performanc of the same order compared to other existing solutions? ii) How different are 1

3 the measured behaviors with a large variety of polici, implementations, languag, and engin? iii) How do a specific execution engine rpond to a strs tt on subtyping mechanisms for generics? 2.1 The Engin We compare the following compilers and virtual machine. g++ provid the heterogeneous implementation of the invariant policy of C++. We u the version GNU gcc g++ (Debian ) linux-x86-64 with GNU. clang++ also provid the heterogeneous implementation for C++. We u the version Debian clang version (tags/release 3/final) (bad on LLVM 3.) - linuxx Both g++ and clang++ u the same implementation of the subtype tt shared in libstdc++ version Debian GNU linux-x Both are also ud with the -O2 optimization level. javac version is ud to compile Java programs. They are run on the OpenJDK Runtime (IcedTea ) (7u ) following the erad policy and implementation of Java. gcj, the GNU compiler for Java, version is also ud to compile Java programs. scalac version Scala programs are run on the same runtime environment than Java programs. The policy ud is covariant but us an erad implementation. is the compiler for Mono C# version C# programs are executed on the Mono JIT compiler version C# provid a covariant and homogeneous implementation of the covariant policy. is the Eiffel Studio compiler. It provid a homogeneous implementation of the Eiffel covariant policy. We u the version ISE EiffelStudio GPL Edition - linux-x It is ud with the -finalize optimization level. is the SmartEiffel compiler. It provid an heterogeneous implementation of the Eiffel covariant policy. We u the version Relea 2.4 (svn snaphsot 938) - linux-x It is ud with the -no_check optimization level. compiler provid a heterogeneous implementation for Nit covariant policy using a global compilation procs and customization. compiler provid an homogeneous implementation of the Nit covariant policy using a parate compilation procs with global linking. The generated C by both Nit engin is compiled with gcc version GNU gcc g++ (Debian ) linux-x86-64 with GNU with the -O2 optimization level. The version is the Git commit 7e44894eb766bf5d4d58c2a45356c f. 2.2 The Micro-Benchmarks The objective of the micro-benchmarks is to measure subtyping mechanisms of generics. In order to do so, the programs must, during their execution, u subtyping for generics heavily, and the other mechanisms of the language minimally. Our main constraint is that the programs must be equivalent as much as possible for all languag involved. For this reason, we u the lowt common denominator for the policy and keep to minimum the u of librari and other specific mechanisms. The tt programs are automatically generated by a script. The generation is deterministic and the same program is generated in all languag. Each generated program is made of three parts: A simple type hierarchy. The height of the hierarchy is determined by a parameter of the script. A loop of iterations. A subtype tt done at each iteration. The tt protocol. Micro-benchmarks are launched on a Intel i7-264m with a x86 64 machine installed with a Debian GNU/Linux operating system. The tt protocol is the following: 6 concutive executions of each configuration are performed, the first execution is discarded, and the minimum, maximum and average ur time of the 5 executions are kept. Ur time is measured with the GNU time command. The big loop. The big loop is done by a function and is divided into two for loops doing 5. iterations each. The el part is not executed but prevents loop optimizations. static public void t e s t ( Root a, Root b, int loops, int s t a r t ) { int x = s t a r t ; for ( int i = ; i < l o o p s ; i ++) { for ( int j = ; j < l o o p s ; j++) { i f (TYPE TEST && x >= ) { } el { x = x i + j ; a = b ; } } } System. out. p r i n t l n ( x ) ; } Figure 1 giv the performanc of each engin with a dry loop: no subtype tt is done in the loop. The TYPE_TEST placeholder is replaced by true. We tried to put every engine on the same footing but the Java JVM appli hard to control common cas optimizations [2]. Other engin reach the same performanc on the dry loop. The rults measure only the time ud by the dry loop and can be ud to approximate time consumed by subtype tts in further rults.

4 The type tt. Three kinds of type hierarchi are generated depending on the micro-benchmark objectiv. The generated type hierarchi are simple. The h parameter of the script determin the height of the hierarchy. More specifically, the following class are generated: A root class R, without attribute. A total of h linear generic subclass C i of R. Each generic subclass take only one type parameter. For the experimentation, we ud three configurations: h=2; h=4 ; h=8. In the loop, the TYPE_TEST placeholder is replaced by a tt between an instance of the deept type in the hierarchy against the middle type of the type hierarchy. Rults given in Figure 2 show subtype tt performanc regarding the height of the hierarchy: R :> C 1 R :> C 2 R :> :> C h R The same type hierarchy is ud to bench failed subtype tts. In the loop, the TYPE_TEST placeholder is replaced by the negation of the tt between an instance of the penultimate type against the last type. Rults are given in Figure 3. Rults given in Figure 4 show subtype tt performanc regarding covariance: R :> C 1 C 1 R :> C 1 C 2 R :> :> C 1 C h R Rults given in Figure 5 show subtype tt performanc regarding generic type nting level: R :> C 1 R :> C 1 C 1 R :> :> C 1 C 1 C 1 Note: In C++, class are generated fully virtual: method and specialization are all declared using the virtual keyword. In Java and C#, we u interfac instead of class to ensure the virtual machine will rely on its implementation of multiple-inheritance type tts. Same for Scala using traits. 2.3 Discussion Implementations bad on function calls are slower. The functions ud in the subtype tt implementation of g++, clang++ and EiffelStudio are ls efficient than switch ud in and SmartEiffel or than the tabl ud in. Not all the implementations of the subtype tt are time constant. g++, clang++ and EiffelStudio performanc vary with hierarchy depth. EiffelStudio performanc vary with generic typ nting and covariance depth. Failed tts are slower than succsful on in the Java JVM becau of common cas optimizations. Java us a last type checked cache for subtyping tts against interfac. In the ca of a failed tt, the cache is invalidated then the rult is calculated again and stored in the cache. Finally, Nit engin give the bt performanc on the subtype tt. The homogeneous implementation appears to be time constant on generic type hierarchy depth, nting and with covariance. The customized heterogeneous implementation of is faster than the homogeneous implementation thanks to customization. 3. THE REAL COST OF COVARIANCE In this ction we try to determine what is the real cost of covariance compared to erasure. Therefore, we confront the two politics: covariant and erad, and their rpective implementations in Nit compilers. 3.1 The Engin To make this comparison we u two implementations of the Nit compiler. is a covariant implementation using an homogeneous reprentation bad on the C# approach [7] but adapted to multiple inheritance. -e is an erad implementation bad on the Java implementation adapted to multiple inheritance. Both engin were digned to provide maximum scalability for tting and include many options. Considering policy, covariance and erasure tts can be enabled or disabled. The compilation schema of and -e is truly parate with a global linking pha. Truly parate means that each Nit module is compiled to an object file (.o) that is independent of any Nit program that may u it. On the global linking pha, tabl and some global rvic are computed in a parate object fil (the program one). Numbers and tabl of the global pha are associated with symbols that are required by compiled modul and provided by the global program. The standard linker is enough to produce a final executable. No global optimization is done on the generated machine code; the only global optimization is concerned with the construction of the various tabl. Attribute accsing and msage nding are implemented with coloring [3]. The GC ud is Boehm [1]. In practice,, and -e are combined into a single executable program called. The activation of the parate or the erasure engine is done with two options: --parate for, or --erasure for -e. In addition to and -e, we digned two other engin where casts can be disabled. u engine is executed with the additional option --no-check-covariance. This produc compiled programs that are possibly unsafe and may behave in a unspecified way. u is ud to measure the overhead of the covariant casts. -eu engine is -e executed with the additional options --no-check-covariance and --no-check-erasure-cast. Thus the implicit casts of the erasure policy are removed and the compiled programs are also possibly unsafe. -eu is ud to measure the overhead of tho casts. Moreover, u can be en as the neart approximation possible to a safe typing policy, as in C#, applied to Nit programs. It is near becau the complete runtime type information is prerved (no erasure) and no implicit casts are added. It is an approximation becau the unsafe rul still apply: (i) the existing behavior of instanceof and explicit casts must not change, otherwi the Nit programs will not behave correctly; (ii) the size of the subtype relationship is

5 g++ clang++ java gcj scala g++ clang++ java gcj scala Figure 1: Time efficiency of each engine on the dry loop g++ clang++ java gcj scala h = h = h = g++ clang++ java gcj scala Figure 2: Time efficiency of each engine considering variations of the depth of the type hierarchy. g++ clang++ java gcj scala h = h = h = g++ clang++ java gcj scala Figure 3: Time efficiency of each engine considering variations of the depth of the type hierarchy with failing subtype tts.

6 h = h = h = Figure 4: Time efficiency of each engine considering covariant subtype tts. h = h = h = Figure 5: Time efficiency of each engine considering different generic type nting levels. larger; (iii) the existing programs keep their exprsivens and really adapting them to a safe policy may require complex rewriting, some workarounds and numerous additional explicit casts. 3.2 The Tt Corpus The tt corpus consists of five programs (most of them are available in the Nit project repository):, nit, shoot, bintre and pep8analysis. is the compiler ud to implement erad and covariant genericity. The program is compiled once but executed in two different ways. The first way, nit_metrics.nit, do the global compilation of the nit_metrics program (a program that comput and displays static metrics about programs). The cond way, --parate.nit, is the parate compilation of itlf using the covariant-homogeneous implementation. Note: the two executions share the same front-end (parsing, model building, mantic verification) but this whole frontend procs only requir, in both cas, ls than 15% of total compilation time. The program is the same but the two executions are quite different. nit is the really slow and naive interpreter executed with nit -- tt_parr.nit -n rapid_type_analysis.nit. First argument, tt_parr.nit, is a small tt program that pars a Nit source file, then builds and displays its AST. The source file tted here is the Nit module implementing the RTA algorithm. Note: -n is intended to tt_parr (not the interpreter) and skips the display part. shoot is a basic shoot em up game with a complete OO game logic in a 2D environement. This program extensively us floating-point arithmetic and nted heterogeneous collections to store the game elements. For obvious reason, the version executed is headls (no display) and has no frame rate limitation. A total of 3. fram are computed. The full graphical version is not yet published. bintre is a simplistic adaptation of GCBench 2 of Hans 2 bench/applet/gcbench.java

7 Boehm except that the tre are implemented by a generic class. pep8analyzer 3 is a static analyzer that detects bugs and bad programming practic in Pep/8 4 programs. The arguments of the execution is a t of programs written by students of the cour on asmbly languag. 3.3 Generic Policy Impact We consider here the impact of the chon policy on the amount of subtype tts compiled according to the policy, and performed at runtime. We first compare the number of subtype tts compiled by both engin including implicit and explicit tts. Then we execute the compiled program and count the number and the kinds of tts performed during execution. Figure 6 giv the number of tts or casts performed at runtime. With, an important proportion of all tts are generated by the compiler to ensure safety in generic covariant calls. Since the Nit specification do not allow covariance on a parameter of a method typ with a rolved type, all implicit tts are against unrolved generic typ. -e requir more subtype tts than becau of erasure casts. This mak n, becau reads are more numerous than writ in real programs. Only a few tts on unrolved typ are required, which is becau unrolved typ for -e consist only of type tts against virtual typ, all other typ being erad. Metrics for -eu and u can be derived by removing all the implicit tts while keeping the explicit on. 3.4 Rults and Discussion The experimental protocol ud is the same than for microbenchmarks (Section 2.2). As shown in figure 7, without any consideration of generic policy, performanc are comparable between all engin. -e performs better than in almost all cas, but only for a maximum of 5.8% in nit. This behavior can be explained becau while -e has the most dynamic type tts, tho are ntially on rolved typ. However, in shoot, there is so much erasure tts that nit-e is 9,5% slower than. On the unsafe versions for -e and, we can conclude that the cost of the checks are not a major overhead. For u, it go from 1.4% in shoot to 9.1% in bintre. Since the latter ca is the least realistic program, this is not a major concern. 4. CONCLUSION In this paper, we compare the cost of the generics policy chon by a language and analyze its impacts on the subtype tt performanc. To make this comparison we create two compilers for the Nit language: applying covariant policy using a homogeneous implementation. -e applying an erad policy with erad implementation Pep/8 is a virtual CISC procsor digned to teach computer architecture and asmbly language programming principl. https://code.google.com/p/pep8-1/ We compare the time efficiency of our solution in Nit against engin for C++, C#, Eiffel, Java and Scala. Rults show that our implementations give the bt performanc compared to existing solutions. Subtyping tt implementations bad on function calls are slower than switch or tabl bad implementations. Unlike our implementations, not all the other implementations of the subtype tt are time constant with generics. We compare covariant and erad polici on existing Nit programs using and -e. We first look at the number of subtype tts compiled by both engin including implicit and explicit tts and the number of tts actually executed. Rults show that erad -e requir more subtype tts than covariant becau of erasure casts. We then look at time efficiency between the two engin and rults show that covariance do not imply significant overhead regarding subtype tt performanc. Due to the small difference between the costs of the different polici, the choice of a policy by a language digner should not be influenced by performance considerations. 5. REFERENCES [1] H.-J. Boehm and M. Spertus. Garbage collection in the next C++ standard. In Proceedings of the 29 international symposium on Memory management, ISMM 9, pag 3 38, New York, NY, USA, 29. ACM. [2] C. Click and J. Ro. Fast subtype checking in the HotSpot JVM. Proceedings of the 22 joint ACM-ISCOPE conference on Java Grande - JGI 2, pag 96 17, 22. [3] R. Ducournau. Coloring, a versatile technique for implementing object-oriented languag. Software: Practice and Experience, 41(6): , May 211. [4] R. Ducournau, F. Morandat, and J. Privat. Empirical asssment of object-oriented implementations with multiple inheritance and static typing. ACM SIGPLAN Notic, 44(1):41 6, Oct. 29. [5] R. Garcia, J. J. Arvi, A. Lumsdaine, J. Siek, and J. Willcock. An extended comparative study of language support for generic programming. Journal of Functional Programming, 17(2):145 25, 27. [6] J. Gélinas, E. Gagnon, and J. Privat. Prévention de déréférencement de référenc null dans un langagea objets. Langag et Modèl à Objets, Volume L-3:5 16, 29. [7] A. Kennedy and D. Syme. Dign and implementation of generics for the.net Common language runtime. In Proceedings of the ACM SIGPLAN 21 conference on Programming language dign and implementation - PLDI 1, pag 1 12, New York, New York, USA, 21. ACM Prs. [8] J. Privat and R. Ducournau. Raffinement de class dans l langag à objets statiquement typés. RSTI-L OBJET, 25. [9] M. Torgern. Virtual typ are statically safe. In 5th Workshop on Foundations of Object-Oriented Languag, pag 1 9, 1998.

8 explicit covariant explicit covariant erasure r. unr. 153M 1M 149M 159M.7M 66M.8M 956M.4M r. unr 269M 15M 21M 28M.3M 7M.1M 131M.3M nit r. unr 54M 14M 156M 64M 3.1M 53M.8M 14M.6M shoot r. unr. 38M 5.8M 38M 5.4M 134M bintree r. unr M 143 7M 4M 5 pep8analysis r. unr. 4.5M 17M 98M 14M M.4M 22M Figure 6: Metrics on dynamic executed subtype tts. The first two lin are for and the last three lin are for -e. explicit corrponds to the number of explicit subtype tts and casts requted by the developer; covariance reprents the covariance casts inrted by the compiler to ensure safety in covariant generic calls; erasure are casts added by the erasure compiler; r. corrponds to subtype tts against rolved typ such as List<Integer> or Map<String, Integer>; unr. is for tts against open typ [7] such as List<E> or E. -e u -eu nit shoot bintree pep8analysis e u -eu nit shoot bintre pep8analysis Figure 7: Time efficiency of compiled Nit programs according to the ud generics policy.

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111 Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo

More information

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters

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.

More information

Checking Access to Protected Members in the Java Virtual Machine

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/

More information

Java Application Developer Certificate Program Competencies

Java Application Developer Certificate Program Competencies Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle

More information

The Design of the Inferno Virtual Machine. Introduction

The Design of the Inferno Virtual Machine. Introduction The Design of the Inferno Virtual Machine Phil Winterbottom Rob Pike Bell Labs, Lucent Technologies {philw, rob}@plan9.bell-labs.com http://www.lucent.com/inferno Introduction Virtual Machine are topical

More information

Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the.

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

More information

Effective Java Programming. efficient software development

Effective Java Programming. efficient software development Effective Java Programming efficient software development Structure efficient software development what is efficiency? development process profiling during development what determines the performance of

More information

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 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

More information

Habanero Extreme Scale Software Research Project

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

More information

Course 10550A: Programming in Visual Basic with Microsoft Visual Studio 2010 OVERVIEW

Course 10550A: Programming in Visual Basic with Microsoft Visual Studio 2010 OVERVIEW Course 10550A: Programming in Visual Basic with Microsoft Visual Studio 2010 OVERVIEW About this Course This course teaches you Visual Basic language syntax, program structure, and implementation by using

More information

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? 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

More information

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,

More information

CSCI E 98: Managed Environments for the Execution of Programs

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

More information

1. Overview of the Java Language

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

More information

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff +41 44 520 01 17 +41 79 430 03 61

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff +41 44 520 01 17 +41 79 430 03 61 F# Applications to Computational Financial and GPU Computing May 16th Dr. Daniel Egloff +41 44 520 01 17 +41 79 430 03 61 Today! Why care about F#? Just another fashion?! Three success stories! How Alea.cuBase

More information

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16 Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz Michel.Schinz@epfl.ch Assistant: Iulian Dragos INR 321, 368 64

More information

.NET Performance and Debugging Workshop

.NET Performance and Debugging Workshop DNWSH - Version: 2.1 01 October 2016.NET Performance and Debugging Workshop .NET Performance and Debugging Workshop DNWSH - Version: 2.1 8 days Course Description: The.NET Performance and Debugging Workshop

More information

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,

More information

Can You Trust Your JVM Diagnostic Tools?

Can You Trust Your JVM Diagnostic Tools? Can You Trust Your JVM Diagnostic Tools? Isaac Sjoblom, Tim S. Snyder, and Elena Machkasova Computer Science Discipline University of Minnesota Morris Morris, MN 56267 sjobl014@umn.edu, snyde479@umn.edu,

More information

C# 5.0 Programming in the.net Framework 6 days Course

C# 5.0 Programming in the.net Framework 6 days Course 50150B - Version: 2.1-17/09/2016 C# 5.0 Programming in the.net Framework 6 days Course Course Description This six-day instructor-led course provides students with the knowledge and skills to develop applications

More information

Fundamentals of Java Programming

Fundamentals of Java Programming Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors

More information

Java (12 Weeks) Introduction to Java Programming Language

Java (12 Weeks) Introduction to Java Programming Language Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short

More information

Glossary of Object Oriented Terms

Glossary of Object Oriented Terms Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction

More information

Java (Micro) Performance Measuring

Java (Micro) Performance Measuring Java (Micro) Performance Measuring trendscope.com How to measure and test the performance of Java applications Java (Micro) Performance Measuring Thomas Uhrig Akt. Themen des Software-Engineerings 1 of

More information

Programming and Software Development CTAG Alignments

Programming and Software Development CTAG Alignments Programming and Software Development CTAG Alignments This document contains information about four Career-Technical Articulation Numbers (CTANs) for Programming and Software Development Career-Technical

More information

PERFORMANCE MONITORING OF JAVA COMPONENT-ORIENTED DISTRIBUTED APPLICATIONS

PERFORMANCE MONITORING OF JAVA COMPONENT-ORIENTED DISTRIBUTED APPLICATIONS PERFORMANCE MONITORING OF JAVA COMPONENT-ORIENTED DISTRIBUTED APPLICATIONS Adrian Mos, John Murphy Performance Engineering Lab, Dublin City University Glasnevin, Dublin 9, Ireland Tel: +353 1 700-8762,

More information

Chapter 1 Fundamentals of Java Programming

Chapter 1 Fundamentals of Java Programming Chapter 1 Fundamentals of Java Programming Computers and Computer Programming Writing and Executing a Java Program Elements of a Java Program Features of Java Accessing the Classes and Class Members The

More information

An Exception Monitoring System for Java

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

More information

Computing Concepts with Java Essentials

Computing Concepts with Java Essentials 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann

More information

Oracle Solaris Studio Code Analyzer

Oracle Solaris Studio Code Analyzer Oracle Solaris Studio Code Analyzer The Oracle Solaris Studio Code Analyzer ensures application reliability and security by detecting application vulnerabilities, including memory leaks and memory access

More information

AP Computer Science Java Subset

AP Computer Science Java Subset APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall

More information

Link-Time Static Analysis for Efficient Separate Compilation of Object-Oriented Languages

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

More information

14/05/2013 Ed Merks EDL V1.0 1

14/05/2013 Ed Merks EDL V1.0 1 14/05/2013 Ed Merks EDL V1.0 1 Java Performance is Complex Write once run everywhere Java is slow because it s interpreted No, there are Just In Time (JIT) compilers Different hardware and platforms Different

More information

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm

More information

1/20/2016 INTRODUCTION

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

More information

Java in Education. Choosing appropriate tool for creating multimedia is the first step in multimedia design

Java in Education. Choosing appropriate tool for creating multimedia is the first step in multimedia design Java in Education Introduction Choosing appropriate tool for creating multimedia is the first step in multimedia design and production. Various tools that are used by educators, designers and programmers

More information

.NET and J2EE Intro to Software Engineering

.NET and J2EE Intro to Software Engineering .NET and J2EE Intro to Software Engineering David Talby This Lecture.NET Platform The Framework CLR and C# J2EE Platform And Web Services Introduction to Software Engineering The Software Crisis Methodologies

More information

Java and Real Time Storage Applications

Java and Real Time Storage Applications Java and Real Time Storage Applications Gary Mueller Janet Borzuchowski 1 Flavors of Java for Embedded Systems Software Java Virtual Machine(JVM) Compiled Java Hardware Java Virtual Machine Java Virtual

More information

Java Interview Questions and Answers

Java Interview Questions and Answers 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

More information

The C Programming Language course syllabus associate level

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

More information

A Java-based system support for distributed applications on the Internet

A Java-based system support for distributed applications on the Internet A Java-based system support for distributed applications on the Internet D. Hagimont 1, D. Louvegnies 2 SIRAC Project INRIA, 655 av. de l Europe, 38330 Montbonnot Saint-Martin, France Abstract: We have

More information

Enterprise Service Bus

Enterprise Service Bus We tested: Talend ESB 5.2.1 Enterprise Service Bus Dr. Götz Güttich Talend Enterprise Service Bus 5.2.1 is an open source, modular solution that allows enterprises to integrate existing or new applications

More information

SL-110: Fundamentals of Java Revision 15 October Sun Educational Services Instructor-Led Course Description

SL-110: Fundamentals of Java Revision 15 October Sun Educational Services Instructor-Led Course Description Sun Educational Services Instructor-Led Course Description Fundamentals of Java SL-110 The Fundamentals of the Java course provides students, with little or no programming experience, with the basics of

More information

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java

More information

Design by Contract beyond class modelling

Design by Contract beyond class modelling Design by Contract beyond class modelling Introduction Design by Contract (DbC) or Programming by Contract is an approach to designing software. It says that designers should define precise and verifiable

More information

C Compiler Targeting the Java Virtual Machine

C Compiler Targeting the Java Virtual Machine C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the

More information

General Introduction

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

More information

Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT

Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT Dynamic Web Programming BUILDING WEB APPLICATIONS USING ASP.NET, AJAX AND JAVASCRIPT AGENDA 1. Introduction to Web Applications and ASP.net 1.1 History of Web Development 1.2 Basic ASP.net processing (ASP

More information

Dsc+Mock: A Test Case + Mock Class Generator in Support of Coding Against Interfaces

Dsc+Mock: A Test Case + Mock Class Generator in Support of Coding Against Interfaces Dsc+Mock: A Test Case + Mock Class Generator in Support of Coding Against Interfaces Mainul Islam, Christoph Csallner Computer Science and Engineering Department University of Texas at Arlington Arlington,

More information

Chapter 12 Programming Concepts and Languages

Chapter 12 Programming Concepts and Languages Chapter 12 Programming Concepts and Languages Chapter 12 Programming Concepts and Languages Paradigm Publishing, Inc. 12-1 Presentation Overview Programming Concepts Problem-Solving Techniques The Evolution

More information

What Is Specific in Load Testing?

What Is Specific in Load Testing? What Is Specific in Load Testing? Testing of multi-user applications under realistic and stress loads is really the only way to ensure appropriate performance and reliability in production. Load testing

More information

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 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

More information

Validating Java for Safety-Critical Applications

Validating Java for Safety-Critical Applications Validating Java for Safety-Critical Applications Jean-Marie Dautelle * Raytheon Company, Marlborough, MA, 01752 With the real-time extensions, Java can now be used for safety critical systems. It is therefore

More information

Programming with the Microsoft.NET Framework Using Microsoft Visual Studio 2005 (VB)

Programming with the Microsoft.NET Framework Using Microsoft Visual Studio 2005 (VB) Programming with the Microsoft.NET Framework Using Microsoft Visual Studio 2005 (VB) Course Number: 4995 Length: 5 Day(s) Certification Exam There are no exams associated with this course. Course Overview

More information

Programming Languages & Tools

Programming Languages & Tools 4 Programming Languages & Tools Almost any programming language one is familiar with can be used for computational work (despite the fact that some people believe strongly that their own favorite programming

More information

Course 10266A: Programming in C# with Microsoft Visual Studio 2010

Course 10266A: Programming in C# with Microsoft Visual Studio 2010 Length Five days About this Course The course focuses on C# program structure, language syntax, and implementation detailswith.net Framework 4.0. This course describes the new enhancements in the C# 4.0

More information

pbuilder Debian Conference 2004

pbuilder Debian Conference 2004 pbuilder Debian Conference 2004 Junichi Uekawa May 2004 1 Introduction pbuilder[1] is a tool that is used for Building Debian packages in a clean environment inside chroot 1. In this paper, the background

More information

Syntax Check of Embedded SQL in C++ with Proto

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

More information

Course Title: Software Development

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.

More information

Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C

Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C Flávio Medeiros 1, Thiago Lima 2, Francisco Dalton 2, Márcio Ribeiro 2, Rohit Gheyi 1, Baldoino Fonseca 2

More information

02 B The Java Virtual Machine

02 B The Java Virtual Machine 02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual

More information

Construction Principles and Design Patterns. Flyweight, Bridge, Builder

Construction Principles and Design Patterns. Flyweight, Bridge, Builder Construction Principles and Design Patterns Flyweight, Bridge, Builder 1 The Flyweight Design Pattern: Structure Use: To avoid employing a large number of objects with similar state When objects with intrinsic

More information

Sources: On the Web: Slides will be available on:

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,

More information

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating

More information

NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X

NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X DU-05348-001_v6.5 August 2014 Installation and Verification on Mac OS X TABLE OF CONTENTS Chapter 1. Introduction...1 1.1. System Requirements... 1 1.2. About

More information

EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!)

EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) ALON ZAKAI (MOZILLA) @kripken JavaScript..? At the LLVM developer's conference..? Everything compiles into LLVM bitcode The web is everywhere, and

More information

1 How to Monitor Performance

1 How to Monitor Performance 1 How to Monitor Performance Contents 1.1. Introduction... 1 1.1.1. Purpose of this How To... 1 1.1.2. Target Audience... 1 1.2. Performance - some theory... 1 1.3. Performance - basic rules... 3 1.4.

More information

Performance Analysis and Optimization Tool

Performance Analysis and Optimization Tool Performance Analysis and Optimization Tool Andres S. CHARIF-RUBIAL andres.charif@uvsq.fr Performance Analysis Team, University of Versailles http://www.maqao.org Introduction Performance Analysis Develop

More information

Replication on Virtual Machines

Replication on Virtual Machines Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism

More information

Online Recruitment System 1. INTRODUCTION

Online Recruitment System 1. INTRODUCTION 1. INTRODUCTION This project Online Recruitment System is an online website in which jobseekers can register themselves online and apply for job and attend the exam. Online Recruitment System provides

More information

11.1 inspectit. 11.1. inspectit

11.1 inspectit. 11.1. inspectit 11.1. inspectit Figure 11.1. Overview on the inspectit components [Siegl and Bouillet 2011] 11.1 inspectit The inspectit monitoring tool (website: http://www.inspectit.eu/) has been developed by NovaTec.

More information

Java Programming. Binnur Kurt binnur.kurt@ieee.org. Istanbul Technical University Computer Engineering Department. Java Programming. Version 0.0.

Java Programming. Binnur Kurt binnur.kurt@ieee.org. Istanbul Technical University Computer Engineering Department. Java Programming. Version 0.0. Java Programming Binnur Kurt binnur.kurt@ieee.org Istanbul Technical University Computer Engineering Department Java Programming 1 Version 0.0.4 About the Lecturer BSc İTÜ, Computer Engineering Department,

More information

A Thread Monitoring System for Multithreaded Java Programs

A Thread Monitoring System for Multithreaded Java Programs A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul 140-742, Korea wonsein@nate.com, chang@sookmyung.ac.kr

More information

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

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

More information

Processing and data collection of program structures in open source repositories

Processing and data collection of program structures in open source repositories 1 Processing and data collection of program structures in open source repositories JEAN PETRIĆ, TIHANA GALINAC GRBAC AND MARIO DUBRAVAC, University of Rijeka Software structure analysis with help of network

More information

Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage

Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage Outline 1 Computer Architecture hardware components programming environments 2 Getting Started with Python installing Python executing Python code 3 Number Systems decimal and binary notations running

More information

Tool Support for Inspecting the Code Quality of HPC Applications

Tool Support for Inspecting the Code Quality of HPC Applications Tool Support for Inspecting the Code Quality of HPC Applications Thomas Panas Dan Quinlan Richard Vuduc Center for Applied Scientific Computing Lawrence Livermore National Laboratory P.O. Box 808, L-550

More information

16 Collection Classes

16 Collection Classes 16 Collection Classes Collections are a key feature of the ROOT system. Many, if not most, of the applications you write will use collections. If you have used parameterized C++ collections or polymorphic

More information

Implementing Statically Typed Object-Oriented Programming Languages

Implementing Statically Typed Object-Oriented Programming Languages Implementing Statically Typed Object-Oriented Programming Languages ROLAND DUCOURNAU LIRMM CNRS et Université Montpellier II, France Object-oriented programming represents an original implementation issue

More information

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. 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

More information

RTAP Database Lifecycle Management

RTAP Database Lifecycle Management SYSTEMS INC. RTAP Database Lifecycle Management Abstract: This paper will describe the typical RTAP database lifecycle and how the tessernet Systems Inc. tools can make this process easier to manage and

More information

C# and Other Languages

C# and Other Languages C# and Other Languages Rob Miles Department of Computer Science Why do we have lots of Programming Languages? Different developer audiences Different application areas/target platforms Graphics, AI, List

More information

Driving force. What future software needs. Potential research topics

Driving force. What future software needs. Potential research topics Improving Software Robustness and Efficiency Driving force Processor core clock speed reach practical limit ~4GHz (power issue) Percentage of sustainable # of active transistors decrease; Increase in #

More information

Leveraging the Eclipse TPTP* Agent Infrastructure

Leveraging the Eclipse TPTP* Agent Infrastructure 2005 Intel Corporation; made available under the EPL v1.0 March 3, 2005 Eclipse is a trademark of Eclipse Foundation, Inc 1 Leveraging the Eclipse TPTP* Agent Infrastructure Andy Kaylor Intel Corporation

More information

Java Coding Practices for Improved Application Performance

Java Coding Practices for Improved Application Performance 1 Java Coding Practices for Improved Application Performance Lloyd Hagemo Senior Director Application Infrastructure Management Group Candle Corporation In the beginning, Java became the language of the

More information

Configuration Management

Configuration Management 83 Chapter 6 Configuration Management Published as: Configuration Management in Component Based Product Populations, Rob van Ommering, 10th International Workshop on Software Configuration Management,

More information

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

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

More information

1 How to Monitor Performance

1 How to Monitor Performance 1 How to Monitor Performance Contents 1.1. Introduction... 1 1.2. Performance - some theory... 1 1.3. Performance - basic rules... 3 1.4. Recognizing some common performance problems... 3 1.5. Monitoring,

More information

Visual Basic. murach's TRAINING & REFERENCE

Visual Basic. murach's TRAINING & REFERENCE TRAINING & REFERENCE murach's Visual Basic 2008 Anne Boehm lbm Mike Murach & Associates, Inc. H 1-800-221-5528 (559) 440-9071 Fax: (559) 440-0963 murachbooks@murach.com www.murach.com Contents Introduction

More information

Ruby on Rails. a high-productivity web application framework. blog.curthibbs.us/ http://blog. Curt Hibbs

Ruby on Rails. a high-productivity web application framework. blog.curthibbs.us/ http://blog. Curt Hibbs <curt@hibbs.com> Ruby on Rails a high-productivity web application framework http://blog blog.curthibbs.us/ Curt Hibbs Agenda What is Ruby? What is Rails? Live Demonstration (sort of ) Metrics for Production

More information

Distributed communication-aware load balancing with TreeMatch in Charm++

Distributed communication-aware load balancing with TreeMatch in Charm++ Distributed communication-aware load balancing with TreeMatch in Charm++ The 9th Scheduling for Large Scale Systems Workshop, Lyon, France Emmanuel Jeannot Guillaume Mercier Francois Tessier In collaboration

More information

Jonathan Worthington Scarborough Linux User Group

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.

More information

Communication Protocol

Communication Protocol Analysis of the NXT Bluetooth Communication Protocol By Sivan Toledo September 2006 The NXT supports Bluetooth communication between a program running on the NXT and a program running on some other Bluetooth

More information

Object Oriented System Development with VB.NET

Object Oriented System Development with VB.NET Chapter 1 Object Oriented System Development with Objectives In this chapter, you will: Learn about OO development and Understand object-oriented concepts Recognize the benefits of OO development Preview

More information

Object Oriented Database Management System for Decision Support System.

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

More information

PARALLEL JAVASCRIPT. Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology)

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

More information

MS10266: Programming in C# with Microsoft Visual studio 2010

MS10266: Programming in C# with Microsoft Visual studio 2010 40 HORAS INTRODUCTION The course focuses on C# program structure, language syntax, and implementation detailswith.net Framework 4.0. This course describes the new enhancements in the C# 4.0 language by

More information

Test What You ve Built

Test What You ve Built Test What You ve Built About Your Presenter IBM i Professional for 16 Years. Primary Focus is IBM i Engineering / Programming Well Versed in 2E. Well Versed in RPG (All Flavors) Well Versed in CM Products

More information

A Typing System for an Optimizing Multiple-Backend Tcl Compiler

A Typing System for an Optimizing Multiple-Backend Tcl Compiler The following paper was originally published in the Proceedings of the Fifth Annual Tcl/Tk Workshop Boston, Massachusetts, July 1997 A Typing System for an Optimizing Multiple-Backend Tcl Compiler Forest

More information

Java CPD (I) Frans Coenen Department of Computer Science

Java CPD (I) Frans Coenen Department of Computer Science Java CPD (I) Frans Coenen Department of Computer Science Content Session 1, 12:45-14:30 (First Java Programme, Inheritance, Arithmetic) Session 2, 14:45-16:45 (Input and Programme Constructs) Materials

More information