The Evolution of Lua. Waldemar Celes Luiz Henrique de Figueiredo Roberto Ierusalimschy
|
|
|
- Angela Fisher
- 9 years ago
- Views:
Transcription
1 The Evolution of Lua Waldemar Celes Luiz Henrique de Figueiredo Roberto Ierusalimschy
2 The Beginning
3 Data Entry Programs 1992: Tecgraf - partnership between PUC and PETROBRAS (CENPES) Graphical data entry for several simulation applications d
4 DEL - Data Entry Language Form definition parameter list types and default values d :e gasket "gasket properties" mat s # material d f 0 # distance y f 0 # settlement stress t i 1 # facing type
5 DEL limitations Input validation Conditional behavior Abstractions and basic arithmetic d :e gasket "gasket properties" mat s # material d f 0 # distance y f 0 # settlement stress t i 1 # facing type :p gasket.m>30 gasket.m<3000 gasket.y>335.8 gasket.y<2576.8
6 Programa Gráfico Mestre 1993: another project with PETROBRAS configurable program to visualize geologic profiles
7 SOL Simple Object Language Language to describe structured data not totally unlike XML syntax inspired by BibTeX {x:number, y:number=23, z} z:number*} -- creates an object 't1', of type `track t1 {y=9, x=10, z="hi!"} l {t=@track{x=t1.y, y=t1.x}, z=[2,3,4] }
8 SOL limitations Stronger abstraction mechanisms Some procedural facilities
9 1993: Lua is Born Convergence of both languages procedural paradigm data-description mechanisms Powerful features function abstractions full arithmetic syntax Extensible extension language
10 Lua version 1.0 Called 1.0 a posteriori The simplest thing that could possibly work Standard implementation, with yacc/lex Requirements: simple, portable, extensible, embedable, small
11 Lua 1.1 (1994) Faster First public distribution ftp Free for academic uses, but not free for comercial uses
12 Lua 2 Lua 2.1 (Feb 1995) (Nov 1996) Free license Fallbacks suport for OO programming Pattern matching Lua 2.5 CGILua called HTMLLua (1995)
13 International Exposure First home page in contact with far-away users June paper in S:P&E Dez paper in Dr. Dobb's Beginning of discussion list end of 97 - more than 100 subscribers, should we try a newsgroup?
14 Lua 3 Lua 3.0 (July 1997) - Lua 3.2 (July 1999) 1998, Lua logo 1998, Cameron Laird wrote in SunWorld: Its user base is also small; there might be only a few tens of thousands of Lua programmers in the world. They're very fond of this language, though, and the imminent explosion of ubiquitous embedded processing (computers in your car, in your plumbing, and in your kitchen appliances) can only work in favor of Lua.
15 Lua 4 Lua 4.0 (Nov March 2003) New API with lua_state Several appearances in Brazilian press March 2001, new site: thanks to Jim Mathies Few months later, users site: lua-users.org After two years, a single release less than 10 bugs Several plans for 4.1
16 Lua (April 2003), 5.1 (Feb 2006) Coroutines, lexical scoping Register-based virtual machine New implementation for tables Modules Incremental garbage-collector
17 Another View of Lua Evolution
18 Evolution: Portability Stick to ANSI hard decision when we started Sun compiler was K&R Much improved first versions do not compile on Linux ;) Closely following ANSI C Lua and C compilers
19 Evolution: Portability General move from conforming hosted implementation to conforming freestanding implementation (in the core) no I/O in the core no use of files in the core user-provided memory-allocation mechanisms
20 Evolution: Portability But: loadlib deeply supported Module system luaconf.h Use of vararg and structs in lua.h only in restricted ways
21 Portability Evolution: Examples All kinds of problems with names exp, size, Object, Warnings no standard way to say "we know what we are doing" Compiler writers as language designers tmpnam in Linux, string functions in Windows
22 Portability Evolution: Examples while(isalpha(*s++))... The header <ctype.h> declares several functions useful for classifying and mapping characters. In all cases the argument is an int, the value of which shall be representable as an unsigned char or shall equal the value of the macro EOF. for (; p >= base_pointer; p--)... union of pointers x pointer to union
23 Evolution: Embedability Portability Freestanding implementation Weak references non-lock references, weak tables Userdata from pointer to memory finalizers tags, metatables Independent states
24 Evolution: Simplicity Runs against all other aspects not always ;) Lua 1.1: API with 30 functions; 4000 lines of code Lua 5.1: API with 79 (core) + 36 (auxlib) functions; (core) (libs) lines of code ~3x (core) + 1 (libs)
25 Evolution: Simplicity /* Lua 1.1 */ int main (int argv, char **argc) { iolib_open(); strlib_open(); mathlib_open(); lua_dofile(argv[1]); return 0; }
26 Evolution: Simplicity /* Lua 5.1 */ int main (int argv, char **argc) { lua_state *L = lual_newstate(); lual_openlibs(l); if (lual_loadfile(l, argv[1]) lua_pcall(l, 0, 0, 0)) fprintf(stderr, "error: %s\n", lua_tostring(l, -1)); lua_close(l); return 0; }
27 Evolution: Performance Version sieve fibonacci heapsort Lua Lua Lua Lua Lua Lua Lua Lua Lua Lua Lua Lua
28 Feature Evolution
29 Functions First-class values since Lua 1.0 But quite different from functions in Lua 5.1
30 Functions in Lua 1.0 Function definition assigned at compile time Must be a global name Cannot print function values print(a()) function a() end print(a) function a.x() end
31 Functions in Lua 2.2 Function definition is an assignment Function "name" may be a field Sugar for methods function a.x[10]:m() end
32 Functions in Lua 3 Lua 3.0: vararg functions Lua 3.0: types function and cfunction unified Lua 3.1: anonymous functions with upvalues! function createk (x) return function () return %x end end
33 Functions in Lua 5 Full lexical scoping Proper tail calls function createcount (x) return function () x = x + 1 return x end end Lua 5.1: new vararg expression
34 Chunks and Functions In Lua 2.4, chunks are functions internally debug interface could capture them illegally In Lua 2.5, chunks can return values In Lua 3.1, chunks are quite regular functions nesting local variables In Lua 5.0, "do" becomes "load" + "call" chunks are vararg functions
35 Error Messages function f(x) return x + y end print(f(10)) Lua 1.0: without debug pragma lua: unexpected type at conversion to number
36 Error Messages $debug function f(x) return x + y end print(f(10)) Lua 1.0: with debug pragma lua: unexpected type at conversion to number in statement begining at line 3 in function "f" of file "a" active stack -> function "f" of file "a"
37 Error Messages $debug function f(x) return x + y end print(f(10)) Lua 2.1: lua: unexpected type at conversion to number active stack: -> function "f" at file "a":3 (Without pragma it is similar to Lua 1)
38 Error Messages $debug function f(x) return x + y end print(f(10)) Lua 3.0: lua: unexpected type at arithmetic operation Active Stack: function f at line 3 [in file a] main of a at line 6 ( at line only with pragmas)
39 Error Messages function f(x) return x + y end print(f(10)) Lua 4.0: no more pragmas a: attempt to perform arithmetic on global `y' (a nil value) stack traceback: 1: function `f' at line 2 [file `a'] 2: main of file `a' at line 5
40 Error Messages function f(x) return x + y end print(f(10)) Lua 5.0: a:2: attempt to perform arithmetic on global `y' (a nil value) stack traceback: a:2: in function `f' a:5: in main chunk [C]:?
41 What are the costs of a feature? Implementation is a small fraction of the cost of a new feature!
42 What are the costs of a feature? Documentation simple and precise description independent of implementation Testing and maintenance how to test all aspects more things to fail now and later
43 What are the costs of a feature? Conceptual integrity how the feature interacts with other features some features demand new facilities Impact on design space for future evolution a poor feature may stand in the way of a better one Impact on alternative implementations
44 Example: What is the cost of Multiple Returns? Documentation mostly about interation with other facilities non local documentation Conceptual integrity took long time to current design f(g()) in ; back in Lua 4.0 {f()} only in 5.0!
45 Example: What is the cost of Multiple Returns? Impact on design space for future evolution int return in C functions multiple values in resume-yield Impact on alternative implementations function stack size cannot be statically computed tail-call implementation implementations in virtual machines (e.g., JVM)
46 Example: What is the cost of Incremental GC? Practically no impact on documentation HUGE impact on testing Small impact on design space for future evolution finalizers, weak tables Big impact on alternative implementations several assumptions spread around the code
47 Example: What is the cost of strsub? Innocent-looking function in Lua 1.0 Big impact on conceptual integrity particular way of interpreting string indices Set the tone for all other string-manipulation functions string.find(s, "p") x string.match(s, "()p()") Maybe Icon style would be better?
48 Lua Now Thirteen years More and more stable less and less unstable Still the same requirements simplicity, portability, embeadability, smallness Only language developed outside an industrialised country to achieve global relevance
49 Books Programming in Lua by Roberto Ierusalimschy. Lua.org (2006) Lua 5.1 Reference Manual by Roberto Ierusalimschy, Luiz H. de Figueiredo, Waldemar Celes. Lua.org (2006) Game Development with Lua by Paul Schuytema, Mark Manyen. Charles River (2005)
50 Books Programmieren mit Lua by Roberto Ierusalimschy. Open Souce Press (Set 2006) Beginning Lua Programming by Kurt Jung and Aaron Brown. Wrox (Feb 5, 2007)
51
An overview of Lua. Julia Lawall. February 7, 2008 DIKU
An overview of Lua Julia Lawall DIKU February 7, 2008 Lua Pre-history (1992) DEL (Data-Entry Language) The problem: programmers had to enter data in columns. The goal: programmers type data into a relevant
The Evolution of Lua
The Evolution of Lua Roberto Ierusalimschy Department of Computer Science, PUC-Rio, Rio de Janeiro, Brazil [email protected] Luiz Henrique de Figueiredo IMPA Instituto Nacional de Matemática Pura
The Evolution of Lua
The Evolution of Lua Roberto Ierusalimschy Luiz Henrique de Figueiredo Waldemar Celes CONTENTS 1 Introduction............................................ 2 2 Overview of Lua.........................................
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1
The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose
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,
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.
How To Write Portable Programs In C
Writing Portable Programs COS 217 1 Goals of Today s Class Writing portable programs in C Sources of heterogeneity Data types, evaluation order, byte order, char set, Reading period and final exam Important
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
A deeper look at Inline functions
A deeper look at Inline functions I think it s safe to say that all Overload readers know what C++ inline functions are. When we declare a function or member function as inline we are trying to avoid the
ASCII Encoding. The char Type. Manipulating Characters. Manipulating Characters
The char Type ASCII Encoding The C char type stores small integers. It is usually 8 bits. char variables guaranteed to be able to hold integers 0.. +127. char variables mostly used to store characters
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
Keil C51 Cross Compiler
Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation
1 Abstract Data Types Information Hiding
1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content
Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)
Unit- I Introduction to c Language: C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating
Tutorial on C Language Programming
Tutorial on C Language Programming Teodor Rus [email protected] The University of Iowa, Department of Computer Science Introduction to System Software p.1/64 Tutorial on C programming C program structure:
Phys4051: C Lecture 2 & 3. Comment Statements. C Data Types. Functions (Review) Comment Statements Variables & Operators Branching Instructions
Phys4051: C Lecture 2 & 3 Functions (Review) Comment Statements Variables & Operators Branching Instructions Comment Statements! Method 1: /* */! Method 2: // /* Single Line */ //Single Line /* This comment
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
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 [email protected] Assistant: Iulian Dragos INR 321, 368 64
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
Chapter 13: Program Development and Programming Languages
Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented
Coding Rules. Encoding the type of a function into the name (so-called Hungarian notation) is forbidden - it only confuses the programmer.
Coding Rules Section A: Linux kernel style based coding for C programs Coding style for C is based on Linux Kernel coding style. The following excerpts in this section are mostly taken as is from articles
Professional. SlickEdif. John Hurst IC..T...L. i 1 8 О 7» \ WILEY \ Wiley Publishing, Inc.
Professional SlickEdif John Hurst IC..T...L i 1 8 О 7» \ WILEY \! 2 0 0 7 " > Wiley Publishing, Inc. Acknowledgments Introduction xiii xxv Part I: Getting Started with SiickEdit Chapter 1: Introducing
Chapter 13: Program Development and Programming Languages
15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning
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
Programing the Microprocessor in C Microprocessor System Design and Interfacing ECE 362
PURDUE UNIVERSITY Programing the Microprocessor in C Microprocessor System Design and Interfacing ECE 362 Course Staff 1/31/2012 1 Introduction This tutorial is made to help the student use C language
Debugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go
Debugging ESE112 Java Programming: API, Psuedo-Code, Scope It is highly unlikely that you will write code that will work on the first go Bugs or errors Syntax Fixable if you learn to read compiler error
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
Project 2: Bejeweled
Project 2: Bejeweled Project Objective: Post: Tuesday March 26, 2013. Due: 11:59PM, Monday April 15, 2013 1. master the process of completing a programming project in UNIX. 2. get familiar with command
Lecture 18-19 Data Types and Types of a Language
Lecture 18-19 Data Types and Types of a Language April 29, 2014 Data Types and Types of a Language Data, Data Types and Types Type: Generalities Type Systems and Type Safety Type Equivalence, Coercion
Chapter 13 Storage classes
Chapter 13 Storage classes 1. Storage classes 2. Storage Class auto 3. Storage Class extern 4. Storage Class static 5. Storage Class register 6. Global and Local Variables 7. Nested Blocks with the Same
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
MPLAB TM C30 Managed PSV Pointers. Beta support included with MPLAB C30 V3.00
MPLAB TM C30 Managed PSV Pointers Beta support included with MPLAB C30 V3.00 Contents 1 Overview 2 1.1 Why Beta?.............................. 2 1.2 Other Sources of Reference..................... 2 2
An Overview of Java. overview-1
An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2
An Incomplete C++ Primer. University of Wyoming MA 5310
An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages
VB.NET Programming Fundamentals
Chapter 3 Objectives Programming Fundamentals In this chapter, you will: Learn about the programming language Write a module definition Use variables and data types Compute with Write decision-making statements
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
Simple Image File Formats
Chapter 2 Simple Image File Formats 2.1 Introduction The purpose of this lecture is to acquaint you with the simplest ideas in image file format design, and to get you ready for this week s assignment
Object Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
The Implementation of Lua 5.0
The Implementation of Lua 5.0 Roberto Ierusalimschy (Department of Computer Science, PUC-Rio, Rio de Janeiro, Brazil [email protected]) Luiz Henrique de Figueiredo (IMPA Instituto de Matemática Pura
Code Refactoring and Defects
Code Refactoring and Defects Reusing this material This work is licensed under a Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International License. http://creativecommons.org/licenses/by-nc-sa/4.0/deed.en_us
Embedded C Programming, Linux, and Vxworks. Synopsis
Embedded C Programming, Linux, and Vxworks. Synopsis This course is extensive and contains many advanced concepts. The range of modules covers a full introduction to C, real-time and embedded systems concepts
Static vs. Dynamic. Lecture 10: Static Semantics Overview 1. Typical Semantic Errors: Java, C++ Typical Tasks of the Semantic Analyzer
Lecture 10: Static Semantics Overview 1 Lexical analysis Produces tokens Detects & eliminates illegal tokens Parsing Produces trees Detects & eliminates ill-formed parse trees Static semantic analysis
Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
Open Source building blocks for the Internet of Things. Benjamin Cabé JFokus 2013
Open Source building blocks for the Internet of Things Benjamin Cabé JFokus 2013 Who I am Benjamin Cabé Open Source M2M Evangelist at Sierra Wireless Long-time Eclipse lover M2M? IoT? Technology that supports
RTI Monitoring Library Getting Started Guide
RTI Monitoring Library Getting Started Guide Version 5.1.0 2011-2013 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. December 2013. Trademarks Real-Time Innovations,
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Duration of Course: 6 Months Fees: Rs. 25,000/- (including Service Tax) Eligibility: B.E./B.Tech., M.Sc.(IT/ computer
Language Based Virtual Machines... or why speed matters. by Lars Bak, Google Inc
Language Based Virtual Machines... or why speed matters by Lars Bak, Google Inc Agenda Motivation for virtual machines HotSpot V8 Dart What I ve learned Background 25+ years optimizing implementations
Lecture 11 Doubly Linked Lists & Array of Linked Lists. Doubly Linked Lists
Lecture 11 Doubly Linked Lists & Array of Linked Lists In this lecture Doubly linked lists Array of Linked Lists Creating an Array of Linked Lists Representing a Sparse Matrix Defining a Node for a Sparse
Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG
Channel Access Client Programming Andrew Johnson Computer Scientist, AES-SSG Channel Access The main programming interface for writing Channel Access clients is the library that comes with EPICS base Written
Linux Driver Devices. Why, When, Which, How?
Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may
UML for the C programming language.
Functional-based modeling White paper June 2009 UML for the C programming language. Bruce Powel Douglass, PhD, IBM Page 2 Contents 2 Executive summary 3 FunctionalC UML profile 4 Functional development
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
C Programming. for Embedded Microcontrollers. Warwick A. Smith. Postbus 11. Elektor International Media BV. 6114ZG Susteren The Netherlands
C Programming for Embedded Microcontrollers Warwick A. Smith Elektor International Media BV Postbus 11 6114ZG Susteren The Netherlands 3 the Table of Contents Introduction 11 Target Audience 11 What is
PART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
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
sys socketcall: Network systems calls on Linux
sys socketcall: Network systems calls on Linux Daniel Noé April 9, 2008 The method used by Linux for system calls is explored in detail in Understanding the Linux Kernel. However, the book does not adequately
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.
Memory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example
Announcements Memory management Assignment 2 posted, due Friday Do two of the three problems Assignment 1 graded see grades on CMS Lecture 7 CS 113 Spring 2008 2 Safe user input If you use scanf(), include
Chapter One Introduction to Programming
Chapter One Introduction to Programming 1-1 Algorithm and Flowchart Algorithm is a step-by-step procedure for calculation. More precisely, algorithm is an effective method expressed as a finite list of
Data Structure Reverse Engineering
Data Structure Reverse Engineering Digging for Data Structures Polymorphic Software with DSLR Scott Hand October 28 th, 2011 Outline 1 Digging for Data Structures Motivations Introduction Laika Details
Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI)
Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI) SYSTEM V APPLICATION BINARY INTERFACE Motorola M68HC05, M68HC08, M68HC11, M68HC12, and M68HC16 Processors Supplement Version 2.0
Advanced Encryption Standard (AES) User's Guide
Advanced Encryption Standard (AES) User's Guide Version 1.00 BETA For use with AES versions 1.6 and above Date: 11-Feb-2015 11:23 All rights reserved. This document and the associated software are the
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
.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
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
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
A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation
PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris
C++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
Illustration 1: Diagram of program function and data flow
The contract called for creation of a random access database of plumbing shops within the near perimeter of FIU Engineering school. The database features a rating number from 1-10 to offer a guideline
Fundamentals of Programming and Software Development Lesson Objectives
Lesson Unit 1: INTRODUCTION TO COMPUTERS Computer History Create a timeline illustrating the most significant contributions to computing technology Describe the history and evolution of the computer Identify
Chapter 7D The Java Virtual Machine
This sub chapter discusses another architecture, that of the JVM (Java Virtual Machine). In general, a VM (Virtual Machine) is a hypothetical machine (implemented in either hardware or software) that directly
Cyclone: A Type-Safe Dialect of C
Cyclone: A Type-Safe Dialect of C Dan Grossman Michael Hicks Trevor Jim Greg Morrisett If any bug has achieved celebrity status, it is the buffer overflow. It made front-page news as early as 1987, as
Overview. Lecture 1: an introduction to CUDA. Hardware view. Hardware view. hardware view software view CUDA programming
Overview Lecture 1: an introduction to CUDA Mike Giles [email protected] hardware view software view Oxford University Mathematical Institute Oxford e-research Centre Lecture 1 p. 1 Lecture 1 p.
The Clean programming language. Group 25, Jingui Li, Daren Tuzi
The Clean programming language Group 25, Jingui Li, Daren Tuzi The Clean programming language Overview The Clean programming language first appeared in 1987 and is still being further developed. It was
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
Lexical Analysis and Scanning. Honors Compilers Feb 5 th 2001 Robert Dewar
Lexical Analysis and Scanning Honors Compilers Feb 5 th 2001 Robert Dewar The Input Read string input Might be sequence of characters (Unix) Might be sequence of lines (VMS) Character set ASCII ISO Latin-1
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
Lua as a business logic language in high load application. Ilya Martynov [email protected] CTO at IPONWEB
Lua as a business logic language in high load application Ilya Martynov [email protected] CTO at IPONWEB Company background Ad industry Custom development Technical platform with multiple components Custom
Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World
Chapter 13 Computer Programs and Programming Languages Discovering Computers 2012 Your Interactive Guide to the Digital World Objectives Overview Differentiate between machine and assembly languages Identify
Symbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
To Java SE 8, and Beyond (Plan B)
11-12-13 To Java SE 8, and Beyond (Plan B) Francisco Morero Peyrona EMEA Java Community Leader 8 9...2012 2020? Priorities for the Java Platforms Grow Developer Base Grow Adoption
Parallelization: Binary Tree Traversal
By Aaron Weeden and Patrick Royal Shodor Education Foundation, Inc. August 2012 Introduction: According to Moore s law, the number of transistors on a computer chip doubles roughly every two years. First
COS 333: Advanced Programming Techniques
COS 333: Advanced Programming Techniques How to find me bwk@cs, www.cs.princeton.edu/~bwk 311 CS Building 609-258-2089 (but email is always better) TA's: Stephen Beard, Chris Monsanto, Srinivas Narayana,
FreeForm Designer. Phone: +972-9-8309999 Fax: +972-9-8309998 POB 8792, Natanya, 42505 Israel www.autofont.com. Document2
FreeForm Designer FreeForm Designer enables designing smart forms based on industry-standard MS Word editing features. FreeForm Designer does not require any knowledge of or training in programming languages
How to Write a Simple Makefile
Chapter 1 CHAPTER 1 How to Write a Simple Makefile The mechanics of programming usually follow a fairly simple routine of editing source files, compiling the source into an executable form, and debugging
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,
Programming Language Concepts for Software Developers
Programming Language Concepts for Software Developers Peter Sestoft IT University of Copenhagen, Denmark [email protected] Abstract This note describes and motivates our current plans for an undergraduate
Chapter 12. Development Tools for Microcontroller Applications
Chapter 12 Development Tools for Microcontroller Applications Lesson 01 Software Development Process and Development Tools Step 1: Development Phases Analysis Design Implementation Phase 1 Phase 2 Phase
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 14, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science
ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science Program Schedule CTech Computer Science Credits CS101 Computer Science I 3 MATH100 Foundations of Mathematics and
