Lisp to Ruby to Rubinius
|
|
- Felicia Stafford
- 5 years ago
- Views:
Transcription
1 Lisp to Ruby to Rubinius ネットワーク応用通信研究所楽天技術研究所 Ruby Yukihiro "Matz" Matsumoto
2 Lisp 1/59
3 Lisp one of the oldest O-Parts out of place artifact 2/59
4 O-Parts of the language oldest but newest symbolic computation garbage collection objects exceptions 3/59
5 Lisp S-expression macros everything object meta-programming 4/59
6 Dark side of Lisp Parentheses dangling language there's no lisp language CLOS powerful but complex 5/59
7 Ruby Lispy, but no S-expression no macros no CLOS 6/59
8 Ruby Algol-ish syntax Smalltalk-ish OO Language for ordinary programmers 7/59
9 Lisp (defun fact (n) (if (= n 1) 1 (* n (fact (1- n))))) (print (format "6!=~D" (fact 6))) ; => 6!=720 8/59
10 Lisp ;; move parens (defun fact (n) (if (= n 1) 1 (* n (fact (1- n))) ) ) (print (format "6!=~D" (fact 6))) 9/59
11 Lisp ;; operator syntax (defun fact (n) (if (n == 1) 1 (n * (fact (n - 1))) ) ) (print (format "6!=~D" (fact 6))) 10/59
12 Lisp ;; move argument parens (defun fact (n) (if (n == 1) 1 (n * fact(n - 1)) ) ) print(format("6!=~d", fact(6))) 11/59
13 Lisp ;; move argument parens (defun fact (n) (if (n == 1) 1 (n * fact(n - 1)) ) ) print(format("6!=~d", fact(6))) 12/59
14 Lisp # syntax structures defun fact (n) if (n == 1) 1 else (n * fact(n - 1)) end end print(format("6!=~d", fact(6))) 13/59
15 Lisp # reduce parens defun fact (n) if n == 1 1 else n * fact(n - 1) end end print(format("6!=~d", fact(6))) 14/59
16 Ruby def fact (n) if n == 0 1 else n * fact(n - 1) end end printf "6!=%d", fact(6), "\n" # => 6!=720 15/59
17 Lisp vs Ruby Syntax Less parentheses Many 'end's special forms vs syntax structures 16/59
18 Lisp vs Ruby Semantics Quite similar nearly one to one translation auto conversion from fixnums to bignums fact /59
19 MatzLisp 18/59
20 MatzLisp not MacLisp not FranzLisp 19/59
21 Ruby Lisp without S-expression sprinkled with syntax sugar with OO from Smalltalk operators from C strings/regexp from Perl 20/59
22 Lisp without S-expr Remember M-expression 21/59
23 Ruby = Weak Lisp? No S-expression No Macro Who cares. 22/59
24 Language Power Programming Power 23/59
25 Personal History BASIC to Lisp 24/59
26 BASIC 25/59
27 BASIC 26/59
28 Got tired of BASIC No user defined functions No user defined data types 27/59
29 Aristocracy Language Designers Implementers Programmers 28/59
30 I met Lisp in an AI book Lisp made my eyes open users can do everything 29/59
31 Users can do Everything define functions define data types enhance the language 30/59
32 Democracy no discrimination users can be language implementers 31/59
33 But, wait Unlike politics (or like politics) freedom comes with responsibility ordinary people hate (too much) responsibility or too much power 32/59
34 Too much power smart people love power smart people underestimate ordinarity of ordinary people 33/59
35 中庸 Happy Medium 34/59
36 Happy Medium There should be somewhere in between language aristocracy and democracy, where ordinary people can live happily, without feeling fear. 35/59
37 Balance It's quite easy to pursue extreme, but seeking 'something in-between' is far more difficult. 36/59
38 Ruby 37/59
39 Ruby My answer to the ultimate question. 38/59
40 Result 39/59
41 Self-sustaining languages C Lisp MFTL Ruby 40/59
42 My Favorite Toy Language n. Describes a language about which the developers are passionate but no one else cares about. --Jargon File 41/59
43 My Favorite Toy Language The first great goal in the mind of the designer of an MFTL is usually to write a compiler for it --Jargon File 42/59
44 I am not a fan of metacircular implementation 43/59
45 Switching the brain C Core mode Ruby App mode 44/59
46 Self-sustaining systems C Compiler written in C Compiled code does not rely on the language 45/59
47 Self-sustaining systems Squeak Bootstrap Core written in Slang subset of Smalltalk compiles to C libraries in Smalltalk 46/59
48 Rubinius Ruby implementation influenced by Smalltalk 47/59
49 Rubinius small VM in C++ libraries written in Ruby 48/59
50 Bootstrap 1. VM 2. alpha 3. bootstrap 4. platform 5. common 6. delta 49/59
51 VM The virtual machine is able to load and execute bytecode, send messages (i.e. look up and execute methods), and all primitive functions are available, but not yet hooked up as Ruby methods. 50/59
52 VM At this point there is enough defined behavior to begin to load up the rest of the runtime kernel which is all defined in ruby. This has to be done in several passes as the language grows. 51/59
53 alpha This starts the loading of Ruby code. The ability to open classes and modules and define methods exists. Also, it is possible to raise exceptions and cause the running process to exit. This stage lays the foundation for the next two stages. 52/59
54 bootstrap This stage continues to add the minimum functionality to support loading platform and common. The primitive functions are added for most of the kernel classes. 53/59
55 platform The FFI system is implemented and Ruby method interfaces to platformspecific functions are created. Once this is set up, platform specific things such as file access, math, and POSIX commands are attached. 54/59
56 common The vast majority of the Ruby core library classes are implemented. The Ruby core classes are kept as implementation-neutral as possible. 55/59
57 delta Implementation-specific versions of methods that override the versions provided in common are added. 56/59
58 Problems performance open class 57/59
59 (Possible) Solution JIT (LLVM) selector namespace / classbox 58/59
60 Thank you! 59/59
RubyConf China. Why Ruby? Yukihiro "Matz" Matsumoto. Copyright (c) 2008 Yukihiro "Matz" Matsumoto, No rights reserved
RubyConf China Why Ruby? Yukihiro "Matz" Matsumoto matz@ruby-lang.org Copyright (c) 2008 Yukihiro "Matz" Matsumoto, No rights reserved thou Moore s Law The number of Transistors in LSI Doubles Every 18
More informationcode://rubinius/technical
code://rubinius/technical /GC, /cpu, /organization, /compiler weeee!! Rubinius New, custom VM for running ruby code Small VM written in not ruby Kernel and everything else in ruby http://rubini.us git://rubini.us/code
More informationAccelerating Ruby with LLVM
Accelerating Ruby with LLVM Evan Phoenix Oct 2, 2009 RUBY RUBY Strongly, dynamically typed RUBY Unified Model RUBY Everything is an object RUBY 3.class # => Fixnum RUBY Every code context is equal RUBY
More informationComputer Science Seminar. Whats the next big thing? Ruby? Python? Neither?
Computer Science Seminar Whats the next big thing? Ruby? Python? Neither? Introduction Seminar Style course unlike many computer science courses discussion important, encouraged and part of your grade
More informationCOMMOM OBJECT ORIENTED LISP SYSTEMS
COMMOM OBJECT ORIENTED LISP SYSTEMS HISTORY: The following information is derived from the history section of dpans Common Lisp. Lisp is a family of languages with a long history. Early key ideas in Lisp
More informationPyPy - How to not write Virtual Machines for Dynamic Languages
PyPy - How to not write Virtual Machines for Dynamic Languages Institut für Informatik Heinrich-Heine-Universität Düsseldorf ESUG 2007 Scope This talk is about: implementing dynamic languages (with a focus
More informationCS 5142 Scripting Languages
CS 5142 Scripting Languages 10/25/2012 Ruby 1 Outline Ruby Martin Hirzel 2 About Ruby Invented 1995 by Yokihiro Matz Matsumoto Influenced by SmallTalk Everything is an object (even e.g., integers) Blocks
More informationThe User in the Loop Extensibility, Guile, and GNU GNU Hackers Meeting 2011 Andy Wingo
The User in the Loop Extensibility, Guile, and GNU GNU Hackers Meeting 2011 Andy Wingo Greetings! Andy Wingo Guile co-maintainer, along with Ludovic Courtès Goal Understand the problem Guile is part of
More informationA Brief Introduction to Common Lisp
A Brief Introduction to Common Lisp David Gu Schloer Consulting Group david_guru@gty.org.in A Brief History Originally specified in 1958, Lisp is the second-oldest highlevel programming language in widespread
More informationWELCOME TO PERL = Tuesday, June 4, 13
WELCOME TO PERL11 5 + 6 = 11 http://perl11.org/ Stavanger 2012 Moose + p5-mop Workshop Text Preikestolen Will Braswell Ingy döt net Austin 2012 PERL 11 5 + 6 = 11 perl11.org Will Braswell, Ingy döt net,
More informationInstallation Download and installation instructions can be found at
IntroductiontoRuby Ruby (http://www.ruby-lang.org/en/ ) is a reflective, dynamic, objectoriented, single-pass interpreted programming language. It also has some functional programming features such as
More informationIntroduction CMSC 330: Organization of Programming Languages. Books on Ruby. Applications of Scripting Languages
Introduction CMSC 330: Organization of Programming Languages Ruby is an object-oriented, imperative scripting language I wanted a scripting language that was more powerful than Perl, and more object-oriented
More informationMRI Internals. Koichi Sasada.
MRI Internals Koichi Sasada ko1@heroku.com MRI Internals towards Ruby 3 Koichi Sasada ko1@heroku.com Today s talk Koichi is working on improving Ruby internals Introduce my ideas toward Ruby 3 Koichi Sasada
More informationPegarus & Poison. Rubinius VM as a Multilanguage Platform
Pegarus & Poison Rubinius VM as a Multilanguage Platform Thursday, July 29, 2010 Brian Ford brixen on {twitter IRC gmail} Thursday, July 29, 2010 discussion rant tutorial Q&A interaction Thursday, July
More informationCombined Object-Lambda Architectures
www.jquigley.com jquigley#jquigley.com Chicago Lisp April 2008 Research Goals System Goals Conventional Systems Unconventional Systems Research Goals Question: How to make with Pepsi and Coke? The Goal:
More informationWhere We Are. Lexical Analysis. Syntax Analysis. IR Generation. IR Optimization. Code Generation. Machine Code. Optimization.
Where We Are Source Code Lexical Analysis Syntax Analysis Semantic Analysis IR Generation IR Optimization Code Generation Optimization Machine Code Where We Are Source Code Lexical Analysis Syntax Analysis
More information6.001 Notes: Section 8.1
6.001 Notes: Section 8.1 Slide 8.1.1 In this lecture we are going to introduce a new data type, specifically to deal with symbols. This may sound a bit odd, but if you step back, you may realize that everything
More informationDynamically-typed Languages. David Miller
Dynamically-typed Languages David Miller Dynamically-typed Language Everything is a value No type declarations Examples of dynamically-typed languages APL, Io, JavaScript, Lisp, Lua, Objective-C, Perl,
More informationCSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341)
CSE 413 Languages & Implementation Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) 1 Goals Representing programs as data Racket structs as a better way to represent
More informationRCCola: Remote Controlled Cola
RCCola: Remote Controlled Cola Takashi Yamamiya This material is based upon work supported in part by the National Science Foundation under Grant No. 0639876. Any opinions, findings, and conclusions or
More informationSemester Review CSC 301
Semester Review CSC 301 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out: l l l l Imperative Languages l assignment and iteration
More informationRuby Primer and Review for Developers
A PPENDIX A Ruby Primer and Review for Developers This T appendix is designed to act as both a Ruby primer and review, useful both to developers who want to brush up rapidly on their Ruby knowledge, and
More informationCOP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher
COP4020 ming Languages Compilers and Interpreters Robert van Engelen & Chris Lacher Overview Common compiler and interpreter configurations Virtual machines Integrated development environments Compiler
More informationGetting Started. 1 by Conner Irwin
If you are a fan of the.net family of languages C#, Visual Basic, and so forth and you own a copy of AGK, then you ve got a new toy to play with. The AGK Wrapper for.net is an open source project that
More informationSeminar in Programming Languages
Seminar in Programming Languages Shuly Wintner Fall 2010-11 Course web site: http://cs.haifa.ac.il/~shuly/teaching/10/plseminar/ Course Goals Programming Language Concepts A language is a conceptual universe
More informationControl Flow February 9, Lecture 7
Chapter 6 Control Flow February 9, Lecture 7 Expressions A simple object Literal constant Named variable Constant Or a function applied to arguments For built-in functions we use the term operator (like
More informationChapter 1. Fundamentals of Higher Order Programming
Chapter 1 Fundamentals of Higher Order Programming 1 The Elements of Programming Any powerful language features: so does Scheme primitive data procedures combinations abstraction We will see that Scheme
More informationLecture 1. Basic Ruby 1 / 61
Lecture 1 Basic Ruby 1 / 61 What does this do? 3.times do print 'Hello, world!' end 2 / 61 Why Ruby? Optimized for programmer happiness Used for Ruby on Rails Very popular web framework 3 / 61 Course Policies
More informationJava: framework overview and in-the-small features
Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Java: framework overview and in-the-small features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer
More informationParrot VM. Allison Randal Parrot Foundation & O'Reilly Media, Inc.
Parrot VM Allison Randal Parrot Foundation & O'Reilly Media, Inc. There's an odd misconception in the computing world that writing compilers is hard. This view is fueled by the fact that we don't write
More informationScala, 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 informationCSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures
CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures Dan Grossman Fall 2014 Hi! I m not Hal J I love this stuff and have taught
More informationChapter 6 Control Flow. June 9, 2015
Chapter 6 Control Flow June 9, 2015 Expression evaluation It s common in programming languages to use the idea of an expression, which might be a simple object function invocation over some number of arguments
More informationRuby. Mooly Sagiv. Most slides taken from Dan Grossman
Ruby Mooly Sagiv Most slides taken from Dan Grossman Ruby dynamic, reflective, object-oriented, general-purpose programming language Designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto
More informationWhat is Ruby? CSc 372. Comparative Programming Languages. 27 : Ruby Introduction. Department of Computer Science University of Arizona
What is Ruby? CSc 372 Comparative Programming Languages 27 : Ruby Introduction Department of Computer Science University of Arizona Everything is an object. Everything can be changed: method can be added
More informationConcepts of Programming Languages
Concepts of Programming Languages Lecture 1 - Introduction Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014
More informationINF4820: Algorithms for Artificial Intelligence and Natural Language Processing. More Common Lisp
INF4820: Algorithms for Artificial Intelligence and Natural Language Processing More Common Lisp Stephan Oepen & Murhaf Fares Language Technology Group (LTG) September 6, 2017 Agenda 2 Previously Common
More informationGUI in C++ PV264 Advanced Programming in C++ Nikola Beneš Jan Mrázek Vladimír Štill. Faculty of Informatics, Masaryk University.
GUI in C++ PV264 Advanced Programming in C++ Nikola Beneš Jan Mrázek Vladimír Štill Faculty of Informatics, Masaryk University Spring 2017 PV264: GUI in C++ Spring 2017 1 / 23 Organisation Lectures this
More informationImperative vs. objectoriented
CSCI-2320 Object-Oriented Paradigm: Ruby Mohammad T. Irfan Imperative vs. objectoriented paradigms 1 Imperative vs. object-oriented u Imperative u Procedural decomposition u Procedures are all powerful
More informationCompilation 2012 The What and Why of Compilers
Compilation 2012 The What and Why of Compilers Jan Midtgaard Michael I. Schwartzbach Aarhus University What is a Compiler? A program that: tralates from one programming language to another preserves the
More informationwhy you should use Ruby
LUKE KANIES why you should use Ruby Luke Kanies runs Reductive Labs (http://reductivelabs.com), a startup producing OSS software for centralized, automated server administration. He has been a UNIX sysadmin
More informationCommon LISP Tutorial 1 (Basic)
Common LISP Tutorial 1 (Basic) CLISP Download https://sourceforge.net/projects/clisp/ IPPL Course Materials (UST sir only) Download https://silp.iiita.ac.in/wordpress/?page_id=494 Introduction Lisp (1958)
More informationCompiler construction
Compiler construction Martin Steffen March 13, 2017 Contents 1 Abstract 1 1.1 Symbol tables. 1 1.1.1 Introduction 1 1.1.2 Symbol table design and interface.. 2 1.1.3 Implementing symbol tables 3 1.1.4
More informationRuby: Introduction, Basics
Ruby: Introduction, Basics Computer Science and Engineering College of Engineering The Ohio State University Lecture 3 Ruby vs Java: Similarities Imperative and object-oriented Classes and instances (ie
More informationArtificial Intelligence Lecture 1
Artificial Intelligence Lecture 1 istrative Matters Webpage: www.aass.oru.se/~ali/ai2008 Teacher: Amy Loutfi Hours: Fridays 10 12 Lab Assistant: Marcello Cirillo 2 istrative Matters Course book: Alison
More informationAllegro CL Certification Program
Allegro CL Certification Program Lisp Programming Series Level I Presented by 1 About David Margolies Manager, Documentation, Franz Inc Been working with Lisp since 1984 dm@franz.com 2 About Franz Inc.
More informationAn Interactive Desk Calculator. Project P2 of. Common Lisp: An Interactive Approach. Stuart C. Shapiro. Department of Computer Science
An Interactive Desk Calculator Project P2 of Common Lisp: An Interactive Approach Stuart C. Shapiro Department of Computer Science State University of New York at Bualo January 25, 1996 The goal of this
More informationCSE 341, Autumn 2015, Ruby Introduction Summary
CSE 341, Autumn 2015, Ruby Introduction Summary Disclaimer: This lecture summary is not necessarily a complete substitute for atting class, reading the associated code, etc. It is designed to be a useful
More informationAnnouncements. My office hours are today in Gates 160 from 1PM-3PM. Programming Project 3 checkpoint due tomorrow night at 11:59PM.
IR Generation Announcements My office hours are today in Gates 160 from 1PM-3PM. Programming Project 3 checkpoint due tomorrow night at 11:59PM. This is a hard deadline and no late submissions will be
More informationProblem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur
Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Lecture 15 Branching : IF ELSE Statement We are looking
More informationContents in Detail. Who This Book Is For... xx Using Ruby to Test Itself... xx Which Implementation of Ruby?... xxi Overview...
Contents in Detail Foreword by Aaron Patterson xv Acknowledgments xvii Introduction Who This Book Is For................................................ xx Using Ruby to Test Itself.... xx Which Implementation
More informationRead & Download (PDF Kindle) Ruby: Programming, Master's Handbook: A TRUE Beginner's Guide! Problem Solving, Code, Data Science, Data Structures &
Read & Download (PDF Kindle) Ruby: Programming, Master's Handbook: A TRUE Beginner's Guide! Problem Solving, Code, Data Science, Data Structures & Algorithms (Code Like A PRO In 24... Design, Tech, Perl,
More informationStorage. Outline. Variables and Updating. Composite Variables. Storables Lifetime : Programming Languages. Course slides - Storage
Storage 1 Variables and Updating Outline Composite Variables Total and selective updating Array variables Storables Lifetime Local and global variables Heap variables Persistent variables Garbage collection
More informationRuby: Introduction, Basics
Ruby: Introduction, Basics Computer Science and Engineering College of Engineering The Ohio State University Lecture 4 Ruby vs Java: Similarities Imperative and object-oriented Classes and instances (ie
More informationStructure of Programming Languages Lecture 5
Structure of Programming Languages Lecture 5 CSCI 6636 4536 June, 2017 CSCI 6636 4536 Lecture 10... 1/16 June, 2017 1 / 16 Outline 1 Expressions and Evaluation 2 Control Structures Conditionals Repetition
More informationCS152 Programming Language Paradigms Prof. Tom Austin, Fall Syntax & Semantics, and Language Design Criteria
CS152 Programming Language Paradigms Prof. Tom Austin, Fall 2014 Syntax & Semantics, and Language Design Criteria Lab 1 solution (in class) Formally defining a language When we define a language, we need
More informationCSE 341 Section 7. Ethan Shea Autumn Adapted from slides by Nicholas Shahan, Dan Grossman, Tam Dang, and Eric Mullen
CSE 341 Section 7 Ethan Shea Autumn 2018 Adapted from slides by Nicholas Shahan, Dan Grossman, Tam Dang, and Eric Mullen Outline Interpreting MUPL Assume Correct Syntax Check for Correct Semantics Evaluating
More informationAn Implementation of Python for Racket. Pedro Palma Ramos António Menezes Leitão
An Implementation of Python for Racket Pedro Palma Ramos António Menezes Leitão Contents Motivation Goals Related Work Solution Performance Benchmarks Future Work 2 Racket + DrRacket 3 Racket + DrRacket
More informationTail Calls. CMSC 330: Organization of Programming Languages. Tail Recursion. Tail Recursion (cont d) Names and Binding. Tail Recursion (cont d)
CMSC 330: Organization of Programming Languages Tail Calls A tail call is a function call that is the last thing a function does before it returns let add x y = x + y let f z = add z z (* tail call *)
More informationCSE 341 Section 7. Eric Mullen Spring Adapted from slides by Nicholas Shahan, Dan Grossman, and Tam Dang
CSE 341 Section 7 Eric Mullen Spring 2017 Adapted from slides by Nicholas Shahan, Dan Grossman, and Tam Dang Outline Interpreting LBI (Language Being Implemented) Assume Correct Syntax Check for Correct
More informationThese are notes for the third lecture; if statements and loops.
These are notes for the third lecture; if statements and loops. 1 Yeah, this is going to be the second slide in a lot of lectures. 2 - Dominant language for desktop application development - Most modern
More informationSmalltalk: developed at Xerox Palo Alto Research Center by the Learning Research Group in the 1970 s (Smalltalk-72, Smalltalk-76, Smalltalk-80)
A Bit of History Some notable examples of early object-oriented languages and systems: Sketchpad (Ivan Sutherland s 1963 PhD dissertation) was the first system to use classes and instances (although Sketchpad
More informationScope. Chapter Ten Modern Programming Languages 1
Scope Chapter Ten Modern Programming Languages 1 Reusing Names Scope is trivial if you have a unique name for everything: fun square a = a * a; fun double b = b + b; But in modern languages, we often use
More informationInstances and Classes. SOFTWARE ENGINEERING Christopher A. Welty David A. Ferrucci. 24 Summer 1999 intelligence
Instances and Classes in SOFTWARE ENGINEERING Christopher A. Welty David A. Ferrucci 24 Summer 1999 intelligence Software Engineering Over the past decade or so, one of the many areas that artificial intelligence
More informationDynamic Object-Oriented Programming with Smalltalk 1. Introduction
Dynamic Object-Oriented Programming with Smalltalk 1. Introduction Prof. O. Nierstrasz Autumn Semester 2009 LECTURE TITLE What is surprising about Smalltalk > Everything is an object > Everything happens
More informationRacket. CSE341: Programming Languages Lecture 14 Introduction to Racket. Getting started. Racket vs. Scheme. Example.
Racket Next 2+ weeks will use the Racket language (not ML) and the DrRacket programming environment (not emacs) Installation / basic usage instructions on course website CSE34: Programming Languages Lecture
More informationXcode and Swift CS 4720 Mobile Application Development
Xcode and Swift Mobile Application Development Why Java for Android? Let s first recap: why do you think Android uses Java? 2 Why Java for Android? Some good reasons: You can t find a CS major that doesn
More informationCog VM Evolution. Clément Béra. Thursday, August 25, 16
Cog VM Evolution Clément Béra Cog VM? Smalltalk virtual machine Default VM for Pharo Squeak Newspeak Cuis Cog Philosophy Open source (MIT) Simple Is the optimization / feature worth the added complexity?
More informationClosures. Mooly Sagiv. Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming
Closures Mooly Sagiv Michael Clarkson, Cornell CS 3110 Data Structures and Functional Programming t ::= x x. t t t Call-by-value big-step Operational Semantics terms variable v ::= values abstraction x.
More informationA brief survey of programming languages: motivation and design/ continued. Lecture 3. Even more, Algol, Cobol. Are they really different?
Life beyond Fortran (1959), Algol (1960), Lisp 1.5 (1960), Cobol (1961) A brief survey of programming languages: motivation and design/ continued Lecture 3 Significant languages, commercial and/or intellectual
More informationRuby: Introduction, Basics
Ruby: Introduction, Basics Computer Science and Engineering College of Engineering The Ohio State University Lecture 4 Ruby vs Java: Similarities Imperative and object-oriented Classes and instances (ie
More informationProgramming Languages
Programming Languages As difficult to discuss rationally as religion or politics. Prone to extreme statements devoid of data. Examples: "It is practically impossible to teach good programming to students
More informationCSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN
What languages do you know? CSC 326H1F, Programming Languages The usual suspects: C, C++, Java fine languages nearly the same Perhaps you've also learned some others? assembler Basic, Visual Basic, Turing,
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Type Systems, Names and Binding CMSC 330 - Spring 2013 1 Topics Covered Thus Far! Programming languages Ruby OCaml! Syntax specification Regular expressions
More informationCS 360 Programming Languages Interpreters
CS 360 Programming Languages Interpreters Implementing PLs Most of the course is learning fundamental concepts for using and understanding PLs. Syntax vs. semantics vs. idioms. Powerful constructs like
More informationClasses and Objects in Ruby
Computer Science and Engineering IIT Bombay kuhoo@cse.iitb.ac.in Nov 29, 2004 Classes and Objects Rubby Object A set of flags, instance variables and an associated class Rubby Class An object of class
More informationAIMMS Function Reference - Error Handling Related Identifiers
AIMMS Function Reference - Error Handling Related Identifiers This file contains only one chapter of the book. For a free download of the complete book in pdf format, please visit www.aimms.com Aimms 3.13
More informationCSE450. Translation of Programming Languages. Lecture 11: Semantic Analysis: Types & Type Checking
CSE450 Translation of Programming Languages Lecture 11: Semantic Analysis: Types & Type Checking Structure Project 1 - of a Project 2 - Compiler Today! Project 3 - Source Language Lexical Analyzer Syntax
More information9/21/17. Outline. Expression Evaluation and Control Flow. Arithmetic Expressions. Operators. Operators. Notation & Placement
Outline Expression Evaluation and Control Flow In Text: Chapter 6 Notation Operator evaluation order Operand evaluation order Overloaded operators Type conversions Short-circuit evaluation of conditions
More informationTowards Lean 4: Sebastian Ullrich 1, Leonardo de Moura 2.
Towards Lean 4: Sebastian Ullrich 1, Leonardo de Moura 2 1 Karlsruhe Institute of Technology, Germany 2 Microsoft Research, USA 1 2018/12/12 Ullrich, de Moura - Towards Lean 4: KIT The Research An University
More informationCS 330 Lecture 18. Symbol table. C scope rules. Declarations. Chapter 5 Louden Outline
CS 0 Lecture 8 Chapter 5 Louden Outline The symbol table Static scoping vs dynamic scoping Symbol table Dictionary associates names to attributes In general: hash tables, tree and lists (assignment ) can
More informationRemember, this question was mis-worded: you could also add quoted words and sentences in the blanks below. This allowed for a solution to [4] below.
CS3 Fall 04 Midterm 1 Solutions and Grading standards Problem 1 (6 points, 10 minutes): Make the expressions correct Add parentheses and procedures in the underlined areas to make these expressions return
More informationRuby on Rails Welcome. Using the exercise files
Ruby on Rails Welcome Welcome to Ruby on Rails Essential Training. In this course, we're going to learn the popular open source web development framework. We will walk through each part of the framework,
More informationChapter 3.3 Programming Fundamentals. Languages Paradigms Basic Data Types Data Structures OO in Game Design Component Systems Design Patterns
Chapter 3.3 Programming Fundamentals Languages Paradigms Basic Data Types Data Structures OO in Game Design Component Systems Design Patterns Languages Language: A system composed of signs (symbols, indices,
More informationWho 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 informationLook 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 informationLATENT METHODS. Richard CS
LATENT METHODS Richard O'Keefe @ CS Outline Background The problem Some non-solutions My solution Does it apply elsewhere Background Alan Kay invented tablet computers (the Dynabook) His research group
More informationCrash Course in Java. Why Java? Java notes for C++ programmers. Network Programming in Java is very different than in C/C++
Crash Course in Java Netprog: Java Intro 1 Why Java? Network Programming in Java is very different than in C/C++ much more language support error handling no pointers! (garbage collection) Threads are
More informationJSR 292 Cookbook: Fresh Recipes with New Ingredients
JSR 292 Cookbook: Fresh Recipes with New Ingredients John Rose Christian Thalinger Sun Microsystems Overview Got a language cooking on the JVM? JSR 292, a set of major changes to the JVM architecture,
More information12 Key Steps to Successful Marketing
12 Key Steps to Successful Email Marketing Contents Introduction 3 Set Objectives 4 Have a plan, but be flexible 4 Build a good database 5 Should I buy data? 5 Personalise 6 Nail your subject line 6 Use
More informationTechnical Game Development II IMGD 4000 (D 11) 1. having agents follow pre-set actions rather than choosing them dynamically
Scripting Technical Game Development II Professor Charles Rich Computer Science Department rich@wpi.edu References: Buckland, Chapter 6 IMGD 4000 (D 11) 1 Scripting Two senses of the word scripted behavior
More informationSpring 2018 Discussion 7: March 21, Introduction. 2 Primitives
CS 61A Scheme Spring 2018 Discussion 7: March 21, 2018 1 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme
More informationChapter 1. Preliminaries
Chapter 1 Preliminaries Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language
More informationA Set Of Machine Language Instructions For A Program Is Called Source Code >>>CLICK HERE<<<
A Set Of Machine Language Instructions For A Program Is Called Source Code In computing, an executable file or executable program, or sometimes simply an These instructions are traditionally machine code
More informationA Tour to Spur for Non-VM Experts. Guille Polito, Christophe Demarey ESUG 2016, 22/08, Praha
A Tour to Spur for Non-VM Experts Guille Polito, Christophe Demarey ESUG 2016, 22/08, Praha From a user point of view We are working on the new Pharo Kernel Bootstrap: create an image from scratch - Classes
More informationOutline Smalltalk Overview Pragmatic Smalltalk Closing. Pragmatic Smalltalk. David Chisnall. February 7,
February 7, 2009 http://etoileos.com Outline Using The Smalltalk Family Smalltalk - first dynamic, object-oriented, language. Self - Smalltalk without classes. JavaScript - Self with Java syntax. A Quick
More informationA simple reflective object kernel
A simple reflective object kernel S. Ducasse The Pharo Booklet Collection edited by S. Ducasse November 20, 2017 master @ d4e4b4f* Copyright 2017 by S. Ducasse. The contents of this book are protected
More informationData Structures and Algorithms
Data Structures and Algorithms Alice E. Fischer Lecture 6: Stacks 2018 Alice E. Fischer Data Structures L5, Stacks... 1/29 Lecture 6: Stacks 2018 1 / 29 Outline 1 Stacks C++ Template Class Functions 2
More informationCMPT 379 Compilers. Anoop Sarkar.
CMPT 379 Compilers Anoop Sarkar http://www.cs.sfu.ca/~anoop! Program Compiler Machine Code Input Runtime Output 2012-11- 01 2 main(){char *c="main(){char *c=%c%s%c;printf(c,34,c,34);}";printf(c,34,c,34);}!
More informationDiagnosing Java code: Designing extensible applications, Part 3
Diagnosing Java code: Designing extensible applications, Part 3 Examine when, where, and how black box extensibility works best Level: Introductory Eric Allen (eallen@cs.rice.edu), Ph.D. candidate, Java
More information