Title: THE EVOLUTION OF A PROGRAMMING LANGUAGE
1THE EVOLUTION OF A PROGRAMMING LANGUAGE
THE EVOLUTION OF A PROGRAMMING LANGUAGE
Pavel Boytchev IT Department, FMI, Sofia
University
July, 2006 Sofia, Bulgaria
2About this presentation
- The History of Logo
- The Evolution of Elica
- Elica and other programming languages
- Elica's Natural OOP
3The History of Logo
4The History of Logo
- First Logo appeared 40 years ago
- Oversimplified version of LISP
- Main target audience students, teachers
- Used for
- Introduction to programming
- Drawing using Turtle Graphics
- Exploration and construction
- Fun
5Family of Logo Dialects
- The most diverse programming language
6Family of Logo Dialects - 2
Harward (PC) Logo Helios Hiragana
Logo HoneyLogo HyperLogo IBM Logo Imagine JavaLogo
JFLogo jLogo Krell Logo KTurtle Ladybug LCSI
Logo LEGO Logo LGS LGSW
Lhogho Liogo LLOGO Logo Logo.Net Logo fuer den
PC Logo in Scheme Logo Graphico Logo Learner Logo
nyelv Logo PLUS Logo Turtle Graphics Logo Logo-i
n-Scheme Logo3D Logob1 Logob2
LogoChip Logo LogoS Logotron LogoWriter LSL
Logo LSRHS Logo LXLogo Mach Turtle
Logo MacLogo MacStarLogo MegaLogo Microworlds Micr
oworlds Ex Microworlds Ex Robotics Microworlds
JR Microworlds Pro Mini Logo
7Family of Logo Dialects - 3
MIT Logo MIT PDP-11 Logo MonoLOGO MSWLogo MSX
Logo Multi-Logo Music Logo NetLogo Object
Logo Open Logo OpenStarLogo Palm Logo Pascal
Logo PLOGO PC Logo PCW Logo PGS PIC Logo
Turtle TurtleTracks TurtleTracks.net UCBLogo Visua
l Logo VLogo VRMath Waterloo Logo Web
Turtle Win-Logo WinLogo XLogo XLogo xLogo Yellow
Brick Logo YoYo ZLogo
P_Logo Papy Logo PowerLOGO PowerMath
Logo ProLOGO Pure Golo PyLogo Quick
Logo QLogo Rabbit Logo rLogo RLS RM Nimbus
Logo Scheme Logo Screen Turtle 2 SeeLogo SharpLOGO
Logo
Sinclair Logo SmartLOGO Sprite Logo StarLogo StarL
ogo for YoYo StarLogoT StarLogo
TNG SuperLogo Terrapin Logo Terrapin
Graphics TGS TI Logo TinyLogo TKTSLogo TLC
Logo TopLogo Tortue Trend Logo
8Logo Family
- About 160 dialects
- Incompatible with each other
- Designed to experiment with various ideas and
techniques - music and graphics
- parallel processes
- object-oriented programming
- 10 dialects developed in Bulgaria
9The Evolution of Elica
10Elica Devolution
Logo
system functions
lib
lib
system procedures
system operators
lib
lib
lib
lib
lib
lib
reserved words
OOP syntax
lib
lib
complex data
lib
lib
lib
lib
11Elica Evolution
Turtle library
Win library
Graphix library
Androids library
Elica11 primitives
Logo library
Geomland library
CarTurtle library
12Programming Entities
Programs
Sets
Procedures
Functions
Variables
Arrays
Classes
Instances
Libraries
Operators
13What is ?
- What is ?
- is used as an infix operator
- but is defined as a function
- but it is actually a method of the object Logo
- apparently, it is an instance by itself, having
fields to determine properties like priority - and is stored as a variable
14Elica Features
- Language and IDE
- Small core extended by libraries
- Flexibility to the extreme
- Composing names and code at run-time
- Dynamic modification of objects
- Experimenting with different programming styles
- 3D graphics, animation, modeling
- Natural OOP
- Microworlds
15Elica andOther Programming Languages
16Exploring Other Languages
- Because of flexibility Elica users can express
their thoughts in various ways - Using Elica to get a taste of
- Logo
- Lisp
- Forth
- Prolog
- Squeak
- Functional machines
- Boxer
- Assembler
- Custom languages
17Elica Flavors
- see ElicaSqueak-1.eli (function-variable)
- see ElicaSqueak-2.eli (copyFrom to at)
- see ElicaForth.eli (postfix notation)
- see ElicaProlog.eli (knowledgebase, NL)
- see ElicaLisp-1.eli (simple CAR-CDR)
- see ElicaLisp-2.eli (functional programming)
- see ElicaError.eli (ASM, Boxer, NL)
18Elicas Natural OOP
19OOP and Natural OOP
- OOP
- Collection of concepts, tools and styles
- Requires changes in the language syntax
- Complex terminology
- Natural OOP
- Enlarged collection of concepts and styles
- No changes in the language
- No new terminology
20NOOP Concepts
- No specialized data structures for OOP elements.
- No special commands and functions to manage OOP
elements. - Every variable is local to another variable,
except for a system defined root variable. - Procedure-zombies
21NOOP Features
- Classes and instances
- Inherited objects
- Polymorphism
- Multiple parents
- Real-time class/instance modification
- Complete application of the evolutionary metaphor
- OOP-ness is encoded in user's mind, not in the
program
22OOP vs NOOP
- program Project1
- type
- TPoint class
- fx integer
- fy integer
- public
- constructor Create(x,yinteger)
- function Distancereal
- end
- constructor TPoint.Create(x,yinteger)
- begin
- fxx
- fyy
- end
- function TPoint.Distancereal
- begin
- Create the class POINT with fields X and Y, and
method Distance. Create instances A and B. Use
their Distance-s. - using Delphi OOP
- using Elica NOOP
to point x yto distance output sqrt
xxyy end end
make "a point 10 30 make "b point -30 30 print
a.distance print b.distance
23The Big Question
- If the Elica core is soooo small
- and a functionality like adding two numbers is
not hardcoded in the system but is implemented as
a user-defined library - and all this Natural OOP is so human friendly
that it gives hard time to the translator - well, how could a system like this be used to do
some REAL PROGRAMMING ???
24The Answer
- Elica Museum
- Five flying turtles
- Urbanizing Turtleland
- Other examples
- Pair of eyes (demo 2)
- Ghost stories (demo 13)
- Androids
25Questions?
26The End