Scalable Performance for Scala Message-Passing Concurrency

Size: px
Start display at page:

Download "Scalable Performance for Scala Message-Passing Concurrency"

Transcription

1 Scalable Performance for Scala Message-Passing Concurrency Andrew Bate Department of Computer Science University of Oxford cso.io

2 Motivation Multi-core commodity hardware Non-uniform shared memory Expose potential parallelism Correctness and formal verification int arr[x][y]; Compatibility

3 Embedded DSL Bytecode rewriting Channels Scheduler Deadlock detection EMBEDDED DOMAIN-SPECIFIC LANGUAGE

4 Why an Embedded DSL? Ease of implementation Leverage existing tools Leverage known syntax Higher-order functions Rich type system Lightweight syntax Compile-time macros

5 Examples v in map ff out ff(v) def map[i, O](f: I => O)(in:?[I], out:![o]) = proc { } repeat { out! (f(in?)) } run (proc { in.closein } proc { out.closeout })

6 Examples out 1 v out 2 v v in tee out n v def tee[@specialized T](in:?[T], outs: Seq[![T]]) = proc { } var v = null val outputs = ( (out <- outs) proc { out! v })) repeat { v = in?; run outputs } run (proc { in.closein } ( (out <- outs) proc { out.closeout }))

7 1 Embedded DSL 2 Bytecode rewriting 3 Channels 4 Scheduler 5 Deadlock detection SCALABLE PERFORMANCE through bytecode rewriting

8 CPS Transformation Init Prelude Init rewinding Pre-call Call n() Call n(f) Post-call pausing Return Return

9 Analysing the call graph Transform these methods x() do() y()?() z()

10 Engineering Live variable analysis Lazy load and store Constant inlining

11 Functional Expressions for (i <- 0 until n; j <- i until n) println(i) Compiles to intwrapper(0).until(n).foreach( ) i: Int => intwrapper(i).until(n).foreach(j: Int => println(i)) Transforms to var i = 0 while (i < n) { var j = i while (j < n) { println(i); j += 1 } i += 1 }

12 More Features Tail call optimisations Shared memory SBT plugin support

13 Embedded DSL Bytecode rewriting Channels Scheduler Deadlock detection CHANNELS

14 More Features Generalised alt Specialization for primitives Optimised extended rendezvous

15 Embedded DSL Bytecode rewriting Channels Scheduler Deadlock detection SCHEDULER

16 Scheduler States Created Terminated Running Waiting Paused

17 Scheduling: Central FIFO Scheduler PP 1 PP 2 PP 3 PP nn Thread 1 Thread 2 Thread mm

18 Scheduling: FIFO per thread Scheduler PP 1 Scheduler PP 3 Scheduler PP nn Thread 1 Thread 2 Thread mm

19 Scheduling: Batches per thread Scheduler? Scheduler Scheduler?? Thread 1 Thread 2 Thread mm

20 Scheduling: Batches per thread Scheduler Dispatch Count = max const Batch Length, Dispatch Limit PP 1 PP 2 PP nn QQ 1 QQ mm RR 1 RR kk

21 Embedded DSL Bytecode rewriting Channels Scheduler Deadlock detection DEADLOCK DETECTION

22 Example Tee Tee x5 x2 x3 Merge Merge Tee Prefix 1 Console

23 Example Tee!! Tee x5! x2?? x3 Merge!! Merge Tee? Console! Prefix 1! Deadlock detected! The cycle of ungranted requests is: Prefix1 -!-> Tee1 Tee3 -!-> x5 Tee1 -!-> Tee2 x5 -!-> Merge2 Tee2 -!-> Tee3 Merge2 -!-> Prefix1

24 Embedded DSL Bytecode rewriting Channels Scheduler Deadlock detection PERFORMANCE EVALUATION

25 Ring topology Time to pass a message 300 times around an n process ring (ms) Java primitives CSO 2 FIFO Scheduler CSO 2 Batch Scheduler 100 Number n of processes spawned

26 Ring topology Java primitives Time to pass a message 300 times around an n process ring (ms) CSO 2 FIFO Scheduler CSO 2 Batch Scheduler 0 Number n of processes spawned

27 Fully connected topology Time to pass n 2 messages (ms) Erlang Scala Actors JCSP Java Primitives Occam CSO2 2 FIFO Scheduler CSO2 2 Batch Scheduler Go Number n of processes / actors spawned

28 Fully connected topology Time to pass n 2 messages (ms) Erlang Scala Actors JCSP Java Primitives Occam CSO2 2 FIFO Scheduler CSO2 2 Batch Scheduler Go Number n of processes / actors spawned

29 Fully connected topology JCSP Time to pass n 2 messages (ms) Occam CSO2 2 FIFO Scheduler CSO2 2 Batch Scheduler Go Number n of processes / actors spawned

30 Fully connected topology CSO 2 FIFO Scheduler Time to pass n 2 messages (ms) Go CSO 2 Batch Scheduler 0 Number n of processes / actors spawned

31 Summary High performance library for building massively concurrent systems on the JVM Deadlock detection Outperforms Java primitives, JCSP, Scala Actors, Occam, and very close to Go

Scala Actors. Scalable Multithreading on the JVM. Philipp Haller. Ph.D. candidate Programming Methods Lab EPFL, Lausanne, Switzerland

Scala Actors. Scalable Multithreading on the JVM. Philipp Haller. Ph.D. candidate Programming Methods Lab EPFL, Lausanne, Switzerland Scala Actors Scalable Multithreading on the JVM Philipp Haller Ph.D. candidate Programming Methods Lab EPFL, Lausanne, Switzerland The free lunch is over! Software is concurrent Interactive applications

More information

Advances in Programming Languages

Advances in Programming Languages O T Y H Advances in Programming Languages APL5: Further language concurrency mechanisms David Aspinall (including slides by Ian Stark) School of Informatics The University of Edinburgh Tuesday 5th October

More information

Executive Summary. It is important for a Java Programmer to understand the power and limitations of concurrent programming in Java using threads.

Executive Summary. It is important for a Java Programmer to understand the power and limitations of concurrent programming in Java using threads. Executive Summary. It is important for a Java Programmer to understand the power and limitations of concurrent programming in Java using threads. Poor co-ordination that exists in threads on JVM is bottleneck

More information

The Abstract Behavioral Specification Language

The Abstract Behavioral Specification Language The Abstract Behavioral Specification Language Frank S. de Boer CWI frb@cwi.nl Scientific Meeting CWI, November 29, 2013 How It All Started? Simula (Ole Johan Dahl, Turing award 2001) Credo FP6 project

More information

Concepts of Programming Design

Concepts of Programming Design Concepts of Programming Design Scala and Lightweight Modular Staging (LMS) Alexey Rodriguez Blanter, Ferenc Balla, Matthijs Steen, Ruben Meerkerk, Ratih Ngestrini 1 Scala and Lightweight Modular Staging

More information

CS205: Scalable Software Systems

CS205: Scalable Software Systems CS205: Scalable Software Systems Lecture 4 September 14, 2016 Lecture 4 CS205: Scalable Software Systems September 14, 2016 1 / 16 Quick Recap Things covered so far Problem solving by recursive decomposition

More information

Programming Safe Agents in Blueprint. Alex Muscar University of Craiova

Programming Safe Agents in Blueprint. Alex Muscar University of Craiova Programming Safe Agents in Blueprint Alex Muscar University of Craiova Programmers are craftsmen, and, as such, they are only as productive as theirs tools allow them to be Introduction Agent Oriented

More information

Reminder from last time

Reminder from last time Concurrent systems Lecture 5: Concurrency without shared data, composite operations and transactions, and serialisability DrRobert N. M. Watson 1 Reminder from last time Liveness properties Deadlock (requirements;

More information

First-Class Synchronization Barriers. Franklyn Turbak Wellesley College

First-Class Synchronization Barriers. Franklyn Turbak Wellesley College First-Class Synchronization Barriers Franklyn Turbak Wellesley College Overview What is a Synchronization Barrier? Dimensions of Barriers Synchrons: First-Class Barriers with a Variable Number of Participants

More information

Inter-process communication (IPC)

Inter-process communication (IPC) Inter-process communication (IPC) We have studied IPC via shared data in main memory. Processes in separate address spaces also need to communicate. Consider system architecture both shared memory and

More information

Scala, Your Next Programming Language

Scala, Your Next Programming Language Scala, Your Next Programming Language (or if it is good enough for Twitter, it is good enough for me) WORLDCOMP 2011 By Dr. Mark C. Lewis Trinity University Disclaimer I am writing a Scala textbook that

More information

Reactive App using Actor model & Apache Spark. Rahul Kumar Software

Reactive App using Actor model & Apache Spark. Rahul Kumar Software Reactive App using Actor model & Apache Spark Rahul Kumar Software Developer @rahul_kumar_aws About Sigmoid We build realtime & big data systems. OUR CUSTOMERS Agenda Big Data - Intro Distributed Application

More information

Philipp Wille. Beyond Scala s Standard Library

Philipp Wille. Beyond Scala s Standard Library Scala Enthusiasts BS Philipp Wille Beyond Scala s Standard Library OO or Functional Programming? Martin Odersky: Systems should be composed from modules. Modules should be simple parts that can be combined

More information

Arne Brüsch Philipp Wille. Pattern Matching Syntax

Arne Brüsch Philipp Wille. Pattern Matching Syntax Scala Enthusiasts BS Arne Brüsch Philipp Wille Pattern Matching Syntax Scala Modular programming language Some used to call it objectfunctional 2 Scala Modular programming language Some used to call it

More information

Research compiler that will become Scala 3 Type system internals redesigned, inspired by DOT, but externally very similar More info:

Research compiler that will become Scala 3 Type system internals redesigned, inspired by DOT, but externally very similar More info: INTEGRATING IDEs WITH DOTTY Guillaume Martres - EPFL 1 WHAT IS DOTTY? Research compiler that will become Scala 3 Type system internals redesigned, inspired by DOT, but externally very similar More info:

More information

Programming Kotlin. Familiarize yourself with all of Kotlin s features with this in-depth guide. Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI

Programming Kotlin. Familiarize yourself with all of Kotlin s features with this in-depth guide. Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI Programming Kotlin Familiarize yourself with all of Kotlin s features with this in-depth guide Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI Programming Kotlin Copyright 2017 Packt Publishing First

More information

Introduction to High Performance Computing and X10

Introduction to High Performance Computing and X10 Introduction to High Performance Computing and X10 Special Topic For Comp 621 Vineet Kumar High Performance Computing Supercomputing Grid computers, Multi-cores, clusters massively parallel computing Used

More information

An Overview of Scala. Philipp Haller, EPFL. (Lots of things taken from Martin Odersky's Scala talks)

An Overview of Scala. Philipp Haller, EPFL. (Lots of things taken from Martin Odersky's Scala talks) An Overview of Scala Philipp Haller, EPFL (Lots of things taken from Martin Odersky's Scala talks) The Scala Programming Language Unifies functional and object-oriented programming concepts Enables embedding

More information

Scala : an LLVM-targeted Scala compiler

Scala : an LLVM-targeted Scala compiler Scala : an LLVM-targeted Scala compiler Da Liu, UNI: dl2997 Contents 1 Background 1 2 Introduction 1 3 Project Design 1 4 Language Prototype Features 2 4.1 Language Features........................................

More information

Concepts of Object-Oriented Programming Peter Müller

Concepts of Object-Oriented Programming Peter Müller Concepts of Object-Oriented Programming Peter Müller Chair of Programming Methodology Autumn Semester 2017 1.2 Introduction Core Concepts 2 Meeting the Requirements Cooperating Program Parts with Well-Defined

More information

Microservices. Webservices with Scala (II) Microservices

Microservices. Webservices with Scala (II) Microservices Microservices Webservices with Scala (II) Microservices 2018 1 Content Deep Dive into Play2 1. Database Access with Slick 2. Database Migration with Flyway 3. akka 3.1. overview 3.2. akka-http (the http

More information

Concepts of Object-Oriented Programming Peter Müller

Concepts of Object-Oriented Programming Peter Müller Concepts of Object-Oriented Programming Peter Müller Chair of Programming Methodology Autumn Semester 2017 1.2 Introduction Core Concepts 2 Meeting the Requirements Cooperating Program Parts with Well-Defined

More information

CONCURRENCY AND THE ACTOR MODEL

CONCURRENCY AND THE ACTOR MODEL CONCURRENCY AND THE ACTOR MODEL COMP 319 University of Liverpool slide 1 Concurrency review Multi-tasking - Task - Processes with isolated address space - Programming examples - Unix fork() processes -

More information

Using Scala for building DSL s

Using Scala for building DSL s Using Scala for building DSL s Abhijit Sharma Innovation Lab, BMC Software 1 What is a DSL? Domain Specific Language Appropriate abstraction level for domain - uses precise concepts and semantics of domain

More information

An Architecture and Implementation of the Actor Model of Concurrency

An Architecture and Implementation of the Actor Model of Concurrency An Architecture and Implementation of the Actor Model of Concurrency Kwabena Aning Department of Computer Science and Information Systems Birkbeck College, University of London London, WC1E 7HX Email:

More information

Konzepte von Programmiersprachen

Konzepte von Programmiersprachen Konzepte von Programmiersprachen Chapter 5: Continuation-Passing Interpreters Stefan Wehr Universität Freiburg 8. Juni 2009 Konzepte von Programmiersprachen 1 / 43 Motivation Continuations: abstraction

More information

Scala. Fernando Medeiros Tomás Paim

Scala. Fernando Medeiros Tomás Paim Scala Fernando Medeiros fernfreire@gmail.com Tomás Paim tomasbmp@gmail.com Topics A Scalable Language Classes and Objects Basic Types Functions and Closures Composition and Inheritance Scala s Hierarchy

More information

CS 2340 Objects and Design - Scala

CS 2340 Objects and Design - Scala CS 2340 Objects and Design - Scala Objects and Operators Christopher Simpkins chris.simpkins@gatech.edu Chris Simpkins (Georgia Tech) CS 2340 Objects and Design - Scala Objects and Operators 1 / 13 Classes

More information

Practical Affine Types and Typestate-Oriented Programming

Practical Affine Types and Typestate-Oriented Programming Practical Affine Types and Typestate-Oriented Programming Philipp Haller KTH Royal Institute of Technology Stockholm, Sweden Dagstuhl Seminar 17051 Theory and Applications of Behavioural Types Schloss

More information

Generating Continuation Passing Style Code for the Co-op Language

Generating Continuation Passing Style Code for the Co-op Language Generating Continuation Passing Style Code for the Co-op Language Mark Laarakkers University of Twente Faculty: Computer Science Chair: Software engineering Graduation committee: dr.ing. C.M. Bockisch

More information

Flow-sensitive rewritings and Inliner improvements for the Graal JIT compiler

Flow-sensitive rewritings and Inliner improvements for the Graal JIT compiler 1 / 25 Flow-sensitive rewritings and for the Graal JIT compiler Miguel Garcia http://lampwww.epfl.ch/~magarcia/ 2014-07-07 2 / 25 Outline Flow-sensitive rewritings during HighTier Example Rewritings in

More information

Clojure. A Dynamic Programming Language for the JVM. Rich Hickey

Clojure. A Dynamic Programming Language for the JVM. Rich Hickey Clojure A Dynamic Programming Language for the JVM Rich Hickey Clojure Fundamentals 3 years in development, released 10/2007 A new Lisp, not Common Lisp or Scheme Functional emphasis on immutability Supporting

More information

Parsing Scheme (+ (* 2 3) 1) * 1

Parsing Scheme (+ (* 2 3) 1) * 1 Parsing Scheme + (+ (* 2 3) 1) * 1 2 3 Compiling Scheme frame + frame halt * 1 3 2 3 2 refer 1 apply * refer apply + Compiling Scheme make-return START make-test make-close make-assign make- pair? yes

More information

sample exam Concurrent Programming tda383/dit390 Sample exam March 2016 Time:?? Place: Johanneberg

sample exam Concurrent Programming tda383/dit390 Sample exam March 2016 Time:?? Place: Johanneberg sample exam Concurrent Programming tda383/dit390 Sample exam March 2016 Time:?? Place: Johanneberg Responsible Michał Pałka 0707966066 Result Available no later than?-?-2016 Aids Max 2 books and max 4

More information

CS Programming Languages: Scala

CS Programming Languages: Scala CS 3101-2 - Programming Languages: Scala Lecture 6: Actors and Concurrency Daniel Bauer (bauer@cs.columbia.edu) December 3, 2014 Daniel Bauer CS3101-2 Scala - 06 - Actors and Concurrency 1/19 1 Actors

More information

THEATR An actor based language

THEATR An actor based language Group members: Beatrix Carroll (bac2108) Suraj Keshri (skk2142) Michael Lin (mbl2109) Linda Ortega Cordoves (lo2258) THEATR An actor based language Goal Create an actor-based language with fault-tolerance

More information

Akka: Simpler Concurrency, Scalability & Fault-tolerance through Actors. Jonas Bonér Viktor Klang

Akka: Simpler Concurrency, Scalability & Fault-tolerance through Actors. Jonas Bonér Viktor Klang Akka: Simpler Concurrency, Scalability & Fault-tolerance through Actors Jonas Bonér Viktor Klang We believe that... Writing correct concurrent applications is too hard Scaling out applications is too hard

More information

Lecture 09: Introduction to Scala

Lecture 09: Introduction to Scala Lecture 09: Introduction to Scala Computer Science Department, University of Crete Multicore Processor Programming Based on slides by D. Malayeri, S.D. Vick, P. Haller, and M. Madsen Pratikakis (CSD) Scala

More information

Course 7 25 November Adrian Iftene

Course 7 25 November Adrian Iftene Course 7 25 November 2013 Adrian Iftene adiftene@info.uaic.ro 1 Recapitulation course 6 AOP AOP Profiler Tracing Pooling PostSharp Spring Framework Runtime Verification Model Checking MOP Java MOP 2 Concern

More information

The Problem with Threads

The Problem with Threads The Problem with Threads Author Edward A Lee Presented by - Varun Notibala Dept of Computer & Information Sciences University of Delaware Threads Thread : single sequential flow of control Model for concurrent

More information

Functional programming is a productive

Functional programming is a productive Editor: Steve Vinoski vinoski@ieee.org The Functional Web ClojureScript: Functional Programming for JavaScript Platforms Mark McGranaghan Heroku Functional programming is a productive approach to writing

More information

The Actor Model. Towards Better Concurrency. By: Dror Bereznitsky

The Actor Model. Towards Better Concurrency. By: Dror Bereznitsky The Actor Model Towards Better Concurrency By: Dror Bereznitsky 1 Warning: Code Examples 2 Agenda Agenda The end of Moore law? Shared state concurrency Message passing concurrency Actors on the JVM More

More information

CS 261 Fall Mike Lam, Professor. Threads

CS 261 Fall Mike Lam, Professor. Threads CS 261 Fall 2017 Mike Lam, Professor Threads Parallel computing Goal: concurrent or parallel computing Take advantage of multiple hardware units to solve multiple problems simultaneously Motivations: Maintain

More information

Monadologie. professional help for type anxiety. Christopher League 12 July 2010

Monadologie. professional help for type anxiety. Christopher League 12 July 2010 Monadologie professional help for type anxiety Christopher League 12 July 2010 Monadologie github.com/league/scala-type-anxiety @chrisleague league@contrapunctus.net 1996 Principles of Programming Languages

More information

Scala Java Sparkle Monday, April 16, 2012

Scala Java Sparkle Monday, April 16, 2012 Scala Java Sparkle Scala Scala Java Scala "Which Programming Language would you use *now* on top of JVM, except Java?". The answer was surprisingly fast and very clear: - Scala. http://www.adam-bien.com/roller/abien/entry/java_net_javaone_which_programming

More information

Seminar on Languages for Scientific Computing Aachen, 6 Feb Navid Abbaszadeh.

Seminar on Languages for Scientific Computing Aachen, 6 Feb Navid Abbaszadeh. Scientific Computing Aachen, 6 Feb 2014 navid.abbaszadeh@rwth-aachen.de Overview Trends Introduction Paradigms, Data Structures, Syntax Compilation & Execution Concurrency Model Reference Types Performance

More information

Building Vaadin Applications With Pure Scala

Building Vaadin Applications With Pure Scala Building Vaadin Applications With Pure Scala Henri Kerola Vaadin Expert at Vaadin Ltd ? Vaadin is a UI framework for rich web applications java html Internet Explorer Chrome Firefox Safari Opera

More information

Parallel Programming Concepts. Theory of Concurrency - Multicomputer. Peter Tröger

Parallel Programming Concepts. Theory of Concurrency - Multicomputer. Peter Tröger Parallel Programming Concepts Theory of Concurrency - Multicomputer Peter Tröger History 1963: Co-Routines concept by Melvin Conway Foundation for message-based concurrency concepts Late 1970 s Parallel

More information

Deterministic Concurrency

Deterministic Concurrency Candidacy Exam p. 1/35 Deterministic Concurrency Candidacy Exam Nalini Vasudevan Columbia University Motivation Candidacy Exam p. 2/35 Candidacy Exam p. 3/35 Why Parallelism? Past Vs. Future Power wall:

More information

Embedded Domain Specific Language Implementation using Dependent Types

Embedded Domain Specific Language Implementation using Dependent Types Embedded Domain Specific Language Implementation using Dependent Types Edwin Brady eb@cs.st-andrews.ac.uk University of St Andrews GPCE/SLE, Eindhoven, 10/10/10 GPCE/SLE, Eindhoven, 10/10/10 p.1/36 Introduction

More information

GNU ccscript Scripting Guide IV

GNU ccscript Scripting Guide IV GNU ccscript Scripting Guide IV David Sugar GNU Telephony 2008-08-20 (The text was slightly edited in 2017.) Contents 1 Introduction 1 2 Script file layout 2 3 Statements and syntax 4 4 Loops and conditionals

More information

Scala. Introduction. Scala

Scala. Introduction. Scala Scala Introduction 1 Scala Scala was proposed by Professor Martin Odersky and his group at EPFL in 2003 to provide a highperformance, concurrent-ready environment for functional programming and object-oriented

More information

The Stop Programming Language

The Stop Programming Language The Stop Programming Language Stop, a Simple functional Object oriented Programming language Jonathan Barrios ( jeb2239), Jillian Knoll (jak2246), Lusa Zhan (lz2371), and James Stenger (jms2431) February

More information

Haskell in the corporate environment. Jeff Polakow October 17, 2008

Haskell in the corporate environment. Jeff Polakow October 17, 2008 Haskell in the corporate environment Jeff Polakow October 17, 2008 Talk Overview Haskell and functional programming System description Haskell in the corporate environment Functional Programming in Industry

More information

CS 351 Design of Large Programs Programming Abstractions

CS 351 Design of Large Programs Programming Abstractions CS 351 Design of Large Programs Programming Abstractions Brooke Chenoweth University of New Mexico Spring 2019 Searching for the Right Abstraction The language we speak relates to the way we think. The

More information

Evolution of an Apache Spark Architecture for Processing Game Data

Evolution of an Apache Spark Architecture for Processing Game Data Evolution of an Apache Spark Architecture for Processing Game Data Nick Afshartous WB Analytics Platform May 17 th 2017 May 17 th, 2017 About Me nafshartous@wbgames.com WB Analytics Core Platform Lead

More information

Mobile Process Resumption In Java Without Bytecode Rewriting

Mobile Process Resumption In Java Without Bytecode Rewriting Mobile Process Resumption In Java Without Bytecode Rewriting Matthew Sowders University of Nevada, Las Vegas Las Vegas, Nevada 89154 E-mail: sowders@unlv.nevada.edu Jan Bækgaard Pedersen University of

More information

Compiler Construction

Compiler Construction Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-16/cc/ Seminar Analysis and Verification of Pointer Programs (WS

More information

Implementing Higher-Level Languages. Quick tour of programming language implementation techniques. From the Java level to the C level.

Implementing Higher-Level Languages. Quick tour of programming language implementation techniques. From the Java level to the C level. Implementing Higher-Level Languages Quick tour of programming language implementation techniques. From the Java level to the C level. Ahead-of-time compiler compile time C source code C compiler x86 assembly

More information

Software Architecture

Software Architecture Software Architecture Lecture 5 Call-Return Systems Rob Pettit George Mason University last class data flow data flow styles batch sequential pipe & filter process control! process control! looping structure

More information

List of lectures. Lecture content. Symbolic Programming. TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger

List of lectures. Lecture content. Symbolic Programming. TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger List of lectures TDDA69 Data and Program Structure Symbolic and Logic Programming Cyrille Berger 1Introduction and Functional Programming 2Imperative Programming and Data Structures 3Parsing 4Evaluation

More information

F# for Industrial Applications Worth a Try?

F# for Industrial Applications Worth a Try? F# for Industrial Applications Worth a Try? Jazoon TechDays 2015 Dr. Daniel Egloff Managing Director Microsoft MVP daniel.egloff@quantalea.net October 23, 2015 Who are we Software and solution provider

More information

Multicore Scheduling for Lightweight Communicating Processes

Multicore Scheduling for Lightweight Communicating Processes Multicore Scheduling for Lightweight Communicating Processes Carl G. Ritson, Adam T. Sampson, Frederick R.M. Barnes School of Computing, University of Kent, Canterbury, Kent, UK Abstract Process-oriented

More information

Towards Millions of Processes on the JVM

Towards Millions of Processes on the JVM Communicating Process Architectures 2014 P.H. Welch et al. (Eds.) Open Channel Publishing Ltd., 2014 2014 The authors and Open Channel Publishing Ltd. All rights reserved. 1 Towards Millions of Processes

More information

Buy a Feature: an Adventure in Immutability and Actors. David Pollak BayFP August 22, 2008

Buy a Feature: an Adventure in Immutability and Actors. David Pollak BayFP August 22, 2008 Buy a Feature: an Adventure in Immutability and Actors David Pollak BayFP August 22, 2008 David Pollak Not strict, but pretty lazy Lead developer for Lift web framework Scala since November 2006, Ruby/Rails,

More information

The SCAlable LAnguage

The SCAlable LAnguage The SCAlable LAnguage The Scala Language: Object Oriented Functional Programming Gabor Szokoli Overview Introduction Everything is an Object Inheritance and mixins For comprehensions Generic Types: Covariance,

More information

Compiler Construction

Compiler Construction Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-16/cc/ Seminar Analysis and Verification of Pointer Programs (WS

More information

Favoring Isolated Mutability The Actor Model of Concurrency. CSCI 5828: Foundations of Software Engineering Lecture 24 04/11/2012

Favoring Isolated Mutability The Actor Model of Concurrency. CSCI 5828: Foundations of Software Engineering Lecture 24 04/11/2012 Favoring Isolated Mutability The Actor Model of Concurrency CSCI 5828: Foundations of Software Engineering Lecture 24 04/11/2012 1 Goals Review the material in Chapter 8 of the Concurrency textbook that

More information

Notes from a Short Introductory Lecture on Scala (Based on Programming in Scala, 2nd Ed.)

Notes from a Short Introductory Lecture on Scala (Based on Programming in Scala, 2nd Ed.) Notes from a Short Introductory Lecture on Scala (Based on Programming in Scala, 2nd Ed.) David Haraburda January 30, 2013 1 Introduction Scala is a multi-paradigm language that runs on the JVM (is totally

More information

Administration CS 412/413. Why build a compiler? Compilers. Architectural independence. Source-to-source translator

Administration CS 412/413. Why build a compiler? Compilers. Architectural independence. Source-to-source translator CS 412/413 Introduction to Compilers and Translators Andrew Myers Cornell University Administration Design reports due Friday Current demo schedule on web page send mail with preferred times if you haven

More information

Fully Automatic and Precise Detection of Thread Safety Violations

Fully Automatic and Precise Detection of Thread Safety Violations Fully Automatic and Precise Detection of Thread Safety Violations Michael Pradel and Thomas R. Gross Department of Computer Science ETH Zurich 1 Motivation Thread-safe classes: Building blocks for concurrent

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 4 Thomas Wies New York University Review Last week Control Structures Selection Loops Adding Invariants Outline Subprograms Calling Sequences Parameter

More information

Learning objectives. The Java Environment. Java timeline (cont d) Java timeline. Understand the basic features of Java

Learning objectives. The Java Environment. Java timeline (cont d) Java timeline. Understand the basic features of Java Learning objectives The Java Environment Understand the basic features of Java What are portability and robustness? Understand the concepts of bytecode and interpreter What is the JVM? Learn few coding

More information

G Programming Languages Spring 2010 Lecture 4. Robert Grimm, New York University

G Programming Languages Spring 2010 Lecture 4. Robert Grimm, New York University G22.2110-001 Programming Languages Spring 2010 Lecture 4 Robert Grimm, New York University 1 Review Last week Control Structures Selection Loops 2 Outline Subprograms Calling Sequences Parameter Passing

More information

Compiler Construction

Compiler Construction Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ws-1819/cc/ Generation of Intermediate Code Outline of Lecture 15

More information

Taming the Java Virtual Machine. Li Haoyi, Chicago Scala Meetup, 19 Apr 2017

Taming the Java Virtual Machine. Li Haoyi, Chicago Scala Meetup, 19 Apr 2017 Taming the Java Virtual Machine Li Haoyi, Chicago Scala Meetup, 19 Apr 2017 Who Am I? Previously: Dropbox Engineering Currently: Bright Technology Services - Data Science, Scala consultancy Fluent Code

More information

Assumptions. History

Assumptions. History Assumptions A Brief Introduction to Java for C++ Programmers: Part 1 ENGI 5895: Software Design Faculty of Engineering & Applied Science Memorial University of Newfoundland You already know C++ You understand

More information

A Survey of Concurrency Constructs. Ted Leung Sun

A Survey of Concurrency Constructs. Ted Leung Sun A Survey of Concurrency Constructs Ted Leung Sun Microsystems ted.leung@sun.com @twleung 16 threads 128 threads Today s model Threads Program counter Own stack Shared Memory Locks Some of the problems

More information

Effectively Mapping Linguistic Abstractions for Message-passing Concurrency to Threads on the Java Virtual Machine

Effectively Mapping Linguistic Abstractions for Message-passing Concurrency to Threads on the Java Virtual Machine Effectively Mapping Linguistic Abstractions for Message-passing Concurrency to Threads on the Java Virtual Machine Ganesha Upadhyaya ganeshau@iastate.edu Iowa State University Hridesh Rajan hridesh@iastate.edu

More information

Who am I? Harlan Iverson. Programming enthusiast. Seeker of truth. Imperfect. I'll be wrong about some things. Please correct me if you can.

Who am I? Harlan Iverson. Programming enthusiast. Seeker of truth. Imperfect. I'll be wrong about some things. Please correct me if you can. Who am I? Harlan Iverson. Programming enthusiast. Seeker of truth. Imperfect. I'll be wrong about some things. Please correct me if you can. P.S... I hate boring presentations. Please, engage and stay

More information

Look at all these toys!

Look at all these toys! Look at all these toys! Help it s Ruby! All alone Is Ruby dying? Where do Rubyists go? Where do Rubyists go? Tobias Pfeiffer @PragTob pragtob.info 673 Responses First Rails Release Rails 1.0 Why did

More information

Programming Languages

Programming Languages Trends in Programming Languages ICALEPCS 2011 Markus Voelter Independent/itemis voelter@acm.org A single language to rule them all An ecosystem of languages An ecosystem of languages The Pendulum Swings

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 3 Thomas Wies New York University Review Last week Names and Bindings Lifetimes and Allocation Garbage Collection Scope Outline Control Flow Sequencing

More information

Shared state model. April 3, / 29

Shared state model. April 3, / 29 Shared state April 3, 2012 1 / 29 the s s limitations of explicit state: cells equivalence of the two s programming in limiting interleavings locks, monitors, transactions comparing the 3 s 2 / 29 Message

More information

First Programming Language in CS Education The Arguments for Scala

First Programming Language in CS Education The Arguments for Scala First Programming Language in CS Education The Arguments for Scala WORLDCOMP 2011 By Dr. Mark C. Lewis Trinity University Disclaimer I am writing a Scala textbook that is under contract with CRC Press.

More information

Models and languages of concurrent computation

Models and languages of concurrent computation Models and languages of concurrent computation Lecture 11 of TDA383/DIT390 (Concurrent Programming) Carlo A. Furia Chalmers University of Technology University of Gothenburg SP3 2016/2017 Today s menu

More information

Optimizing Higher-Order Functions in Scala

Optimizing Higher-Order Functions in Scala Optimizing Higher-Order Functions in Scala Iulian Dragos EPFL Outline A quick tour of Scala Generalities Extension through libraries Closure translation in Scala Cost Optimizations in the Scala compiler

More information

A Little Bit of Scala and Customized Circuit Generation

A Little Bit of Scala and Customized Circuit Generation 1 / 38 A Little Bit of Scala and Customized Circuit Generation Martin Schoeberl Technical University of Denmark February 1, 2018 2 / 38 Chisel and Scala Chisel is a library written in Scala Import the

More information

2 Introduction to Java. Introduction to Programming 1 1

2 Introduction to Java. Introduction to Programming 1 1 2 Introduction to Java Introduction to Programming 1 1 Objectives At the end of the lesson, the student should be able to: Describe the features of Java technology such as the Java virtual machine, garbage

More information

SECOND EDITION SOURCE CODE ONLINE

SECOND EDITION SOURCE CODE ONLINE For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to access them. m62 Contents at a Glance About the Authors...

More information

Clojure. A (not-so-pure) functional approach to concurrency. Paolo Baldan Linguaggi per il Global Computing AA 2016/2017

Clojure. A (not-so-pure) functional approach to concurrency. Paolo Baldan Linguaggi per il Global Computing AA 2016/2017 Clojure A (not-so-pure) functional approach to concurrency Paolo Baldan Linguaggi per il Global Computing AA 2016/2017 In the words of the inventor Functional programming (rooted in Lisp, from 60s old

More information

Efficient Data Race Detection for Unified Parallel C

Efficient Data Race Detection for Unified Parallel C P A R A L L E L C O M P U T I N G L A B O R A T O R Y Efficient Data Race Detection for Unified Parallel C ParLab Winter Retreat 1/14/2011" Costin Iancu, LBL" Nick Jalbert, UC Berkeley" Chang-Seo Park,

More information

Functional Programming and Haskell

Functional Programming and Haskell Functional Programming and Haskell Tim Dawborn University of Sydney, Australia School of Information Technologies Tim Dawborn Functional Programming and Haskell 1/22 What are Programming Paradigms? A programming

More information

What Came First? The Ordering of Events in

What Came First? The Ordering of Events in What Came First? The Ordering of Events in Systems @kavya719 kavya the design of concurrent systems Slack architecture on AWS systems with multiple independent actors. threads in a multithreaded program.

More information

Functional Programming. Pure Functional Programming

Functional Programming. Pure Functional Programming Functional Programming Pure Functional Programming Computation is largely performed by applying functions to values. The value of an expression depends only on the values of its sub-expressions (if any).

More information

Manchester University Transactions for Scala

Manchester University Transactions for Scala Manchester University Transactions for Scala Salman Khan salman.khan@cs.man.ac.uk MMNet 2011 Transactional Memory Alternative to locks for handling concurrency Locks Prevent all other threads from accessing

More information

Time : 3 hours. Full Marks : 75. Own words as far as practicable. The questions are of equal value. Answer any five questions.

Time : 3 hours. Full Marks : 75. Own words as far as practicable. The questions are of equal value. Answer any five questions. XEV (H-3) BCA (6) 2 0 1 0 Time : 3 hours Full Marks : 75 Candidates are required to give their answers in their Own words as far as practicable. The questions are of equal value. Answer any five questions.

More information

JDK 9/10/11 and Garbage Collection

JDK 9/10/11 and Garbage Collection JDK 9/10/11 and Garbage Collection Thomas Schatzl Senior Member of Technical Staf Oracle JVM Team May, 2018 thomas.schatzl@oracle.com Copyright 2017, Oracle and/or its afliates. All rights reserved. 1

More information

A Performance Tale. The evolution of binding in JavaFX. Robert Field Brian Goetz Sun Microsystems, Inc.

A Performance Tale. The evolution of binding in JavaFX. Robert Field Brian Goetz Sun Microsystems, Inc. A Performance Tale The evolution of binding in JavaFX Robert Field Brian Goetz Sun Microsystems, Inc. Overview This talk will chronicle our ongoing work on making JavaFX Script not only powerful and fun

More information