Немножко о языке
Ну, не совсем Python, точнее совсем не Python, но синтаксически идентичен, за исключением некоторых ограничений, которые накладывает собой компилируемость в бинарник, а также нескольких новых возможностей. Автором языка и компилятора является немецкий разрбаботчик по имени Матиас Кеттнер, что нетрудно догадаться по картинке. Вот короткий список характеристик, а заодно и отличий от Python 2.х:
- print - функция. Поэтому print("Hello, world!")
- Бинарный код, не требующий рантайма и совместимый с C++
- Списки типизированы, так что [1, 2, 3, "string"] создать не получится
- Есть сигнатуры функций, а поэтому def x(a), и def x(a, b) - две разные функции
- Кортежи изменяемы и могут включать разные типы данных, в отличие от списков: (1, true, "Hi")
- Строка и символ - разные типы данных. Символ - один байт
- true, false - зарезервированные слова (в нижнем регистре)
- import отсутсвует, автор уверяет, что компилятор все сам найдет.
- Вирбель позволяет писать библиотечки и подключать их из C/C++
- Ну и, естественно, скорость, как же без этого
Ну, это все можно узнать зайдя на
сайт этого чуда. Гораздо же интереснее самому поставить и попробовать.
Вот как я его устанавливал на Ubuntu 11.10Качаем со
странички загрузки исходник. К слову, сам компилятор Вирбеля написан на С++ (вспоминаем, что СPython написан на С). Компиляция и сборка из исходников процесс не новый, а всем хорошо известный.
./configure
После этого он матюкается, что ему каких-то пакетов не хватает - доставляем.
./make
Тут он минуты две думал, плевался в консоль текстом и, в результате,
извините, мол, две ошибки... Ну что же, пишем автору (какой он нехороший человек, что его компилятор не компилируется на моей Ubuntu 11.10 Alpha 1) об ошибке. Но ждать надоело уже через минут пять, поэтому я полез таки в исходники и пофиксил две мелкие ошибки: в файлах Type.cc и Location.cc не хватало #include <cstdio>, а в baustones/httpd/HTTPRequest.h - строчки #include <stdint.h>, чтобы подключить определения целочисленных типов данных.
sudo make install
делает все необходимое, чтобы я наконец-то получил возможность пользоваться этим компилятором.
И наконец - первая программа
Не буду сильно оригинальничать - сделает обычный "Привет, мир!". Для этого создадим уютную папочку, зходим в нее, создаем текстовый файлик с расширением *.wfor (в моем случае wtest.wfor) и наполняем его единственной строчкой:
print("Hello, world!")
После сохранения файла выполняем компиляцию:
wic wtest.wfor -o wtest
Пара секунд размышлений и мы получаем исполняемый файл. Пока есть небольшой минус - такая мелкая программа занимает 93кБ, но, думаю, это некритично.
Надеюсь на to be continued...