Николай
и там вроде написано, что перевод
Aleksandr
спрашиваю мнение Мерля по статье
Alex
Если читать с разных горутин одну и туже хеш-таблицу или слайс. Можно получить ошибку? Или читать можно с разных горутин, а вот при записи блокировать любые действия с ней?
Daniel
читай сколько хочешь
Daniel
но ели ты туда попишешь - все читатели могу поломаться
Николай
А разве на одновременное чтение из мапы паника не выпадет?
Николай
Вроде даже есть какой-то мьютекс только на чтение
Anonymous
только при чтении не выпадает паника
Anonymous
RWMutex
Alex
Спасибо! Понял
Anonymous
Парни, в go get можно передать несколько путей к репам?
Anonymous
или по очереди надо делать запросы go get .... && go get ...
Yehor
Можно
ros
go get в корне приложения и по импортам соберет само
Anonymous
Спасибо, парни
Sander
------------ в курсах от codeschool, есть вопрос, под какие задачи подходит go lang. netwrok, websites, games вроде 3 пункта было только. --- правильный ответ network, games, но не websites. кто может аргументировать этот момент?
Yehor
------------ в курсах от codeschool, есть вопрос, под какие задачи подходит go lang. netwrok, websites, games вроде 3 пункта было только. --- правильный ответ network, games, но не websites. кто может аргументировать этот момент?
1) писать что-то быстро на статическом языке - боль 2) нет полноценных MVC-фреймворков (кроме Revel (но и он не активно развивается)) 3) шаблонизаторов сделано мало, стандартный очень скуден. Но это не значит что Go не применим к разработке веб-сайтов, ту же Java используют с фреймворками для сложных проектов, которые не делаются за неделю или месяц. Думаю, когда библиотек станет больше и пропаганда Го (которая сейчас активна) воздействует, то Го придёт и в разработку таких систем, которые не создают быстро. Можно привести пример Gitea, вполне себе отличное применение Го+веб.
Oleg
[Перевод] Что я изменил бы в Go https://habrahabr.ru/post/325046/ Tags: Компиляторы, Высокая производительность, Rust, Go, Блог компании Mail.Ru Group, rust, go, haskell, никто не читает теги Author AloneCoder on #habrahabr
"None и Some — это конструкторы: каждый из них является функцией, возвращающей значение типа Option<T>. Some берёт один аргумент, None не берёт аргументов. Учитывая значение Option<T>, вы можете прибегнуть к сопоставлению с образцом (pattern matching), чтобы определить, какой конструктор использовался для создания значения. При сопоставлении вы также считываете обратно (read back) любые аргументы конструктора. Если значение создано посредством вызова Some(x), то сопоставление с образцом позволяет обратиться к значению x." По мне так хуйня какая-то.
Oleg
И примеров кода очень мало, местами мне просто не придумать сходу кейсов, когда "всё ломается".
Slava
в чем смысл вообще такой оценки?
Работаю 2 часа в день, платят за 8 :)
Oleg
Очень много терминологии, прям академическая статья.
Oleg
Вот как можно такое читать: fn map<A, B, F>(callback: F, xs: &[A]) -> Vec<B> where F: Fn(&A) -> B {
Oleg
И это предлагают запихнуть в Go. Почему бы тогда сразу на расте не писать?
Yehor
Да этих шаблонизаторов как баранов в загоне
Я говорю о таком: https://github.com/flosch/pongo2 https://github.com/tyler-sommer/stick https://github.com/CloudyKit/jet
Oleg
Короче опять нытьё про отсутствие дженериков. Добро пожаловать в статическую типизацию, ёпта.
Yehor
Да этих шаблонизаторов как баранов в загоне
Недавно появилась вот эта библиотека https://github.com/Masterminds/sprig которая добавляет к стандартному шаблонизатору функциональность.
Sander
оставить работу пхпшникам? НЕТ ) хоть я и на нем пишу но не хочу
Мерль
Безопасно, безо всяких уродских кастов типов
Мерль
Короче опять нытьё про отсутствие дженериков. Добро пожаловать в статическую типизацию, ёпта.
Статическая типизация никак не противеречит дженерикам, наоборот, отсутствие метапрограммирования вынуждает хреначить пустые интерфейсы и прочий треш
nvkv
я чо, котаны, кто-то может рассказать про дженерики вне статической типизации?
Anonymous
😂😂😂
nvkv
меня так радует вот это вот бравирование статической типизацией у гоферов
nvkv
котаны, в го система типов так-то говно сраное, если сравнить с чем угодно почти
Anonymous
А вот про канал с датой и ошибкой в качестве опции это вещь
Sander
вот что вы думаете о том чтоб писать игры на php ?) так как на работе, у нас сениор разработчик сказал, что на php можно очень хорошие игры написать, что зачем писать игру на каком-нибудь другом языке, ведь зависит от того как хорошо ты знаешь язык и пишешь код.
Anonymous
Думаем, что нужно брать UE4 и не парить мозг :)
Мерль
Или просто не делать решений, которые вынуждают к interface {}
Можно и нужно Но получается пиздец громоздко
🏳️ Phil
да, лучше копипастить
Не вижу проблемы
Мерль
Либо писать свои кодогенеарторы
Мерль
Но это адок в большинстве случаев, по сути делаешь работу компилятора
🏳️ Phil
Можно и нужно Но получается пиздец громоздко
Да и хрен с ним. Не 5" дискеты чай хранишь
Мерль
Да и хрен с ним. Не 5" дискеты чай хранишь
Это читать потом сложно и переписывать
nvkv
нечо переписывать
🏳️ Phil
Это читать потом сложно и переписывать
Читать сложно как раз дженерики и всякий ООП. Переписывать - ну да, есть некоторые особенности. Хотя вот возвращаясь к ООП - его тоже сложно переписывать. Иногда невозможно в адекватные объемы работ
nvkv
филипп блеать
nvkv
какое в жопу ООП?
Oleg
Напрашивается структура, как по мне
Oleg
И не уверен, может стандартный способ обработки ошибок через nil прокатит.
Oleg
А вообще, если ошибка отдельным типом, то отправитель в канал явно уже в курсе, что это ошибка, так что в канал её можно и не пихать.
🏳️ Phil
Это читать потом сложно и переписывать
Но кстати это легче переписать, чем всякое наабстрагированное
🏳️ Phil
какое в жопу ООП?
ООП к слову пришелся :)
Мерль
Это читать потом сложно и переписывать
Потому что реализация например интерфейса Message { Type() MessageType } для скажем строки, числа и двух видов структур займёт два-три экрана С опциональными типами заняло бы шесть строк
Мерль
Тебе придётся переписывать КАЖДЫЙ тип, который удолетворяет интерфейсу
Мерль
В случае например Бот АПИ телеграма - это с полтора десятка типов, Карл
Мерль
Это адок
Мерль
Кода на такое смотришь - хочется застрелиться
Мерль
А вы пытались разбирать AST гошечки с помощью пакета go?
Мерль
Это просто жесть
Мерль
Сплошные тайп-касты без наличия адекватной документации (потому что без документации хуй поймешь какой тип какому интерфейсу удолетворяет)
Nikolay
Это просто жесть
Все познается в сравнении. Для меня самая жесть это разбор файлика c расширением vbs на 10к строк, в котором вначале стоит On Error Resume Next и без этой штуки просто не работает ибо ошибка каждые 50 строк какая-нибудь обнаруживается
Nikolay
Так что лучше бы я разбирал AST
Мерль
Это хорошо или плохо? Я не понимаю боязни развернутого кода.
Это дохуя плохо, потому что тебе приходится пересмотреть кучу избыточного, не несущего никакой смысловой нагрузки кода
Мерль
И писать его
Мерль
А потом рефакторить
🏳️ Phil
Это просто жесть
Ну не знаю. Для меня всегда было жестью разбирать все эти перезагрузки, виртуальгные методы и прочую хрень. Которую голдову сломаешь разобрать. А по трем экранам пробежаться не проблема вообще