SlideShare una empresa de Scribd logo
1 de 37
A Brief History of Lua Roberto Ierusalimschy chief Lua architect
The Beginning (92-93) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Data Entry Programs ,[object Object],d
DEL Data Entry Language :e gasket &quot;gasket properties&quot;  mat  s  # material  d   f  0  #  distance   y  f  0  # stress  t  i  1  # facing type  :p gasket.d > 30  gasket.d < 3000  gasket.y > 335.8  gasket.y < 2576.8
DEL limitations ,[object Object],[object Object],[object Object],[object Object]
Programa Gr áfico Mestre program to visualize geologic profiles
SOL - Simple Object Language ,[object Object],[object Object],[object Object],type @track {x:number, y:number=23, z} type @line {t:@track=@track{x=8}, z:number*} -- create an object 't1', of type  ' track ' t1 = @track {y=9, x=10, z=&quot;hi!&quot;} l = @line {t=@track{x=t1.y, y=t1.x}, z=[2,3,4]}
SOL limitations ,[object Object],[object Object],[object Object],sounds familiar...
what about a common language  for both projects?
What we needed ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What we needed ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lua ,[object Object]
Sol x Lua 1.0 ,[object Object],t1 = @track{x = 10.3, y = 25.9, title = &quot;depth&quot;}
Sol x Lua 1.0 ,[object Object],t1 = @track{x = 10.3, y = 25.9, title = &quot;depth&quot;} function track (t) if not t.x then t.x = 0.0 end if type(t.x) ~= &quot;number&quot; then print(&quot;invalid 'x' value&quot;) end if type(t.y) ~= &quot;number&quot; then print(&quot;invalid 'y' value&quot;) end end
Lua 1.0 (1993) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lua 1.0 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lua 1.1 (1994) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lua 2.1 (1995) ,[object Object],[object Object],[object Object],[object Object]
Lua 2.1: Fallbacks ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lua 2.1: Constructors t = @(size)  -- empty t = @[a, b, c]  -- list t = @{x = 10, y = 20}  -- record t = @foo{x=10, y = 20} -- object t = {}  -- empty t = {a, b, c}  -- list t = {x = 10, y = 20}  -- record t = foo ( {x=10, y = 20} )  -- object Lua 1.1 Lua 2.1
Lua 2.2 - 2.5 (95 - 96) ,[object Object],[object Object],[object Object],[object Object]
International exposure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
International Exposure ,[object Object],[object Object],[object Object],[object Object]
Beachhead in Games From: Bret Mogilefsky <mogul@lucasarts.com> To: &quot;'lua@icad.puc-rio.br'&quot; <lua@icad.puc-rio.br> Subject: LUA rocks!  Question, too. Date: Thu, 9 Jan 1997 13:21:41 -0800 Hi there... After reading the Dr. Dobbs article on Lua I was very eager to check it out, and so far it has exceeded my expectations in every way!  It's elegance and simplicity astound me.  Congratulations on developing such a well-thought out language. Some background: I am working on an adventure game for the LucasArts Entertainment Co., and I want to try replacing our older adventure game scripting language, SCUMM, with Lua.
1998: Grim Fandango  LucasArts ,[object Object]
 
1998 - 2002  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
1998 ,[object Object],&quot; 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. &quot;
1998 ,[object Object],&quot; 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. &quot; For us, this  &quot;small base&quot; was much larger than we could have imagined!
Lua 3 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lua 4.0 (Nov 2000) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Lua 4.0 ,[object Object],[object Object],[object Object],[object Object]
2001 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lua 5.0 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lua 5 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lua 5.1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Growth in lines of code ,[object Object],1.0 1.1 2.1 2.2 2.4 2.5 3.0 3.1 3.2 4.0 5.0 5.1

Más contenido relacionado

Destacado

Apache Zookeeper 分布式服务框架
Apache Zookeeper 分布式服务框架Apache Zookeeper 分布式服务框架
Apache Zookeeper 分布式服务框架Cabin WJ
 
Big Data Analytics with R
Big Data Analytics with RBig Data Analytics with R
Big Data Analytics with RGreat Wide Open
 
A visual DSL toolkit in Lua: Past, present and future
A visual DSL toolkit in Lua: Past, present and futureA visual DSL toolkit in Lua: Past, present and future
A visual DSL toolkit in Lua: Past, present and futureAlexander Gladysh
 
用十分鐘決定要不要念大學《資訊工程系》
用十分鐘決定要不要念大學《資訊工程系》用十分鐘決定要不要念大學《資訊工程系》
用十分鐘決定要不要念大學《資訊工程系》鍾誠 陳鍾誠
 
網路社群經營與雲端應用 (第二版)
網路社群經營與雲端應用 (第二版)網路社群經營與雲端應用 (第二版)
網路社群經營與雲端應用 (第二版)鍾誠 陳鍾誠
 
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeperSaurav Haloi
 

Destacado (7)

Apache Zookeeper 分布式服务框架
Apache Zookeeper 分布式服务框架Apache Zookeeper 分布式服务框架
Apache Zookeeper 分布式服务框架
 
Big Data Analytics with R
Big Data Analytics with RBig Data Analytics with R
Big Data Analytics with R
 
A visual DSL toolkit in Lua: Past, present and future
A visual DSL toolkit in Lua: Past, present and futureA visual DSL toolkit in Lua: Past, present and future
A visual DSL toolkit in Lua: Past, present and future
 
Class ppt intro to r
Class ppt intro to rClass ppt intro to r
Class ppt intro to r
 
用十分鐘決定要不要念大學《資訊工程系》
用十分鐘決定要不要念大學《資訊工程系》用十分鐘決定要不要念大學《資訊工程系》
用十分鐘決定要不要念大學《資訊工程系》
 
網路社群經營與雲端應用 (第二版)
網路社群經營與雲端應用 (第二版)網路社群經營與雲端應用 (第二版)
網路社群經營與雲端應用 (第二版)
 
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
 

Similar a A brief history of Lua - Roberto Ierusalimschy (PUC Rio)

Use of Lua in Lab Devices
Use of Lua in Lab DevicesUse of Lua in Lab Devices
Use of Lua in Lab DevicesClaus Kühnel
 
Summer training report on java se6 technology
Summer training  report on java se6 technologySummer training  report on java se6 technology
Summer training report on java se6 technologyShamsher Ahmed
 
Fundamentals of programming and problem solving
Fundamentals of programming and problem solvingFundamentals of programming and problem solving
Fundamentals of programming and problem solvingJustine Dela Serna
 
rlanguage-201216152504.pptx
rlanguage-201216152504.pptxrlanguage-201216152504.pptx
rlanguage-201216152504.pptxSubramanian Mani
 
Lua - Programming Language
Lua - Programming LanguageLua - Programming Language
Lua - Programming LanguageVarun Sharma
 
all languages in computer programming
all languages in computer programmingall languages in computer programming
all languages in computer programminghamza239523
 
Switching from lispstat to r
Switching from lispstat to rSwitching from lispstat to r
Switching from lispstat to rAjay Ohri
 
The Miseducation of C++
The Miseducation of C++The Miseducation of C++
The Miseducation of C++Kevlin Henney
 
Python Intro For Managers
Python Intro For ManagersPython Intro For Managers
Python Intro For ManagersAtul Shridhar
 
Bay NET Aug 19 2009 presentation ppt
Bay  NET Aug 19 2009 presentation pptBay  NET Aug 19 2009 presentation ppt
Bay NET Aug 19 2009 presentation pptArt Scott
 
The Mystery of Natural Language Processing
The Mystery of Natural Language ProcessingThe Mystery of Natural Language Processing
The Mystery of Natural Language ProcessingMahmood Aijazi, MD
 
Which programming language should you learn next?
Which programming language should you learn next? Which programming language should you learn next?
Which programming language should you learn next? Ganesh Samarthyam
 
Unit 4 Assignment 1 Comparative Study Of Programming...
Unit 4 Assignment 1 Comparative Study Of Programming...Unit 4 Assignment 1 Comparative Study Of Programming...
Unit 4 Assignment 1 Comparative Study Of Programming...Carmen Sanborn
 

Similar a A brief history of Lua - Roberto Ierusalimschy (PUC Rio) (20)

Use of Lua in Lab Devices
Use of Lua in Lab DevicesUse of Lua in Lab Devices
Use of Lua in Lab Devices
 
Summer training report on java se6 technology
Summer training  report on java se6 technologySummer training  report on java se6 technology
Summer training report on java se6 technology
 
R_L1-Aug-2022.pptx
R_L1-Aug-2022.pptxR_L1-Aug-2022.pptx
R_L1-Aug-2022.pptx
 
Fundamentals of programming and problem solving
Fundamentals of programming and problem solvingFundamentals of programming and problem solving
Fundamentals of programming and problem solving
 
Ruby
RubyRuby
Ruby
 
Ruby
RubyRuby
Ruby
 
rlanguage-201216152504.pptx
rlanguage-201216152504.pptxrlanguage-201216152504.pptx
rlanguage-201216152504.pptx
 
Lua - Programming Language
Lua - Programming LanguageLua - Programming Language
Lua - Programming Language
 
all languages in computer programming
all languages in computer programmingall languages in computer programming
all languages in computer programming
 
miniproject.pptx
miniproject.pptxminiproject.pptx
miniproject.pptx
 
Switching from lispstat to r
Switching from lispstat to rSwitching from lispstat to r
Switching from lispstat to r
 
Introtor
IntrotorIntrotor
Introtor
 
The Miseducation of C++
The Miseducation of C++The Miseducation of C++
The Miseducation of C++
 
Python Intro For Managers
Python Intro For ManagersPython Intro For Managers
Python Intro For Managers
 
Programming languages
Programming languagesProgramming languages
Programming languages
 
Bay NET Aug 19 2009 presentation ppt
Bay  NET Aug 19 2009 presentation pptBay  NET Aug 19 2009 presentation ppt
Bay NET Aug 19 2009 presentation ppt
 
The Mystery of Natural Language Processing
The Mystery of Natural Language ProcessingThe Mystery of Natural Language Processing
The Mystery of Natural Language Processing
 
Which programming language should you learn next?
Which programming language should you learn next? Which programming language should you learn next?
Which programming language should you learn next?
 
Unit 4 Assignment 1 Comparative Study Of Programming...
Unit 4 Assignment 1 Comparative Study Of Programming...Unit 4 Assignment 1 Comparative Study Of Programming...
Unit 4 Assignment 1 Comparative Study Of Programming...
 
Speaking in Tongues
Speaking in TonguesSpeaking in Tongues
Speaking in Tongues
 

Más de Kore VM

Robotic Testing to the Rescue - Paul Dubois (DoubleFine)
Robotic Testing to the Rescue - Paul Dubois (DoubleFine)Robotic Testing to the Rescue - Paul Dubois (DoubleFine)
Robotic Testing to the Rescue - Paul Dubois (DoubleFine)Kore VM
 
Sony Lua - RJ Mical (SCEA)
Sony Lua - RJ Mical (SCEA)Sony Lua - RJ Mical (SCEA)
Sony Lua - RJ Mical (SCEA)Kore VM
 
Optimizing Lua For Consoles - Allen Murphy (Microsoft)
Optimizing Lua For Consoles - Allen Murphy (Microsoft)Optimizing Lua For Consoles - Allen Murphy (Microsoft)
Optimizing Lua For Consoles - Allen Murphy (Microsoft)Kore VM
 
Lua and adaptive audio - Don Veca (Activision)
Lua and adaptive audio - Don Veca (Activision)Lua and adaptive audio - Don Veca (Activision)
Lua and adaptive audio - Don Veca (Activision)Kore VM
 
Lua patient zero bret mogilefsky (scea)
Lua patient zero   bret mogilefsky (scea)Lua patient zero   bret mogilefsky (scea)
Lua patient zero bret mogilefsky (scea)Kore VM
 
Lua and fable jonathan shaw (lionhead)
Lua and fable   jonathan shaw (lionhead)Lua and fable   jonathan shaw (lionhead)
Lua and fable jonathan shaw (lionhead)Kore VM
 

Más de Kore VM (6)

Robotic Testing to the Rescue - Paul Dubois (DoubleFine)
Robotic Testing to the Rescue - Paul Dubois (DoubleFine)Robotic Testing to the Rescue - Paul Dubois (DoubleFine)
Robotic Testing to the Rescue - Paul Dubois (DoubleFine)
 
Sony Lua - RJ Mical (SCEA)
Sony Lua - RJ Mical (SCEA)Sony Lua - RJ Mical (SCEA)
Sony Lua - RJ Mical (SCEA)
 
Optimizing Lua For Consoles - Allen Murphy (Microsoft)
Optimizing Lua For Consoles - Allen Murphy (Microsoft)Optimizing Lua For Consoles - Allen Murphy (Microsoft)
Optimizing Lua For Consoles - Allen Murphy (Microsoft)
 
Lua and adaptive audio - Don Veca (Activision)
Lua and adaptive audio - Don Veca (Activision)Lua and adaptive audio - Don Veca (Activision)
Lua and adaptive audio - Don Veca (Activision)
 
Lua patient zero bret mogilefsky (scea)
Lua patient zero   bret mogilefsky (scea)Lua patient zero   bret mogilefsky (scea)
Lua patient zero bret mogilefsky (scea)
 
Lua and fable jonathan shaw (lionhead)
Lua and fable   jonathan shaw (lionhead)Lua and fable   jonathan shaw (lionhead)
Lua and fable jonathan shaw (lionhead)
 

Último

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 

A brief history of Lua - Roberto Ierusalimschy (PUC Rio)

  • 1. A Brief History of Lua Roberto Ierusalimschy chief Lua architect
  • 2.
  • 3.
  • 4. DEL Data Entry Language :e gasket &quot;gasket properties&quot; mat s # material d f 0 # distance y f 0 # stress t i 1 # facing type :p gasket.d > 30 gasket.d < 3000 gasket.y > 335.8 gasket.y < 2576.8
  • 5.
  • 6. Programa Gr áfico Mestre program to visualize geologic profiles
  • 7.
  • 8.
  • 9. what about a common language for both projects?
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20. Lua 2.1: Constructors t = @(size) -- empty t = @[a, b, c] -- list t = @{x = 10, y = 20} -- record t = @foo{x=10, y = 20} -- object t = {} -- empty t = {a, b, c} -- list t = {x = 10, y = 20} -- record t = foo ( {x=10, y = 20} ) -- object Lua 1.1 Lua 2.1
  • 21.
  • 22.
  • 23.
  • 24. Beachhead in Games From: Bret Mogilefsky <mogul@lucasarts.com> To: &quot;'lua@icad.puc-rio.br'&quot; <lua@icad.puc-rio.br> Subject: LUA rocks! Question, too. Date: Thu, 9 Jan 1997 13:21:41 -0800 Hi there... After reading the Dr. Dobbs article on Lua I was very eager to check it out, and so far it has exceeded my expectations in every way! It's elegance and simplicity astound me. Congratulations on developing such a well-thought out language. Some background: I am working on an adventure game for the LucasArts Entertainment Co., and I want to try replacing our older adventure game scripting language, SCUMM, with Lua.
  • 25.
  • 26.  
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.

Notas del editor

  1. However, after a while, both groups started to experiment limitations with those languages. DEL was already being used in &apos;production&apos;, and users were asking all kinds of extensions.
  2. What we wanted was a &amp;quot;generic little language&amp;quot;, a language that could be used for configuration for any program that needed such language. It should have all features of a programming language, such as conditionals, loops, procedures, assignment, etc. It also should be easily embeddable in any application (that was its main goal!). It should be portable, because Petrobras had a quite diverse array of machines. It should be simple, so we could implement it fast. And it shoud have a syntax somewhat appropriated for non programmers (engineers, geologists, etc.)
  3. What we wanted was a &amp;quot;generic little language&amp;quot;, a language that could be used for configuration for any program that needed such language. It should have all features of a programming language, such as conditionals, loops, procedures, assignment, etc. It also should be easily embeddable in any application (that was its main goal!). It should be portable, because Petrobras had a quite diverse array of machines. It should be simple, so we could implement it fast. And it should have a syntax somewhat appropriated for non programmers (engineers, geologists, etc.)
  4. On one hand, Lua allowed definitions that looked exactly like in Sol. For instance, this definition for a track is exactly as it were in Sol
  5. On the other hand, the semantics was radically different. In Lua, that definition was an assignment, and the &amp;quot;at&amp;quot;-name syntax was a kind of constructor: it created an object with the given fields (x, y and title) and called the named function (&amp;quot;track&amp;quot;). That function then could do whatever it needed: type check each field, assign default values, check any kind of condition, etc.
  6. The first implementation was really simple and unpretentious. We did not even used a revision control system! The interpreter precompiled the code into bytecodes and then interpreted the bytecodes with a virtual stack machine (inspired in Modula&apos;s M machine). The compiler was written with Lex and Yacc, and was strictly one pass, with no intermediate representation. The whole system had less than five thousand lines of C code.
  7. We really did have few expectations for Lua 1.0 (as witnessed by its implementation). We wanted to solve our problems with our projects, and with luck also help other projects at Tecgraf. In the end we were very happy with the result. Soon, other projects started using Lua for several different tasks.
  8. Around 1994, OO fever was in its height. The two most frequent questions we heard were &amp;quot;is Lua an object-oriented language?&amp;quot; and &amp;quot;why not?&amp;quot;. So, we started a new version to try to better answer those questions. Lua 2.1 started two important (but not necessarily good) trends in Lua: incompatibility changes between versions and avoiding though decisions.
  9. Inspired by Self, we decided for a prototype-based mechanism. We wanted the easiest modification to the language that would allow us to answer &amp;quot;yes, Lua is an object-oriented language&amp;quot;. (Or, more exactly, &amp;quot;can be an object-oriented language!) We added a mechanism called &amp;quot;fallbacks&amp;quot; to Lua.
  10. A major change was in the syntax. We unified the different kinds of constructors in an uniform syntax. More important, we removed the concept of &amp;quot;constructor&amp;quot; (in the OO sense) and replaced by a syntactic sugar for function calls.
  11. During that period, Lua slowly started to attract some attention outside Tecgraf and PUC. Its first home page was inside my personal page. As we started to receive several questions from outside, we decided to create a list, so that users could answer the questions from other users.
  12. based on a stack abstraction