← All posts tagged Haxe

yzh44yzh
Haxe Как вам такое:

static function layout1() : Void
{
var app = new Application().setLayout(new HLayout().gap(5))
.addChilds([
new Background().init(0xff0000).size(5, 5),
new Background().init(0x0000ff).size(500,1000).setLimit({min:20, max:50}, {min:20, max:50}),
new BgContainer().setMargin({left:15, right:15, top:5, bottom:5})
.setLayout(new VLayout().gap(15))
.addChilds([
new Background().init(0x0000ff).border({color:0, thickness:2}).size(40, 50),
new Background().init(0x00ff00).size(20, 35)
]),
new BgContainer().setSameMargin(5).setLayout(new VLayout().gap(2))
.addChilds([
new Background().init(0x0000ff).border({color:0, thickness:2}).size(200, 150),
new Background().init(0x00ff00).size(100, 50)
])
]);
}

static function layout2() : Void
{
var app = new Application().setLayout(new HLayout().gap(5))
.addChilds([
new Container().setLayout(new VLayout().gap(5))
.addChilds([
new Background().init(0xffff00).size(200, 20),
new Background().init(0xff00ff).size(200, 130),
new Container().setLayout(new HLayout().gap(5))
.addChilds([
new Background().init(0xff0000).size(140, 50),
new Background().init(0xff66cc).size(50, 50)
])
]).toComponent(),
new Container().setLayout(new VLayout().gap(5))
.addChilds([
new Background().init(0xffff00).size(100, 20),
new Background().init(0x00ff00).size(100, 180)
])
]);
}

не особо хуже, чем mxml? :)
yzh44yzh
Haxe любопытное поведение

class A
class B extends A

function doSomething(items : Array<A>)

это, очевидно, работает:
doSomething([new A(), new A()]);

это, внезапно, не работает:
doSomething([new B(), new B()]);

это, внезапно, опять работает:
doSomething([new A(), new B(), new B()]);

выкрутился так:
class B extends A
{
function toA() : A { return this; }
}

doSomething([new B().toA(), new B(), new B()]);

похоже косяк какой-то
yzh44yzh
arctic Haxe ага, вот такое мне не нравилось тогда, не нравится и сейчас

var helloWorld = Background(0xdddddd,
// хренова туча кода
, 100.0, 20);

эти аргументы в хвосте, после хреновой тучи кода, хрен поймешь куда относятся. И таких хвостовых аргументов будет много повсюду торчать )
yzh44yzh
arctic Haxe проект существует с 2006 года — 5 лет. За это время не появилось ни строчки документации. Вообще ничего, кроме нескольких предложений на главной странице code.google.com

опер сорс такой опер сорс )
yzh44yzh
OCaml Haxe функциональная_ересь Цитата:
"существуют довольно интересные языки программирования Haxe и Boo. Они во многом похожи, например, строгой статической типизацией и выводом типов. Первый язык реализован преимущественно на OCaml, второй — на C#.

Реализация системы типов в Boo, написанном на C#, занимает более семнадцати тысяч строк кода (более половины мегабайта кода на высокоуровневом языке), размещающихся в ста двадцати двух файлах. При этом представлявший наибольший интерес алгоритм вывода типов надежно декомпозирован на слои и «шаблоны проектирования» и код, который его реализует является вполне идиоматичным для этого класса языков. Задача идентифицировать основной код алгоритма и понять его не выглядела решаемой за разумное время и была оставлена.

Ни одной понятной реализации системы типов и алгоритма выведения на императивных языках найдено не было (были рассмотрены варианты на C#, С++ и даже Perl).

Реализация системы типов в языке Haxe, занимает 4088 строк (127624 байт кода) на OCaml и размещается в трех файлах, при этом интересующий алгоритм идентифицируется сразу же и представляет собой, в основном, свертку списков с применением сопоставления с образцом. Прочитать и понять его было достаточно легко, несмотря на то, что на тот момент опыт разработки и чтения кода, написанного на императивных языках, сильно превосходил аналогичный опыт для функциональных."

источник fprog.ru
yzh44yzh
Haxe хакс живет своей жизнью. Обновляется, тулы всякие под него делают
haxe.ru

Прими я два года назад другое решение, был бы сейчас хакс-программистом. Уж не знаю, хорошо ли это было бы, или нет.
yzh44yzh
Haxe Я несколько раз задумывался о том, что неплохо бы на haXe написать альтернативу флекс-фреймворку. Только чтобы полегче и более быструю.

@Constantiner на такую мысль отвечал, что важна декларативность. Я согласился. И сказал, что не сложно будет сделать некий MXML-подобрый язык и транслятор для него, который будет генерировать haXe код.

Вот только я тогда не подумал, что этот язык будет внешним DSL без поддержки со стороны IDE со всеми вытекающими отсюда последствиями :) Далее мысль пошла в сторону MPS или попыток как-то сочетать настоящий MXML с haXe кодом, но все это сложнее, чем кажется на первый взгляд.

В итоге, если и делать какую-то альтернативу флекс фреймоврку, то лучше не на хаксе, а на AS3 и MXML :)
yzh44yzh
Scala Haxe @valyard как-то писал, что хотел бы, чтобы Scala компилировалась в swf. А вот haXe кое-где похож на Scala.

А именно:
— строгая статическая типизация без необходимости явно указывать типы
— функции как типы данных, с типизацией их по типам аргументов и типу возвращаемого значения
— Genericity в Scala и шаблоны в haXe
— не помню, если ли в haXe аналог Trait. Вроде бы нет.

Но Scala впечатлила больше. И она очень лаконична, что клево. Зато haXe компилируется в swf :)
yzh44yzh
Haxe споры тут ходят: хорош не хорош, юзать не юзать. А я такое скажу: Николас эту штуку делал just for fun. Ему нравится делать компиляторы, только и всего. Fun Николас получил, значит это Win. Собралось сообщество разработчиков, юзают, развивают — значит это Epic Win.

А что касается остального: лучше он, чем тулы от Адоб, не лучше. Ну не лучше. Но это альтернатива, и всегда хорошо, что она есть. Просто приятно знать, что не только монстры Адобы, Мелкософты и прочие Саны толкаются на рынке, а и для энтузиастов-одиночек место находится. И что энтузиасты делают нечно такое, что можно ставить в один ряд с продуктами мега-корпораций.

Это вселяет надежду, что и я, мелкий и ничем не примечательный разработчик, однажды тоже смогу сделать что-то такое, чем будут пользоваться миллионы людей. Не в том ли счастье программерское? :)