greetings from team cal! andrei tapai (language guru) fei-tzin lee (system integrator) ramses...

28
Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator) Percee Goings (Project Manager)

Upload: cornelia-harrington

Post on 05-Jan-2016

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Greetings From Team CAL!

Andrei Tapai (Language Guru)Fei-Tzin Lee (System Integrator)

Ramses Driskell (System Architect)Geoffrey Loss (Tester and Validator)

Percee Goings (Project Manager)

Page 2: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Who is Cal

Mr. JavaMrs. Flexyacc

Page 3: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Can I play with Cal

Page 4: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Why is Cal bothering me

Page 5: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Management ?

Page 6: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Source

Page 7: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Motivations and Inception of CAL

*This pattern is “Rule 90”

1 part high-school computer science nostalgia

1 part fascination with Cellular automatons

= Cal

+

Page 8: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Motivations and Inception of CAL

*This pattern is “Rule 90”

1 part high-school computer science nostalgia

1 part fascination with Cellular automatons

= Cal

+

Page 9: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

The Properties of CAL Programs

*This pattern is “Rule 3283936144”

- We wanted only the essentials- 1. A specification for the grid- 2. A specification of what properties

cells have and how they are initialized

- 3. A main function that is applied to all cells to take them from state T to state T+1

- 4. All helper functions associated with the main function

Page 10: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Syntactic Constructs of CAL

1. Definition of grid size2. Definition of cells

3. functions!

(type name (parameters)|Statements|

4. But wait, what is this!

5. …at last: The cal_it() function!i. Think of it as main!ii. Execution begins hereiii. Provides the specification for a “tick” of an automaton.

Note: We’re still not sure if its pronounced “call it”or “cal it” (as in cal-culator). Maybe we’ll never know.

Meanwhile in other languages:

ClassesConstructorsIncomprehensible GUI codeX and Y coordinatesX = Y + (1/2 + windowWidth) +… border + padding…. What.Annoying string constructsGet() and set()SEMICOLONSAnd especially…Failing to work becauseYou put a semicolon After an if statement.

Page 11: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Translator Architecture

CAL

Source Code

Page 12: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Translator Architecture

CAL

Source Code

Lexical Analysis

Token Stream

Page 13: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Translator Architecture

CAL

Source Code

Lexical Analysis

Token Stream

Syntactical Analysis/SDD

AST

Page 14: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Translator Architecture

CAL

Source Code

Lexical Analysis

Token Stream

Syntactical Analysis/SDD

AST

AST Traversal/Code Generation

Target Java Code

Page 15: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Translator Architecture

CAL

Source Code

Lexical Analysis

Token Stream

Syntactical Analysis/SDD

AST

AST Traversal/Code Generation

Target Java Code

Page 16: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Overview

Seeds.cal SeedsCAL.java

cal.ycal.flex

jflex byacc

Page 17: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

OverviewSeedsCAL.java

Driver

GUI

CAL_GUI

Page 18: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Runtime

Driver“SeedsCAL.java”

SeedsCAL class

GUI

Java reflection

CAL_GUI

inner Cell class

Page 19: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Development

Page 20: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

TESTINGBy

Geoffrey Loss

Page 21: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)
Page 22: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)
Page 23: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)
Page 24: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

STILL LIFES

Page 25: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

OSCILLATORS

Page 26: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Now for a quick Demo…

Page 27: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Lessons Learned!

• Starting early!• Compilers can be/are extremely rewarding

ventures• Get a barebones up and running ASAP• Don’t break your compiler by trying to

implement too many things at once• Integrating a GUI can be very difficult• Decide on the specifics early on!

Page 28: Greetings From Team CAL! Andrei Tapai (Language Guru) Fei-Tzin Lee (System Integrator) Ramses Driskell (System Architect) Geoffrey Loss (Tester and Validator)

Thanks Folks!