1 / 26

T HE E VOLUTION OF A P ROGRAMMING L ANGUAGE

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

liming
Download Presentation

T HE E VOLUTION OF A P ROGRAMMING L ANGUAGE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. THE EVOLUTIONOFA PROGRAMMING LANGUAGE THE EVOLUTIONOFA PROGRAMMING LANGUAGE Pavel Boytchev IT Department, FMI, Sofia University July, 2006 – Sofia, Bulgaria

  2. About this presentation • The History of Logo • The Evolution of Elica • Elica and other programming languages • Elica's Natural OOP

  3. The History of Logo

  4. 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

  5. *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

  6. 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

  7. 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

  8. 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

  9. The Evolution of Elica

  10. 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

  11. Elica Evolution Turtle library Win library Graphix library Androids library Elica11 primitives Logo library Geomland library CarTurtle library

  12. Programming Entities Sets Programs Procedures Arrays Variables Functions Classes Libraries Instances Operators

  13. 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

  14. 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

  15. Elica andOther Programming Languages

  16. 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

  17. 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)

  18. Elica’s Natural OOP

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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 ???

  24. The Answer • Elica Museum • Five flying turtles • Urbanizing Turtleland • Other examples • Pair of eyes (demo 2) • Ghost stories (demo 13) • Androids

  25. Questions?

  26. The End

More Related