260 likes | 623 Views
Pavel Boytchev. April 4, 2006 – Sofia, Bulgaria. About this presentation. The History of Logo The Evolution of Elica Squeak and Elica Demonstrations. The History of Logo. The History of Logo. First Logo appeared 40 years ago Oversimplified version of LISP
E N D
Pavel Boytchev April 4, 2006 – Sofia, Bulgaria
About this presentation • The History of Logo • The Evolution of Elica • Squeak and Elica • Demonstrations
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
Family of Logo Dialects • The most diverse programming language *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 - 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 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 Turtle TurtleTracks TurtleTracks.net UCBLogo Visual Logo VLogo VRMath Waterloo Logo Web Turtle Win-Logo WinLogo XLogo XLogo xLogo Yellow Brick Logo YoYo ZLogo
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 No need of OOP syntax complex data library support 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
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
Similar or Different • Developed independently • Goal was to fight limitation of nearby programming languages • Some surprising similarities in technical details, programming ideas and solutions • Not brothers, but definitely not strangers
Squeak OOP & Elica NOOP Object subclass: #Point instanceVariableNames: 'x y' classVariableNames: '' poolDictionaries: '' category: 'Elica-Sample‘ Point >> x: xNumber y: yNumber x := xNumber. y := yNumber. Point >> distance ^ (x squared + y squared) sqrt a := Point new x: 10 y: 30. b := Point new x: -30 y: 30. a distance printString. b distance printString. 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
Squeak and Elica • Syntax similarities • List of items: (1 2 3) and [1 2 3] • Blocks of program code: [ stat1 stat2 …] • Several ways to express the same idea • More natural statements (get rid of extra symbols) • Common language features • Typeless variables • Using code as data: a := [:x | x + 1] • Heterogeneous collections • OOP (pure in Squeak, NOOP in Elica) • No capsulation • No access limitation and private fields
Squeak and Elica • Internals • Byte-code, GC, VM • Most (or all) sources are available • Small core, enriched by user-definable libraries • Implementation • Execute a piece of code • Relatively slow
Squeak and Elica • Usage • Free to download and use • Used for exploration • Language is a medium to express thoughts • Suitable for children, students, teachers, non-professionals and professional researchers • Brings modern technology to beginners (OOP, multimedia, etc.) • Both are rather poetic environments
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 NorthPole.eli (custom language)
Error Inspector • Custom error reporting • Error handlers generate XML on-the-fly • Shows precise error position, error history • Explains the error see ElicaError.eli
Elica Help & Examples • Elica Museum • Five flying turtles • Towers of Hanoi • Urbanizing Turtleland • Showing all examples • Other examples • Hoolahoop (demos 2, 7 and 8) • Pair of eyes (demo 2) • Ghost stories (demo 13) • Androids