Веб-разработка

индекс
236,88

Cappuccino дарит нам Cocoa для Веба

Честно удивился, что новость о новой разработке в области веб-программирования так и не была представлена должным образом на Хабре. Что же, попытаемся это дело исправить. Дальше пойдет речь о всяких видах кофе — Капуччино, Какао там всякое.

Итак, Капуччино (Cappuccino) — это детище калифорнийского стартапа 280 North, выращенного не без участия известного Y Combinator'a. Небольшой команде из трех человек (Том, Рос и Франциско, если кому-нибудь интересно) судя по всему очень приглянулся язык Objective-C, который очень сильно любят в свою очередь разнообразные маководы, а точнее программисты, которые для них пишут.

И вот, через некоторое. мне неизвестное, время эти трое ребят сделали Objective-J — довольно прилично работающий скриптовый язык, основанный на JavaScript (по-этому и J). Т.е. любой работающий код, написанный на JavaScript, будет также работать и для Objective-J. Исходники этого проекта доступны под лицензией LGPL и представляют из себя один файл с расширением .js и длинной в 1743 строки.

Чтобы читать было полезнее попробую привести несколько примеров из официального туториала. Сразу хочу сказать, что я к компании Apple и программированию под их ОС не имею никакого отношения. Все это — проявление чистейшего любопытства с моей стороны, которое для любого программиста никак нельзя назвать лишним. Итак, вот что мы имеем.

Объявление класса:
@implementation Person: CPObject
{
CPString name;
}

— (void)setName:(CPString)aName
{
name = aName;
}

— (CPString)name
{
return name;
}

@end

Начинается объявление с @implementation, за которым следует имя класса, двоеточие, имя наследуемого класса и далее в фигурных скобках объявление экземплярных переменных.

Методы внутри класса также объявляются специфически: плюс или минус означают принадлежит ли переменная классу (является статической) или принадлежит объекту. В скобках указывается возвращаемое значение. Про параметры лучше прочитать на сайте, потому что в двух словах и красиво объяснить у меня не получиться. Скажу только что параметр в Objective-J представляют из себя метку (для первого параметра меткой служит имя самого метода), за которым следует двоеточие, в скобках тип параметра, и только потом имя параметра. Что еще за метка спросите вы? Метка — это то, что так понравилось Дмитрию Честных, и то, что повышает читабельность кода. Из-за этих меток вызов метода выглядит примерно так:

[myPerson setJobTitle: «Founder» company: «280 North»];

А теперь представьте себе примерно такой вызов метода в каком-нибудь PHP, как callSomething(223231, true, false). Не очень информативно, правда? В Objective-C(J) таких непонятностей уже не достигнешь. Такая вот прикольная штука.

Если вы уже заметили, то вызов метода тут и совсем не похож на вызов. Код более похоже на наглядную передачу сообщений, которая читается довольно просто:

var john = [Person personWithName: «John»];

alert([john name]);

[john setName: «Ralph»];

И так далее…


На сайте есть продолжение этого небольшого ликбеза, т.ч. заинтересовавшиеся могут просветиться дальше там. А я скажу, что на этом интересное не заканчивается.

Кроме самого Objective-J ребята еще и разработали такой себе фреймворк для него. Аналог Сocoa под названием Сappuccino. Цель, которая перед ними стояла, звучит примерно так: «Вы можете не знать HTML, CSS, JavaScript и DOM. Все, что мы вам предлагаем — это наше технология. Берите ее и создавайте веб-приложения».

На сайте присутствует рабочий HelloWorld, который можно скачать и воочию убедиться, что такое возможно.

Если вы не верите, что кроме ХеллоВорда на этой штуке ничего толком и не напишешь, то для начала посетите проект 280slides. Это собственно и есть стартап написанный самими же разработчиками на Objective-J.

Том, Рос и Франциско, конечно, не утверждают, что их проект заменит JQuery, Prototype и весь JavaScript с каким-то там СSS и дряхлым HTML. Нет. Но это, по крайней мере, интересно и ново. Хотелось бы услышать и ваши комментарии по этому поводу.

P.S. Если бы не Gogol Bordello, я бы этот пост не написал. Спасибо Евгению Гудзю за отличное настроение.
+31
6 сентября 2008, 00:23
18

комментарии (34)

0
meako #
Не вникал в суть, но у меня их демки под линуксом как в фоксе так и в опере стремновато тормозят.
Или разработчики сразу ориентируются на Chrome?
0
iobit #
Наверное.
Тормозит, конечно, из-за жуткого количества яваскрипта. Будем надеяться на V8 или TraceMonkey.
0
chEbba #
ФФ 3.0.1 все очень шустро (правда и железо у меня в поряде).

Стартап конесно классный… надо поизучатьObjective-J.
0
Over #
Давно ждал выхода, надо попробовать в общем.
0
hellraiser09 #
аналог Cocoa для Веба это конечно очень хорошо, но Cocoa это ведь не только ObjC, а еще и куча полезных фреймворков сильно облегчающих жизнь. Как они собираются переносить фреймворки? Или они будут писать полностью свои?
0
iobit #
Честно говоря не знаю. ObjC они перенесли. Сам фреймворк тоже. Т.е. создать кнопку с помощью Капуччино можно и не зная про тег button. Что там еще за фреймоворки — не знаю. Но думаю, если что, напишут свое
–5
Kessoron #
Flash уже скоро 10-й версии будет… Это я к необходимости знать про тег button
+1
iobit #
Да причем тут Flash. Да и Силверлайт. Ну это проприетарные штуки, которые надо качать. Под Линуксом с Flasheм не поработаешь нормально. Я даже редактора толкового и не знаю. Про Силверлайт тоже как-то не охота вспоминать — на сколько машинах он установлен случайно не знаете статистики?
С Капуччино интересно. Он уже сейчас работает на всех браузерах. Ничего ставить не надо. Такой себе глоток свежего воздуха для яваскрипт. К тому же интересно проследить как он будет развиваться дальше — может появиться какая-то компиляция и т.д.
–3
Kessoron #
Линукс с его 1% никого в общем-то не волнует ;)

Капучино — это всего лишь один из множества фреймворков, плюс интерпритатор малопопулярного языка программирования. Никакой компиляции и т.п. средствами JS быть не может в принципе. Где воздух-то?
0
iobit #
Под компиляцией я имел в виду применение как серверного языка. Т.е. чтобы человек не получал код в Obj-J, а скомпилированный HTML, CSS и JavaScript. Разработчики, кстати, рассматривают и такой вариант. Ну это уже их и так далее, и так далее.
–4
Kessoron #
Серверных языков у нас тоже вагон и маленькая тележка. Что нового даст нам Obj-J?
–9
Kessoron #
Ребята написали на JS интерпритатор Obj-чего-то-там. Все замечательно, но практической ценности от этого дела ноль. Если уж очень хочется — реализовали бы ObjC под CLR (если его еще нет), и юзали бы сильверлайт
0
iobit #
Может быть и ноль. Но сейчас, лично для меня, то, что они написали, представляет скорее академический интерес, чем практический.
Да событие само по себе, как бы говорит: «Вот смотрите. Не только веб идет на десктоп. Но и десктоп может шагнуть в веб». Само по себе это очень круто.
–2
Kessoron #
Silverlight — CLR + достаточно большое кол-во библиотек из .NET в вебе ;)
0
iobit #
В общем, да. Можно их и спросить, почему они не выбрали Silverlight. Интересно было послушать, что они ответят. Пожалуй, напишу-ка я им письмо)
+2
preprocessor #
Какой разработчик пересядет с Cocoa на .net, вы что? :) Вы их только рассмешите столь наивным вопросом :)
0
Imenem #
Лучше бы ребята написали на Obj-чего-то-там интерпритатор JS. И желательно кроссплатформенный :) Мне было бы интересно попробовать такой интерпритатор и фреймворк для создания GUI для десктопных систем- эффектов уже куча реализована в виде плагнинов в фреймвокам. Я к примеру сейчас php-gtk собираюсь поковырять, поковырял бы и JS.
0
Kessoron #
Десктопы нынче не в моде ;)
0
mx2000 #
Mozilla Prism Вам в руки ;-)
+5
eugenius_nsk #
Дело Smalltalk живёт и побеждает ;-)
+1
mx2000 #
Вообще-то говоря, вокруг много вкусностей появляется.

Например, есть проектик Hop — это даже не фреймворк, а целая система для создания веб-приложений на Scheme. Почему ее игнорируют — для меня загадка, штучка действительно крайне интересная. Для любопытствующих рекомендую начать с демки на hop.inria.fr/ а потом почитать hop.inria.fr/usr/local/share/hop/weblets/home/articles/hop-lang/article.html
0
iobit #
Класс. Спасибо за ссылку. Если судьба приведет меня к изучению Scheme, обязательно загляну и в Hop.
–1
Kessoron #
Игнорируют потому, что заказчикам не нужна эмуляция оконного интерфейса в браузере — это рюшечки ради рюшечек, немотивированное усложнение. Да, прикольно — но Flash позволяет сделать все то же самое гораздо красивее, с эффектами и т.п. С гарантированной кросс-браузерностью.
0
mx2000 #
Вы в код смотрели? Видимо нет.
–4
Kessoron #
Вы телепат? Видимо, нет.

Я сказал, что флеш позволяет решать задачи по построению UI гораздо более эффективно. Также я упомянул о том, что «окошки в браузере» есть немотивированное усложнение интерфейса.

С чем именно вы не согласны?
+1
mx2000 #
Причем тут вообще флеш?

Главная фишка Hop вовсе не UI и рюшечках, а в полной прозрачности программирования взаимодействия server-side + client-side и использовании одного языка при создании страниц. К тому же, код будет корректным для любого браузера, потому как детали реализации под конкретный браузер абстрагированы слоем языка Hop, который, кстати, будучи программируемым ЯП (в основе то — Scheme), позволяет без труда перенести ранее сделанный сайт, скажем, под XUL. Или написать свой язык поверх Hop для создания сайтов под трендовые тематики.

ЗЫ. снова на хабре дерево комментов вверх-ногами строится. Че за фигня? ;-)
–4
Kessoron #
Пожалста — Silverlight и Flash дают все это и гораздо больше. Один язык, интегрированная среда разработки, сразу на месте можно ваять UI. Тут тебе и абстракция, и обильные библиотеки.

Касательно переноса сайтов в XUL и написания собвственного языка — это очень уж сферические задачки. Порой нужные, но… изначально выбирать ради них сложный и тормозной фреймворк — нафик
0
iobit #
Вы серьезно думаете, что Flash и Silverligh завоюет мир?
–4
Kessoron #
С добрым утром — флеш УЖЕ установлен на 99% компьютеров. Сильверлайт — нет, но по возможностям и наворотам превосходит флеш. Это факты
0
iobit #
Установлен. И что? 99% всех сайтов написано на флеше?
–4
Kessoron #
«Вы серьезно думаете, что Flash и Silverligh завоюет мир?»
«Flash установлен на 99% комьютеров»
«И что?»

И кто здесь тролля из себя изображает? Flash (как технология) давным-давно стандарт де-факто. Поэтому ему завоевывать ничего не надо — он УЖЕ завоевал мир.

Почему 99% сайтов не написано на флеше — а зачем прикручивать сложную технологию, когда можно ограничиться простой? Ответ очень прост
0
mx2000 #
> Порой нужные, но… изначально выбирать ради них сложный и тормозной фреймворк — нафик

Весьма голословное утверждение:

Hop (dynamic weblet): Requests per second: 3624.48 [#/sec] (mean)
Apache 2.2 (static content): Requests per second: 3769.74 [#/sec] (mean)
Apache 2.2 (PHP: echo «Hello World»): Requests per second: 1636.14 [#/sec] (mean)

Как видим, Hop (weblet, динамика) не намного отстает от Apache, раздающего статику (HTML) и оставляет далеко позади PHP скрипт с единственной строчкой echo «Hello, World!»
–4
Kessoron #
«Hop (dynamic weblet): Requests per second: 3624.48 [#/sec] (mean)
Apache 2.2 (static content): Requests per second: 3769.74 [#/sec] (mean)
Apache 2.2 (PHP: echo «Hello World»): Requests per second: 1636.14 [#/sec] (mean)»

Это что?

«Как видим, Hop (weblet, динамика) не намного отстает от Apache...»
Нет, мы видим три цифры, у хопа цифра чуть меньше чем у апача. Что это за цифры, как они получены, кем, в каком окружении — неизвестно.

Ну и вдогонку — «Cappuccino is not designed for building web site», cappuccino.org/learn/
0
stoune #
Не знаю как кому но мне не понравился большой синтаксический оверхед.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.