ВИЗИТНАЯ КАРТОЧКА
(с) Б.А. Курицын, Черкассы
Лингвистическое обеспечение и инструментальные средства программирования на ZX Spectrum: ближайшие перспективы.
Умерев в Англии и на Западе в целом (Прим. ИФК: здесь автор ошибается - мы уже писали о том, что на Западе сейчас идет как раз подъем интереса к ZX SPECTRUM), как это ни парадоксально, в странах СНГ ZX Spectrum-совместимые компьютеры переживают бум. Появление поистине профессионально написанных программ, в первую очередь, игр, показывает, что это семейство компьютеров еще имеет значительный потенциал.
На формирующемся рынке программного обеспечения ZX Spectrum-совместимых компьютеров есть все: игры, прикладные программы, программы различного сервисного назначения, редакторы и т.д. Некоторые из них написаны хорошо, множество - плохо, единицы - отлично. На чем же их пишут? В 99% случаев -- на ассемблере: от старого доброго Hisoft GENS Assembler до новейших TASM, EDAS, ZX TASM, MASM и т.п.
К ассемблеру привыкли. Каждая попытка написать что нибудь серъезное на Hisoft C Compiler, Hisoft Pascal и т.п. заканчивалась провалом - "качество" этих компиляторов поражает. Особенно большие проблемы возникают при попытке вызвать TR-DOS из откомпилированных этими трансляторами программ. Кроме того, языки высокого уровня типа Си или Паскаля дают слишком объемный код, чтобы наши программисты, воспитанные на ассемблере, могли согласиться с его размером.
Но программирование на ассемблере - это ненормально! Ни на одной модели, ни
в одном классе компьютеров центральным инструментальным средством не является ассемблер! Его место - программирование критичных ресурсоемких участков программ, драйверов и т.п. Даже если Ваша программа действительно критична в этом смысле, то (как показывает статистика) эту критичность вызывают 10% кода: их нужно писать на ассемблере. Но остальные 90% кода можно писать на достаточно высокоуровневом языке!
Учитывая все вышесказанное, у автора дозрела наконец-то давно вынашиваемая идея - создать эффективный, низкоуровневый, но машинно-независимый язык программирования общего назначения и реализовать его компилятор на ZX Spectrum.
Предполагается, что язык будет настолько низкоуровневым, что по качеству кода будет близок к ассемблеру, но достаточно абстрактным и машинно-независимым, чтобы подготовленный (и не очень) пользователь смог сократить время написания своих программ с использованием этого языка в 5-10 раз по сравнению с ассемблером. Это должно стать залогом того, что язык будет базой, стартовой платформой для программиста при создании не только прикладных и системных программ, но и при проектировании других, более высокоуровневых сред программирования.
Язык проектируется как Си-подобный, но еще более лаконичный и оптимальный для 8-разрядных микрокомпьютеров. Его уровень где-то посредине между "C" и "С--" ("C--" это Си-подобный низкоуровневый слабомашинно-зависимый язык программирования для IBM-совместимых машин).
Язык обязательно будет содержать промежуточный объектный уровень кода -уровень компилированого релоцируемого кода с таблицей внешних ссылок и опубликованных символов. Ни одна "нормальная" система программирования не обходится без объектного уровня. Одно из его преимуществ заключаются в том, что программист может создать библиотеку программ определенного назначения и продавать ее в виде объектного файла и файла внешних деклараций. Такую библиотеку можно купить, использовать при программировании, но нельзя изменить, перерыть, перекопать и т.д., как очень любят делать наши хаккеры. А все потому, что объектный формат не будет разглашаться, как это обычно и делается. Кроме того, при наличии объектного уровня и разделении большой программы на несколько файлов требуется перекомпиляция только изменившегося файла, что кардинально сокращает время компиляции.
Программа компоновки будет универсальной, не зависящей от языка. Если кто-либо напишет какой-либо другой компилятор, выдающий объектный код того же формата, то эти две (или более) системы программирования можно будет применять вместе без каких-либо проблем. Это -- единственный случай, когда кому-либо (разработчикам компилятора) будет передаваться описание формата объектного файла.
На первом этапе будет разработан компилятор и компоновщик (текст программы должен будет готовиться в каком-нибудь редакторе). На втором этапе будет создана интегрированная среда. Возможно, на третьем -- интеллектуальный высокоуровневый отладчик на уровне исходного текста.
Язык будет содержать набор библиотек, при помощи которых можно реализовать что угодно: от включения в программу музыки для сопроцессора до организации оконного интерфейса в программе. Кроме того, на уровне языка будут поддержаны многоуровневые исключения (как в C++).
Предполагается, что язык будет распостраняться без какой-либо защиты по принципу Shareware. Т.е., откуда бы Вы не получили копию, Вы можете ее зарегистрировать за небольшую плату, написав авторам или дистрибуторам. Тогда Вы получаете последнюю версию программы, печатное руководство программиста и пользователя и новейшие библиотеки, утилиты.
Сейчас уже, в основном, проработаны внутренние соглашения языка, разработан формат объектного файла, объектной библиотеки, идет разработка алгоритма компоновки объектный файлов, алгоритма компиляции, синтаксиса языка. Проводятся другие предварительные исследования. Уже сейчас в основу языка и компилятора заложены работы по структурному программированию Н.Вирта, работы по синтаксическому анализу сотрудников Института кибернетики им. Глушкова (г.Киев), кафедры вычислительной техники Черкасского инженерно-технологического интитута. Пока что команда инициаторов состоит из автора (BK), К.Тетерина (KTSoft) и К.Вышемирского (Tired Wanderer).
Все это автор написал с целью вынести предлагаемый проект на всеобщее обсуждение. Нам очень важно знать, нужен ли такой язык, каким бы вы хотели его видеть, какими возможностями он должен обладать. Мы хотели бы, чтобы он стал хоть отчасти НАРОДНЫМ ПРОЕКТОМ. Пожалуйста, пишите нам по адресу:
257010 УКРАИНА, Черкассы, а/я 1529, Борис Курицын
Присылайте свои идеи и пожелания. Кстати, Вы тоже можете стать одним из разработчиков. Если Вы заинтересованы в каком-либо из аспектов (может, просто, как будущий пользователь языка), также напишите нам. Все, кто нам напишет, бесплатно (за стоимость лишь дискет и пересылки) получит Бета-версию компилятора для тестирования, а при покупке коммерческой версии будут иметь существенные льготы.
И еще: язык пока не имеет названия. Придумавший лучшее название получит полную коммерческую версию компилятора бесплатно.