arkady
Получается все это и для ноды подходит
Kirill
в ноде уже есть треды
костыли это, а не треды
Olzhas
https://nodejs.org/api/worker_threads.html
arkady
А какие перспективы у go?
Daniel
тем не менее, такая модель (event loop) имеет право на жить, тот же nginx
nginx - очень узкоспециализированный софт, в нем это выстрелило. в go тоже есть евентлуп, очень удачно обернутый. тоже выстрелило. а вручную по ядрам процессы распихивать - не, не выстрелит
arkady
Выстрелило
arkady
Просто не так удобно как в го
Kirill
arkady
в ногу
Да не
Daniel
А какие перспективы у go?
в текущем виде? скорее всего, никаких.
Kirill
простите, не удержался :D
Olzhas
Почему?
слово начинается на "ге"
Olzhas
не удержался
Daniel
потому, что непонятно, куда и как развивать то, что получилось. язык получился хороший, но немного герметичный :)
Маjко
Даже генетики не добавить без перепила синтаксиса
Маjко
Простите
Kirill
Daniel
есть несколько больных точек, которые мешают победному шествию 1. обработка ошибок. тут, кстати, можно практически без потери совместимости ситуацию исправить 2. те самые генерики. надо расширять язык для поддержики в нем кодогенерации, но это сложно и непонятно, как. 3. исключения, они же эксепшены. все-таки оказалось, что нужен способ автоматической раскрутки стека 4. система типов. иногда прям вот без тип-суммы никак, и мы ее эмулируем на интерфейсах. ну и еще что-то наверняка есть, просто я для себя эти 4 выписал
Daniel
По немногу осваиваю и хочу на работу притащить. Не пожалею?
скорее нет, чем да. go все же сильно лучше остальных простых языков, и, похоже, лучше сложных
Daniel
зачем исключения?
чтобы не тащить ошибку через много уровней вложенности вручную
L
По каким максимальном N работает?
Я кажется видел бенчмарки до 1000n где-то
Kirill
чтобы не тащить ошибку через много уровней вложенности вручную
ты можешь себе представить, какой пиздец опять прикатится из опенсорцных библиотек каких-нибудь джавистов?
Daniel
могу
Kirill
могу
так вот — зачем тогда?
Alexander
Большим программам - большие стек-трейсы
Kirill
Вот сейчас обидно было
не переживай, я не собираюсь лезть в джаву, руст или питон :)
Daniel
так вот — зачем тогда?
что-то надо делать в простом коде это не очень нужно, но в сложном раскрутка стека занимает до 10% кода, и, блин, это же мусор все
Kirill
Большим программам - большие стек-трейсы
unhandled exception: shitlib/internal/IncorrectExceptionFabrics/IncorrectPasswordExceptionFabric/IncorrectPasswordException
Kirill
Daniel
Можно по первому пункту подробнее? Какое решение без типов-сумм и исключений?
мне в ошибках не хватает стектрейса и типизации в дополнение к строке даем ошибке стектрейс (возможно, опциональный, потому как взятие стектрейса дорогая операция) и два числа: тип и сорт вводим стандартную типизацию и сортность ошибок по образцу дерева исключений в яве - и все, проблема решена
Kirill
и об этом и так речь идёт уже давно
но пока не продумали много нюансов
Daniel
у гошной ошибки есть вообще только строка - сообщение
Daniel
у интерфейса error, в смысле
Daniel
вот этот интерфейс и надо расширить
Kirill
это из серии var nil = 0, func panic(...interface{}) { log.Println("nope") } и т.д.
Kirill
(это, скорее всего, не понравится Нилу, но!) мы всё ещё умеем изменять, заменять и затирать функции в рантайме
Cat
У гошных ошибок нет стектрейсов? Ох, я думал что есть.
Библиотечные умеют, конечно же, но это история как с failure
Маjко
Библиотечные умеют, конечно же, но это история как с failure
Ну раст с голой stdlib для обработки ошибок вообще мало пригоден, так то Но тут разница в том что у нас депенденси подключать и менеджить можно без геморроя благодаря Cargo и версионирование энфорсится
Маjко
Да и вообще идеология языка строится вокруг очень маленькой базовой stdlib и развитого инструментария управления зависимостями.
Cat
> раст с голой stdlib для обработки ошибок мало пригоден да, я об этом; я к тому, что без ломания совместимости занести failure в кор раст (или какие-нибудь uber/multierr в кор го) не получится
Vadim
Привет. Есть вопрос, хочу поднять на обсуждение. Но перед этим: jython не имеет GIL. Так вот, сейчас посмотрел как дела у async в c#, вроде всё есть и работает. Библиотек тоже навалом. Почему этот язык не обсуждается как конкурент golang?
Маjко
Вбросы подъехали
саша
Автоматически, как в го, там конечно не масштабируется
автоматически как в го - это когда ты не можешь запустить отдельный эвентлуп в каком-то потоке, чтобы там что-то гонять?
саша
эффективно утилизировать один проц во времена многоядерных процов везде вообще - это то еще достижение
для приложений, которые не должны забирать себе все ресурсы машины - нормальное такое достижение.
саша
тем не менее, такая модель (event loop) имеет право на жить, тот же nginx
В го под капотом тоже вполне себе евент луп. Эта модель не то что имеет право на жизнь, а скорее все мы без неё нынче жить особо то и не можем.
Alexander
Привет. Есть вопрос, хочу поднять на обсуждение. Но перед этим: jython не имеет GIL. Так вот, сейчас посмотрел как дела у async в c#, вроде всё есть и работает. Библиотек тоже навалом. Почему этот язык не обсуждается как конкурент golang?
Потому что jython не особо язык, а питон на jdk. А если у тебя уже есть jdk, то бери джаву и горя не знай. Или там скалу, кложуру, Котлин, если странного хочется. А си шарп и го вообще пока не конкуренты. Шарпы популярнее, другая сфера применения, заточены под тврпрайз, причём на виндовом стеке
Cat
генерик(пункт 2, да, знаю) интерфейсы с явной имплементацией? Сделать перевод строки снова не значимым токеном для компилятора?
> Сделать перевод строки снова не значимым токеном для компилятора? вряд ли, это же selling feature
Daniel
а он и не значимый, так-то
Daniel
для компилятора, в смысле
саша
а он и не значимый, так-то
Это работает something. doSomething() А это нет: something .doSomething()
Daniel
там перед компилятором есть препроцессор, который вставляет ; в конец каждой строки, которая не заканчивается на открывающую скобку, точку или запятую и к компилятору уже едет текст с точками-с-запятой
саша
При чём врядли кто-то скажет, что первое проще читать, чем второе.
Daniel
да
саша
да
если в каких-то местах перевод строки заменяется на ;, то для меня как для пользователя это значит, что перевод строки тоже значимый токен