Я всегда тепло вспоминаю свой первый язык программирования. Как, полагаю, многие из увлечённых компьютерами в 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 ещё послужит.