@proGO

Страница 1471 из 1674
Dmitri
30.05.2018
12:12:21
если у тебя вучисления происходят в основном потоке то всё встанет, и видео, и спиннер, и клики не будут работать, всё заморозится пока вычисление не завершится. Не надо так писать гуй в 2018м
смотри, если у меня тяжелые вычисления происходят в гуи - я сам себе враг, олень и хреновый архитектор. Не место тяжелой логике в гуях. При этом гую на реализацию этой самой логики - срать с высокой колокольни. Он должен дернуть асинхронный метод "получить табличку" и заниматься дальше своими гуевыми делами, пока тот не маякнет "насяльника, все готово-мана". Каким образом оно станет готово, когда это произойдет и т.д. и т.п. - НЕ заботы гуя. Он просто идет по своему event-loop'у и обрабатывает события. Это называется "асинхронный подход".

Pawel
30.05.2018
12:13:40
далааааадна
закусывать надо когда бухаешь. У тея в газах троится, не там прочитал видимо

Dmitri
30.05.2018
12:14:21
Google
Roman
30.05.2018
12:15:05
смотри, если у меня тяжелые вычисления происходят в гуи - я сам себе враг, олень и хреновый архитектор. Не место тяжелой логике в гуях. При этом гую на реализацию этой самой логики - срать с высокой колокольни. Он должен дернуть асинхронный метод "получить табличку" и заниматься дальше своими гуевыми делами, пока тот не маякнет "насяльника, все готово-мана". Каким образом оно станет готово, когда это произойдет и т.д. и т.п. - НЕ заботы гуя. Он просто идет по своему event-loop'у и обрабатывает события. Это называется "асинхронный подход".
но тогда ты предполагаешь, что за фронт всё сделает бэк, но это не всегда так, порой вычисления на фронте необходимы. Тот-же excel в пример, он же не на сервере вычисляет. Но пока excel вычисляет большую таблицу хотелось бы иметь возможность отменить вычисление, понимать что программа вообще-то не сдохла а просто занята и видеть крутящийся спиннер..

фи, мы уже переходили к фазе взаимных оскорблений?
а за это кстати уже и банить можно ?

Dmitri
30.05.2018
12:17:33
но тогда ты предполагаешь, что за фронт всё сделает бэк, но это не всегда так, порой вычисления на фронте необходимы. Тот-же excel в пример, он же не на сервере вычисляет. Но пока excel вычисляет большую таблицу хотелось бы иметь возможность отменить вычисление, понимать что программа вообще-то не сдохла а просто занята и видеть крутящийся спиннер..
тот же excel - десктопное приложение, например. И у него есть таки многопоточность. Гуй - работает в 1 потоке, на асинхронной модели "варится внутри себя", а логика - вполне себе в параллельных потоках, важность многопоточности в числодроблилке никто не отрицал...

Pawel
30.05.2018
12:18:10
а за это кстати уже и банить можно ?
Вот вас двоих точно пора банить. Вы оба абсолютно не адекватны

Olzhas
30.05.2018
12:18:27
Я бы на го фронтенд не писал

Неудобно

Dmitri
30.05.2018
12:18:36
а за это кстати уже и банить можно ?
ну, собственно, не меня, т.к. к оскорблениям я не переходил, я как раз спросил оппонента, видимо, считающего, что мы уже перешли)

Alexander
30.05.2018
12:18:59
Соглашусь с @bertolu4i. Понятия асинхронности и многопоточности вообще друг с другом не связаны никак.

Dmitri
30.05.2018
12:19:00
Я бы на го фронтенд не писал
ну, собственно, как гланды пер-ректально удалять, ага)

Olzhas
30.05.2018
12:20:08
Просто когда мне нужен гуи, я беру какой-нибудь вьюжс и оборачиваю в электрон

Мне норм, пользователю норм, кроссплатформенно

Dmitri
30.05.2018
12:20:40
Конкурентность — это свойство систем (программы, сети, компьютера и т.д.), допускающее одновременное выполнение нескольких вычислительных процессов, которые могут взаимодействовать друг с другом.

Google
Dmitri
30.05.2018
12:21:19
из общепринятых реализаций (с точки зрения языковых приемов) - асинхронность vs многопоточность

Olzhas
30.05.2018
12:21:37
И я не парюсь насчет того, что фронтенд у меня какой-то асинхронный или многопоточный, главное чтобы работал ок

Dmitri
30.05.2018
12:21:41
так что, собственно, идеологически связаны, и даже активно противопоставляются

Roman
30.05.2018
12:22:14
Просто когда мне нужен гуи, я беру какой-нибудь вьюжс и оборачиваю в электрон
только вот батарейке ноутбука совсем не норм. Электрон запускает отдельную инстанцию Google Chromium, а это аж почти целая высокоуровневая операционка. Это жрёт дохера памяти, CPU и следственно батареи.

Roman
30.05.2018
12:23:54
Экономия на спичках
тогда спасибо, но вашим софтом я не воспользуюсь ?

Dmitri
30.05.2018
12:24:17
ну вот, собственно, в момент написания фронта "асинхронность" - это "вот отсюда возьми данные, как будут готовы - сделай вот это и вот это", "многопоточность" - это "запусти вот тут поток, в нем будет делаться вот это, оно должно положить вот сюда какие-то данные. (Не забудь покрыть мьютексом.) Время от времени дергай, не готовы ли данные, или не сдох ли параллельный поток. Как увидишь, что данные посчитались, сделай вот это и вот это"

и вот такая многопоточность в гуях никому не нужна...

Olzhas
30.05.2018
12:25:36
тогда спасибо, но вашим софтом я не воспользуюсь ?
Я не видел жалоб на электрон, которые упоминают батарейку ноутбука, кроме как от вас

Dmitri
30.05.2018
12:26:01
Roman
30.05.2018
12:26:26
Я не видел жалоб на электрон, которые упоминают батарейку ноутбука, кроме как от вас
да ёпт, вы серьёзно?! один троль на другом... что с тобой мой любимый pro.go, ты болеешь?

Dmitri
30.05.2018
12:27:19
собственно, во фронте, с нынешним состоянием дел, только мьютексов и семафоров для полного счастья и не хватает...

Roman
30.05.2018
12:30:56
я не против HTML/CSS/JS для написания приложений, да это экономично, это дёшево и сердито. Это далеко от идеала и далеко от Qt например, но тем не менее имеет право быть. Я вообще сам за web как ультимативную платформу (но не с HTML/CSS и JS, всё это нужно срочно менять, чем люди собственно и занимаются разрабатывая WebAssembly) но конкретно Electron это вещь очень херовая в том плане, что не использует системный WebView а вместо этого запускает отдельный Chromium, это же , изивините, полный пиздец. Если бы оно просто WebView открывало как это делают tab'ы браузера то претензий бы не было, и кстати на мобилках так и делается, да и в Windows 10 и Mac OS 10 это насколько мне известно, уже возможно. Но для каждого приложения отдельный браузер? Это ли не вершина маразма?

Roman
30.05.2018
14:14:05
Почему не может?
ну блин, есть 3 опции: 1. event loop (async) 2. threads 3 event loop + isolated threads (no shared state, synchronization through the event loop)

Roman
30.05.2018
14:20:03
есть еще вариант "event loop в каждом треде"
ну это уже издевательство)))

Google
Roman
30.05.2018
14:21:03
есть еще вариант "event loop в каждом треде"
хотя что-это я, WebWorker'ы так и устроены

Roman
30.05.2018
14:30:36
ну это уже издевательство)))
ну почему же. вообще, threads/event loop ортогональны и вообще никак друг друга не исключают.

и локи нужны даже в однопоточном асинхронном приложении

Roman
30.05.2018
14:31:20
и локи нужны даже в однопоточном асинхронном приложении
хмм, локи в однопоточном приложении?? в каких случаях

Roman
30.05.2018
14:32:50
самый простой вариант

Roman
30.05.2018
14:34:12
JavaScript, который в принципе не может выполняться конкурентно - не стоит сравнивать с Go, в котором можно отключить все кроме 1 потока

если ты всключишь несколько потоков - то всё, без mutex'ов + shared state = race conditions / undefined behavior

в JS ты вообще никак не запустишь несколько потоков с расшаренным стейтом

Roman
30.05.2018
14:35:32
можно посмотреть на gevent в python: там тоже 1 поток и тоже возможны рейсы.

Roman
30.05.2018
14:37:16
я ж писал выше: рейсы могут быть и без потоков вообще.
если мы говорим о каких-нибудь транзакциях либо-всё-либо-ничего то да. но это далеко не мьютексы/семафоры и потенциально параллельный код

это кардинально разные вещи

Roman
30.05.2018
14:40:27
если мы говорим о каких-нибудь транзакциях либо-всё-либо-ничего то да. но это далеко не мьютексы/семафоры и потенциально параллельный код
да причем тут транзакции? у тебя есть: foo := 4 ты её из разных горутин модифицируешь. даже если поток 1, то все равно надо мьютексы

Roman
30.05.2018
14:42:10
да причем тут транзакции? у тебя есть: foo := 4 ты её из разных горутин модифицируешь. даже если поток 1, то все равно надо мьютексы
ну потому-что это Go и потенциально эту операцию могут выполнить несколько горутин одновременно, чего не произойдёт если GOMAXPROC=1, но возможно произойдёт если уже 2

в JS такого в принципе не может быть

Roman
30.05.2018
14:43:06
>чего не произойдёт если GOMAXPROC=1 нет.
и как это может произойти?

Roman
30.05.2018
14:44:29
и как это может произойти?
любое условие переключения горутин

Google
Roman
30.05.2018
14:45:56
любое условие переключения горутин
ну не может же горутина переключиться именно во время выполнения этой операции присвоения нового значения

короче и проще: в Go нужны мьютексы, потому-что код потенциально конкурентен

в JS - нет, там конкуррентность в event loop'е а не в коде

поэтому event loop безопаснее, но менее гибок

Kirill
30.05.2018
14:48:48
при GOMAXPROCS=1 произойдет только _переключение_ горутин, а не выполнение двух или более в один момент времени

Bogdan (SirEdvin)
30.05.2018
14:55:17
хмм, локи в однопоточном приложении?? в каких случаях
Например, надо следить, что бы один и тот же коннект не использовали несколько корутин, может быть грустно

Admin
ERROR: S client not available

Kirill
30.05.2018
14:58:35
а толку? рейс все равно будет.
А покажи мне тогда панику конкурентного доступа к мапе с GOMAXPROCS=1

Roman
30.05.2018
14:59:07
А покажи мне тогда панику конкурентного доступа к мапе с GOMAXPROCS=1
причем тут это? у тебя не будет паники, но будет некорректный результат.

Roman
30.05.2018
15:00:06
Например, надо следить, что бы один и тот же коннект не использовали несколько корутин, может быть грустно
если они это не будут делать не конкурентно а серийно, то проблем не должно быть. Однако, ещё раз повторюсь, Go это потенциально (!) конкурентная среда, поэтому обязательно нужно защищать ресурсы, к которым потенциально могут иметь одновременно доступ несколько горутин

ибо что это за Go код который ломается если GOMAXPROCS больше 1

Roman
30.05.2018
15:03:48
как пример с GOMAXPROCS=1 можно посмотреть на записть в файл из нескольких горутин.

Roman
30.05.2018
15:05:13
Даже если серийно. Получение второго запроса до ответа на первый далеко не все библеотеки обрабатывают.
ну это понятно, да. Однако что это такое за соединение без мултиплекса)))

Subbotin
30.05.2018
15:31:24
как пример с GOMAXPROCS=1 можно посмотреть на записть в файл из нескольких горутин.
ну как-бе и на ноде.жс если через несколько функций писать в один файл то получится такая же каша

Roman
30.05.2018
15:38:45
Ща бы веб с qt сравнивать
сравнивали уже, и веб к сожалению сильно проигрывает пока-что чисто технологически, Qt проигрывает распространённостью и привязанностью к коммерческой компании

Google
Roman
30.05.2018
15:39:43
ну как-бе и на ноде.жс если через несколько функций писать в один файл то получится такая же каша
да, но конкурентного кода нет. Есть конкуррентные транзакции, но код нет.

Sergey
30.05.2018
15:40:01
сравнивали уже, и веб к сожалению сильно проигрывает пока-что чисто технологически, Qt проигрывает распространённостью и привязанностью к коммерческой компании
Веб электрон с нативным qt не сравнивают. Это как то странно имхо. А вообще электрон да не оч. Но иногда его использование облегчает жизнь

Subbotin
30.05.2018
15:40:41
Roman
30.05.2018
15:41:21
Веб электрон с нативным qt не сравнивают. Это как то странно имхо. А вообще электрон да не оч. Но иногда его использование облегчает жизнь
ещё раз: я не против Web как платформы для всего, оно рано или поздно так и будет, как минимум с приходом WebAssembly. однако я против Electron, это издевательство над железом. Используйте нативные WebView, херачьте туда HTML/CSS, я не против, но не запускать же теперь для каждого приложения отдельный Chromium?!

в го при maxprocs=1 тоже конкурентного кода нет
Go код потенциально (!!!) конкурентен

он не параллелен, он не конкурентен, он потенциально конкурентен (!!!111111)

Subbotin
30.05.2018
15:44:07
он не параллелен, он не конкурентен, он потенциально конкурентен (!!!111111)
ну потенциально и жс код можно запустить на каком-нить интерпретаторе, который будет создавать несколько тредов и раскидывать таски по двум эветлупам

Subbotin
30.05.2018
15:45:32
ну а хуле. вот у го потенция конкуренции зависит от того как запускать. чем жс хуже?

Roman
30.05.2018
15:46:28
ну а хуле. вот у го потенция конкуренции зависит от того как запускать. чем жс хуже?
да ничем он не хуже в плане конкуррентности, он просто другой, со своими плюсами и минусами

он проще, он безопаснее. Но он не такой гибкий как Go в плане конкурентности

Subbotin
30.05.2018
15:47:12
ну безопасность го, как мы тут выяснили легко правится одной строчкой

Roman
30.05.2018
15:47:30
он не сделан для массовой параллельности, он сделан для неблюкирующей работы

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

с Go легче выстрелить новичку в ногу нежели с JS

в JS у него просто всё замедлится до немогу, а в Go сразу race conditions, panics, undefined behavior в худшем случае

Subbotin
30.05.2018
15:55:22
вот вам жс без эвентлупа

а переменные они мьютексами обвешали сами чтоб люди ручками этого не делали

Страница 1471 из 1674