260 likes | 599 Views
T HE E VOLUTION OF A P ROGRAMMING L ANGUAGE. T HE E VOLUTION OF A P ROGRAMMING L ANGUAGE. Pavel Boytchev IT Department, FMI, Sofia University. July, 2006 – Sofia, Bulgaria. About this presentation. The History of Logo The Evolution of Elica Elica and other programming languages
E N D
THE EVOLUTIONOFA PROGRAMMING LANGUAGE THE EVOLUTIONOFA PROGRAMMING LANGUAGE Pavel Boytchev IT Department, FMI, Sofia University July, 2006 – Sofia, Bulgaria
About this presentation • The History of Logo • The Evolution of Elica • Elica and other programming languages • Elica's Natural OOP
The 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
*Logo ComseD Logo Logo 3-D Logo Acornsoft Logo ACSLogo AJLogo Amiga Logo Apple Logo Apple Logo II Apple Sprite Logo ARLOGO Atari Logo aUCBLogo BBN Logo BBN PDP-10 Logo Berkeley Logo COCO Logo Comenius Logo Commodore Logo Cricket Logo for YoYo DFP Logo DL Logo Dolittle DR Logo Drape E-Slate Logo Edinburgh Logo Elica ExperLogo FMSLogo Fujitsu FM-8 Logo Galapago General Turtle 2500 Geomland Ghost GLogo Graphic Logo Family of Logo Dialects • The most diverse programming language
Family 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-in-Scheme Logo3D Logob1 Logob2 LogoChip Logo LogoS Logotron LogoWriter LSL Logo LSRHS Logo LXLogo Mach Turtle Logo MacLogo MacStarLogo MegaLogo Microworlds Microworlds Ex Microworlds Ex Robotics Microworlds JR Microworlds Pro Mini Logo
Family of Logo Dialects - 3 Turtle TurtleTracks TurtleTracks.net UCBLogo Visual Logo VLogo VRMath Waterloo Logo Web Turtle Win-Logo WinLogo XLogo XLogo xLogo Yellow Brick Logo YoYo ZLogo 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 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 StarLogo for YoYo StarLogoT StarLogo TNG SuperLogo Terrapin Logo Terrapin Graphics TGS TI Logo TinyLogo TKTSLogo TLC Logo TopLogo++ Tortue Trend Logo
Logo 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
Elica Devolution Logo system functions lib lib system procedures system operators lib lib lib lib lib lib reserved words OOP syntax lib lib lib complex data lib lib lib
Elica Evolution Turtle library Win library Graphix library Androids library Elica11 primitives Logo library Geomland library CarTurtle library
Programming Entities Sets Programs Procedures Arrays Variables Functions Classes Libraries Instances Operators
What is “+” ? • Example code: PRINT 3+5 • 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
Elica 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
Exploring 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
Elica Flavors • seeElicaSqueak-1.eli (function-variable) • seeElicaSqueak-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)
OOP 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
NOOP 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
NOOP 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
OOP vs NOOP 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 program Project1; type TPoint = class fx : integer; fy : integer; public constructor Create(x,y:integer); function Distance:real; end; constructor TPoint.Create(x,y:integer); begin fx:=x; fy:=y; end; function TPoint.Distance:real; begin Result:=Sqrt(fx*fx+fy*fy) end; var A,B : TPoint; begin A:=TPoint.Create(10,30); B:=TPoint.Create(-30,30); writeln(A.Distance); writeln(B.Distance); end. to point :x :yto distanceoutput sqrt :x*:x+:y*:y end end make "a point 10 30 make "b point -30 30 print a.distance print b.distance
The 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 ???
The Answer • Elica Museum • Five flying turtles • Urbanizing Turtleland • Other examples • Pair of eyes (demo 2) • Ghost stories (demo 13) • Androids