Трошки про мову
Ну, не зовсім 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 відсутній, автор запевняє, що компілятор все сам знайде.
- Wirbel дозволяє писати бібліотеки і підключати їх з C/C++
- Ну і, звісно, швидкість, як же без цього
Ну, це все можна дізнатись на сайті цього дива. Набагато цікавіше самому встановити і спробувати.
Ось як я його встановлював на Ubuntu 11.10
Скачуємо із стоірнки завантаження сорци. До слова, сам компілятор Wirbel написаний на С++ (згадуємо, що СPython написаний на С). Компіляція і збірка процес не новий, а всім добре відомий.
./configure
Після цього він матюкається, що йому якихось пакетів не вистачає - доставляемо.
./makeТут він хвилини дві думав, плювався в консоль текстом і, в результате,
вибачте, дві помилки... Ну що ж, пишемо автору (яка він нехороша людина, що його код не компілюється на Ubuntu 11.10 Alpha 1) про помилку. Але чекати надоїло вже через хвилин 5, тосу я поліз таки в код і пофіксив дві дрібні помилки: в файлах Type.cc і Location.cc не вистачало #include <cstdio>, а в baustones/httpd/HTTPRequest.h - рядка #include <stdint.h>, щоб підключити визначення цілих типів даних.
sudo make install
робить все необхідне, щоб я нарешті отримав можливість користуватись компілятором.
І нарешті - перша програма
Не буду сильно оригінальним - зробимо зивчаний "Hello, wolrd!". Для цього створимо папочку, заходимо в неї, створюємо текстовий файлик з розширенням *.wfor (в моєму випадку wtest.wfor) і наповнюємо його єдиним рядком:
Надіюсь на to be continued...
І нарешті - перша програма
Не буду сильно оригінальним - зробимо зивчаний "Hello, wolrd!". Для цього створимо папочку, заходимо в неї, створюємо текстовий файлик з розширенням *.wfor (в моєму випадку wtest.wfor) і наповнюємо його єдиним рядком:
print("Hello, world!")Після збереження файлу виконуємо компіляцію:
wic wtest.wfor -o wtestДекілька секунд роздумів і ми отримуємо виконуваний файл. Поки що є невеликий мінус - така дрібна програма займає 93кБ, але, думаю, це некритично.
Надіюсь на to be continued...
> import отсутсвует, автор уверяет, что компилятор все сам найдет.
ВідповістиВидалитибольше всего смущает, особенно если вспомить проблемы с крос импортами
в списке есть насколько сомнительной пользы отступлений от стандарта языка, которые приветут к отсутствию обратной совместимости с интерпретатором, это очень большой минус
ВідповістиВидалити>>> больше всего смущает, особенно если вспомить проблемы с крос импортами
ВідповістиВидалитиНе забываем, что от питона тут только синтаксис. Кто писал на C/C++, тот знаком с make и всем прочим, я еще не разбирался, как тут работает сборка, но думаю не сильно отличается.
>>> в списке есть насколько сомнительной пользы отступлений от стандарта языка, которые приветут к отсутствию обратной совместимости с интерпретатором, это очень большой минус
Wirbel не реализует стандарт языка, и даже не намеревается. Это попытка создать компилируемый язык, на котором было бы приятно писать =)
Мне понравилась идея. Жду продолжения.
ВідповістиВидалитиОсобенно интересует подключение С/С++ либ типа QT... :-)
Ну, QT он как бы не совсем C++ lib, а еще много всякой гадости, да и версия языка еще с соской во рту =) Но я щас при наличии свободной минутки ковыряюсь и буду постить, если мне удастся сделать что-нибудь интересненькое, или не удастся (негативный результат - тоже результат)
ВідповістиВидалитиесли он начал копировать спецификацию языка, то буть добр копируй досконально, иначе это китайский клон и паразитирование, не просто так сейчас питон такой какой он есть, и если немец думает что он умнее питон сообщества, мне смешно.
ВідповістиВидалитите же импорты, их не просто так придумали и не только для включения одних файлов в другие, не забываем про from a import b as c
должен быть порядок, а не кто как хочет так и делает
типизированные списки, изменяемые кортежи - по мойму немец с дуба рухнул
alex, я не понимаю вашей позиции. Человек делает свой язык и ему нравится синтаксис Python. Он ничего не заявлял, что это компилируемый Python. Если вас сбило с толку название моей статьи - извините, могу переназвать. Но данный язык НЕ ИМЕЕТ никакого отношения к Python сообществу. Если вы не согласны с позицией автора насчет языка или хотите приобщится к разработке, - напишите автору, я думаю, он вас выслушает.
ВідповістиВидалити:) моя позиция такова что человек копирует чужой язык произвольно его модифицируя, он не делает свой язык, он пользуется наработками python сообщества, как же он НЕ ИМЕЕТ если он сам пишет что это компилируемые python, и вы тоже так пишите в заголовке. так что все он имеет :)
ВідповістиВидалитиследовательно он несет все таки небольшую ответственность, я понимаю прекрастно что он не обязан следовать спецификации, но и я имею полное право его осуждать за это
alex, все что автор сам пишет о связи c Python:
ВідповістиВидалити"It has a syntax and semantics similar to Python - a very popular language invented by Guido van Rossum."
К тому же CPython и сам Python имеют сверх лояльную лицензию, и человек может хоть взять CPython и продавать его, назвав MyMegaSuperPython :)
О копировании вообще не следует говорить :) Посмотрите исходники CPython и Wirbel, ничего общего нет.
С таким же успехом можно говорить, что 90% языков наследуют синтаксис С. Но нельзя же говорить, что авторы и сообщества чем-то обязаны Кернигану по этому поводу =)
Блин, alex, это действительно другой язык. Очень непросто взять и начать писать компилятор питона, вот и приходится приводить его в более подходящий для этих целей вид.
ВідповістиВидалитиПока что единственное, что меня ввело в ступор, это true/false, но, если вдуматься, в питоне это единственное исключение: начинающиеся с прописной буквы зарезервированные слова (мы же не пишем "For el In lst").