
Dmitri
30.05.2018
12:12:21

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

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

Roman
30.05.2018
12:19:28

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

Olzhas
30.05.2018
12:23:16
Чтобы на ноутбуке экономить батарейку, лучше его не включать

Roman
30.05.2018
12:23:54

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

Olzhas
30.05.2018
12:25:36

Берял
30.05.2018
12:25:53

Dmitri
30.05.2018
12:26:01

Roman
30.05.2018
12:26:26

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
13:56:12

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:19:35

Roman
30.05.2018
14:20:03

Google

Roman
30.05.2018
14:21:03

Roman
30.05.2018
14:30:36
и локи нужны даже в однопоточном асинхронном приложении

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

Roman
30.05.2018
14:42:10
в JS такого в принципе не может быть

Roman
30.05.2018
14:42:54

Roman
30.05.2018
14:43:06

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

Roman
30.05.2018
14:57:13

Kirill
30.05.2018
14:58:35

Roman
30.05.2018
14:59:07

Roman
30.05.2018
15:00:06
ибо что это за Go код который ломается если GOMAXPROCS больше 1

Bogdan (SirEdvin)
30.05.2018
15:02:50

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

Roman
30.05.2018
15:05:13

Subbotin
30.05.2018
15:31:24


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


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

Google

Roman
30.05.2018
15:39:43

Sergey
30.05.2018
15:40:01

Subbotin
30.05.2018
15:40:41

Roman
30.05.2018
15:41:21
он не параллелен, он не конкурентен, он потенциально конкурентен (!!!111111)

Sergey
30.05.2018
15:43:07

Subbotin
30.05.2018
15:44:07

Roman
30.05.2018
15:44:32

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
вот вам жс без эвентлупа
а переменные они мьютексами обвешали сами чтоб люди ручками этого не делали