Лого (мова програмування)
Типовою і очікуваної частиною мови і середовища програмування Лого є кошти черепашачою графіки. які, з одного боку, дозволяють додати наочність навчання програмуванню, а з іншого - дуже органічно поєднуються з широким використанням рекурсії.
Типові реалізації Лого (від LCSI, наприклад) надають програмісту бібліотеку вбудованих команд, текстовий термінал інтерпретатора і «лист програм», на якому можна розмістити інструкції реєстрації нових функцій. Також забезпечується як мінімум один графічний екран, як мінімум з однієї «черепашкою».
У багатьох реалізаціях підтримується многопоточность - на рівні виконання команд черепашками і на рівні можливості запустити команду асинхронно і надалі перевіряти, чи завершилася вона. Є можливість передати на виконання інтерпретатору програмно сформований список слів.
Лого більш прогресивний, ніж процедурні мови програмування Бейсік і Фортран. які зазвичай використовуються для навчання програмуванню. Однак, реалізації Лого, як правило, не мають достатньо добре розроблених програм для роботи з файлами, і це заважає йому отримати широке поширення в якості мови програмування.
По суті, мова Лого є адаптацією мови Лісп (деякі навіть називають його «Ліспі без дужок»).
Синтаксис і інтерпретація
У мові Лого програма являє собою список «слів».
Як правило, реалізації Лого слабо обмежують перелік допустимих в слові символів, тому команди можна називати і по-російськи. Більш того, багато російськомовних реалізації Лого мають російськомовні команди або вбудовані російськомовні синоніми для всіх вбудованих команд.
Слова в списку розділяються пробілами.
Слово може бути або командою, або літералом одного з трьох видів - строковим, числовим або літералом списку. Команда може повертати значення, тоді вона вважається функцією. Літерали повертають своє значення безпосередньо. Строковий літерал - оформляється як слово, перед яким ставлять прямі подвійні лапки. Слова, що складаються з цифр, інтерпретуються як числові літерали. Для формування списку з слів в тексті програми їх оточують квадратними дужками.
Також є команди збереження і отримання значення по імені, але багато реалізації доповнюють його поняттям змінної - вводячи компактний синтаксис команди для отримання значення змінної. Тому зазвичай для отримання значення змінної достатньо написати її ім'я, випередивши його двокрапкою.
Є спеціальний синтаксис для передачі до деяких вбудовані команди заздалегідь не фіксованої кількості параметрів. Для цього пропонується укладати команду і всі її параметри в круглі дужки, наприклад: (СПИСОК: A: Б: В: Г 1 2 3 4) Для призначених для користувача команд такий синтаксис не застосовують, тому що не передбачено синтаксису для опису обробки переданих таким чином параметрів .
Переданий на виконання інтерпретатору список команд виконується по черзі. Чергове слово інтерпретується як команда з поточного словника системи. Якщо вона приймає параметри, то інтерпретатор виконує наступне слово зі списку, з метою отримати значення для передачі його в якості першого параметра.
Якщо команда стоїть на місці параметра, очікується що ця команда поверне значення. А якщо повертається черговий командою значення не передбачено передавати іншій команді, система повідомляє про помилку, якщо такий виклик зустрівся в тексті програми, або відображає значення, якщо виклик команди проведений в інтерактивному режимі.
Підтримується використання звичної інфіксной форми виразів математики та логіки на звичних операторах, типу «(2 + 3) * 5» і «2> 5». Але в зв'язку з тим, що за основними правилами мови спочатку йде команда, а потім її параметри, для базових арифметичних і логічних операцій в деяких діалектах (LCSI ЛогоМирах і LogoWriter, наприклад) також існують команди, з використанням яких вираження приймають вид «Додай склади 2 3 5 »і« більше? 2 5 ».
Є команда для розширення словника для користувача командами, вона приймає ім'я нової команди, список параметрів і список команд.
Передбачені два основних механізми управління ходом виконання програми: оператор циклу з фіксованим числом повторень і рекурсія.
У російській версії мови Лого:
В даний час немає єдиного стандарту мови Лого, хоча широко прийняті певні угоди про базові аспекти мови. Діалекти Лого мають значні відмінності. Ситуація ускладнюється наявністю низки програм черепашачою графіки, які помилково називаються «Лого».
Найбільш широко використовувалася і домінувала свого часу реалізацією мови була система Apple Logo, розроблена фірмою LCSI для комп'ютера Apple II і поширена в 1980-і роки. У Болгарії була проведена локалізація цього продукту на болгарський і українську мови для сумісних з Apple II комп'ютерів серії Правец 8. розповсюджувалась під назвою «Лого 2.0» і широко використовувалася в навчальному процесі в Болгарії та СРСР. Надалі вУкаіни була випущена російська локалізація продукту LCSI для MS-DOS під назвою LogoWriter.
На сьогоднішній день поширена вільна кроссплатформенная реалізація UCBLogo [3]. також відома як Berkeley Logo, недоліком якої, однак, є рудиментарний графічний інтерфейс користувача.
Для Microsoft Windows доступна система MSWLogo [4] і її новіша версія FMSLogo [5] [6]. які широко використовуються в школах Великої Британії та Австралії. Також в західних школах використовуються комерційні реалізації MicroWorlds Logo [7] і Imagine Logo [8].
MSWLogo і FMSLogo підтримують використання декількох черепах і тривимірну графіку, а також розширені можливості введення-виведення і інші розширення.
Для Mac OS X доступна безкоштовна реалізація ACSLogo [9]. має досить розвинений графічний інтерфейс, локалізацію на декількох мовах і дозволяє додавати власні локалізації.
ВУкаіни в навчальному процесі використовуються українські локалізації LCSI MicroWorlds для Windows і Mac OS X під назвою ЛогоМирах і ПервоЛого [10].
- Ніколов Р. Сендова Е. Почала інформатики. Мова Лого / Под ред. Б. Сендова, Пер. c болг. Під ред. А. В. ГІГЛАВИЙ. М. Гл. ред. фіз.-мат. лит. 1989. ISBN 5-02-013998-X