Previous Entry Share Next Entry
photo25

Ну всё, Javascript захватил демосцену.

Один килобайт. Один килобайт!!!

http://js1k.com/2014-dragons/demo/1951

This entry was originally posted at http://wizzard.dreamwidth.org/406460.html. It has comment count unavailable comments. Please comment there using OpenID.

  • 1
juan_gandhi December 4th, 2014
Ну как не почувствовать себя лохом после этого...

mbr December 4th, 2014
как и положено жаве - тормозит.

wizzard0 December 4th, 2014
(facepalm) еще один неосилятор Java vs Javascript нашелся, вот уж от кого не ожидал.

алсо если посмотреть в код, то анимация там специально синхронизирована на 10 FPS, видимо в рамках общей ретро-стилистики, а рисует оно 50.

mbr December 4th, 2014
В сортах говна не разбираюсь :)

wizzard0 December 4th, 2014
Уточни критерии, по которым [язык X] относится к говну, пжлст :)

А то если брать перформанс, то у thedeemon вот видеокодек вполне неплохо так шурупает на жс - http://thedeemon.livejournal.com/91411.html (ну и продолжение, http://thedeemon.livejournal.com/92660.html )

mbr December 4th, 2014
Слушай, ну я надеялся, что кто-то поведется, но не думал, что это будешь ты :)))

wizzard0 December 4th, 2014
Не, ну мне действительно интересны критерии!

А неотличание java от js вызывает у меня бугурт, если это произносит человек, про которого я знаю, что специалист он таки неплохой. неспециалистам просто терпеливо обьясняю :)

mbr December 4th, 2014
Мне вообще в принципе пофигу какой язык использовать - лишь бы он оптимально соответствовал задаче. Мне приходилось писать и на java под смарткарты и на coffeescript, который по сути javascript без этих миллионов дурацких скобочек и лаконичен как python. Правда, последнее было от жуткого безденежья и не стоит об этом сильно распространяться в эмбеддед среде.

Но "java тормозит" - это бренд, как кроссовки адидас. Как посмотрю в среде веб-девелоперов это вызывает не просто баттхерт, а баттхерт в квадрате :)

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

В этом правиле, пожалуй, есть одно исключение - внутренний язык 1С - тошнит не только от среды, но и непосредственно от синтаксиса языка.

mudasobwa December 4th, 2014
То ли у меня глаз замылился уже, то ли у питона/руби порог вхождения никак не выше, чем у похапе. А прекрасные языки с действительно высоким порогом вхождения — вынуждены жить в пустыне на окраине вечной мерзлоты, потому что:
    а) поди найди ответ на заковыристый вопрос по какому-нибудь эрлангу и
    б) где взять стабильную продакш-среду для какого-нибудь хаскеля.

Порог вхождения — это вторично, мне кажется. У той же 1С порог примерно с цокольлый этаж высотой, а вот. Ответ, как всегда, кроется в «здесь так принято».

mbr December 4th, 2014
> То ли у меня глаз замылился уже, то ли у питона/руби порог вхождения никак не выше, чем у похапе.

Черт возьми, и стоило один раз согрешить с овцой (с). Нигде не утверждалось иначе.

> А прекрасные языки с действительно высоким порогом вхождения — вынуждены жить в пустыне на окраине вечной мерзлоты

Да, но есть два но. Во-первых отсутствие готовых решений заставляет включать мозги и находить их самому. Во-вторых, конкуренция тоже ниже и уровень зарплат выше. Тут главное не увлечься, а то можно вообще без заказов остаться.

wizzard0 December 4th, 2014
> конкуренция тоже ниже и уровень зарплат выше

Мне больше нравится, когда платят за ценность, приносимую результатом работы. Это лучше масштабируется.

> порог вхождения

...как можно видеть, в моём случае это полностью ортогонально :)

swdukk December 4th, 2014
Про питон и порог вхождения - это да....

mbr December 4th, 2014
Питон это в смысле змея такая?

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

wizzard0 December 4th, 2014
> весь интернет не засран идиотскими вопросами, потому как это не целевой язык скорее, а дополнительное средство, когда нужно быстро что-то сварганить, пару байтов поменять.

hint, hint: PHP-питонщики называются "специалисты по Django" :-D

mbr December 4th, 2014
Черт. Я надеюсь, хотя-бы на баше нет веб-фреймворков?!

wizzard0 December 4th, 2014
Гыыы. Надо поискать)

О! https://github.com/jneen/balls

Цитирую, поскольку гитхаб закрыт)))

> Bash on Balls
This is a fully-featured web platform for everyone's favorite scripting language: bash. Because, you know, we can.

Written using ADD (API driven development)

mbr December 4th, 2014
Да твою ж мать!

И да, работает у меня github, они тупо не все айпишники прикрыли.

swdukk December 5th, 2014
:) не издевайтесь, вы поняли что я имел ввиду.
так его называют многие как я вижу (см первый пост у меня в жж).

jakobz December 4th, 2014
Ты, надеюсь, не адепт сишечки?

wizzard0 December 4th, 2014
mbr - тролль, прежде всего :)

а так, нынешний эмбед в массе своей это С. Ну ARM ассемблер ещё.

Edited at 2014-12-04 10:53 am (UTC)

mbr December 4th, 2014
Дано (вот тупо текущий проект): 32kb flash, 6kb ram. Нужно поднять под это RTOS, gpio, rcc, таймеры, wdt, eeprom, i2c, uart, usb composite (CCID + HID). Реализовать транспортный уровень со смарт-картой, отдельным приложением USB DFU. Ну и бизнес логику само собой. При этом, естественно, требуется жесткий реалтайм. Предложения по средствам разработки большие? И это еще барские условия. Раньше на такое больше 16 кб не давали.

wizzard0 December 4th, 2014
Сишечку можно генерить. Я, правда, не помню, кто таким в ЖЖ серьезно занимался, но было. И на хабре было, не знаю, тот же товарищ, или другой.

И еще OCaml подходит, да.

mbr December 4th, 2014
Все крупные вендоры это делают для генерации стейт-машин, в основном. Я где-то про это писал. Метод плох тем, что код получается несопровождаемым. Ну и это делается только для специфичных задач.

Глобально в любом случае c выдает наиболее приближенный к ассемблеру код не вбивая тормозов в специфику реализации непосредственно компилятора.

thedeemon December 4th, 2014
1KB там после довольно остроумного сжатия исходника регэкспами.

wizzard0 December 4th, 2014
Компрессор там красивый, да.

jakobz December 4th, 2014
Несжатый исходник - прост и прямолинеен, я такое примерно во втором классе на бейсике делал (само собой - не движщееся).

Но вот то что этот regpack ужал это в такой кусочек кода - это конечно челюсть отвисает. Пойду посмотрю что оно такое делает.

jakobz December 4th, 2014
Я посмотрел внимательнее - исходник-то всего 3кб, пробелы и лишние буквы из переменных выкидываешь - уже 2кб.

Дальше оно делает что-то типа LZ - кладет все в строку, заменяет повторяющиеся куски на буквы, хитро добавляет замененные куски в хвост, и потом хитро-ужатым алгоритмом это назад распаковывает и сует в eval. Это уже до 1100 байт ужимает, вместе с декранчером.

Скучно. Вот вчера кто-то кидал оптимизирующий компилятор brainfuck на brainfuck - вот это уже настоящий geek porn.

anonim_legion December 4th, 2014
Молодцы. Одно ядро процессора полностью занято.

Ява, которая не скрипт, не тормозила бы.

mudasobwa December 4th, 2014
Справедливости ради, это вопрос к разработчикам вашего браузера :)

anonim_legion December 4th, 2014
Мне недавно пришла в голову мысль. Возможно, очень несвоевременная.

При поддержке со стороны ОС можно же сделать "слепой" процесс? То есть, поясняю. Есть браузер, он от сайта получает кусок кода и запускает на исполнение отдельный процесс. Процесс не может вообще ничего, кроме как общаться по IPC с родителем. В нем и исполняется пришедший код. Без разницы, что там пришло от сайта, все равно возможности этого кода ограничены тем, что ему позволят сделать по IPC. Ограничения по потребелению процессора накладываются тоже браузером, в windows для этого есть job objects, в линуксах наверняка тоже что-то есть.

Какие у этого плюсы - нативная скорость исполнения.

Но, для этого же надо с разработчиками ОС договариваться. Некие стандарты вводить. А на JS - тяп-ляп и готов тормозящий интерфейс. Зато работает везде, ну - почти.

mudasobwa December 4th, 2014
Некто Гослинг даже довел эту идею до энтерпрайза.

jakobz December 4th, 2014
Нафиг оно никому не надо. Для UI-применений - будет тормознее голого JS из-за сериализации/десериализации всего. Да и не писать же на сишечке это дело, JVM что-ли крутить там?

А ради не UI-применения браузера - никто заморачиваться не будет.

И есть NaCL, кстати, но у него уже API более-менее полноценное.

anonim_legion December 4th, 2014
>Для UI-применений - будет тормознее голого JS из-за сериализации/десериализации всего

С общим буфером для отрисовки - не будет.

thedeemon December 4th, 2014
Звучит как NaCl.

wizzard0 December 4th, 2014
Не только звучит, а еще и работает.

Проблемы там тоже хорошо известны.

mudasobwa December 4th, 2014
Ну давай ты напишешь правильную поддержку Canvas на любом языке по твоему выбору, а я на этом же языке помещусь в один килобайт с ее вот таким использованием :)

wizzard0 December 4th, 2014
Дык обычные 64к демки тоже ушли, в пользу 4к демок на шейдерах :)

swizard December 4th, 2014
демка так себе, а вот про regpack не знал -- страшная штука

убийца времени

sashman December 4th, 2014

  • 1
?

Log in

No account? Create an account