Я завжди тепло згадую свою першу мову програмування. Як, гадаю, багато хто з захоплених комп'ютерами в 80-х і ранніх 90-х, я вивчив його ще до того, як доторкнутися до клавіатури (тим більше - до клавіатури власного комп'ютера!), І не за підручниками, які не на спецкурсах: по роздруківками програм в популярних журналах. Синтаксично простий, семантично подібний з англійською мовою, з суперкомпактним набором команд, що дозволяє писати відразу, з ходу, не замислюючись про ініціалізації та інше подібне, він був ідеальним рішенням для тих, хто нічого не розуміє в програмуванні, але хоче розібратися. Мені навіть немає потреби називати його ім'я, ви і так його впізнали, бо варіант тільки один. А те, що трапилося днями змусило задуматися: а чи правда століття його пройшов? Чи правда він «був», але не залишається?
Подією, яка підштовхнула до міркувань про начебто давно забутому предметі, став випуск компанією Google програми Coder . Попросту кажучи, це інструмент для початківців веб-програмістів, що працює в тому числі (і в першу чергу) на наддешевих Raspberry Pi. Десять хвилин на установку - і ось ви вже в середовищі, готової до створення повноцінних HTML5-проектів (класична зв'язка HTML + Javascript + CSS). До певної міри це сучасна реалізація ідеї восьмибітних машин: дешевих, гранично простих, максимально відкритих для вивчення і девелопменту. Одна проблема, Javascript і CSS і навіть сучасний HTML (який зовсім не той, що був п'ятнадцять років тому!) Ще потрібно освоїти. А вже тут роздруківки обійдешся, знадобляться мінімум довідники, швидше за все, підручники, а добре б ще й знаючу людину для відповідей на дурні питання! В результаті сучасного дванадцятирічному пацану, що вирішив почати навчання з Coder'a, потрібно докласти значно більше зусиль, ніж прикладали свого часу ми, починаючи з Basic'а.
BASIC - творіння 1964 року народження, світанкових років комп'ютерної епохи. Американці Джон Кемені і Томас Куртц написали його, щоб полегшити знайомство з обчислювальною технікою своїм студентам (в ті роки якраз почалося поширення терміналів, і доступ до ВТ перестав бути долею лише атомників і ракетників), але мова швидко зажив самостійним життям. У 70-х, із початком ери персональних комп'ютерів, BASIC негайно став стандартом де-факто в якості основного мови програмування, і навіть більше того - користувальницької оболонкою, середовищем, з якою управляли машинами. Не випадково і Гейтс з Алленом для «Альтаїра» і Возняк для Apple I насамперед писали саме BASIC!
Сьогодні, в століття графічних інтерфейсів, застосування мови програмування в якості основи робочого столу здається диким, але ще двадцять років тому це було не просто зручно, а й природно - через обмежених ресурсів домашніх ПК. Лише з середини 90-х, коли офісні машини захопили будинок, цю моду прийшов кінець. Але не Бейсік (боюся, літредактор зробить мені догану, оскільки правильно брати назву в лапки - але рука не піднімається лапки ім'я майже одного, стільки років служив вірою і правдою)! Уже на той час мову був модифікований сотнями вендорів, які крутили ним як хотіли - що, до речі, теж було наслідком того ж головного гідності, яке і забезпечило BASIC'у зліт. А сьогодні для одного тільки перерахування всіх бейсіковскіх діалектів доведеться зайняти більше дюжини сторінок (якщо цікаво, ось повний список в Вікіпедії).
А що забезпечило йому зліт? Простота. Абсолютна, неперевершена, інтуїтивна простота. Там, де інші мови вимагають вибудовування багатоповерхових конструкцій, бейсик просить тільки номер рядка. Інші вимагають редактора, компілятора, операційної системи - BASIC замкнутий на себе (перший варіант був компільовані, але згодом його частіше виконували у вигляді інтерпретатора). Його структура така, що програма в більшості випадків працює відразу, а якщо не працює, то помилка конкретна, її легко знайти і зрозуміти. Так, він слабкий ( «Слабкий, легкий мову», - говорив Возняк), але саме в цьому його сила! Взагалі, бейсіковская «неміч» - феномен, який заслуговує окремої книги. Вона робить мову унікальним, вона допомогла йому пережити незліченну безліч архітектур і платформ.
Адже як розвиваються мови програмування? Ускладнюючи, обростаючи новими властивостями. BASIC живе за іншими законами. Його еволюційне древо пряме, як стріла: спроби прищепити йому нові властивості в кращому випадку відокремилися в окремі проекти, які не вплинувши на популярність головного (найпростішого) діалекту. Більше того, за десятиліття еволюції він відкинув немов лушпиння і ту зайву невелику складність, яку спочатку передбачили в ньому автори (наприклад, позбувшись від функцій матричних обчислень). Нездатний протистояти «серйозним» мов програмування, він знайшов собі постійного шанувальника в особі вічно молодого комп'ютерного новачка.
Зуміти зрозуміти вирішальне значення «слабкості», визнати його - зовсім не жарт. Ризикну стверджувати, що навіть Куртц і Кемені так до кінця і не зрозуміли головної фішки створеного ними мови. В середині 80-х вони спробували продавити на ринок своє нове дітище, True BASIC , Заснувавши під нього компанію. Як комерційний продукт він ще існує, але як заміна BASIC'у безсоромно провалився, бо виявився більш складним.
Говорячи про BASIC як кращому мовою для початківців, я звичайно маю на увазі не виправлених до невпізнання виродків на зразок Visual Basic або Openoffice.org BASIC, де від оригіналу залишилося майже одне лише назва, а той базовий, універсальний для всіх мінімум з двох десятків команд, на якому писали вже півстоліття тому. Сьогодні його так само легко відшукати на будь-якій платформі для будь-якої архітектури - і так само просто, як і десять, і двадцять, і сорок років тому, застосувати для вирішення нескладних завдань. Пам'ятається, зовсім недавно, коли дружина засумнівалася в справедливості парадоксу Монті Холла , Я за п'ять хвилин накидав програму, демонструвала його практично. І використав не улюблений C, що не скриптові мови, а старовину BASIC - писати на якому можна, не замислюючись про власне програмуванні.
Однак часи змінюються. Інтернет і Веб перекроїли персоналку. Комп'ютер сьогодні - це Мережа, а оригінальний бейсик про мережах нічогісінько не знає. Так що ж, пора замінити «кращий мову для новачків» новим, більш сучасним, більш пристосованим до техніки і технологій нового століття? Давно пора, на думку багатьох - і пропонують навперебій варіанти, найчастіше зупиняючись на Python (який навіть називають «Бейсиком XXI століття») і Javascript. Вони різні, але ріднить їх порівняльна простота і легкість у поводженні з інтернет-механізмами. І людина, що почала своє комп'ютерне освіту з них, звичайно, зуміє потім застосувати отримані знання для серйозних справ. Ось тільки є одна нестиковочка: вони і близько не так прості, як BASIC!
Нехай він примітивний, нехай не поспішаючи. Але він недосяжно простий - а значить, вже в перші півгодини - так що там, в перші десять хвилин! - новачок, для якого комп'ютер досі був магічним артефактом, зможе зробити щось своїми руками. Чи зможе сам змусити машину зробити що-небудь для нього! Ви пам'ятаєте свій перший раз? Пам'ятайте захват, який випробували, коли ваші перші бейсіковскіе рядки змусили комп'ютер підкоритися вашій волі? І хіба ви, починаючи, мали на меті навчитися конкретних технологій? Ризикну припустити, ви починали програмувати навіть не для того, щоб зрозуміти, як працює машина, а просто щоб отримати задоволення від управління нею!
Ну а змусивши машину прокатати вас, засвоївши базові концепції програмування (для чого BASIC так само гарний, як і будь-який інший мову), можна зістрибнути куди завгодно. Моє покоління йшло в машинні коди і асемблер (ось, до речі, продовження особисто моєї історії: « Мій перший стартап: Росія, 94-й »); сьогодні, ймовірно, розумним вибором буде Python або Javascript.
Але - починати? Руки геть від святині! BASIC ще послужить.
А те, що трапилося днями змусило задуматися: а чи правда століття його пройшов?Чи правда він «був», але не залишається?
А що забезпечило йому зліт?
Адже як розвиваються мови програмування?
Так що ж, пора замінити «кращий мову для новачків» новим, більш сучасним, більш пристосованим до техніки і технологій нового століття?
Ви пам'ятаєте свій перший раз?
І хіба ви, починаючи, мали на меті навчитися конкретних технологій?
Але - починати?