Бейсик - один из самых простых языков. При этом спектрумовский диалект дополнительно упрощён:
1. Нет оператора ELSE
2. Нет оператора множественного ветвления.
3. Строковые функции и переменные отличаются символом $ в конце имени.
4. Имя пользовательской функции может состоять только из одной буквы.
5. Пользловательские функции обязаны быть чистыми и реализовывать только функции в их математическом понимании.
6. Процедуры вызываются не по именам, а по меткам оператором GOSUB.
7. Область видимости переменных и подпрограмм ровно одна и она глобальна.
8. Многомерный массив - не синоним массива массивов.
9. Нет ничего, что соответствовало бы не только объектам, но и записям (в терминах языка pascal), или структурам (в терминах языка c).
10. Оператор присваивания - LET, а не знак равенства.
11. Знак равенства самостоятельного значения вообще не имеет, после LET он становится разделителем операнда-назначения и операнда-источника оператора присваивания, а между IF и THEN - оператором сравнения.
12. Меткой является номер строки.
13. Номера имеют все строки.
14. Пометить можно только первый оператор строки.
15. Есть только один вид циклов - циклы со счётчиками.
16. Оператор NEXT имеет операнд - счётчик того цикла, чьё тело завершается перед данным оператором NEXT.
17. В цикл нельзя вложить другой цикл с тем же счётчиком.
Кроме того, исходник набирался сразу на некой смеси текста с байт-кодом, в которой кадый оператор и каждая переменная, литерал, или номер строки кодировались байт-кодом, но литералы и имена переменных дублировались текстом, а операторы и номера строк кодировались только бай-кодом. Но даже такой интерпретатор работал
в 50 раз медленнее компилированных в натив Z80 тогдашними откровенно сырыми компиляторами бейсик-программ. И это было заметно даже на
Код: Выделить всё
10 INPUT "y=";f$, "xmin=";xmin; "xmax=";xmax, "Step=";s
20 FOR x=xmin TO xmax STEP s
30 LET y=val(f$)
40 PLOT x*10+128,y*10+96
50 NEXT x
, где val - встроенная функция преобразования строки в число с возможностью парсинга инфиксных арифметических выражений и использования всех встроенных функций спектрумовского бейсика, а PLOT - оператор рисования точки. Ну ладно, это ещё можно ускорить. Но при двух циклах и автоматическом выборе текущего шага на основании оценки производной правой разностью начнёт уже заметно тормозить даже вполне чистый байт-код смолбейсика. Вот если программа, достаточно сложная, чтоб тормоза проявились, или сама не влезет в память, или не сможет разместить в ней данные, тогда можно интерпретировать. Или если сам интерпретатор работает быстрей, чем можно адресовать коды операций основной программы. Или если задача - вывести что нибудь сугубо статическое, дождаться ввода и передать его другому процессору и при этом скорость работы программы лимитируется не возможностями интерпретатора, а внешними факторами вроде быстродействия приводов принтера, или времени реакции пользователя. Или если программа хотябы гарантированно одноразовая и при этом время исполнения компилированного кода в сумме со временем компиляции догоняет время исполнения интерпретируемого исходника, что опять таки ограничено сложностью самой программы и количеством обрабатываемых этой программой данных. И в любом случае лишь при дополнительном условии, что задача закрыть исходный текст от посторонних глаз гарантированно не строит.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.