LINUX.ORG.RU

Кто пишет gui на яве?

 ,


1

5

Правда, что одно и тоже приложение javaFX можно запустить на десктопе, в браузере и на мобильном устройстве? Насколько это хорошо работает?

Хотя ни одной такой программы не встречала, интересно кто их пишет и для кого?

PS Встретила здесь скептическое отношение к ява, но мне она нравится больше чем питон или перл. Возникает ощущение какой-то фундаментальности языка и делает его очень солидная компания.


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

Да, это уже будет шаг в нужном направлении.

#include <iostream>
#include "multimethods.h"
using namespace std;

struct asteroid {};
struct spaceship { virtual ~spaceship(){} };
struct big_spaceship : spaceship {};

defgeneric(collide)
defmethod(collide, asteroid&, spaceship&)     { cout << "BOOM!!!" << endl; }
defmethod(collide, asteroid&, big_spaceship&) { cout << "BIG BOOM!!!" << endl; }
defmethod(collide, spaceship&, spaceship&)    { cout << "WHAT?" << endl; }
defmethod(collide, int x, int y, int z)       { cout << x + y + z << endl; }
defmethod(collide, string s, big_spaceship&)  { cout << s << endl; }

int main() {
   asteroid a;
   spaceship s1, s2;
   big_spaceship bs;

   collide(a, s1);
   collide(a, bs);
   collide(s2, s1);
   collide(1, 2, 3);
   collide("CLOS SUCKS"s, static_cast<spaceship&>(bs));
}
BOOM!!!
BIG BOOM!!!
WHAT?
6
CLOS SUCKS

Поддерживается разное кол-во параметров и все типы, а не как в CLOS. В multimethods.h аж 83 строчки:

https://paste.ubuntu.com/25780956/

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

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

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

В этом и заключается высокоуровневость Лиспа. Это программируемый язык программирования.

Поддерживается разное кол-во параметров и все типы, а не как в CLOS.

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

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

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

Проблема тут в том, что для чистого и красивого кода у автора кода должно быть чувство стиля и жёсткая дисциплина. Желательно даже, чтобы у него было расщепление личности, тогда личности смогут делать кросс-ревью кода по мере написания.

Без этого это всё скатится в неподдерживаемый ад, понятный единственному человеку. Такой ад можно, наверное, на любом языке наворотить, даже на сях.

Только вот если пишешь ад на сях, тебе говорят, что ты написал ад на сях. И тебе нечего ответить. Зато ад на более мощных языках можно защищать бесконечно. У спрашивающего просто силы кончатся с тобой спорить.

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

А теперь представь, что подобным образом ты можешь расширять язык совершенно свободно без ада и боль

Ты код CLOS смотрел? Там тот еще АДъ.

В этом и заключается высокоуровневость Лиспа.

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

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

Просто очередная недоделка/кривость, как с хеш-таблицами. Но это не проблема, если что можно использовать другую объектную систему и другие хеш-таблицы ;)

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

Проблема тут в том, что для чистого и красивого кода у автора кода должно быть чувство стиля и жёсткая дисциплина.

Это когда нужно выразить задачу через указатели, виртуальные функции и фабрики фабрик. Та еще головоломка, тут нужна изобретательность и дисциплина, не спорю.

В случае с Лиспом, ты просто подтягиваешь язык до языка предметной области (DSL), который уже и так существует. И на этом языке уже могут писать сами специалисты.

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

В случае с Лиспом, ты просто подтягиваешь язык до языка предметной области (DSL), который уже и так существует. И на этом языке уже могут писать сами специалисты.

Сколько специалистов пишут на этом одновременно в одной кодовой базе?

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

Сколько специалистов пишут на этом одновременно в одной кодовой базе?

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

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

Во-первых, в каких играх скриптота на лиспе? Я про них хотя бы слышал? Про Lua знаю, Python видел, кажется даже одну нашёл с Ruby. А вот ничего похожего на лисп не видел. Сомневаюсь, что «специалистам» будет удобен синтаксис лиспа.

Во-вторых, что насчёт изменения основного кода? Ну того, который реализует dsl? Сколько человек активно правит его? Или это партия для одной скрипки?

i-rinat ★★★★★
()
Ответ на: комментарий от EXL

Abuse

Про нее даже линуксоиды не все помнят, а те, что помнят, исключительно из-за опенсорсности.

Ну и проприетарщина: Crash Bandicoot, Jak and Daxter, Uncharted, The Last of Us.

А это годное исключение из правил. Только «GOAL's primary development and maintenance engineer is no longer available to Naughty Dog, and they have transitioned to C++ for future projects».

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

Так GOAL в старых играх использовался. В новых всякие PLT Scheme/Racket:

Так без разницы, следующий uncharted уже без лиспа.

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

Так без разницы, следующий uncharted уже без лиспа.

Даже не знаю, кому верить. Рандомному анонимусу с ЛОРа или сотруднику Naughty Dog. Интересно, за кем же правда?

http://esxi.z-lab.me:666/~exl_lab/screens/nd_lisp.png

Кстати, сей лисповый скриптописец называет себя Designer, а не Developer, что намекает.

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

следующий uncharted
uncharted 4

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

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

А сколько UB?

clang с "-fsanitize=undefined" не нашел ни одного. Вряд ли их там больше чем внутри лиспов, где «под катом» обычно трудится рантайм на С с более крутыми вольностями и хаками.

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

Это что, железный пруф?

Нет, железных пруфов вообще почти нигде нет.

Как насчёт http://eel.is/c draft/lex.name#3.2 ?

Так это и не UB. А по стилю там вообще прикопаться можно много к чему, но это ж не в «продакшен», а, так, для лора пример.

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

ДА НУ?!

Ну да, если идентификатор будет переиспользован - поведение будет совершенно определенным - конфликт и ошибка компиляции. Про UB в стандарте явно пишется, что вот, если так сделать, то UB.

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

конфликт и ошибка компиляции.

http://eel.is/c++draft/lex.name#3.sentence-1

...; no diagnostic is required.

Про UB в стандарте явно пишется, что вот, если так сделать, то UB.

http://eel.is/c++draft/intro.defs#defns.undefined-note-1

Undefined behavior may be expected when this document omits any explicit definition of behavior

Отсутствие определённого поведения == неопределённое поведение.

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

поведение будет совершенно определенным - конфликт и ошибка компиляции

Но вообще да, с этим соглашусь, ибо http://eel.is/c draft/basic.def.odr#1

А это

Про UB в стандарте явно пишется, что вот, если так сделать, то UB.

всё же неверное утверждение.

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

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

Не, всё же не соглашусь. Это может быть и макрос или ещё что, на что ODR не распространяется.

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

то может быть и макрос или ещё что, на что ODR не распространяется.

«a name in the global namespace», раз global namespace, то это идентификатор в ::, у макросов нет понятия namespace, они вообще отдельно.

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

Где вы супер профи С++ ... рынок вас ждет, а вас нет. А если есть
вы хотите тонну денег, при этом ваша продуктивность ниже 2 >>тупоголовых кодеров с Джава, поэтому расслабтесь и отдыхайте с >?.надутыми щеками.

Все супер профи C++ собираются тут: >http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/tip/src/share/v>m/prims/...
И будь уверен — эти люди получают намного, намного больше >жабомакак.

1. Утверждение, что они получают больше джавистов не истинно, так как вы просто не знаете, сколько они получают. И слова «И будь уверен» не дают им большей истинности. 2. Тут писали и пишут, что джава тормозная ..., и прочее, вообще д..., полное, значит, вы сами предполагаете, что они не супер профи.

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

Впрочем, если у них остался Racket, то это все-равно отказ от общелиспа, что хорошо.

Я ещё слышал что-то про Irrational Games и Bioshock: Infinite, вроде там тоже что-то было на Lisp-like язычке. Но это не точно, и пруфов я не нашёл.

EXL ★★★★★
()

GUI на javaFX пишется легко и быстро и красиво. Это факт.
Правда только для десктопа. Web не пробовал. Сама такая идея ущербна. На мобилке запуск javaFX пилит какая-то полу-левая кампания - http://gluonhq.com/. И опятьже идея немного ущербна, больше на кастыль похоже. По возможности лучше пейсать нативные клиенты.

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

Местечковый интернет провайдер, понятно. Непонятно что тебя делает экспертом в разработке. Сайтик компании сам забацал?

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

Поддерживается разное кол-во параметров и все типы, а не как в CLOS. В multimethods.h аж 83 строчки:

«Херня на постном масле...»

Как только пропадёт инфа о типе (каст к предку или вообще к void*) - и ни хера не работает.

CL (и CLOS в частности), конечно, не венец человеческой мысли, но думать, что вот в 83 строки можно его переплюнуть - да по тебе кащенка плачет...

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

Местечковый интернет провайдер, понятно.

Ну не совсем местечековый, а крупный местечковый.

Непонятно что тебя делает экспертом в разработке.

Ну, например, то, что мы пережили _всех_ мегапровайдеров, которые внедрили себе куда-нибудь чего-нибудь на жабе. Я могу обеспечить работу компании в течении 20 лет, а после жабомакак контора очень быстро распадается, или продаётся. Так что да, эксперт.

Сайтик компании сам забацал?

Нет, конечно. Это уеб-дезигнеров работа.

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

Ну, например, то, что мы пережили...

Пардон, но это разные вещи - девелопмент и маркетинг.

По сабжу - лоровцы ну как дети, ей-богу. Каждый инструмент имеет свою определенную нишу и не нужно с лозунгами рулез/мастдай идти стенка на стенку.

Джава действительно сложный и навороченный ЯП. Но интеграция в систему у нее совсем никакая - ее родной дом Solaris, а не «вот это вот все». Поэтому на десктопе у нее определенная четко очерченная ниша.

Относительно всех остальных инструментов - ровно тоже самое: инструмент выбирают под задачу, а не всё педалят на кутях/джаве/еще чем-то.

Linfan ★★★★★
()
Последнее исправление: Linfan (всего исправлений: 1)

Встретила здесь скептическое отношение к ява, но мне она нравится больше чем питон или перл

Нехитрый наброс по избитой теме спровоцировал мегафлейм )))

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

Но интеграция в систему у нее совсем никакая - ее родной дом Solaris,

У java родной дом jvm, солярис никаким боком. На прошлой работе, на solaris, точнее smartos, прод крутился на openjdk. Под opensolaris даже дефолтный DE был gnome2, так что её gui ничем не отличался от того что можно наблюдать под linux.

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

Как только пропадёт инфа о типе (каст к предку или вообще к void*) - и ни хера не работает.

Ты настолько слепой, что не увидел каст к предку в примере? Очки потерял или кровь глаза застилает? Ну и кастить экземпляр класса к void* сможет только наркоман, и только в своих мечтах.

но думать, что вот в 83 строки можно его переплюнуть - да по тебе кащенка плачет...

Это ты явно пишешь оттуда, ну или у тебя не прошел юношеский максимализм, где ты, болезный, увидел, что речь шла про весь CLOS, да еще и «переплюнуть»? Хотя ты ж лиспер наверняка, откуда у вас адекватность.

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

На соляре десктоп назывался Java Desktop System, хоть в потрохах и был gnome2. И тема была причесана под джаву: видимо гораздо проще было причесать десктоп под джаву, чем наоборот (хотя и такое тоже сделано в SWT).

Linfan ★★★★★
()

Из последнего на яве видел клиент-банк.

Plushev
()
Ответ на: комментарий от Stanson

Ну, например, то, что мы пережили _всех_ мегапровайдеров, которые внедрили себе куда-нибудь чего-нибудь на жабе. Я могу обеспечить работу компании в течении 20 лет, а после жабомакак контора очень быстро распадается, или продаётся.

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

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

Нормальные джависты стоят дорого

Мсье будет удивлен, но нормальные пхп-кодеры тоже стоят дорого. А джависты-говнокодеры - рупь ведро. Технология не определяет так четко зарплату специалиста. И уж тем более, она не детерминирует выживаемость конторы.

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

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

https://stackoverflow.com/jobs/salary/results?l=United States&ed=1&ex...

https://stackoverflow.com/jobs/salary/results?l=United States&ed=1&ex...

Насчет выживаемости конторы согласен.

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

У меня для тебя плохие новости.

Разница на 10% это вилами по воде для сферических коней в вакууме. Все зависит от сабжа конторы (если она продуктовая) и ее месторасположения. $10k в Долине и $5k в снг это вещи совершенно несравнимые по причине разных накладных затрат на житие и налогов.

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

Да и в Штатах затраты на жизнь сильно отличаются от локации. Статистика из серии «средняя температура по больнице».

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

И чо? Причем тут провайдеры из российских звиздюней? 10% разницы в зряплате у них совсем не детектится. Или они нанимают кодеров из Берлина/Сан-Франциско? :) Была бы разница в разы, то да. А так это совершенно несущественные детали. Кстати, если убрать scala из запроса, разница еще меньше.

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

Ну у Stanson столько понтов, может он свою разработку в кремниевую долину аутсорсит.

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

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

может он свою разработку в кремниевую долину аутсорсит

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

Касательно Васика - попрошу не обижать нашу собачку :) Это был вполне хороший инструмент для RAD. Плохо, что его закопали. Кстати, васиковские аппликухи одни из первых можно было под вайном гонять еще в далеком 2003м году.

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

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

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

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

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

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