לוגו (שפת תכנות)

לוגו היא שפת תכנות חינוכית שפותחה בסוף שנות השישים על ידי ואלי פוירציג וסימור פאפרט במכון הטכנולוגי של מסצ'וסטס (MIT), תוך התבססות על שפת LISP ורעיונותיו של הפסיכולוג ז'אן פיאז'ה.
ציור דמוי כיסא והקוד ליצירתו.

==מאפייני השפה==
פיתוח שפת לוגו הונחה על ידי תפישת עולם חינוכית, בכל הקשור לבתי-ספר בכלל, ולמחשבים בחינוך בפרט. ביישום המקובל של למידה ממוחשבת משמש המחשב כתחליף למורה: המחשב מלמד את התלמיד (מתמטיקה, אנגלית וכו'). בלוגו מלמד התלמיד את המחשב, ובכך מפתח את יכולתו וידיעותיו.

ללוגו, כמו לכל שפת תכנות, אוצר מילים נתונות (שהמשתמש יכול לשנות את משמעותן), שבאמצעותו נכתבות התוכניות. בלוגו, תכנות פירושו הרחבת אוצר המילים של השפה. המשתמש מלמד את המחשב בהדרגה מונחים חדשים, שמאפשרים את הגשמת מטרתה של התוכנית. הדבר נעשה באופן דומה להגדרת פונקציות (פרוצדורות, סברוטינות או מתודות) בשפות תכנות אחרות, אבל בלוגו מושם דגש על "לימוד" המחשב. בניגוד למקובל בשאר שפות התכנות, כל מונח נערך בדרך כלל בנפרד.

דוגמה: יש לכתוב תוכנית שמטרתה לצייר שכונת מגורים. אוצר המילים הבסיסי (הן לא שמורות) של לוגו כולל, בין השאר, הוראות לציור קטע ישר והוראות לפנייה ימינה או שמאלה בזווית נדרשת. באמצעות אוצר מילים מינימלי זה נלמד תחילה את המחשב לצייר ריבוע, מלבן ומשולש. בהמשך נלמד את המחשב לצייר בית שמורכב מהצורות הללו, ולבסוף ילמד לצייר שכונה שמורכבת מבתים אחדים. פעולת התכנות בצורה זו נעשית מובנית יותר, וניטלים ממנה התחכום הטכני והמוזרות שמאפיינים שפות תכנות נפוצות.

כפי שניתן לחוש מדוגמה זו, שפת לוגו כוללת יכולת גרפית המאפשרת לצייר באמצעותה, בקלות יחסית, רישומים מורכבים. יכולת גרפית זו, שהיא מסימני ההיכר של לוגו, נוספה לשפה בשלב מתקדם של פיתוחה, וזאת כדי לאפשר שימוש בשפה באמצעות כלי פשוט, שמוכר היטב גם לילדים (וגם למבוגרים חסרי רקע מתמטי). הציור נעשה באמצעות "צב", שהיה בתחילה חפץ מכני דמוי צב, והפך במהרה לצב סמלי, המיוצג על ידי חץ משולש על מסך המחשב.

==מילות פקודה בסיסיות==
* נקה מסך - CLEARSCREEN (בקיצור: CS)
* זוז קדימה - FORWARD (בקיצור: FD)
* זוז אחורה - BACK (בקיצור: BK)
* פנה ימינה - RIGHT (בקיצור: RT)
* פנה שמאלה - LEFT (בקיצור: LT)
* הרם עט - PENUP (כלומר שמעתה כל הוראת תזוזה לא תלווה ברישום קו) (בקיצור: PU)
* הורד עט - PENDOWN (כלומר שמעתה כל הוראת תזוזה תלווה ברישום קו) (בקיצור: PD)
* חזור פעמים אחדות על ההוראות שבהמשך (לולאה) - REPEAT
* צב הביתה - home (מחזיר את הצב לנקודת ההתחלה)
* הראה את הצב - SHOWTURTLE (בקיצור: ST)
* הסתר את הצב - HIDETURTLE (בקיצור: HT)

==דוגמאות==
הסימן ; הוא תחילתה של הערה.

דוגמה 1: תוכנית לוגו קטנה לציור ריבוע:<BR>
<DIV dir=ltr align=left><CODE>
 REPEAT 4 [FORWARD 200 LEFT 90] ; square
</CODE></DIV>
התוכנית מורה לצב לבצע 4 פעמים את ההנחיה: זוז קדימה 200 פיקסלים ואחר כך פנה שמאלה ב-90 מעלות. הצב מבצע הנחיה זו, תוך שהוא רושם על-גבי המסך את מסלול תנועתו.

דוגמה 2: ציור מורכב יותר מתקבל כאשר הצב מבצע את ההנחיה הקודמת 9 פעמים, תוך שינוי זווית המוצא שלו ב-40 מעלות ימינה בכל פעם:<BR>
<DIV dir=ltr align=left><CODE>
 REPEAT 9 [REPEAT 4 [FORWARD 120 LEFT 90] RIGHT 40] ; flower
</CODE></DIV>

דוגמה 3: דוגמה זו ממחישה שלוש תכונות של לוגו:
* הוספת מילים חדשות לשפה: בדוגמה נוספת לשפה המלה <CODE>spiral</CODE>, שמאפשרת ציור ספירלה.
* העברת פרמטרים
* רקורסיה, שהמימוש שלה בלוגו טבעי ונפוץ.
<DIV dir=ltr align=left><CODE>
 TO spiral :size
 IF :size > 30 [STOP] ; a stop condition
 FORWARD :size RIGHT 15 ; many lines of action
 spiral :size *1.02 ; the tailend recursive call
 END
</CODE></DIV>
לאחר הגדרת המלה החדשה, הפעלתה נעשית באמצעות כתיבתה כהוראה, למשל <CODE>spiral 10</CODE>, שתיתן את התוצאה הבאה (המשולש בקצה הספירלה הוא ה"צב", שהוסתר בדוגמאות הקודמות):
דוגמה 3
דוגמה 4: דוגמה זו ממחישה מעט מהיכולת המתמטית של לוגו, באמצעות יצירת מילה לחישוב הפונקציה עצרת, על-פי הגדרתה הרקורסיבית של פונקציה זו.
<DIV dir=ltr align=left><CODE>
 TO factorial :n
 IF :n =1 [OUTPUT 1] ; a stop condition
 OUTPUT :n * factorial :n-1
 END
</CODE></DIV>

==במערכת החינוך בישראל==

השפה הובאה לישראל על ידי פרופ' אורי לירון שחזר משבתון בבוסטון. פרופ' לירון הקים בישראל גם את אל"י - אגודת לוגו הישראלית, וכתב את ספרי הלימוד הראשונים של לוגו בעברית (יחד עם פרופ' רינה צצקיס ופרופ' פרלה נשר).

פרופ' יהושפט גבעון הכניס את הקורסים הראשונים בהוראת לוגו למכללות הכשרת מורים כחלק אינטגרלי של ההכשרה להוראת מדעי המחשב. מאוחר יותר הוא לימד גם קורס "מדעי המחשב בישומם בחינוך" במסגרת התוכנית לתואר שני בחינוך באוניברסיטת תל אביב.

מאוחר יותר פותחה תוכנית לימודים לתלמידי תיכון "מבוא למדעי המחשב בסביבת לוגו". התוכנית פותחה במחלקה להוראת הטכנולוגיה והמדעים בטכניון על ידי צוות "מגוון" שפרופ' לירון עמד בראשו. בשנות ה-80 ובתחילת שנות ה-90 התקיימו בבתי ספר יסודיים ובחטיבות הביניים לימודים של שפת התכנות "לוגו". בהמשך נלמדה בבתי הספר התיכוניים גרסה חדשה יותר בשם "תבל", שפותחה על ידי אותו צוות.

החל משנות ה-2000, נלמדת ביחידה של נוער שוחר מדע וטכנולוגיה בטכניון<ref></ref> סדנה שנקראת "עולם התוכנה".<ref></ref><ref></ref> הסדנה נלמדת באמצעות תוכנת Microworlds Ex <ref></ref> ונמשכת 12 שיעורים, ומיועדת לתלמידים בכיתות ה-ח.

הסדנה משתמשת בתוכנה המבוססת על שפת לוגו המאפשרת חשיפה של תלמידים צעירים להיכרות ראשונה עם תכנים מרכזיים במדעי המחשב. באמצעות שפה זו, לומדים התלמידים את העקרונות הבסיסיים המשותפים לכל שפת תכנות.

במהלך הסדנה התלמידים יוצרים באמצעות שפת לוגו פרויקטים בתכנות בנושאים שקרובים לליבם, כדוגמת: משחקי מבוכים, משחקי מלחמה, פקמנים, משחקי זיכרון, חידונים ועוד. החשיפה לשפה גרפית, קלה יחסית להבנה, מאפשרת לאלו שימשיכו במגמת מחשבים מניעת קשיי הבנה רבים בלמידת עקרונות בסיסיים של תכנות, ולאלו שלא ילכו למגמת מחשבים - חשיפה לנושא במהלך שנות לימודיהם במערכת החינוך.

הסדנה מיועדת לתלמידים וכן לקבוצות לימוד מאורגנות מבתי ספר. במסגרת עמותת אופנים, מגיעות גם קבוצות לימוד מהפריפריה שמשתלבות בסדנאות השונות.

במסגרת פעילות רפא"ל לקידום המדע בפריפריה, התקיים גם קורס העשרה שבמסגרתו למדו תלמידי חטיבות הביניים בקרית החינוך אורט עכו קורס של תכנות בסיסי. הקורס היה מבוסס על שפת לוגו ונלמד באמצעות תוכנת Microworlds בשנים 2006-2013.

==לקריאה נוספת==
* אורי לירון, פרלה נשר ורינה צצקיס, מדריך לעסקי צבים - גרפיקה, פתרון בעיות ותכנות מיבני בשפת לוגו, הוצאת BUG מחשבים, 1984.
* אורי לירון, "לוגו כיום: חזון ומציאות", מעשה חושב, אפריל 1986.
* צו לצו - עלון אל"י - אגודת לוגו הישראלית, יצא לאור מסוף 1986 ועד 1993.

==קישורים חיצוניים==

* ש. מנולה, [https://archive.org/details/965-361-003-1-logo-functional-programming-1989/ LOGO – תכנות פונקציונלי], הוצאת הוד-עמי, 1989
* [https://www.calormen.com/jslogo/# לוגו בדפדפן]
* [http://el.media.mit.edu/logo-foundation/ Logo Foundation]
* [https://turtleacademy.com/?lang=he_IL אקדמיית הצב: לימוד לוגו בעברית דרך הדפדפן]
* 

==הערות שוליים==

קטגוריה:שפות תכנות