Jump to: navigation, search
  번역근원 PyoLogo 원문  
  english | 한국어   +/- 차이  

환영합니다 | Portal | XO Korea | Deployment | Content | Hardware | Software | Mesh Network | Ethics | LOS | XO City | Accreditation | Consortium

파이오로고 [pie-o-logo] 또는 파이선 오프로고파이선 상층에 만들어진 로고 프로그래밍 언어의 수행입니다. 이것은 MIT 미디어랩의 Arnan (Roger) Sipitakiat's 이론 프로젝트에서 성장하였으며, 간단한 로고 인터프리터와 단순한 IDE로 구성되어 있습니다.


현재 상황

현재 이론 수준의 소프트웨어이며, 완전한 제품과는 거리가 한참 멉니다. 할 수 있는 것과 아닌 것의 목록은 아래와 같습니다.

가용한 특성

  • Logo Primitives.Logo primitives 서브 세트를 지원합니다. 아래 명령어 리스트 참조.개발 과정을 통해 보다 많은 명령어들이 추가될 것입니다.
    • Turtle Geometry (drawing) primitives 대부분이 가용합니다.
    • List 및 list manipulation commands
    • 일반적인 컨트롤 흐름. If, ifelse, repeat, etc
    • 변수. Using the 'make' command and some other alternatives
    • 수학적 오퍼레이션. sin, cos, tan, sqrt, etc
  • 다중 절차 지원Supports multiple procedures with parameter passing and procedure output
  • 멀티 스레디드 Multi-threaded. I.e. the 'launch' and 'forever' commands creates a new background process
  • turtle shapes 지원

이론적 특성

이론적 형태의 파이오로고에는 일부 비전통적 특성들이 들어가 있는데, 아래는 그 일부입니다.

  • 로보틱스 Robotics. 라이오로고는 GoGo Board를 통해 센서 인풋과 컨트롤 actuators를 접수할 수 있습니다. OLPC가 마이크로폰 잭을 통해 센서 인풋을 받아들이므로, 이 특성은 이 가능성을 이용하는데 채택될 수 있습니다.
  • 라인 오브젝트 Line objects. 터틀의 포지션을 추적하거나, 센서 값을 시각화하는데 이용될 수 있는 슬라이더 형태의 오브젝트들입니다.
  • 변수 히스토리 Variable history. 모든 변수는 이전 값들의 기록을 유지하는데, 변수의 비율을 계산하거나 (가령, 위치 -> 스피드), 디버깅 목적에 이용될 수 있습니다.

이슈와 누락된 아이템들

  • 성능. PyoLogo는 A 테스트 보드 상에서는 매우 느리게 동작합니다.
  • 리눅스 하에서 일부 UI 이슈가 있습니다.
  • 버그가 엄청나며, 광범위한 테스트가 필요합니다.
  • 에러 보고. 로고 프로그램에서 에러들은 잘 보고되어 있지 않으며, 사용자가 자신의 로고 프로그램을 디버깅하기 어렵습니다.
  • 멀티미디어, 사운드, 비디오, 텍스트 박스, 드로잉 툴이 없습니다.
  • 유저 프로그램을 위한 UI 위젯도, 버튼도, 체크 박스도 없습니다.
  • 다중 페이지를 지원하지 않습니다.


OLPC 코드 리포지토리에 소스코드를 올릴 준비를 하고 있으며, 곧 대중적인 배포가 가능할 것입니다.

기술적 정보

파이오로고가 구성되는 방식은 기술적 정보 페이지를 참조하십시오.

로고 인터프리터

캐주얼 로고

파이오로고는 다른 로고 수행들과 부합하지만, 일부 비전통적 속성properties들을 포함합니다.

  • Not space delimited. 'Show 1+1' works in PyoLogo whereas most other Logo interpreters do not accept this. Logo normally requires spaces between every token. So, only 'Show 1 + 1' would work. Although the uniformity of the Logo language is broken when space becomes optional, the author believes it is a worthwhile trade off. Kids too often becomes frustrated or annoyed by the strict requirement for space.
    • This, of course, comes at a cost. There are some cases where the interpreter will not be able to decide what to do. For example, if we have a procedure called sum that takes two integers as an input. So, sum 2 3 returns 5. A problem occurs when we try to call sum 2 -3. The interpreter has no way of knowing if the user wants to do a sum of 2 and -3 or a sum of (2-3) and another value which is missing (and thus should complain to the user.) The user will have to tell the compiler what to do. I.e. in this case the user can call sum 2 (-3).
  • Multiple ways to manipulate variables. The author finds Logo's 'make' primitive unnecessarily complicated for children. The 'set' method is perhaps a better way to go. PyoLogo supports both. For example:
make "counter 0
make "counter :counter + 1
show :counter

The following alternative is also available

global [counter]

setcounter 0
setcounter counter + 1
show counter
  • Object oriented properties as a shortcut for 'ask.' For example, a typical logo command to vertically align one turtle to another would be:
t1, setx ask "t2 "xcor

PyoLogo allows a dot format for accessing a turtle's property.

t1, setx t2.xcor

Both the traditional and shortened approaches are supported in PyoLogo.

지원되는 LOGO 워드

LOGO keyword list
Letter Implemented Partially Missing
A abs, and, announce, answer, arccos, arcsin, arctan, ascii ask
B bf (butfirst), bk (back), bl (butlast) bg, bottom
C cc, cg, char, chdir, clean, color, cos, count, currentdir cancel, carefully, clearname, clearnames, clickoff, clickon, colorunder, creatprojectvar
D distance difference, directories, dolist, done?, dotimes
E empty?, exp equal?, erfile, errormessage, everyone, exporttext
F fd (forward), first, forever files, fill, fontsize, fput, freeze, freezebg
G getproject get getpage, glide, greater?
H heading, ht home
I if, ifelse, int, item identical?, importtext, infront
K key?
L last, launch, list, list?, ln, log, lt (left) less?, let, listen, loadpict, loadshape, loadtext, local, lput
M make, mousepos member?, minus
N name?, newturtle, not, number? name, names, newbutton, newpage, note, np (namepage)
O op (output), or opaque
P parse, pd, pensize, pi, pos, pu pagelist, pick, power, pr (print), presentationmode, product, projectlist, projectvars
Q question quotient
R random, readchar, remove, repeat, resett, round, rt (right), run remainder, rerandom, rest, restore
S setc (setcolor), seth (setheading), se (sentence),setpensize, setpos, setsh (setshape), setsize, setx, sety, shape, show, sin, size, sqrt, st, stamp, stop, stopall savepict, saveproject, saveshape, savetext, set, setbg, setinstruction, setinstrument, startup, stopme, sum
T tan, thing, timer, touching?, towards tto (talkto), turtlesown
U unfreeze, unfreezebg
W wait, waituntil, who, word, word? when
X xcor
Y ycor