Scratch – це блокове («drag and drop») середовище програмування для дітей, де діти можуть створювати ігри та анімації, контролювати роботів, приймати вхідні дані через сенсори та багато іншого. Є батьки, які скептично ставляться до того, чи справді у такому привабливому та простому середовищі діти навчаються чогось корисного, а не тільки бавляться.
Про те, на скільки Scratch є «справжнім» програмуванням сьогодні у Studylikeninja аргументи від Трейсі Гарднер, мами, програмістки, блогерки із популярного медіаресурсу TechAge kids.
“Scratch – це крута розвага і навчання водночас, але це ж не «справжнє» програмування, чи не так? Я маю на увазі, перетягування кольорових блоків по екрану, це всього-на-всього для маленьких діток, еге ж? І це не навчає справжнім навичкам програмування.”
Я читала багато подібних коментарів від батьків. Іноді батьки думають, що їхня дитина уже занадто доросла як для Scratch. Інші думають, що це просто коротка сходинка і хочуть якнайшвидше віднайти щось наступне. ІТ професіонали також часто припускають, що Scratch – це просто іграшка і що діти використовують технології просто для гри, навіть коли кодять.
Я ІТ-шник і мама, і я також вчу дітей програмувати. І можу точно вам сказати, що Scratch це таки «справжнє» програмування. Адже він потребує тих самих навичок, що використовують дорослі розробники. Дитина, яка стає експертом у Scratch матиме фантастичну базу перед тим як рухатися до так званих “справжніх” мов програмування.
Звісно, необхідно буде вивчити щось додатково, але ядро мисленнєвих навичок адаптується і є надзвичайно гнучким. Scratch – це чудове cередовище для того, щоб вивчити базу комп’ютерних наук і деякі значно важчі концепти.
Давайте поглянемо на деякі нерозуміння, які батьки і ІТ професіонали мають щодо Scratch.
Scratch – всього-на-всього «перетягування блоків» – це не може бути СПРАВЖНЬОЮ мовою програмування
Багато батьків і освітян, що не є експертами у комп’ютерних науках, думають, що блокове програмування не може бути серйозним. Але в чому річ? Хіба введення тексту є чимось більш особливим, аніж складання послідовності з блоків з написаним текстом на них.
Scratch попереджає виникнення помилок у синтаксисі, які так дратують і які постійно виникають при програмуванні у текстових мовах програмування, і тим самими робить це середовище більш доступним. Насправді немає нічого класного у того,щоб витрачати багато часу, намагаючись віднайти помилку у синтаксисі. Іноді дорослі розробники теж були б раді уникати цих помилок і більш розвинуті програмні середовища допомагають їм з цим.
Також є професійні середовища, які підтримують блокове програмування. Середовище відеоігор, наприклад. І немає нічого «дитячого» у цьому, іноді це просто правильний і зручний підхід.
Програмування за допомогою кольорових блоків чи тексту – так чи інакше це можливість дати інструкції та вказівки комп’ютеру – це абстрактна репрезентація концептів у мозку дитини.
Вічна боротьба «блокове програмування vs набирання тексту» – повна маячня. З практикою, друкування буде швидшим, ніж перетягування блоків, але концептуально різниці немає. І більшість дітей не можуть набирати текст так швидко як перетягувати блоки. (Так, звісно, вони мають навчитися друкувати швидко, але це вже інша дискусія!)
Якщо 6-тирічна дитина може писати у Scratch – це не може бути реальним програмування
Це правда, багато 6-ти річних, і навіть молодших дітей, можуть створювати класні проекти у Scratch. Втім існує припущеня, що якщо маленькі діти можуть робити щось у Scratch, то старші будуть дуже швидко досягати меж можливостей роботи у Scratch.
Але це все одно що сказати, що якщо 6-ти річні діти можуть писати простенькі історії, то вони скоро «переростуть» свою мову.
Scratch не має обмежень, але у ньому можна створювати достатньо складні проекти, які кидають виклик найбільш вмілим діткам і молодшим підліткам (а також багатьом дорослим 😉 !
Scratch насправді оманливо простий своєю палітрою кольорових блоків. Адже справа у тому, що програмувати неймовірні речі можна поєднуючи ці блоки незвичним шляхом.
І з тим як діти будуть прогресувати, вони освоюватимуть і будуть використовувати Scratch усе більш глибоко. Як то кажуть, у Scratch «низька підлога, але висока стеля».
Але ж Scratch навчає лише простому програмуванню, правда?
Насправді, можна зробити і справді складні речі у Scratch. Можна використовувати складну математику для симуляції сили тяжіння, можна малювати фрактали, можна імпортувати дані з файлів і працювати з ними, і навіть вивчити подієві моделі та прототипне програмування.
Пройде багато часу до того як більшість дітей опиняться перед обмеженнями у Scratch.
Scratch підтримує паралелізм і дає дітям справжню перевагу у розвитку комплексних систем. Середовище заохочує використовувати кілька спрайтів (песонажів), що означає, що діти мусять думати як організувати їхній код. Scratch також підштовхує спосіб кодування «бігти рано, бігти часто» і заохочує навчання через код інших людей.
Але ж Scratch не має функції Х
Часто ІТ-шники скаржаться, що Scratch не має якоїсь особливої функції, яку вони вважають дуже важливою. Звісно, є якісь прогалини, але я не думаю, що це дуже негативно впливатиме у довгостроковій перспективі.
Це може дратувати, що не має якоїсь функції, яку ви звикли використовувати, але діти скоріш за все навіть не знають і не очікують мати цю функцію, а знайдуть можливість робити речі іншим шляхом.
Може б краще їм не витрачати час на ці іграшки і навчитися справжній мові програмування?
Деякі батьки бачать як багато їхні діти витрачають часу, програмуючи проекти у Scratch і задуміються, чи не краще б їм вчити якусь мову програмування, якою користуються в ІТ.
Це, звісно, був би вагомий аргумент, якби дитина була у віці наближеному до того, що могла б працювати і писати код. Але для маленьких дітей це немає сенсу. Хто знає, яка мова програмування буде актуальною, зрештою (і чи взагалі існуватиме).
Не поспішайте занадто швидко тікати від Scratch
Моя 8-річна дитина почала програмувати на текстових мовах програмування і він не має жодних перепон у цьому, окрім його повільного набирання тексту. Він готовий розуміти концептуальні речі через те, що має досвід у Scratch!
Але він по-справжньому любить Scratch тому, що він може створювати те, що хоче, швидше. Ще деякий час він зможе продовжувати тут. І я зовсім не поспішаю перекинути його у текстове середовище тільки тому, що він вже може.
Думаю, що наступні кілька років, він все ще пробуватиме інші мови програмування і буде повертатися до Scratch, тому що тут він може креативити і бути продуктивним.
І – найважливіше – те, що він навчається не просто конкретній мові програмування чи навіть системному мисленню, а те, що може використовувати технології, комп’ютери для того, щоб виражати свої ідеї та вирішувати практичні проблеми. Це саме те, чим Scratch особливий. Якщо Scratch зможе надихнути дітей бути творцями, а не споживачами технологій (а він може!), то немає різниці, чи справжня це мова програмування чи ні.