Програмування: з чого почати, або Незамінний бейсик

Я завжди тепло згадую свою першу мову програмування. Як, гадаю, багато хто з захоплених комп'ютерами в 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'у безсоромно провалився, бо виявився більш складним

Говорячи про BASIC як кращому мовою для початківців, я звичайно маю на увазі не виправлених до невпізнання виродків на зразок Visual Basic або Openoffice.org BASIC, де від оригіналу залишилося майже одне лише назва, а той базовий, універсальний для всіх мінімум з двох десятків команд, на якому писали вже півстоліття тому. Сьогодні його так само легко відшукати на будь-якій платформі для будь-якої архітектури - і так само просто, як і десять, і двадцять, і сорок років тому, застосувати для вирішення нескладних завдань. Пам'ятається, зовсім недавно, коли дружина засумнівалася в справедливості парадоксу Монті Холла , Я за п'ять хвилин накидав програму, демонструвала його практично. І використав не улюблений C, що не скриптові мови, а старовину BASIC - писати на якому можна, не замислюючись про власне програмуванні.

Однак часи змінюються. Інтернет і Веб перекроїли персоналку. Комп'ютер сьогодні - це Мережа, а оригінальний бейсик про мережах нічогісінько не знає. Так що ж, пора замінити «кращий мову для новачків» новим, більш сучасним, більш пристосованим до техніки і технологій нового століття? Давно пора, на думку багатьох - і пропонують навперебій варіанти, найчастіше зупиняючись на Python (який навіть називають «Бейсиком XXI століття») і Javascript. Вони різні, але ріднить їх порівняльна простота і легкість у поводженні з інтернет-механізмами. І людина, що почала своє комп'ютерне освіту з них, звичайно, зуміє потім застосувати отримані знання для серйозних справ. Ось тільки є одна нестиковочка: вони і близько не так прості, як BASIC!

Нехай він примітивний, нехай не поспішаючи. Але він недосяжно простий - а значить, вже в перші півгодини - так що там, в перші десять хвилин! - новачок, для якого комп'ютер досі був магічним артефактом, зможе зробити щось своїми руками. Чи зможе сам змусити машину зробити що-небудь для нього! Ви пам'ятаєте свій перший раз? Пам'ятайте захват, який випробували, коли ваші перші бейсіковскіе рядки змусили комп'ютер підкоритися вашій волі? І хіба ви, починаючи, мали на меті навчитися конкретних технологій? Ризикну припустити, ви починали програмувати навіть не для того, щоб зрозуміти, як працює машина, а просто щоб отримати задоволення від управління нею!

Ну а змусивши машину прокатати вас, засвоївши базові концепції програмування (для чого BASIC так само гарний, як і будь-який інший мову), можна зістрибнути куди завгодно. Моє покоління йшло в машинні коди і асемблер (ось, до речі, продовження особисто моєї історії: « Мій перший стартап: Росія, 94-й »); сьогодні, ймовірно, розумним вибором буде Python або Javascript.

Але - починати? Руки геть від святині! BASIC ще послужить.

А те, що трапилося днями змусило задуматися: а чи правда століття його пройшов?
Чи правда він «був», але не залишається?
А що забезпечило йому зліт?
Адже як розвиваються мови програмування?
Так що ж, пора замінити «кращий мову для новачків» новим, більш сучасним, більш пристосованим до техніки і технологій нового століття?
Ви пам'ятаєте свій перший раз?
І хіба ви, починаючи, мали на меті навчитися конкретних технологій?
Але - починати?