LINUX.ORG.RU

что использовать исходным языком

 


0

3

сейчас вроде как много чего понаписали, что компилируется в JS. Да еще asm.js вот этот.

Зафиксируем область. Минимум заморок с готовыми библиотеками виджетов, максимум замороки со сложной бизнес-логикой. (Если виджеты - то это без вариантов Dojo+jQuery)

Какой исходный язык вы выбираете? («выбрали бы, если бы разрешил рынок/техлид/anything»).

Я пока юзаю CoffeScript, иногда переходя на Iced Coffee Script, но он не кажется лучшим языком для написания логики.

Хотелось бы чего-нибудь надежного и простого, типа Жабы, но так, чтобы все еще можно было пробиться до jQuery, Canvas API, итп (иначе нечем будет рисовать на экране)

Если интересно, предметная область - игры, квалификация команды - умеренно средняя.

★★★★☆

иногда переходя на Iced Coffee Script

Спасибо, интересная штука.

theNamelessOne ★★★★★
()

Я бы лайвскрипт попробовал.

Сейчас используем кофе, потому что бэкенд на рельсах, а кофе уж больно похож на руби, что приятно.

Apple-ch ★★
()

компилируется в JS

Ненужно. Учи язык.

anonymous
()
Ответ на: комментарий от Apple-ch

насколько я помню он сам сказал что в продакшне его не юзает

Debasher ★★★★★
()
Ответ на: комментарий от Apple-ch

А почему свинство? Тут его весьма бодро пеарят для продакшена как раз.

Никто не мешает пеарить Clojure, LISP, Haskell и BrainFuck «для продакшена».

Только ведь от этого они не становятся production quality технологиями. Они остаются тем, чем были, — маргинальными языками, в крайнем случае условно-пригодными для яйцеголовых академических исследований.

anonymous
()
Ответ на: комментарий от qulinxao

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

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

но если у тебя норма выпускать по 1 новой игрушке в день, ты имхо просто не сможешь фигачить и дебажить эту лапшу в таком темпе

не сможешь фигачить в таком темпе - тебя обгонят конкуенты. такие дела.

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

сразу видно какой ужас на сто страниц пришлось бы писать, если бы кодил на самом жс

Звиздеж ниасиляторов JS, пришедших с ынтырпрайзного классового программирования.

У кофескрипта есть приятный сахар, но конкретно рассказы дикую разницу в длине файлов - такой же бред как фанбойство на тему «нода лучше всех».

Vit ★★★★★
()

Из разухабистого на память приходит только closurescript.

А кофескрипт с производными - какие-то хипстерские поделки. Если хочется препроцессоров такого уровня - я б ES6 сначала посмотрел.

Vit ★★★★★
()
Ответ на: комментарий от Debasher

clojurescript, но наверное советовать его для продакшна всё-таки свинство.

«чик чик и в продакшн»
...

q11q11 ★★★★★
()
Ответ на: комментарий от Vit

Текущие приоритеты: скорость, дешевизна, качество. Качество на самом последнем месте.

Не ломатеся того, чего нет.

JS неустойчив к копипасте.

JS не умеет статического анализа и структурной поддержки в IDE.

В JS слишком много возможностей.

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

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

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

Когда мало операций - значит надо писать много кода. На «много кода» времени обычно нет. Или функциональность ей во фреймворке, или проще отказаться от задачи.

С другой стороны, возможность десятью способами огранизовать подход к объектной модели - это оверкилл. Людям просто не хватит квалификации чтобы понять, что из этого выбрать. И они выберут что-нибудь самое ужасное из доступного. И будут использовать ужасным способом. И потом будут гнило мазаться типа «у меня было всего 1 день чтобы успеть сделать задачу, некогда было изучать, вот если бы у меня был месяц или десять месяцев...».

Как-то так.

Извини что столько букв, ибо очень трогает мою неокрепшую шизофреническую душу.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Dart идёт с уже настроенной IDE.

Кложурскрипт позволяет быстро писать сложные вещи.

PolarFox ★★★★★
()
Ответ на: комментарий от stevejobs

Сомневаюсь, что под кофе есть инструментарий менее убогий чем под JS. Он по сути препроцессор с сахаром.

Под кложур есть. И как-то я про дарт забыл, под него тоже есть.

Оба языка точились под промышленный говнокодинг.

Vit ★★★★★
()

А в чем проблема на жабоскрипте писать? Тебя ж никто не заставляет, скажем, webGLU самому писать — берешь готовую библиотеку, рихтуешь под свои нужды, пишешь немного своего кода — вуаля!

Eddy_Em ☆☆☆☆☆
()

Кстати, почему ты для жабоскрипта говоришь "компилируется"? Интерпретируется же! Не бывает бинарных жабоскриптов, максимум — обфусцированные (как у гугола, где фиг разберешься).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от special-k

ерунда какая-то

90% игры - это игровой контент, который ВНЕЗАПНО вбивают в админку игры. Самый быстрый способ сделать админку с полноценным UI на полностью свободных технологиях - Dojo/Dijit. Совсем самый простой - это просто html-формы, на сервере автоматически мапящиеся в классы, там же автоматически мапящиеся в БД типа Монго, но на практике слишком много сложных структур данных, и plaintext-полями в html-формах это не решается. Поэтому для full-plaintext данных - автомапинг из формы в базу, для сложных - dojo+ajax+ручной ORM.

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

жабоскрипт может и не компилируется (хотя на самом деле - компилируется, почитай про внутреннее устройство V8. Поэтому в частности в тулзах мы не можем узнать тело метода как это было бы в интерпретируемом языке - оно в машинных кодах.). Компилируются другие языки - в жаваскрипт. Так же как Си компилируется в ассемблер. Джаваскрипт - это ассемблер для веба. Сейчас уже почти никто не пишет на ассемблере, предполагаю что в довольно скором будущем все эти люди точно в таком же количестве будут писать на ЖС.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Си компилируется в ассемблер

ИНТЕРПРЕТИРУЕТСЯ! Компиляция — это из текста в бинарник!

Джаваскрипт - это ассемблер для веба

А вот хрен тебе! Это — С для веба. Элементарный такой язычок. Проще уж некуда!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Компиляция (программирование) — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера), выполняемая компилятором.[1]

http://ru.wikipedia.org/wiki/Компиляция

In computer programming, the translation of source code into object code by a compiler

http://en.wikipedia.org/wiki/Compilation

Object code, or sometimes object module, is what a computer compiler produces.[1] In a general sense object code is a sequence of statements or instructions in a computer language,[2] usually a machine code language (i.e., 1's and 0's) or an intermediate language such as RTL.

http://en.wikipedia.org/wiki/Object_code

Имхо, у реальных машин, процессор - это CPU, а кушает он байткод реального процессора. В вебе, машина - браузер, процессор - JS-движок, и кушает наш «процессор» «низкоуровневый код» на JS. Т.е. в мире веба аналог машинного кода - это код на JS.

Далее мы берем какой-нибудь нормальный язык, и с помощью http://asmjs.org компилируем его в «низкоуровневый код» (JS)

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 3)
Ответ на: комментарий от Eddy_Em

Коим ассемблер не является.

чем он не подходит под определение в википедии?

Object code, or sometimes object module, is what a computer compiler produces.[1] In a general sense object code is a sequence of statements or instructions in a computer language,[2] usually a machine code language (i.e., 1's and 0's) or an intermediate language such as RTL.

http://en.wikipedia.org/wiki/Object_code

Intermediate code относится к object code

Далее, смотрим, на их пример, т.е. RTL:

http://en.wikipedia.org/wiki/Register_transfer_language

(set (reg:SI 140)
     (plus:SI (reg:SI 138)
              (reg:SI 139)))

Какой-то лисп, короче.

И далее по тексту:

In GCC, RTL is generated from the GIMPLE representation, transformed by various passes in the GCC 'middle-end', and then converted to assembly language.

Т.е. RTL превращается в ассемблер.

И все это (по крайней мере, согласно русской и английской википедии - русской я бы не стал верить) является именно компиляцией.

Не вижу, чем превращаение Кофе в ЖС сильно отличается от превращения RTL в ассемблер, в контексте обсуждения.

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

ТРАНСЛИРУЕТСЯ.

вообще же компиляция это сборка текстов в другой текст(в частности в бинарную строку).

qulinxao ★★☆
()
Ответ на: комментарий от stevejobs

Ассемблер не является объектным кодом, т.к. это — язык программирования. Ты его не запустишь на исполнение без компиляции.

Eddy_Em ☆☆☆☆☆
()

Мой выбор был бы java + простеникий набор компонентов на js.

Если нужно полностью готовое можно взглянуть на bck2brwsr.

ya-betmen ★★★★★
()
Ответ на: комментарий от stevejobs

у «молодёжи» до степени смещения термины ассемблер и машиный.код.

видимо примитивность современных ассемблеров(в которых как в простейших дизассемблерах почти есть взаимоднозначное соответствие с машкодом) одна из причин этого.

а ведь были времена когда ассемблерами называли любой транслятор из не машкода в таковой.

qulinxao ★★☆
()

Стоит рассмореть OCaml + js_of_ocaml. Можно заморочиться писать всё целиком на нём (правда это может быть непривычно, в том смысле, что jQuery там есть, но на сколько оно удобное я не проверял). Можно для простоты написать содержательную часть на нём и выставить коллбэки наружу чтобы дергать с помощью чистого жабоскрипта. А если применить ocsigen, то можно получить ещё и статически типизированый HTML5/XML с созданием RPC в две строчки. Asm.js не будет, ибо разработчки решили что не нужно, ибо в js_of_ocaml есть и так дополнительная стадия оптимизации (ocaml->ocaml bytecode) которой нет в JS

Kakadu
()
Последнее исправление: Kakadu (всего исправлений: 1)
Ответ на: комментарий от stevejobs

результаты трансляции постоянно читаешь (в процессе дебага)

Зачем дебажить результат трансляции, если можно дебажить Coffeescript?

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

Внизу страницы дисклеймер.

Я перестал читать после PalPay.com

tailgunner ★★★★★
()
Ответ на: комментарий от theNamelessOne

Как?

IDE - IntelliJ IDEA (в самом крайнем случае можно и Эклипсу установить). Фреймворк - Playframework 2 в варианте со Scala API.

Play автоматически комипилирует Кофе и перекладывает из каталога типа /app/assets/javascripts/*file.coffee в нечто доступное по хттп по адресу /assets/javascripts/*file.js и физически лежащее где-то в глубине рандомной папки типа /target/scala/resources_managed/javascripts/*file.js

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Смотри настройки компиляции, он должен генерировать source map'ы.

Когда я последний раз тыкал Webstorm, у меня получалось. Вот ещё статейка нагуглилась.

theNamelessOne ★★★★★
()

Есть отличные языки программирования, которые компилируются в JS. Это CoffieScript, TypeScript, Dart.

До сих пор не могу понять нафиг они мне нужны и почему бы не писать просто на JS

vertexua ★★★★★
()

для неосиляторов JS'a от PHP, Java, C# создали TypeScript

для неосиляторов JS'a от Ruby, Python создали CoffeeScript

для неосиляторов JS'a от Lisp создали ClojureScript

для неосиляторов JS'a от функциональщины создали LiveScript

choose your poison

umren ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.