
Сегодняшние языки программирования стали сложнее, но представьте, если бы вместо C и Python развивался BASIC. Под катом расскажу о том, почему языки усложнились, а также попробую погрузиться в альтернативный сценарий развития.
Простота на заре программирования
В 1964 г. Джон Кемени и Томас Курц создали язык BASIC. Они преследовали одну цель — сделать программирование доступным и простым для всех. Ранние версии бейсика имели минимальный набор ключевых слов и крайне простой синтаксис. Для того, чтобы написать программу, достаточно было выучить несколько команд наподобие PRINT, INPUT, GOTO — и можно творить.

Именно BASIC стал входным билетом в ИТ для целого поколения. Например, в эпоху 8-битных ПК интерпретатор BASIC зачастую был «зашит» в ПЗУ и запускался при включении машины. Это значило, что любой школьник мог сесть за клавиатуру и сразу начать писать программу. Можно было набрать пару строчек кода и тут же увидеть, как по экрану побежит текст или заиграет простенькая мелодия.
Однако у той самой «детской» простоты была и обратная сторона. Классический Dartmouth BASIC и его диалекты 70-х не поддерживали даже элементарных структур программирования. Не было ни функций, ни процедур, ни локальных переменных — весь код представлял собой монолит из пронумерованных строк.

Условные операторы выглядели так: IF условие THEN GOTO 100— то есть вместо блока if-then-else приходилось перескакивать по строкам, как в ассемблере. Все переменные были глобальными, и стоило программе разрастись, то в них легко было запутаться.
Код на BASIC нередко превращался в запутанный клубок переходов GOTO, поэтому чрезмерно простой и неструктурированный стиль программирования мог привить начинающим дурные привычки.
Тем не менее, несмотря на то, что первый BASIC с нумерацией строк давно мёртв, его наследие живёт:
Во-первых, у него остались потомки Visual Basic и VBA. Эти языки эволюционировали, становясь более мощными и структурированными.
Во-вторых, идеи простоты BASIC отразились в Python и JavaScript.
Кроме того, многие популярные сегодня языки стремятся к низкому порогу входа, понятному синтаксису и интерактивности — а ведь именно этим прославился BASIC в свои лучшие годы.
Почему языки усложнились
Если BASIC был таким простым и популярным, почему же он уступил путь более сложным языкам, вроде C? По моему мнению, потому что по мере развития ИТ-индустрии возросла сложность задач, и языки программирования вынужденно «повзрослели», приобретая новые возможности (и сложность).
Pascal как «хороший тон» в коде
Во второй половине 1970 г. выяснилось, что писать большие программы на примитивном BASIC крайне затруднительно. Нужны были средства структурирования кода, более строгая организация данных, да и скорости выполнения тогда хотелось повыше. Ответом стало появление Pascal.
Созданный Никлаусом Виртом в 1970 г., Pascal изначально предназначался для обучения структурному программированию и качественной разработке ПО. В нём появились функции и процедуры, локальные переменные, строгая типизация и богатый набор управляющих конструкций.

Неудивительно, что к 1980 г. Pascal стал де-факто стандартом в университетском обучении программированию. Он приучал разбивать задачу на подпрограммы, грамотно работать с типами данных и структурами — прямо говоря, прививал «хороший тон» в коде.
С для низкоуровневого кодинга
Параллельно в эти же годы случился прорыв в системном программировании — появился язык C, который разработал Деннис Ритчи в Bell Labs для написания ОС Unix. Этот язык предназначался для низкоуровневого эффективного кодинга, предоставляя программисту прямой доступ к памяти и железу. C получился компактным по синтаксису, но при этом очень близким к машинному уровню.

С одной стороны, он имел всего около 30 ключевых слов, минимальные абстракции и практически прямую трансляцию в ассемблер. Например, в первых версиях C даже не было булевого типа — выражения сравнения просто возвращали 1 или любое ненулевое (истина) или 0 (ложь).
С другой стороны, такая простота для человека обернулась дополнительной сложностью в использовании. Программист на C должен сам управлять памятью, следить за указателями и учитывать массу нюансов, от переполнения буфера до арифметики указателей. Выучить базовый синтаксис C несложно, а вот писать на нём без ошибок — куда труднее (недаром новичков терзают знаменитые ошибки сегментации).
Тем не менее, ради эффективности и контроля программисты были готовы мириться с этой сложностью. Язык C стал лидером в системном программировании и спровоцировал рост себе подобных (C++, Java, C# и т. д.)
Исполняемый псевдокод Python
Особенно показателен язык Python, созданный Гвидо ван Россумом в 1991 году. Он задумывался как «исполняемый псевдокод», максимально читаемый синтаксически. В Python блоки кода выделяются отступами, вместо фигурных скобок, и много внимания уделено тому, чтобы код выглядел почти как обычный язык описания решения.

Несмотря на появление множества особенностей за годы развития, Python по-прежнему славится относительной простотой и считается одним из лучших языков для обучения новичков. Не случайно многие сегодня начинают программировать сразу с Python, как когда-то начинали с BASIC.
Две линии языков
Таким образом, к началу 90-х сформировались две линии эволюции языков:
Первая — языки, нацеленные на высокую производительность и возможность строить сложные системы (сюда относятся C и его наследники). Они предлагали больше возможностей, но и абстракции в них становилось больше. Также добавились объектно-ориентированное программирование, обобщённые типы и функциональные элементы — всё это расширило границы языка, но усложнило его изучение.
Вторая линия — языки, ориентированные на удобство разработки и простоту чтения кода (своего рода идейные наследники BASIC). Например, Perl, Python, Ruby, JavaScript, а позже и PHP. Они жертвовали частью производительности ради облегчения жизни программиста. В них же вошло автоматическое управление памятью (сборка мусора), высокоуровневые типы данных, динамическая типизация и интерактивные интерпретаторы.
Однако простота в случае современных языков — понятие относительное. Python, JavaScript и им подобные намного проще, чем C++ или Java, но они обзавелись своими слоями сложности. Обширные стандартные библиотеки, различные идиомы, множество способов сделать одно и то же — сделало на вид простые языки сложными.
Получается, что абсолютная простота первых дней программирования ушла в прошлое. Языки стали много богаче функционально, но и куда более сложными в освоении в полном объёме. Это неизбежная плата за универсальность и мощь.
BASIC был предельно лёгок в изучении, но ограничен. Его возможностей хватало разве что на игры да учебные задачки. Реальный мир требовал писать операционные системы, базы данных и графические интерфейсы — на одном «голом» BASIC этого не потянешь. Пришлось вносить усложнения. Каждый новый концепт делал язык более пригодным для серьёзных проектов, но вместе с тем отдалял его от той самой детской простоты.

Кроме того, большую роль сыграл эффект накопления и обратная совместимость. Популярные языки со временем обрастают новыми фичами, стараясь угодить разным пользователям. Так, C++ за десятилетия включил в себя и объекты, и лямбда-выражения, и шаблонные метапрограммы. Пытаясь быть «всем для всех», он значительно усложнился по сравнению с изначальным «С с классами».
Язык C# с 2000-го по 2025-й приобрёл дженерики, LINQ, асинхронные функции, динамические типы и многое другое, что сделало его мощнее, но уже далеко не таким простым для новичка, как в первой версии.
Даже Python за свою историю перенял немало синтаксического «сахара» и возможностей (списковые включения, декораторы, менеджеры контекста, типизации аннотаций и пр.), усложнивших его внутреннее устройство.
Цена прогресса
Современные разрабы обладают куда более мощными инструментами, чем их коллеги 40–50 лет назад. Языки сейчас позволяют избежать большинства ошибок памяти, сразу пользоваться высокоуровневыми структурами данных и библиотеками для любых нужд. Я уже ничего не говорю про ИИ, который породил вайбкодинг. Но кое-что всё же было утрачено.
Во-первых, утрачена всеобъемлющая простота и наглядность, с которой начинало поколение BASIC. Раньше, чтобы запустить программу, достаточно было набрать RUN — и она тут же выполнялась. Сейчас типичный цикл разработки включает компиляцию, сборку зависимостей и настройку окружения.

Начав изучать программирование, новичок быстро упирается не только в синтаксис, но и в сопутствующие сложности. Конечно, появились онлайн-песочницы и учебные среды, смягчающие вход, но это уже отдельные инструменты, а не свойство языка.
Во-вторых, исчезло ощущение прямого общения с компьютером. В среде BASIC программисты практически жили на голом железе, например, могли напрямую писать байты в память, рисовать пиксели и читать контроллеры. Язык был простым «мостиком» к возможностям системы.
Современные же языки намеренно скрывают детали платформы. С одной стороны, это благо — не нужно беспокоиться о том, как выделить память или вывести символ. С другой, программирование стало более «абстрактным». Разработчики порой не представляют, что творится под капотом фреймворка.

Наконец, потерялся некий романтический дух тех самых первых шагов. Вспомним, какими были программы в книжках по BASIC, где десять строк делали что-то забавное (движущийся текст, простую игру или звук). Сейчас, чтобы впечатлить пользователя, нужно сразу «показывать» что-то посерьёзнее, с графическим интерфейсом или веб-сервисом, а это требует куда больше знаний.
Программирование стало профессией, а не чудом, доступным школьнику после уроков. Хотя, конечно, школьники сейчас программируют куда лучше, чем раньше.

Однако не будем идеализировать прошлое. Простота языков той эпохи была порождена простотой самих программ. Компьютеры имели жалкие килобайты памяти, и писать приходилось компактно и несложно.
Сегодня задачи, решаемые ПО, несравненно сложнее, и радикально упростить языки, не поступившись функциональностью, практически невозможно. Тем не менее, разработчики языков стараются вернуть нам часть утраченной простоты. Но возврата к временам BASIC не случилось.
А что, если бы BASIC не сдал позиций, а продолжил развиваться и стал основой большинства современных языков?
Если бы BASIC правил миром
Представим параллельную вселенную, где главную роль в истории сыграл BASIC и его прямые потомки. Как выглядел бы наш мир программирования?
Синтаксис большинства языков мог бы быть BASIC-подобным
Сегодня огромное число языков унаследовали синтаксис именно от C. Это фигурные скобки, точка с запятой, for(i=0; i<n; i++) и т. д. Благодаря этому программисту относительно легко переключаться между C++, Java, JavaScript, C#, потому что их «родословная» восходит к одной грамматике.
В альтернативном мире эталоном мог стать синтаксис семейства BASIC, в котором блоки кода обрамляются словами BEGIN/END или IF ... END IF, отсутствуют фигурные скобки и точка с запятой для конца строки.
Возможно, код большинства программ визуально выглядел бы более «словесным». Например, вместо for (int i=0; i<10; i++) { ... } писали что-то вроде FOR i = 0 TO 9 ... NEXT i. Сохранилась бы и традиция нечувствительных к регистру ключевых слов: Begin, BEGIN или begin— неважно.

Такие мелочи могут показаться тривиальными, но стиль синтаксиса влияет на восприятие кода. В любом случае, если бы BASIC царил последние 40 лет, «язык программирования по умолчанию» имел бы совсем другой облик.
BASIC эволюционировал бы и вобрал в себя многие концепции
На самом деле, это отчасти произошло и в нашей реальности. Поздние диалекты BASIC получили возможности структурного и объектно-ориентированного программирования. Например, Visual Basic (появился в начале 90-х) позволял создавать GUI-приложения для Windows быстрее и проще, чем на С++. Разработчик просто размещал кнопки и поля на форме и писал код обработчиков событий. Это была революция в удобстве — многие любители смогли писать приложения, не изучая глубоко Windows API.
Если бы идея Visual Basic развилась дальше и стала мейнстримом, возможно, весь прикладной софт писали бы на диалектах BASIC. Microsoft, кстати, продвигала эту идею, например, в нулевые VB был крайне популярен в корпоративной среде, а VBA (встроенный BASIC для приложений) позволил миллионам офисных работников автоматизировать рутинные задачи в Excel/Word без глубоких знаний программирования.

Представьте, что появился бы не Java или C#, а некий «Advanced BASIC» — со строгой типизацией, классами, но всё ещё более простым синтаксисом. Возможно, порог входа в программирование для новых разработчиков был бы ниже, ведь многие бы начинали со знакомого Basic-подобного языка и продолжали на нём же строить карьеру, не перескакивая на совершенно иной синтаксический лад.
В альтернативном сценарии BASIC мог бы и в область системного программирования протиснуться. Конечно, представить себе ядро Linux, написанное на BASIC, — задачка для богатой фантазии. Но кто знает, что было бы, если бы усилия по оптимизации и развитию компиляторов BASIC шли тем же темпом, что и развитие компиляторов С.
Возможно, появился бы системный диалект BASIC с расширениями для низкоуровневых операций. Или же BASIC получил бы «обратное развитие» — включил бы в себя синтаксис и возможности С, но сохранил бы общий стиль языка.
В конце концов, нечто подобное произошло с Pascal. Из учебного языка он эволюционировал в мощные реализации вроде Ada (который во многом вырос из идей Паскаля и Альгола) и Delphi.
Представьте, что вместо C++ мир получил бы, скажем, B++ — язык с синтаксисом BASIC, но позволяющий работать с памятью, как C, и компилирующийся в эффективный код. Возможно, тогда и системы реального времени, и OS писались бы на B++, а разработчики бы не ломали голову над указателями void* и архаичным синтаксисом for, придуманным в 60-х.
Были бы программы проще?
Спорный вопрос. С одной стороны, BASIC традиционно более человечен в синтаксисе. С другой — сложность программ никуда бы не делась. Скорее всего, к настоящему моменту «BASIC нового поколения» обрёл бы почти ту же сложность, что и современные языки.
Например, на языке VB.NET (прямой наследник Visual Basic, развившийся до полноценного объектно-ориентированного языка, работающего на платформе .NET) сегодня можно писать всё то же, что и на C# — у них общий рантайм. Отличаются они, по сути, синтаксисом и некоторыми незначительными деталями.

VB.NET сохраняет привычные для BASIC слова (например, If ... Then ... End If вместо фигурных скобок и Sub ... End Sub вместо определения функции). Но по сложности освоения VB.NET не сильно уступает C#. Чтобы писать серьёзные приложения, нужно разбираться в тех же концепциях (классы, асинхронность, обобщения, многопоточный доступ и пр.) Получается, эволюция BASIC в итоге привела бы к языку, очень похожему по возможностям на современные.
Были бы и другие проблемы
Представим, что все пишут на наследниках BASIC. Вероятно, долго бы сохранялась динамическая типизация и интерпретируемость — черты классического BASIC. Это удобно для быстрого прототипирования, но в больших проектах сложнее отлавливать ошибки, не имея строгой компиляторной проверки типов.
Возможно, сообщество разработчиков BASIC-языков пришло бы к статической типизации позже, чем это случилось в мире C и Java. А значит, крупные системы могли бы страдать от трудноуловимых багов.
Интересно и влияние на производительность. Язык С прославился тем, что из него получался быстрый компактный код, близкий по скорости к ассемблеру. BASIC же ассоциировался с медлительностью интерпретаторов. Если бы основной линией развития был BASIC, возможно, оптимизацией компиляторов занялись бы вплотную (как это сделали с JavaScript-движками в нашем мире, доведя их производительность до невероятных величин).

Компилируемые версии BASIC могли бы выступать конкурентами С. Например, уже в 80-х существовал QuickBASIC/Basic Compiler от Microsoft, который переводил код BASIC в исполняемый .EXE, работавший значительно быстрее интерпретируемого. Современные диалекты вроде FreeBASIC или PowerBASIC компилируют BASIC-код в машинный код, добиваясь скорости, сравнимой с C на отдельных задачах.
Так что, возможно, разрыв в эффективности со временем бы сократился. Вопрос лишь, какой ценой для простоты.
Но программирование бы было менее пугающим
Однако в мире, где BASIC доминирует, программирование было бы менее пугающим для новичков на самых ранних этапах. Возможно, мы имели бы больше самоучек, которые начинали с простого BASIC, а затем постепенно изучали его расширенные возможности, не перескакивая на другие языки.
Сегодня роль такого «универсального языка для начинающих» во многом выполняет Python. Но Python — это всё же язык, придуманный профессиональным программистом, с изящными, но специфичными идеями (типа отступов вместо скобок). А BASIC создавался прямо с нуля для студентов-непрограммистов, максимально близким к обычному английскому языку.
Многие команды BASIC (в том числе PRINT "Hello") интуитивно понятны даже человеку, далёкому от кодинга. Если бы индустрия шла по пути упрощения синтаксиса и ориентирования на массовую аудиторию, может, писать код стало бы так же обыденно, как писать формулы в Excel.

Кстати, разработчики Excel и сделали фактически язык формул таблиц, который используют миллионы людей без мысли, что они «программируют». Не исключено, что при иных исторических раскладах BASIC мог бы стать таким же распространённым языком «для всех», встроенным в каждое приложение.
Подводя итог этой мысли, мир, где BASIC царствует, был бы местом, где оболочка попроще, а начинка со временем стала бы столь же сложной. Мы бы чуть меньше времени тратили на борьбу со скобками и заголовочными файлами, но всё так же решали бы нелёгкие архитектурные задачи.
Резюме
Дух BASIC жив. Его наследники — как прямые (Visual Basic, VBA, скриптовые языки), так и идейные (Python, JavaScript) — продолжают делать программирование доступным. Сегодня школьник может начать с Python или даже с блоков Scratch, и постепенно дойти до разработки сложнейших систем. Об этом пути BASIC-поколение могло только мечтать.
В этом смысле индустрия не потеряла простоту, а перераспределила её. Базовые шаги стали снова проще (как и задумали Кемени с Курцом), а вот вершины мастерства ушли далеко вперёд, требуя большой подготовки.
Если бы BASIC стал лидером, скорее всего, мы бы пришли к похожему положению дел, только через другую последовательность событий. Возможно, синтаксис популярных языков был бы немного понятнее и разговорнее. Возможно, порог входа для новичков был бы ещё ниже. Но сложность больших систем от этого никуда не делась бы — она заложена в самой природе задач.
Каждое поколение разработчиков, недовольное сложностью текущих инструментов, будет изобретать новые абстракции или, наоборот, новые простые языки. И баланс между простотой и мощью продолжит качаться.
P.S. Если вы скучаете по BASIC и его лаконичному PRINT "Hello, world", всегда можно открыть интерпретатор типа QB64 или Small Basic и немного поностальгировать.

Как вы считаете, если бы BASIC активно развивался, смог бы он стать лидером? И выбрали бы его вы среди всех популярных языков?
© 2025 ООО «МТ ФИНАНС»
Комментарии (176)

Ydav359
03.12.2025 13:20C++ за десятилетия включил в себя и объекты
Что за объекты?

SrvTrantor Автор
03.12.2025 13:20Под объектами имею в виду объектно-ориентированную модель C++ с ее классами, инстансами этих классов, инкапсуляцией, наследованием и полиморфизмом.

starfair
03.12.2025 13:20С++ изначально ООП язык, и он не мог включить объекты за десятилетия, ибо сразу строился на базе этой парадигмы!

Kabarch
03.12.2025 13:20вроде Delphi, а потом и Ada Язык Ada был стандартизирован в 1983 году, а Delphi (как развитие Object Pascal 1985 год) появился в 1995 году. Глаз режет.

Yami-no-Ryuu
03.12.2025 13:20Шозанах я прочитал? От введения объектов? в C++ до появления Паскаля из ничего.

Sabirman
03.12.2025 13:20В начале 2000-ых была война между JavaScript и VBScript (visual basic script). К сожалению VBScript в ней проиграл, хотя JavaScript чрезвычайно бедный язык в плане типизации данных и поэтому сейчас он постепенно вытесняется TypeScript-ом. Можно сказать, что Microsoft взяла реванш за тот проигрыш.
А среда MS InterDev была просто потрясающей - до неё не дотягивают даже современные IDE:
серверная и клиентская логика на одном языке
событийная модель (выбираешь событие и пишешь на него обработчик) и за счет этого мгновенная навигация по коду
умный саггест (выпадающая подсказка по коду), а не просто искалка слов
полноценная и отзывчивая отладка

MountainGoat
03.12.2025 13:20Динамическая типизация хороша для программы в 2 страницы, и плоха когда больше. Поэтому ничего удивительного в том, что по мере роста размера скриптов JavaScript сначала выиграл, потом проиграл.

SanSYS
03.12.2025 13:20серверная и клиентская логика на одном языке
Благодаря web assembly это доступно и сейчас, например https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor

funca
03.12.2025 13:20Я пробовал уйти с JScript на VBScript - там доступ к COM объектам выглядел удобнее. Но в нем небыло функций высшего порядка, замыканий и вроде какие-то заморочки с регулярками. В итоге не срослось.

NickDoom
03.12.2025 13:20Насколько я помню, дело было так.
На дворе 70-е — 80-е. Драма ещё не применяется широко, срама стоит как… ох, не напоминайте…
Из относительно дешёвого — только масочные ПЗУ. Читается «прямотоком», как срама, но по простоте примерно как драма. Но к драме ещё рефреш нужен, а он сто́ит как второй проц.
…потому что проц у нас — два притопа, три прихлопа. 6502 или в лучшем случае 8080. И писать на нём нативный код — это занять какое-то невменяемое количество памяти. На одно сложение чуть ли не 50 команд надо, чтобы всё учесть да перенести. Насчёт плавающей точки помолчу, там и реально 50 будет. Если не больше.
И тут, та-дам, Бейсик! С его байт-кодом виртуальной машины, не теряющим обратной читаемости. В сраме лежит байт команды «PRINT» и байт, обозначающий номер переменной «A», вот и вся петрушка. Ну, и где-то ещё лежит таблица того, что у этой переменной имя именно «A», чтобы не терять ту самую обратную читаемость.
Плотность кода сразу выросла в разы. В крошечной сраме начало помещаться что-то реально полезное. На наши деньги это как положить фреймворк, занимающий 16 гигов памяти, в быструю флэшку и её прямо в адресное пространство отмапить, чтобы прямо оттуда код исполнялся. Причём при бюджете африканского крестьянина, которому эти 16 гигов — очень не копейка.
Производители массово взвизгнули от восторга и стали шить в рому этот васик, чтобы юзер мог «с места в карьер» кодить подбор оптимальных соотношений редуктора методом перебора или суммировать зарплаты в «Итого». Пользователи взвизгнули от восторга и стали кодить, что уж умели и могли (даже иногда игрушки, хотя они-то не сумма зарплат, там фреймрейт 0.1 фпс не очень).
Что было бы, если бы это развивалось… хмммм… ROM-Жава? О_О

GBR-613
03.12.2025 13:20Делались одно время такие компьютеры, в которых прямо в ROM сидела JAVA (самая обычная). Но оказались невостребованны.

NickDoom
03.12.2025 13:20Видимо, промахнулись эпохой :)

GBR-613
03.12.2025 13:20Опередили эпоху.
JAVA тогда быстро развивалась. Застрять с версией 1.2, когда появилась 1.3 с кучей новых возможностей, никто не хотел.
И вообще, люди не любят надевать на себя ошейник. Сегодня - JAVA, а завтра поди знай, с чем работать понадобится.

Oangai
03.12.2025 13:20на самом деле нет, DRAM с середины семидесятых был доступен и заметно дешевле, там первое время скорее проблемы с надёжностью были, дохли они часто, особенно советские. Для регенерации достаточно пары счётчиков и нескольких корпусов мелкой логики, а при наличии какого-никакого графического адаптера это всё в нём и так уже было, так что на цену уже особо не влияло. Появился Z80, в нём счётчики регенерации были уже встроены, что экономило слегка денег но зато изрядно места на плате, опять же надёжность, каждый лишний корпус может сдохнуть, лучше когда меньше.
ROM читалась что масочная что программируемая одинаково просто, поэтому в персональных компьютерах масочную особо и не использовали - в случае ошибок в коде её уже не обновить, отзывать продукт себе дороже.
Обьём кода на ассемблере был всегда максимально компактным - ни кто не мешал использовать библиотеки готовых подпрограмм и писать достаточно высокоуровневую логику. Я так под 80x86 в какой-то момент перешел к использованию преимущественно шитого кода прямо в ассемблере, нашел для себя удобную форму чтобы его еще и понимать потом, практически Forth VM но без форта, сразу из ассемблера. Помнится, программа цифрового осциллографа под 80286 (600Ksps через SCSI и DMA, полноценный UI и немного цифровой обработки сигналов) весила килобайт пять наверное.
А Бейсик?- да просто бесил он на самом деле в то время, за совершенно неразумное разбазаривание ресурсов машины. До сих пор для меня загадка, как так получилось что его вообобще поголовно везде ставили, прямо как мировой заговор какой-то. На самом деле к тому времени уже достаточно приличных языков существовало, тот же Паскаль компилировал в компактный шитый код и мог бы ставиться в ПЗУшки даже маленьких машинок, всяко лучше было бы

NickDoom
03.12.2025 13:20Z80 уже сильно покрепче, там уже спокойно можно драматургией заниматься :)
…но народ привык к васику, привык обмениваться относительно кросс-платформенными крестиками-ноликами и вот это вот всё. Ну, и «язык для новичков» заодно.
Что касается библиотек готовых подпрограмм — это уже разумный следующий этап, когда нам не надо упихивать весь код в единицы килобайт. Бейсик — по сути, библиотека подпрограмм для FOR/NEXT, A=B+C и прочих вещей. То есть для «подпрограмм отдельных операций».
Похоже на такой виртуальный бейсик-процессор, а его собственные «два притопа, три прихлопа» команды — на микрокод. Даже больше на это похоже, чем на последовавшие за ним нормальные человеческие «библиотеки готовых подпрограмм», среди которых впереди всех на белом коне, конечно, библиотека эмуляции сопроцессора (она же — библиотека операций с плавающей точкой), которая более-менее сохранила сходство с).

Oangai
03.12.2025 13:20в нашем круге общения тогда нам представлялось скорее что бейсик ставится скорее как своеобразный проходной фильтр - или ты очень скоро открываешь для себя операторы PEEK и POKE, изучаешь ассемблер и начинаешь на нём писать, а к "васику" приобретаешь стойкое отвращение, но поскольку транслятор для ассемблера вам не завезли, ПЗУшка этим васиком занята, то транслировать будешь сам, в голове, а вводить уже чистыми кодами, при том для каждой правки нужно пересчитывать адреса а относительной адресации для 8080 не придумали, так что за одно еще и научишся школьную арифметику в шестнадцатеричной системе бегло в уме считать. Или, если через фильтр не прошел, то ты не программист вовсе, ничего из тебя не получится...

NickDoom
03.12.2025 13:20Думаю, это было позже компов типа «1 кб сраму, 3 кб рому» %) z80, кстати, в них тоже отметился, несмотря на счётчики рефреша…

Oangai
03.12.2025 13:20из западных машинок существовал правда вот такой уникум: https://en.wikipedia.org/wiki/Jupiter_Ace
Но не взлетел, видимо в 82м для таких мелких было уже слишком поздно

sbabich
03.12.2025 13:20На спектруме я именно так и сделал )) Первые программы были на бесике. Работали медленно и печально. Случайно обнаружил что тут еще есть такая штука как ассемблер. Кассеты с нормальным интерпретатором на радиорынках 90х найти не удалось, а то что было - мне не нравилось. В результате стал писать в машинных кодах.

R0bur
03.12.2025 13:20До сих пор для меня загадка, как так получилось что его вообобще поголовно везде ставили, прямо как мировой заговор какой-то. На самом деле к тому времени уже достаточно приличных языков существовало, тот же Паскаль компилировал в компактный шитый код и мог бы ставиться в ПЗУшки даже маленьких машинок, всяко лучше было бы
Бейсик встраивали как раз потому, что это был интерпретатор, а не компилятор. С ним можно было работать в диалоговом режиме, как с командной оболочкой. А польза компилятора на компьютере, у которого нет устройств долговременного хранения информации, весьма сомнительна.

Oangai
03.12.2025 13:20Это мантра, которая с реальностью имеет мало общего, потому что пользователю довольно без разницы как трансляция устроена под капотом, а грамотно организованый шитый код делает границу очень размытой. Лисп содержит диалоговый режим в самой основе языка, хотя многие лиспы являются компиляторами; Форт содержит диалоговый режим согласно стандарту, уже с самых ранних версий предоставляет для работы удобный экранный редактор а не этот архаичный телетайп, считается формально интерпретатором но с уникальной особенностью предоставления программисту доступа к этапу компиляции, при этом большинство реализаций генерируют шитый код по производитрельности раз в 10 быстрее бейсика. Паскали первых лет 15ти, до Борланда, практически все генерировали шитый код и могли формально считаться интерпретаторами, но Вирт был явно противником диалогового режима, поэтому его там нет. Хотя существовали машинки с Паскалем сразу в ПЗУ, но почему-то не стали популярными.
Вообще, Бейсик убог во всём, кроме маркетинга: мнимая простота для пользователя требует от интерпретатора по нескольку проверок на каждом шаге программы, что фатально убивает производительность, которой тогда и так было мягко говоря не густо. Убогий построчный диалоговый режим по типу телетайпа, морально устаревшего за несколько лет до того как широкая публика с этим языком вообще познакомилась. Бинарная несовместимость (ABI) с нэйтивным кодом, изза чего вы например не могли дописать критические секции вашей программы на ассемблере, но вызывать из них какие-то функции имеющиеся в самом бейсике, использовать его как системную библиотеку - нет, геммор с этим обычно был такой, что проще было сразу всё писать заново.

NickDoom
03.12.2025 13:20Ничего себе «мантра» — в несколько раз разница в объёме кода, при тогдашних-то «никаких» процах…
Это когда 64К стало нормой «для бедных», а проц дорос хотя бы до z80 (про 86-й с его целочисленным умножением вообще тихо помолчу, это натурально зверь-машина) — разница стала исчезать, а то и вообще получалось не в пользу этих ископаемых васиков. А даже если и сохранялась, то контроллер драмы на общем фоне уже был копеечный, сама рама тоже в цене упала, и плюс в скорости в любом случае заруливал все плюсы васика в плане компактности кода.
Память, конечно, может мне привирать, но на хвост этой эпохе я заочно успел наступить (своей машинки по нищебродству не было, но руку на пульсе пытался держать). Тогда это было «буквально вчера», как для нас сейчас — эпоха одноядерных камней.
Другое дело, что вот тут-то бы ему и закончиться быстро, решительно. А он продолжился, да ещё с этим вот:
Убогий построчный диалоговый режим по типу телетайпа, морально устаревшего за несколько лет до того как широкая публика с этим языком вообще познакомилась. Бинарная несовместимость (ABI) с нэйтивным кодом, изза чего вы например не могли дописать критические секции вашей программы на ассемблере, но вызывать из них какие-то функции имеющиеся в самом бейсике, использовать его как системную библиотеку - нет
…вот это вообще адок. Как я уже говорил раз примерно сто, самая дичь, которую сотворила IBM — на машину с DRAM и 8086-м протащила этот васик в роме. Вместо того, чтобы сделать там урезанную бесплатную копию IBM DOS (точнее, IBM OS, потому что отчекрыжить бы им следовало именно дисковые службы) и грузить с кассетника .COM-файлы, а не какашки этого убогого васика. Ну или можно сказать по-другому — предусмотреть в BIOS загрузку с кассетника .COM-файлов, потому что если от DOS отрезать букву «D», останется только крошечная пристроечка к BIOS.
Была бы нормальная домашняя машина — слоты расширения, 16К/64К базовой памяти (кроватками), потом через ISA можно расширить хоть до печально знаменитых 640, CGA с выходом NTSC (ну видно же, что пытались же!), кассетник. И бинарная совместимость с «большой» машиной на работе. Оч ок для тех, чья должность подразумевала такую машину на работе (но уже с FM-хардом и парой дисководов, то есть дороже раза в четыре), у них зарплата была соответствующая.
И это всё убил Бейсик.
Всё имеет своё начало, свой конец и свои границы применимости. В ту эпоху его место (при сохранении описанных в цитате недостатков) было уже исключительно в калькуляторах с сегментными экранами на одну строчку. Ну, а при условии, что «развивался бы вместе с сями и питоном» — таки да, в качестве библиотеки, и то, наверное, недолго.

Oangai
03.12.2025 13:20я вот говорю, шитый код который в те времена был очень популярен в реализациях, независимо от языка и наличия диалогового режима, он давал абсолютную экономию памяти и при грамотной организации довольно небольшие накладные расходы при исполнении. Да и бейсики того времени, как минимум те что мне довелось поковырять, тоже активно как раз его использовали; там проблема была не в организации кода, проблема была в самом языке который не позволял сделать производительную виртуалку, в результате 90% хиленького CPU улетали в трубу, и их было очень жалко

Oangai
03.12.2025 13:20А к распространению и засилью Бейсика особо приложился дядя Билли, который программист был средненький, зато маркетолух гениальный, знал как публику на свои поделия подсаживать

PerroSalchicha
03.12.2025 13:20знал как публику на свои поделия подсаживать
Ну так у него и поделия были, чего уж греха таить, сделаны были для людей, а не для компьютеров.

Oangai
03.12.2025 13:20его поделия создавались в первую очередь для зарабатывания денег, а люди с их индивидуальными хотелками были досадным недоразумением и подлежали интенсивной дрессировке, в чем он и его компания преуспели изрядно. Те же яблоки до самого 95го года пользователя не дрессировали и никому ничего не навязывали, считали для себя 1% рынка ПК вполне достаточным, пока не пришлось идти к этому самому дяде Биллу просить денег. Бизнес - это не про людей, и даже не про хорошую технику, это про деньги, всегда и только про деньги.

PerroSalchicha
03.12.2025 13:20его поделия создавались в первую очередь для зарабатывания денег
Вы так пишете, как будто работать за деньги - в этом есть хоть что-то негативное. Майкрософт была в 1980-е небольшой компанией, одной из многих. В гиганта выросли они благодаря тому, что их софт был удобнее и красивее аналогов. Может быть, не такие красивые архитектурно для программиста, но зато красивые в UI для тех, кто ими пользовался.
Те же яблоки до самого 95го года пользователя не дрессировали
Как будто они не хотели :) Хотели, просто не научились ещё.
Бизнес - это не про людей
Бизнес - это всегда люди, и только люди. Бизнес - это работа одних людей, которая должна понравиться другим людям.

Oangai
03.12.2025 13:20в гиганта и монополиста они выросли еще во времена своей дос, которая была тупым и уродливым продуктом блуда между CP/M и Unix. Apple стремились делать качественно и продавать дорого, но гений Билла заключался как раз в умении продать дрянь но дешевле, убедивши покупателя что лучшего не бывает.
"Работа одних людей, которая должна понравиться другим людям" - это Вам надо к Olivetti, редкий случай кому удалось, так чтобы еще и прогореть не сразу. Или немецкий Grundig, у тех тоже получалось пока был жив создатель

PerroSalchicha
03.12.2025 13:20в гиганта и монополиста они выросли еще во времена своей дос, которая была тупым и уродливым продуктом блуда между CP/M и Unix
Та не были они нигде монополистами тогда. По разработке - Борланд был популярнее, по офису - Лотус и тому подобное. Ну и ДОС в 1980-е была отличной системой. А с момента DOS 2 она уже на голову превосходила CP/M, и да, стянула архитектурные идеи с Unix, что вот ни разу не было недостатком.

Oangai
03.12.2025 13:20они очень хитро стали монополистами когда продали свою первую дос IBMам, может быть в тот раз даже ненароком, но так вышло что архитектура PC вдруг очень быстро стала доминировать на рынке офисных машин, при том что сама IBM имела с этого рынка считанные проценты, остальное были клоны, а вот MS имел их сразу всех. Dos была и недо-CP/M, и недо-Unix, с каждого помаленьку но ни того ни другого не перекрывала полностью. При том что и та и другая продолжали развиваться, а там уже появились для примера санки со своим солярисом, в плане удобства UI в графике помимо яблок были уже Иксы на юниксах, в хотя-бы в текстовом режиме появился уже нортон с его окнами и удобным редактором, но MS это всё до поры было не нужно, они убеждали пользователей что дос должен быть голым, редактор исключительно построчный, консоль в системе исключительно одна, а язык скриптов убогим и вообще ни с кем не совместимым. Потом много лет убеждали что многозадачность должна быть только кооперативная, потом что сетевой стек никому не нужен, а если нужен то мы изобретём свой и тоже убогий, зато продавать будем за экстра деньги. И при всём при этом документацию будем выдавать только по частям, чтобы всякие нищеброды получали доступ ограниченно по маленьким кусочкам, и только особо аффилированные и проверенные на лояльность друзья получали её полностью...
P.S. простите, наболело видимо, уже несколько месяцев пытаюсь подписать у них драйвер а они всё мурыжат по инстанциям, как были гады так ими и остались

Feedman
03.12.2025 13:20Потом много лет убеждали что многозадачность должна быть только кооперативная
это точно не про яблоки, которые на вытесняющую многозадачность перешли только после возвращения Стива?
они убеждали пользователей что дос должен быть голым
не нравится голый дос - есть рынок с кучей оболочек. Хочется сэкономить - учите команды

sbabich
03.12.2025 13:20В 90е аксакалы фапали на полуось. Я не застал и ни разу не видел, но говорят винда ее копия, только не такая глючная. Правда у самих аксакалов на компах тоже винда была ) время было рнтересное

randomsimplenumber
03.12.2025 13:20Во времена windows 2000 занесло меня на собеседование в галеру (тогда слов таких не было) , которая портировала всякое разное для Apple. И уже на курсах я понял, что оно напоминает. Windows 3.11. 1 задача подвисает - тормозит все. Документация - в том шкафчике, но вам туда рано, изучайте ide. По сравнению с windows, с нормальной многозадачностью, с общедоступной прекрасной документацией.. очень уж оно показалось убогим.

PerroSalchicha
03.12.2025 13:20Была бы нормальная домашняя машина — слоты расширения, 16К/64К базовой памяти (кроватками)
IBM в этот рынок вот вообще не метила. IBM PC был с пелёнок профессиональной машиной, и по функционалу, и по цене. Он на момент выхода стоил в минимальном конфиге полтора килобакса, это с 16К памяти и без излишеств вроде дисковода и графики. За эти деньги можно было купить пять домашних компов в то время а-ля Commodore VIC-20/Atari 400. Бейсик там в ПЗУ был сугубо ответом на пожелания клиентов, которые к этому привыкли.

NickDoom
03.12.2025 13:20Ну как бы да, там Вася и выход на NTSC были как из другой вселенной. И если Васю ещё можно объяснить «привычками», то NTSC — это удивительный артефакт, это прямо как предвестник будущего PCjr, он же «Поиск» курильщика (в «Поиске», правда, ISA была курильщика, но в остальном это просто была наглядная демонстрация того, чего IBM могла взять на домашнем рынке буквально со старта). Могла бы, если бы не
IBM в этот рынок вот вообще не метила
Может быть, видеокарты делали люди, которых не предупредили о том, что
на момент выхода стоил в минимальном конфиге полтора килобакса, это с 16К памяти и без излишеств вроде дисковода и графики. За эти деньги можно было купить пять домашних компов в то время а-ля Commodore VIC-20/Atari 400.
…и что все усилия по подключению к телевизору будут, собственно, напрасны. Единственное объяснение.

PerroSalchicha
03.12.2025 13:20До сих пор для меня загадка, как так получилось что его вообобще поголовно везде ставили, прямо как мировой заговор какой-то. На самом деле к тому времени уже достаточно приличных языков существовало
А много из этих приличных языков помещалось в 4-8 килобайт ПЗУ, как это делали интерпретаторы Бейсика?

Oangai
03.12.2025 13:20В 4кб помещался полный Форт, с операционкой, дебаггером и экранным редактором, практически IDE по современным понятиям. В 8кб помещались Фокал в БК0010, тоже неплохой язык, если уж с Бейсиком сравнивать, и некоторые простые реализации Паскаля. Интерпретатор Лиспа поместился бы вполне, вместе с неплохой библиотекой, если бы кто-то этим занялся; простые интерпретаторы Лиспа делаются в несколько десятков байт кода, остальное это собственно библиотека, подобно как в Форте. Хотя для Лиспа видимо в то время не было стантарта который бы это регулировал, Лиспы обычно крутились на других машинах и для других задач; когда Чак Мур этой задачей занялся, у него собственно Форт и получился, хотя теорию он в студенчестве слушал у самого Маккарти. Другое ответвление от Лиспа, для домашних машинок и детского программиерования - язык Лого, и ведь он вполне удался?

PerroSalchicha
03.12.2025 13:20Вот, вы сами ответили на свой же вопрос: возможные альтернативы - компактная, но мозгодробительная для новичка стековая машина Форт, недобейсик Фокал и такой же мозгодробительный Лисп. Бейсик был однозначно уместнее всего этого.

Oangai
03.12.2025 13:20он был уместнее исключительно с точки зрения маркетинга, да и маркетинг тот ориентировался не столько на пользователей, которые дети и сами ничего не решают, сколько на тогдашних учителей и родителей с их пониманием информатики на уровне собственной молодости времен 60х, телетайп и вот это всё. А дети куда более гибки в своем восприятии нового и прекрасно бы освоились и с Лого, и с Фортом, и с Паскалем, если бы им дали такую возможность и выбор.

PerroSalchicha
03.12.2025 13:20он был уместнее исключительно с точки зрения маркетинга
Он был уместнее с точки зрения его соответствия естественному человеческому языку и императивному мышлению.
Сравните:
10 PRINT "QUADRATIC EQUATION SOLVER: A*X^2 + B*X + C = 0" 20 INPUT "A = "; A 30 INPUT "B = "; B 40 INPUT "C = "; C 50 D = B*B - 4*A*C 60 IF D < 0 THEN PRINT "NO REAL ROOTS": END 70 IF D = 0 THEN X = -B / (2*A): PRINT "ONE ROOT: "; X: END 80 X1 = (-B + SQR(D)) / (2*A) 90 X2 = (-B - SQR(D)) / (2*A) 100 PRINT "ROOTS:" 110 PRINT "X1 = "; X1 120 PRINT "X2 = "; X2\ Quadratic equation solver in Forth : quad ( a b c -- ) >r >r >r \ stack: ( -- ) with a b c saved in return stack r@ r> r> \ bring c b a back: a b c >r >r >r \ save again: want a b c in return stack r@ r@ * 4 * \ 4*a*c r> r> 2dup * \ b*b swap - \ discriminant = b*b - 4*a*c dup 0< if drop ." No real roots" cr rdrop rdrop rdrop exit then dup 0= if 0 swap - \ -b r> 2 * / \ / (2*a) ." One root: " . cr rdrop rdrop exit then sqrt \ sqrt(D) >r \ save sqrt(D) r> \ retrieve sqrt(D) r> \ retrieve a 2 * \ 2*a >r \ save denominator r> r> \ bring sqrt(D) and b negate \ -b over + r@ / \ (-b + sqrt(D)) / (2*a) ." X1 = " . cr swap - r@ / \ (-b - sqrt(D)) / (2*a) ." X2 = " . cr rdrop ;01.10 T "QUADRATIC EQUATION SOLVER",! 01.20 A "A=":A 01.30 A "B=":B 01.40 A "C=":C 01.50 S D = B*B - 4*A*C 01.60 I (D) 01.80,01.70,01.80 01.70 T "NO REAL ROOTS",!; GO TO 01.99 01.80 I (D) 01.90,01.90,01.95 01.90 S X = -B/(2*A) 01.91 T "ONE ROOT: ",X,!; GO TO 01.99 01.95 S X1 = (-B + SQRT(D))/(2*A) 01.96 S X2 = (-B - SQRT(D))/(2*A) 01.97 T "X1 = ",X1,! 01.98 T "X2 = ",X2,! 01.99 R(defun quadratic (a b c) "Solve a*x^2 + b*x + c = 0. Returns list of roots or NIL if no real roots." (let* ((d (- (* b b) (* 4 a c)))) ; discriminant (cond ((< d 0) (format t "No real roots.~%") nil) ((= d 0) (let ((x (/ (- b) (* 2 a)))) (format t "One root: ~A~%" x) (list x))) (t (let* ((sqrt-d (sqrt d)) (x1 (/ (+ (- b) sqrt-d) (* 2 a))) (x2 (/ (- (- b) sqrt-d) (* 2 a)))) (format t "Roots: X1 = ~A X2 = ~A~%" x1 x2) (list x1 x2))))))
Oangai
03.12.2025 13:20Лисп красив, а Форт техничен как чистая машина Тьюринга. Попробуйте еще и Лого, а потом дайте сравнить детям с восприятием не изорудованным бейсиком :) И вообще, мы сейчас в другом времени находимся, тот же Луа родом от Паскаля на этой задаче тоже красивее будет

PerroSalchicha
03.12.2025 13:20Лисп красив, а Форт техничен как чистая машина Тьюринга.
Они красивые для вас, потому что вы сначала научились программировать, а потом уже стали понимать красоту и ценность умственных упражнений по программированию. А что бы вы там поняли, будь вы тем самым ребёнком? Бейсик, это как раз то, что вы уже знаете со школьных пелёнок. Как вы делали вычисления в тетрадке, так вы их делаете и на экране. А с Фортом/Лиспом надо заново учиться и писать, и читать, и считать. Вы увидите это филькину грамоту лет в десять, и у вас даже желания её разбирать, скорее всего, не возникнет.

Oangai
03.12.2025 13:20тут как раз замкнутый круг, или "ошибка выжившего" - со школьных его знают как раз потому что кто-то когда-то сильно постарался чтобы во всех школах оказался именно он, а не например Паскаль или Лого. Заслуженно или нет, вопрос вторичный, на вкус и цвет все фломастеры разные - на мой взгляд, губительно именно то что вообще один всего язык доминировал целую эпоху, не оставив детям возможности осознанного выбора. Как если бы во всех музыкальных школах преподавали только барабан, потому что детям это проще..

PerroSalchicha
03.12.2025 13:20тут как раз замкнутый круг, или "ошибка выжившего" - со школьных его знают
Я не про знание Бейсика, я про знание математики и составления алгоритмов. На Бейсик оно перекладывается естественным образом. А на Форт или Лисп - нет. Что касается Паскаля, он лучше Бейсика, конечно же. Но увы, в природе банально не было реализации Паскаля, которую можно было бы всунуть в 8К ПЗУ, а если бы и была, она была бы сильно урезанной даже в сравнении с довольно простым Паскалем Вирта, и вряд ли получилась лучше Бейсика в своём куцем варианте.

Oangai
03.12.2025 13:20были Паскали в ПЗУ, точно были, но я сейчас уже не найду источники, сорри, был в сети какой-то университетский сайт где архивировалась вся история Паскаля и связаных с ним машинок.. И для БК0010 вроде даже были картриджи с Паскалем, а там тоже по 8кб памяти было

PerroSalchicha
03.12.2025 13:20И для БК0010 вроде даже были картриджи с Паскалем, а там тоже по 8кб памяти было
Компилятор Паскаля на ДВК весил 50-60 килобайт в зависимости от версии, и это только чисто компилятор, без системной библиотеки. Я не думаю, что на БК там могло существовать что-то 8-килобайтное, особенно в свете того, что подобный софт туда с ДВК и портировался, а не писался с нуля.

Oangai
03.12.2025 13:20думаю что здесь Вы всетаки ошибаетесь, столько нaверное даже продвинутый борландовский TP не весил, наверное всетаки это с библиотекой столько. Тем более что когда Вирт его создавал такие обьёмы даже для университетских машин были немыслимым расточительством, а он стремился сделать легкодоступный язык для студенческих классов в пределах возможностей своего времени, вряд ли он стал бы включать в компилятор столько избыточной сложности

PerroSalchicha
03.12.2025 13:20думаю что здесь Вы всетаки ошибаетесь, столько нaверное даже продвинутый борландовский TP не весил
Да, извиняюсь, соврал, 50К он весил вместе с системной библиотекой:
https://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/pascal/
Но без неё он не работает, там же всякие штуки вроде read/readln/write/writeln реализованы.

Oangai
03.12.2025 13:20состав библиотеки можно как раз вариировать, и сходная функциональность даже для разных языков будет занимать примерно одинаково. Сам компилятор для Паскаля наверняка весил поболее чем для Бейсика, это понятно, но думаю всетаки не значительно

PerroSalchicha
03.12.2025 13:20Сам компилятор для Паскаля наверняка весил поболее чем для Бейсика
Да я же ссылку выше дал, 26К чисто компилятор весил, и 24К системная библиотека. Ну, порезать её можно, дисковые операции там убрать, например, которых нет у 8-битных машин. Пусть 8К она будет весить только с самым необходимым - ввод-вывод на консоль и базовая математика, все равно в ПЗУ это никак не уместить.

Oangai
03.12.2025 13:20и да, программистом я стал после того как в 11 лет на каких-то демонстрационных БК0010 случайно открыл листинг бежавшей там программы на Фокале, и вдруг загорелся в этой филькиной грамоте разобраться...

PerroSalchicha
03.12.2025 13:20случайно открыл листинг бежавшей там программы на Фокале
Ну т.е. всё-таки на ухудшенном и упрощённом Бейсике.

Oangai
03.12.2025 13:20так для ребёнка всё одно странно структурированная абракадабра, пара слов в комментариях и те английские, остальное всё буквы и цифры - как вот из этого игра с графикой получается? Был бы там Форт - занимался бы им первым, а так я до него добрался уже после Бейсика, когда осознанно стал искать альтернативы. Благо, техническая библиотека у нас в городе была отменная, можно было найти книги по любым языкам, от фортрана до пролога. Свой первый Форт я тогда написал уже сам, изучивши по книжке и под 8080 освоивши ассемблер, взять готовый не откуда было...

Astroscope
03.12.2025 13:20так для ребёнка всё одно странно структурированная абракадабра, пара слов в комментариях и те английские
В мире очень много детей, для которых английский язык - родной. А еще в мире очень много детей, изучающих английский как иностранный с глубокого детства. Так что проблемы в этом точно нет - для детей, в смысле.

randomsimplenumber
03.12.2025 13:20Думаете, если русскоязычному ребенку показать код на 1С, он сразу его поймет? ;)

PerroSalchicha
03.12.2025 13:20Думаете, если русскоязычному ребенку показать код на 1С, он сразу его поймет?
Если ребёнку лет тридцать, из которых хотя бы пять он отработал бухгалтером, то что-то поймёт.

randomsimplenumber
03.12.2025 13:20Если ребёнку лет тридцать
Ничего не понимаю, я французский в школе учил (ц) 30-летние ребенки ;)

Oangai
03.12.2025 13:20на Фокале принято писать операторы только одной буквой, строк там нет, поэтому человеческие слова там бывают только в комментариях, среди остальной странным образом структурированной мешанины букв и цифр. Когда знаешь язык писать на нём легко и быстро, но для тех кто его не знает это выглядит как шифр. Читаемость кода минимальная, хуже наверное только в языке M (Mumps) было, зато так интересно и загадочно :)

misha_erementchouk
03.12.2025 13:20Забавно как даже в элементарном примере видно насколько Лисп зверская штука. Иного варианта кроме как написать реально работающую функцию (а не абстрактную иллюстрацию "простоты" программирования на Бейсике) и не получается. И одновременно очевидно почему мейнстримом он так и не стал (в том числе потому, что сразу надо писать реально работающие функции, а не абстрактные иллюстрации). Если бы Лиспа не существовало, его следовало бы выдумать.
Вот это было бы настоящее "Что было бы".

Oangai
03.12.2025 13:20А по поводу стековой машины - так HP лет двадцать выпускал программируемые калькуляторы с обратной польской записью, все ими пользовались и считали это нормальным - человек довольно легко к такому адаптируется, если не устраивает сам себе психологические барьеры.

randomsimplenumber
03.12.2025 13:20И перестали выпускать потому что.. Почему? Потому что появились нормальные калькуляторы, со скобками. В которые можно просто набрать формулу из справочника - и оно работает. Без трансляции в польскую запись.

Oangai
03.12.2025 13:20понятное дело, отпала техническая необходимость. Я исключительно о том что тот или иной способ записи - фактор совсем не решающий; нужно было - привыкли, перестало быть нужно - снова отвыкли, а разминать мозги никогда не вредно

NickDoom
03.12.2025 13:20Ну то есть, в принципе, если бы на первых машинах «три кило рому, кило сраму, проц на полтора регистра» шили бы интерпретатор форт-машины, которая тоже позволяла бы в байт положить одну «человеческую» команду «добавь к последнему значению предыдущее и сдвинь стек» (которая для своего выполнения, особенно с плавающей точкой, требует выполнить сотню машинных), сейчас бы на месте васика был Форт, а все ругались бы на сформированные им привычки к стеку, потому что «ну куда вы все со своими детскими стеками, информатикой вы в школе травмированные, тут же предсказание ветвлений, разрушение кэша, прогрев кэша, надо память воспринимать как набор областей с адресацией по указателям, а у вас всё ваш стек в голове!»
Главное — чтобы IBM не зашила бы в ром форт вместо васика, потому что тогда ранние домашние пека убил бы форт, а не васик :-D
Может, так бы было и лучше, кто знает, кто знает… к форту хорошо прикручивается очень горячий кэш стека, несколько команд за такт можно выполнять. С рандомом это не всегда прокатывает.

Oangai
03.12.2025 13:20Ви таки будете смеяться, но небезызвестная SUN ведь таки и ставила полноценую Forth VM во все свои спарки, вместо биоса, а драйвера в ПЗУшках на самих карточках делались исключительно в байткоде, что позволяло им работать одинаково на всех машинах, независимо от архитектуры процессора.
Только это был уже не шитый код, это был байткод; основное различие в том что для байткода каждый оператор имеет стандартизированной номер, поэтому готовым скомпилированным кодом можно обмениваться как бинарным, как сейчас для java. Шитый код имеет похожий принцип но транслируется в самой машине сразу в адреса соответствующих подпрограмм, он может даже между вызовами одной программы отличаться - это делает его по производительности заметно эффективнее байткода, но в 2-3 раза менее компактным, смотря по реализации. Что тем не менее ни в какое сравнение не идёт с полностью нативным бинарным компилятом, тратить 2-3 байта на запись высокоуроневого оператора могли себе позволить даже совсем мелкие машинки, и уж это был бы всяко более разумный компромис чем тратить только 1 байт но дополнительно 90% процессора

NickDoom
03.12.2025 13:20…единственное меня смущает — очень уж за стеком там надо следить во всех ветвлениях. Может, за давностью лет ошибусь, но есть у меня подозрение, что проги, ориентированные более на принятие решений, чем просто на последовательные вычисления, при достаточной сложности дерева решений или становятся неотлаживаемыми, или форт превращается… превращается… превращаются брюки… превращаются опять в похабный бейсик, просто написанный фортом.
Но это не точно. Давно я не брал в руки
шашкушашек.

Oangai
03.12.2025 13:20Да понятно, Форт был язык для маленьких машин, у него не было потенциала роста как в C - программисту давались эффективная среда и сильные инструменты для низкого уровня, но на более высоком мы неизбежно превращались в велосипедостроителей с квадратными колесами, переизобретая вещи которые в другом месте кто-то более опытный уже бы сделал за нас, как те же деревья, алгоритмы сортировки, разбор строк или серьёзную оптимизацию для компилятора. По принципу works for me и научиться этому было в любом случае полезно, но кто-то другой мог бы именно это сделать лучше.

NickDoom
03.12.2025 13:20Да, и как раз старшему поколению они вообще не давались. Как сейчас помню самоуверенную тётку и МК-52 :-D Хорошо, быстро хоть сдалась, поняла своё бессилие перед непривычным :)
Так что тезис про учителей и то, что детям бы Форт вполне зашёл — могу подтвердить практически.

R0bur
03.12.2025 13:20В 8кб помещались Фокал в БК0010, тоже неплохой язык, если уж с Бейсиком сравнивать
Неплохой-то неплохой, но операций со строками в нём нет, а из графических средств - только рисование точек и прямых отрезков. Что касается Лиспа, то это язык весьма специфический. Программа на Бейсике, в отличие от него, выглядит как пошаговая инструкция на понятном английском языке.

Oangai
03.12.2025 13:20это был как-бы сарказм, Фокал имел весьма ограниченные преимущества перед Бейсиком - порог входа еще ниже, написать небольшую программу можно было еще быстрее, тип данных только один и сразу с плавающей запятой, но за это он еще более тормозной и читаемость программ еще хуже. Изза чисел с плавающей запятой он видимо и требовал "чуть" больше места в ПЗУ чем такому языку с пятью операторам бы требовалось, всетаки по функциям там поставлялась вся тригонометрия. HP его собственно и придумал для чего-то вроде программируемых калькуляторов, писать простые программы для сложных расчетов

Astroscope
03.12.2025 13:20До сих пор для меня загадка, как так получилось что его вообобще поголовно везде ставили, прямо как мировой заговор какой-то.
Кому-то пришла в голову идея, что компьютер может быть бытовым прибором для многих, а не узкоспециализированным устройством для профессиональных программистов и программистов-аматоров. И тут обнаружилось, что нужно что-то, что снижает порог входа в программирование до почти нулевой высоты. На тот момент таким решением был BASIC, и именно этим он прекрасен. Если для вас, программиста, BASIC выглядит как недоразумение, то для не-программистов это возможность без подготовки запилить свой первый hello world, написать что-то пусть очень простое, но работающее, и либо учиться дальше, либо остаться тем гибридом пользователя и чуть-чуть программиста своего бытового компьтера - игрушки и рабочего инструмента для каких-то нехитрых задач.

Naivic
03.12.2025 13:20А потом пришел конвейер, и похоронил шитый код.
Жалко до слез, но ничего не поделаешь.

Aggle
03.12.2025 13:20даже иногда игрушки, хотя они-то не сумма зарплат, там фреймрейт 0.1 фпс не очень
Игрушки разные нужны, игрушки разные важны. Для какого-нибудь квеста или пошаговой стратегии (понятно, без эпических зарубов гномов с гоблинами) - почему бы и нет?

NickDoom
03.12.2025 13:20Ну, кстати, в силу пресловутого компактного кода, возможно, где-нибудь на дендях (будь там интерпретатор васика в роме самой приставки) можно было бы сделать пошаговую стратегию с достаточно сложной логикой. Шибко сложнее и умнее, чем реально было бы в память картриджа напхать нативным кодом.
Но она ооооой сколько бы над каждым ходом думала :)
Насчёт аркад — ну, наверное, можно было бы и в поэкранной аркаде сделать какую-то «сложно-умную» часть, которая васиком считается между экранами, а потом в пределах экрана работает быстрое рубилово на нативном коде. Взаимосвязь между «убил/пожалел» NPC на одном экране и «напали/не напали» на другом, например. Ну и кучу всего такого, что можно быстро подшаманить в уровне бейсиковой логикой, а потом скормить игре. Вплоть до развитого сюжета или вообще элементов RPG.
Но это прямо оооочень хороший бейсик надо разрабатывать. Чтобы прямо «три байта на две строчки».

sergey_prokofiev
03.12.2025 13:20C получился компактным по синтаксису, но при этом очень близким к машинному уровню.
С одной стороны, он имел всего около 30 ключевых слов, минимальные абстракции и практически прямую трансляцию в ассемблер.
Это не так. Программистам на С не приходилось на ежедневной основе играться регистрами, вызывать прерывания, развлекаться с математикой по разные типы чисел и так далее.
Язык C стал лидером в системном программировании и спровоцировал рост себе подобных (C++, Java, C# и т. д.)
И снова мимо - ни один из озвученных языков не разрабатывался как "подобный С". Если речь исключительно о синтаксисе, то так и пишут "С-подобный синтаксис".
Дальше не читал.

GBR-613
03.12.2025 13:20До сих пор считаю GWBASIC лучшим языком для школьников. Минимум синтаксиса, минимум порог входа - и сразу возможность сделать что-то работающее. Паскаль лучше, но для школьных кружков, для тех, кому интересно вникать, вкладываться.

MountainGoat
03.12.2025 13:20Не вы один. Бедные школьники.
Я считаю для этой цели куда лучше JavaScript. В минимальном исполнении так же прост, но при этом логика у него именно современная. И если кто-то вопреки стараниям педагогов сумел увлечься, ему не придётся JS немедленно забывать, переходя к практическим задачам.
Фреймворк CT.JS можно самому скачать, запустить, и там, написав ровно 2 строчки сделать летающий по окну смайлик, который пищит, когда по нему кликаешь. А потом из меню скомпилировать в EXE и в APK ! Я думаю, это увлекает детей куда сильнее, чем возможность написать "Привет!" в чёрную консоль дос-эмулятора.

GBR-613
03.12.2025 13:20Не надо Javascript. Как Вы объясните детям, почему "1"+2 и 1+"2" дают разные результаты?
Что же касается чёрной консоли: на первых нескольких уроках то же будет и с Javascript. A через несколько уроков можно сделать летающую псевдографику, ползущую змейку и т.д. Сколько было интересных игрушек!

misha_erementchouk
03.12.2025 13:20Ну, как-то же детям "объясняют" почему, скажем, в Питоне (понятно, что не только в Питоне)
0.3 + 0.6 == 0.9
возвращает False.

MountainGoat
03.12.2025 13:20Как Вы объясните детям,
я ничего не буду объяснять, я скажу, что так нельзя. Потом по мере процесса разберутся. Ну примерно как в школе сначала пять на три не делится, а потом оказывается, что делится, а к концу института и на ноль делить можно.
на первых нескольких уроках то же будет
Я уже пример привёл, что не будет. Вы правда утверждаете, что псевдографика в консоли на компьютере интереснее, чем спрайтовая графика у себя на телефоне?

randomsimplenumber
03.12.2025 13:20я ничего не буду объяснять, я скажу, что так нельзя.
Хороший препод, и лекция интересная. Школоло в голову впихнули коммуникативный закон. И тут вдруг от порядка сложения зависит результат, и без обьяснений.

MountainGoat
03.12.2025 13:20Поэтому просто нефиг складывать строку с числом или возводить объект в степень, пока до этого дело не дойдёт.

PerroSalchicha
03.12.2025 13:20я ничего не буду объяснять, я скажу, что так нельзя. Потом по мере процесса разберутся.
Да, только они попробуют, и спросят, почему же так получается.
Я вообще искренне считаю, что JavaScript - крайне неудачный язык из-за вот этих вот своих способностей успешно переваривать любые логические ошибки программиста. Это было оправдано, когда он был просто скриптовым языком для добавления элементов интерактивности к веб-страничкам, где любая ошибка была некритичной, и главное - чтобы страничка отображалась. Но когда он перерос в полноценный инструмент разработки, это всё обернулось во вред.
А для обучения программированию всё-таки лучше брать языки со строгой типизацией, потому что перейти от языков с типизацией к языкам без типизации легко, а вот наоборот - больно.

GBR-613
03.12.2025 13:20А какая проблема объяснить? "Дети, числа с плавающей точкой представляются внутри компьютера не так, как у нас на бумаге, там двоичные числа и ограниченный размер, так что будьте готовы к сюрпризам." Тем более, что та же проблема воспроизводится на обычных калькуляторах.
Школьные уроки по программированию предназначены для всех. В том числе для будущих кухарок. Их задача - показать детям, что такое программирование, чтобы помочь им с профориентацией и при этом их не мучить. А кто заинтересуется - тот пойдёт на кружок, который не для всех. И там он будет заниматься тем, что даёт больше интересных возможностей, но и требует больше усилий.
Я (и не только я) считаю, что детям смартфон до 18 лет давать в руки нельзя по целому ряду причин. И не даю. В школе, где мои дети учатся, все по старинке и карандашом по бумаге. Представьте себе, это не помешало двум моим старшим дочкам стать программистами: одна специализируется по Angular, вторая по React.

PerroSalchicha
03.12.2025 13:20А какая проблема объяснить? "Дети, числа с плавающей точкой представляются внутри компьютера не так, как у нас на бумаге, там двоичные числа и ограниченный размер, так что будьте готовы к сюрпризам."
Там вопрос не про плавающую точку, а про трактование типов у JavaScript:

Я (и не только я) считаю, что детям смартфон до 18 лет давать в руки нельзя по целому ряду причин.
Ага, и первая из этих причин - сделать своего ребенка-подростка посмешищем среди своих сверстников, практически лишив его возможности нормально общаться с друзьями.
В школе, где мои дети учатся, все по старинке и карандашом по бумаге.
В школе и у нас телефоны вообще запрещены на занятиях. Но при этом не давать за пределами школы телефон, скажем, 11-летнему ребёнку, это уже издевательство над ним.

GBR-613
03.12.2025 13:20Tрактование типов у JavaScript - это причина, по которой я против того, чтобы учить в школе JavaScript. Даже на кружке. Лучше Python.
"Я вообще искренне считаю, что JavaScript - крайне неудачный язык" - согласен. Если его учить, то последним, а не первым и не вторым.
"лучше брать языки со строгой типизацией" - согласен: помнится, GWBASIC в она строгая.
"первая из этих причин - сделать своего ребенка-подростка посмешищем" - там, где я живу, это довольно нормально (это не в России). Если бы я видел, что это делает ребенка-подростка посмешищем среди своих сверстников, я бы на это, конечно, не пошел.

PerroSalchicha
03.12.2025 13:20там, где я живу, это довольно нормально (это не в России).
Я в Испании живу, тут возраст "отелефонивания" примерно лет десять. Современному поколению подростков без телефонов уже нереально, они там общаются, делятся новостями и собственным контентом, и в общем-то социализируются через него. И насколько я знаю, по Европе так плюс-минус везде.
Если бы я видел, что это делает ребенка-подростка посмешищем среди своих сверстников, я бы на это, конечно, не пошел.
Проблема в том, что мы это далеко не всегда видим. Меня, например, в детстве бабушка очень старалась опекать, и с меня по этому поводу не ржал только ленивый. Но бабушка - это был последний человек, которому я на что-то бы мог пожаловаться. Поэтому она это так и не узнала, померла, так и не поняв, чего это любимый внучок её сторонился.
помнится, GWBASIC в она строгая.
GWBASIC для обучения был бы неплох, если он не был бы столь древний. Мы-то на него подсели в 1980-е как раз по той причине, что это было круто, это было ново, это был хайтек. Сейчас это безнадёжная древность сорокалетней давности. Вас бы сильно увлекли технологии, если вам бы дедушка показал, как он к лампе в патроне провод с вилкой прикручивает, и втыкает её в розетку? А для него это тоже как раз был хайтек в юности, сорок лет назад, если отмотать от 1980-х.

MountainGoat
03.12.2025 13:20Кстати, с Юникодом там как? Написать "Привет" получится, или бНОПНЯ?

GBR-613
03.12.2025 13:20Никакого Юникода тогда и в помине не было. Что будет сейчас - наверное, будет зависеть от платформы. Ну и пусть приучаются к английскому, так даже лучше будет: лишний повод понять, зачем английский учить.

Aggle
03.12.2025 13:20GWBASIC
Это тот самый, классический? Если так, то лучше уж QuickBASIC. Простота, необходимость, в случае чего, сделать что-то посложнее, исполняемый файл на выходе.

GBR-613
03.12.2025 13:20Мой выбор в данном случае именно GWBASIC, потому что он лучше даёт представление, как "всё это" работает "внутри": "там, внутри" нет таких понятий, как функции и подпрограммы, зато есть адрес каждой команды, переход по адресу и стек вызовов.
Но это - на обычных школьных уроках, которые предназначены для всех. Их задача - показать детям, что такое программирование, чтобы помочь им с профориентацией и при этом их лишний раз не мучить. (Scratch, например, замечательная штука, но даёт совершенно превратное впечатление о том, что такое работа программиста.) А те, кто заинтересовался, пойдут на кружок, и там уж должен быть не QuickBASIC, а что-то посерьёзнее и поактуальнее. Скажем, Python или Javascript.

randomsimplenumber
03.12.2025 13:20показать детям, что такое программирование
На примере древнего диалекта, не используемого нигде? Ну, оно и правильно. Программистов скоро заменит ИИ, не нужно показывать школоте ничего актуального.

PerroSalchicha
03.12.2025 13:20Таким образом, к началу 90-х сформировались две линии эволюции языков:
Первая — языки, нацеленные на высокую производительность и возможность строить сложные системы...
Вторая линия — языки, ориентированные на удобство разработки и простоту чтения кода...
Три. Ещё - Паскаль/Delphi, которые сочетали плюсы и первых, и вторых.

lz961
03.12.2025 13:20Подходящий пример -- эволюция языка Fortran. Fortran 90, по сути, новый язык (с динамическим выделением памяти, указателями, ООП (в следующих редакциях), чистыми функциями и т.п., векторизацией), в который искусственно введена возможность корректной компиляции кода, написанного на старых диалектах.

AWE64
03.12.2025 13:20да братуха васик это ваще тема! не знаю че там короче эти умники на своих си крестах мутят делать им нефиг чета короче объекты там указатели именовывай-рызименовывай я ваще не вкуриваю че за прикол! если бы на васике было пилить фронт вместо джаваскрипт я бы уже проггером работал внатуре)))

Krey
03.12.2025 13:20Вообще-то на тех же 8ми битках в пзу были бейсики с процедурами (sub, Go sub). И с доступом к памяти через peek, poke. Вот указателей не было, это да

eulampius
03.12.2025 13:20У меня гораздо более простое видение этой ситуации.
Была там какая-то история про Бейсик для Альтаир 8800. И как бы с этой истории началась успеховная история о какой-то там компании, в определенных кругах даже известной.
И я совершенно не исключаю, что Бейсик стал своего рода тотемом для этой компании. И именно поэтому хоть как-то "развивался" (VB, VBA, FoxPro...), а не канул в небытие. А вот, чтобы он развивался еще больше, как об этом намекает автор, нужны какие-то совсем чудовищные условия. Что-то вроде торговой федерации с Вейдером и штурмовиками )
Впрочем, к чему это могло бы привести, можно посмотреть на примере ... 1С. Почти тот же Бейсик, но без конкуренции в рамках платформы.

PerroSalchicha
03.12.2025 13:20И я совершенно не исключаю, что Бейсик стал своего рода тотемом для этой компании. И именно поэтому хоть как-то "развивался"
Бейсик развивался не "как-то", а очень даже офигенно, Visual Basic был действительно прорывным решением для своего времени, который вообще вывел массовую разработку на качественно новый уровень.

eulampius
03.12.2025 13:20Думаю, заслуга здесь была не у Бейсика как языка, а у решения в целом. Сыграла сама идея фреймворка со стандартными компонентами и пользовательскими обработчиками. Это она позволила относительно быстро создавать макет приложения без погружения в MessageLoop и обработку WM-сообщений. И я, опять же, не исключаю, что язык для этого решения был выбран из "тотемистических" соображений )
Впоследствии эта идея гораздо качественнее была реализована в VCL (Delphi). Затем повторена в WindowsForms и снова использована уже в VB.Net, который в принципе был не нужен, и возможно, опять из "тотемистических" соображений. Ведь J# они забросили, а VB - нет )

PerroSalchicha
03.12.2025 13:20Думаю, заслуга здесь была не у Бейсика как языка, а у решения в целом
Конечно. Любой язык получил бы звёздный час с такой средой разработки. Собственно, Delphi это показала.
Затем повторена в WindowsForms и снова использована уже в VB.Net, который в принципе был не нужен, и возможно, опять из "тотемистических" соображений.
Скорее, для совместимости с уже сущестующим кодом. На классическом VB было слишком много всего написано, чтобы вот так просто это похоронить без возможности переноса на актуальную платформу.

eulampius
03.12.2025 13:20Любой язык получил бы звёздный час с такой средой разработки. Собственно, Delphi это показала.
А вот C++ Builder (VCL плюс Borland C++) что-то не взлетел. У плюсовиков тогда уже сформировались свои традиции написания Windows-приложений. Не купились )
Скорее, для совместимости с уже сущестующим кодом. На классическом VB было слишком много всего написано
А это, кстати, очень непросто перенести старый VB (vbrun, p-code) на CLR. Рабочее окружение совершенно другое, и язык сильно оброс неведомыми ранее штуками. Без потерь можно перенести, разве что, какие-нибудь модули с вычислениями. С остальным будет без разницы: что в C#, что в VB.Net. "Общий" язык здесь не дает преимуществ. Возможно, это делалось для того, чтобы сохранить разработчиков на VB, но мне почему-то ни разу не приходилось видеть в "новом времени" (после 2005-2010 годов) живых VB-разработчиков. "Старые" попереезжали кто на Delphi, кто на Java/dotNet, кто на PHP и т.д. А все дотнетчики, с которыми мне приходилось пересекаться, использовали исключительно C#. Только живых VBA-разработчиков приходилось встречать. С остальным - глухо.

PerroSalchicha
03.12.2025 13:20А вот C++ Builder (VCL плюс Borland C++) что-то не взлетел.
Ну почему? Он свою популярность получил, но потом попал на ту же проблему, что и Delphi - желание Борланда уйти в глухой дорогой энтерпрайз, забив на массовый рынок.

areful
03.12.2025 13:20По студенчеству был у меня приятель - учился на АСОУ. Я в то время прыгал с Паскаля на С и обратно пытался турбовизить, дергать прерывания и писать графику 320x240x256. Андрей же писал только нa qbasic, а ввиду того, что он, по всей видимости, был программистом от бога, то на все его программы я смотрел в лёгком ах..уе не понимая как можно делать такие вещи на такой кривуле, а у меня как не напишу всё время получается какой-то отстой. Всё таки умение пользоваться инструментом при большом таланте может сгладить недостатки самого инструмента.

omxela
03.12.2025 13:20В 90-х qbasic был ничем не хуже турбо-си или турбо-паскаля. Когда меня сишники совсем достали, я на спор написал на qbasic операционную систему реального времени для автономной работы на полигоне - она собирала данные с физических датчиков разной природы, делала предварительную обработку, и позволяла оператору параллельно обрабатывать данные в графической оболочке. Разумеется, критические по таймингу участки кода писались на ассемблере, превращались в obj-файлы и подгружались при компиляции в основную программу. Но ровно то же самое делалось бы и на Си, просто в турбо-си и турбо-паскале была замечательная возможность писать asm-блоки прямо в теле программы - вот и вся разница. Так что всё относительно.

Feedman
03.12.2025 13:20https://www.basic.visual2000.ru/
Автора тоже зовут Андрей, в 90-х он часто публиковался в журналах со статьями про бейсик.

Overphase
03.12.2025 13:20На скриншоте "UniBASIC" меня заинтересовало сразу несколько вещей. Во-первых, болгарское имя автора Todor Todorov, намекавшее на то, что это с большой вероятностью не американская разработка. Во-вторых, шрифт, очень похожий на применявшийся в Apple II. В-третьих, системное приглашение монитора ромбиком, не похожее на эппловскую звездочку.
Все это прозвучало для меня как приглашение разобраться, что это за зверь такой, и на чем оно работает.
Начинаю раскручивать. Big-endian порядок байтов в инструкции
JMPсразу отбрасывает 6502 и 8080 (да и я помню без справочника, чтоRTSв 6502 — это$60, а в 8080 такой мнемоники нет, естьRET). Перед нами, скорее всего, 6800, что подтверждается списком регистров A, B, X, SP.Сверяю опкоды по справочнику https://www.8bit-era.cz/6800.html - действительно,
$39-RTS, а$7E- этоJMP. Но$3F- это однобайтная командаSWI(Software Interrupt). На скриношоте же видно, что она занимает два байта (3F 30).Кроличья нора оказалась глубже, чем казалось. Сначала я пытался найти отличия в наборе инструкций для родственников 6801, 6805 и 6809, но все они показали тот же самый однобайтный SWI.
Пришлось подойти с другой стороны. "UniBASIC by Todor Todorov" указал на болгарский компьютер Пълдин 601, построенный на CM601 - болгарском клоне 6800. Может в клон внесли изменения?
Нахожу эмулятор Пылдина, скачиваю, изучаю. Там такой же однобайтный SWI, как и в оригинальном процессоре.И тут приходит идея.
SWI- это же софтовое прерывание. А что, если обработчик прерывания умеет брать следующий байт, интерпретировать его и возвращать управление на последующий за ним байт? Тогда это уровень абстракции чуть выше, чем просто эмуляция процессора.Нахожу в репозитории каталог
native-src- исходники программ на самом Пылдине. А там действительно употребляется в хвост и гриву мнемоникаintс последующим байтом.И есть файл
PYLDIN.TXT. Явно README какой-то. Подбираем кодировку, оказалась MIK. Конвертирую в UTF-8 и получаю ясный текст на болгарском языке. Сразу ищу слово SWI. Бинго! Фрагмент документации расставляет все точки над «i». (Перевод оставляю в качестве самостоятельного упражнения для читателя).ПРЕДУПРЕЖДЕНИЕ: С оглед на осигуряване на съвместимост със следващи версии на операционната система, се счита за уместно всички програми, използващи функции на операционната система да осъществяват това по единен протокол, чрез използване на инструкцията SWI. Всяко друго директно обръщение към кода на операционната система се счита за нелегално и не се поема никаква отговорност за неприложимостта на такива програми в бъдеще.
Формата на обръщението към операционната система е инструкцията SWI, следвана от един байт, съдържащ номер на функцията (interrupt). Номерата са разпределени по следния начин:$ 00 - 7F - запазени за UNIDOS
$ 80 - FF - свободни (за използване от езици и потребителя)
А в файле BIOS.ASM находим и исходник того самого дизассемблера, что на скриншоте:org $F000 int $30 ;call monitor rts jmp putcтак и обработчик прерывания SWI, который достает адрес возврата из стека, извлекает параметр, увеличивает адрес и запихивает новый адрес обратно в стек
swihndl proc ; драйвер за обработка на SWI
sei ; осигурява псевдо-инструкцията INT
inc indos ; ниво на вложеност
tsx
lds 5,x ; компенсиране на PC за номера на
des ; интеръпта
pula ; номер на интеръпта
ins
sts 5,x
txs
psha
Кто бы мог подумать, что за обычным скрином оказалось столько информации и забавная страница из истории болгарского компьютеростроения. Спасибо, было прикольно.PS. Фотографии Пылдина:
http://www.leningrad.su/museum/show_calc.php?n=432
https://olimex.wordpress.com/2015/01/12/retro-computer-puldin-the-only-bulgarian-8-bit-computer-developed-from-scratch/

NosferatuDima2
Basic не плохо эволюционировал в Visual Basic for Applications (VBA) который активно используется в продуктах MS Office.
CatAssa
В VB и VBA от бейсика только слово Basic.
R0bur
Можно подумать, что в современном Си осталось очень много от исходного Си «K-R»...
sharpMouse
Ну как бы почти всё и осталось; только нового добавилось, да и то немного
Aggle
Неплохо? Да там почти ничего не осталось. VBA от классического BASIC отличается так же, как W140 от самоходной тележки господина Даймлера.