вторник, 19 июля 2011 г.

Wirbel - кина не будет: электричество кончилось

Мой последний пост о языке Wirbel немножко привлек внимание заинтересованных питонщиков, но тут я вынужден всех разочаровать (заголовок этого коротенького поста как бы намекает). 

С момента последней публикации прошло уже больше двух недель, а все мои попытки достучаться до автора по поводу вирбеля так и не увенчались успехом. Последние активные изменения в исходниках датированы 2008 годом, так что, судя по всему, автор, как говорится, "забил" на свое изобретение, и занялся чем-то более полезным с его точки зрения.

Все, что может быть интересно о языке, красноречиво рассказывает предыдущий кратенький обзор. Попытаться написать на вирбеле програмку, которая решает квадратное уравнение у меня получилось, но только тогда, когда я самостоятельно реализовал алгоритм извлечения квадратного корня числа =)

Стоит отметить, что исходники компилятора, которые, как уже упоминалось, имеют в своей основе C++, читать довольно приятно. Немец пишет чуть-ли не идеально структурированно и чисто (даже учитывая глубокое отсутствие у меня практических навыков написания кода на C++, код читался и понимался поразительно легко).

Всем спасибо за внимание.

суббота, 2 июля 2011 г.

Wirbel - компилируемый Python. Немножко о языке и установке.

Немножко о языке
Ну, не совсем 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...
В этом гаджете обнаружена ошибка