Этого треда уже нет.
Это копия, сохраненная 7 мая 2018 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
ca1f746d6f232f87fca4e4d94ef6f3ab.png68 Кб, 600x600
Go (а также Golang, Пщ или просто Го) — современный 1119389 В конец треда | Веб
Go (а также Golang, Пщ или просто Го) — современный язык с зелеными потоками на уровне синтаксиса и мега крутой стандартной библиотекой. Так как делать пакеджи несложно, гитхаб полон пакеджами для абсолютно всего. Батарейки почти как в питоне.

Пщ едва не единственный язык который на уровне синтаксиса позволяет синхронизировать подпрограммы, разве только не Pony или Erlang. Это в 2018 году-то
Дженерики нужны, дженериков нет. Просто смирись.
Обработка ошибок получается охуенно через http://github.com/pkg/errors | в приложениях обычно можно просто паниковать на ошибках.
HTTP-сервер для убер максимального маня-хайлоада: https://github.com/valyala/fasthttp
В 1.8 или 1.9 уже можно "нормально" сортировать через sort.Slice()
Не нужно пиздеть про толстые бинарники, их размер значительно уменьшается одним маленьким Makefile.

Вкатываемся в эпоху докера, микросервисов и адово кошерной сетевухи.

Илюша, https://github.com/tucnak
sage 2 1119395
Сажа скрыл
3 1119400
>>19395
Молча)
4 1119513
>>19389 (OP)

> разве только не Pony или Erlang


И чем го лучше пони или ерланга?
5 1119525
Влюбился в этот ваш голанг с первой строчки, уже неделю угораю пройдет или это навсегда/надолго?

Какие перспективы? Что на нем пишете, сколько зарабатываете?

жаваскрыпт мидл кун
6 1119526
>>19525
Влюбился в этот ваш голанг с первой строчки, уже неделю угораю пройдет или это навсегда/надолго?

Какие перспективы? Что на нем пишете, сколько зарабатываете?

жаваскрыпт мидл кун

фикс спойлера
7 1119535
>>19389 (OP)
Где нормальная шапка со списком литературы?
8 1119565
>>19526
>>19525
Просто ты увидел язык, который не является рвотным сблевом говна собаки, вот и зашло с непривычки.
9 1119568
>>19535
Зачем она нужна? Я куратор этого треда, я сам список литературы. Короче, нахуй литературу.
10 1119572
>>19513
Но реально решает задачи, уровень технологий там зашкаливает. Пони и эрланг хороши, но Го по практичности просто берёт и выносит остальных ногами вперёд :-)
11 1119593
>>19568
Ну и зачем ты такими заявлениями даешь лишний повод думать о Гоферах, как о дебилах, отрицающих книги?
sage 12 1119725
>>19389 (OP)

>Пщ едва не единственный язык который на уровне синтаксиса позволяет синхронизировать подпрограммы, разве только не Pony или Erlang.


И clojure, и х-ль с экстеншнами, и так далее, и тому подобное.

Алсо,

>на уровне синтаксиса


Как будто что-то хорошее.
13 1119729
>>19725

Ты с говнарями спориь собрался? Этот гуглепаскаль только отбитый даун использовать будет. Благо, вакансий по говну нет. Так-о.
14 1119842
Поясните за этот ваш пщ, на нем есть что-то для статистики и машинного обучения?
15 1119844
>>19842
Загугли awesome go.
Есть
16 1119845
>>19842
язык умер алло
17 1119846
>>19729
Есть хайп на него, платят хорошо
18 1119934
>>19846

Уже нет. Ни вакансий, ни задач.
19 1119937
>>19934
двачую
20 1119942
>>19729
>>19934
>>19937
Как так? Только что же был на хайпе острия острия.
21 1119949
>>19934
Я так и знал, что эта параша сдуется.
sage 22 1119952
>>19934
В дс2 на хз вакансий на го, больше чем на ноде.
sage 23 1119955
>>19952
На хх*
24 1119960
>>19952

>В манямирке

25 1119965
>>19952
Нода это совсем дрисня. Даже ее создатель сказал, что она не нужна, когда есть любой другой язык программирования Го.
sage 26 1119976
>>19965
Нода не дрысня.
27 1119982

> Го


> Современный язык

28 1119994
>>19976
Нода дрисня, а не дрысня.

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



>>19982
После JS-хуиты любой нормальный язык кажется божьим откровением, а если он еще и прост как три копейки, что даже шлемазл с поврежденным мозгом разберется, так вообще.
sage 29 1120002
>>19994
Жс нормальный язык, в последних версиях он просто ахуителен. Нода топ 1 платформа для разработки. В то время как жс от стандарта к стандарту становится лучше, создатели го игнорируют сообщество и за столько лет не добавили ни менеджер пакетов и ни дженерики.
30 1120004
>>20002

> Жс нормальный язык


Я мог бы обоссать тебя, но вместо этого просто кину тебе пример твоего "нормального" читаемого языка
https://github.com/mui-org/material-ui/blob/v1-beta/docs/src/modules/components/AppDrawer.js

> Нода топ 1 платформа для разработки


Для JS-разработчиков.
31 1120085
>>20002

>ни менеджер пакетов


https://github.com/golang/dep
 .png263 Кб, 736x736
32 1120088
>>20085

> Windows Build Status: failed


> Go report: A+



инб4 не нужон
33 1120091
15123625730420.jpg13 Кб, 195x195
34 1120178
>>20085

>dep is the official experiment, but not yet the official tool


> Windows Build Status: failed


> Go report: A+


Гоферов кормят говном, а они едят и просят ещё.
>>20004

> Для JS-разработчиков веб разработки.


Пофиксил, не благодари.
35 1120266
>>20178
Чем вызван смех?
36 1120269
>>20178
его давно в продакшене используют.
37 1120276
>>20269
Вот когда NY Subway начнут использовать вот тогда.
38 1120289
>>20002
Чет проиграл с функции reduce, в которой есть

> = null


> arg.push...


> return arg

IMG20180115155438.jpg151 Кб, 700x800
39 1120329
>>20266
Отсутствие нормального менеджера пакетов.
>>20289
Пздц, ты даже по нужному почту не можешь попасть. Алсо нахуй вы всякий говнокод обсуждает?
40 1120331
>>20329
Посту*
41 1120669
Тем временем

>Announcing Go Support for AWS Lambda


https://aws.amazon.com/blogs/compute/announcing-go-support-for-aws-lambda/
42 1120713
>>19389 (OP)

>2017


>Makefile


Просто убейтесь.
Screenshot20180116114536.png57 Кб, 1218x653
43 1120714
>>19389 (OP)

>Илюша


Он что, поехавший?
44 1120792
Го это байтоебский язык или на нем можно делать и высокоуровневые вещи?
45 1120862
>>20792
Нишевой язык для того, чтобы транслировать в него Python. Если хочешь — это байт-код Пайтона. И не более.
46 1120874
>>20792
что-то среднее
47 1120895
>>20862

> транслировать в него Python



Щто?
48 1120901
>>20895
Трансляторы есть уже давно:
http://www.opennet.ru/opennews/art.shtml?num=46912
Всё остальное — быдлохуита навроде COM DCOM ActiveX MFC POUWERЪ TOYEZЪ.
49 1120903
>>20901

Лолблядь. Зачем в него гнидобейсик транслировать?
50 1120907
>>20903
Но ведь у процессора кеши не резиновые...
Чем меньше скачков по оперативной памяти — тем лучше.

Google, Pitfalls of Object Oriented Programming
51 1121005
Почему то го не показался мне таким простым как его нарекают. Ключевых слов действительно не так много, но вот типы для это просто пздц. Возвращение функцией нескольких значений тоже довольно неявно для меня, что в итоге только усложняет все для меня. Стрелочный оператор тоже сбивает с толку. И с горутинами пока не успел разобраться. Начал решать задачки на exercism.io. В итоге застрял на самых простых. Пошел читать доки - в итоге не могу найти нужную функцию или опять же проблема с типами. Стоит ли ещё что нибудь почитать или просто продолжать превозмогать, надеясь со временем во все разобраться?
52 1121118
>>21005
The Go Programming Language Phrasebook [Chisnall 2012-05-10]

little go book
53 1121180
Киньте картинку, как к хомякам прилетает тарелка и говорит GENERIC, а хомяки кидаются копьями.
54 1121229
>>21005
Поддвачну. Привык к функциям которые работают с переданным параметром. А в го функции воруют, убивают, ебут гусей, а возвращают вообще ошибку.
56 1121316
57 1121322
Спешите видеть: итт хейтеры спорят на тему объективных качеств языка. Абсолютно похуй на все эти мелкие недостатки — как вы это не можете понять. Ещё есть такой прикол что полноту многих проблем вы просто не понимаете потому что что-то не знаете. Язык это не только дизайн, это ещё производительность и поддерживаемость. Го делает это хорошо, многие компании даже считают что очень хорошо. Зачем хейтить охуенный проверенный инструмент из-за какой-то мишуры на которую не похуй трём — трём с половиной юным максималистам?

Нет дженериков? Ок, нет. Не сделали. И что теперь? Диллема дженериков хорошо описана и создатели языка многократно аргументировали свою позицию. Они не против дженериков per se, просто с учётом всех факторов они посчитали что лучше не делать их вообще. Это не мешает. Если бы это было фатальным недостатком, то Го не получил бы тот успех который он получил.

-Илюша
58 1121358
>>21322

>охуенный проверенный инструмент


Подожди-ка, но ведь это не джава и даже не си тред.
59 1121362
>>21358
Go используют как минимум с 2012 года сотни компаний. И в большинстве случаев остаются довольны.

Если для тебя 5-6 лет это недостаточно большой интервал чтобы делать статистические суждения, ты мало представляешь себе жизненный цикл поддержки кода (который итерирует чаще чем раз в 5 лет).

60 1121363
>>21362

>Go используют как минимум с 2012 года


Ну тогда при выборе языка точно не стоит смотреть на качества этого языка - раз его используют с 2012 года (минимум!), то нужно брать!
61 1121394
>>21322

>Абсолютно похуй на все эти мелкие недостатки — как вы это не можете понять.


Мы не намерены это понимать. Дженерики спрашивают на собеседованиях → обязан выучить дженерики. Всё, закончили с этим!
62 1121435
Илюш, а тебя с хабра прогнали) Ссаными тряпками))
63 1121438
>>21435
У меня там есть как минимум два аккаунта с положительной кармой — это раз. Я не сижу на хабре с 2015 года — это два.

64 1121440
>>20713
Что ты имеешь против мейка? На самом деле в этом конкретном случае достаточно build-optimized.sh, но я предпочитаю запускать make и всё.
65 1121443
>>21440

> build-optimized.sh


Пентиум четыре уже купил?
66 1121444
>>21438
А у меня у папы самолёт и вертолёт!
67 1121537
Вроде в версии 1.10 собирались впелить поддержку создания .dll плагинов под виндувс, оно живо?
68 1121545
>>21443
При чем тут это? Бинарники в Пщ по-дефолту содержат кучу отладочной информации и т.д. Чтобы эти (ненужные) данные убрать, есть флаги. Я их не помню, поэтому у меня просто мейкфайл и я могу делать просто make или make stripped.

>>21444
Молодец, я рад за тебя.
sage 69 1121600
>>19389 (OP)
И сюда тоже запостирую:

https://www.opennet.ru/opennews/art.shtml?num=47869

>Наиболее сильно теряют свои позиции Java (-3.06%), Go (-0.76%) и C++ (-0.70%).



Запомните это сочетание: джава, го и сиплюсплюс.
70 1121661
>>21600

>0.76


>0.70


Щас бы на спичках экономить
71 1121673
>>21286
Спасибо. Проиграл еще раз.
72 1121675
>>21394
Их учить надо? Я думал, посмотрел и все.
73 1121678
>>21675
Я думаю это была шутка.
sage 74 1121751
>>21661
Щас бы терять позиции, когда все остальные растут. Хайп на говно прошел - он уже схлопывается, так толком и не успев взлететь.
75 1121800
>>21751

>Хайп на говно прошел - он уже схлопывается


Но все же никуда он не денется, ниша пщ в целом востребована, разве что появится нормальная альтернатива как с пхп->питоноруби.
76 1121829
>>19389 (OP)
Как перекомпилировать hello world на виндоус? Я устанвил этот ваш GO с официального сайта на Linux Ubuntu 64 bit. Вообщем, hello world на нем работает. Но я хочу, чтобы работал под Windows 64 bit. Как это сделать? На команду 6g ругается, что не найдена.
77 1121888
>>21600
БЛЯТЬ! ЕБАННА В РОТ! АССЕМБЛЕР ПАДАЕТ ТОЖЕ, ВСЕ ТЕПЕРЬ ОН НАХУЙ НИКОМУ НЕ НУЖЕН! ПИШЕМ МИКРОКОНТРОЛЛЕРЫ НА ПЫХЕ
78 1121889
>>21888
Какая блять пыха? Не видел, там SCRATCH РАСТЕТ! Перекатываемся на него аки колобки.
79 1121896
>>21829
Нужно указать при компиляции флаги GOOS и GOARCH и в них указать необходимую архитектуру ОС, короче погугли
80 1121907
>>21896

>env GOOS=windows GOARCH=amd64 go build


Получилоась, работает! Спасибо, братишка, век багов не видать!
81 1121913
>>21907
Круто, на гитхабе где-то есть библиотеки, которые автоматически собирают бинарники под все доступные ос
82 1121923
А на нем можно написать программку с окошком и кнопочкой? Ну, типа маленькое окошко на экране, в нем надпись Hello, world! А под ней кнопочка OK. Нажимаешь и и окошко закроется..
83 1121927
>>21923
Устанавливаешь VS2017. Открываешь Windows Forms...
84 1121930
>>21927
A Go?
85 1121933
>>21930
Да можно, ну лучше это делать на с#, как посоветовали свыше
https://github.com/avelino/awesome-go#gui
86 1121958
Давайте теперь поговорим о смысле существования данного языка. Как мы только что узнали, они не может в GUI. Остается сфера применения для веба, а преимущество языка - многоядерность. Но на вебе совершенно не нужна поддержка многоядерности. На вебе для обработки каждого запроса пользователя запускается новая копия скрипта. При высокой нагрузке, т.е. одновременных запросах от нескольких пользователей, скрипты будут работать на разных ядрах. Узким местом на вебе являются базы данных и каналы связи. Go никак не адресует эти проблемы. Получается, он бесполезен.
87 1121999
>>21958
Ты очумел
1) статическая типизация
2) малое потребление памяти
3) джанго/питон 4000rps, golang 40.000 rps

Естественно, когда маленький сайт, то не нужно а когда почта.маил.ру/дропбокс, etc, где миллионы пользователей, то нада
88 1122029
>>20002
Мечты жс-неосилятора нормальных языков
89 1122031
>>21958

>они не может в GUI. Остается сфера применения для веба


Есть только две сферы: гуи и веб?
Benchmark.png7 Кб, 512x320
90 1122034
>>21999
Нинада.
91 1122037
>>21999

>статическая типизация


Это его недостаток для веба. Дальше?

>малое потребление памяти


окей. Одно достоинство. Скрипт может отожрать 100mb, но при нынешних 32ГБ памяти этого хватит на обслуживание 300 пользователей одновременно. Сервер ляжет скорее от чего-то другого, чем от недостатка памяти.

>джанго/питон 4000rps, golang 40.000 rps


Что такое rps? Запросов в секунду? Тогда это влажные мечты кукаретика. В реальности будет всего сотня, а дальше ляжет база.
92 1122053
>>21958
Прикручиваешь кути и он сразу может в гуи
>>22037
1. Спорно, это недостаток только для макак.
2. "Маам, маам, смотри, мой жс/пхп/питон/хуитон говнопроект жрет всего 16 гигов под нагрузкой и течет как похотливая сучка"
ну если ты кроме хоум пейдж и вонючих интернет магазинчиков ничего больше не разрабатыва/не видел, это не значит, что нет систем с большим количеством рпс.
93 1122067
>>22053

>16 гигов под нагрузкой


Я вижу, что ты ничего не разрабатывал, иначе знал бы об ограничении памяти для каждой инстанции.
94 1122205
Что означают подобные этому фразы в документации?
func Command(name string, arg ...string) *Cmd

-что означает многоточие?
- что означает ежик и Cmd через пробел?
- это можно копировать в код и использовать?
95 1122210
>>22205
Многоточие - переменное число переменных
ежик - это указатель
*Cmd - возвращемое значение ( в Го возврат пишется после функции)
96 1122212
>>22205
Если на си++, то аналог этого это
*Cmd Command( string name, string arg,...)
97 1122218
>>19389 (OP)
Какого хуя присвоение := Это паскаль ебаный блядь? Хули нельзя было нормально сделать?
98 1122224
>>22218
Есть и обычное.
Когда через двоеточие, то еще и типизация происходит
99 1122233
Как класс описать? Или в этом языке такое понятие отсутсвует. Поиск выдает какую-то петушню
type userStruct struct {
}
100 1122235
>>22233
Классов нет. Есть структуры.

Если тебе надо объединить структуру с методами, то используется связывание.
Типа так
func(user *userStruct)Method() {
user.UserName = "User"
}
101 1122236
>>22235
и как в классе создать защищенный от наследования или изменения параметр (protected, private)?
102 1122237
>>22236
private параметры пишутся с маленькой буквы
type userStruct struct {
privateName string
PublicName string
}
4vjC1rx0OCM.jpg74 Кб, 800x536
103 1122239
>>22235
Ну и впизду тогда.
Без классов есть более гибкий и быстрый срр,
А для нормального ООП -- что угодно, начиная с рнр7 для веба и, допустим, Ява для остального.

Нахуй надо-то? Пытаюсь понять.
104 1122241
>>22239
Можно создать аналоги классов.
Язык похож на си, но проще по синтаксису, и меньше требует, чем джава
105 1122248
>>22237
Разве это поддерживается на уровне компилятора? Из примеров я делаю вывод что НЕТ http://www.golangprograms.com/go-language/struct.html
106 1122249
>>22248
Да, поддерживается. Всё что с маленькой буквы доступно только в пределах пакета. "Наружу" для доступа экспортируются только симболы с большой буквы. Это удобно на самом деле: по названию симбола можно сразу сказать будет ли видно его снаружи или нет. Т.е. это касается не только полей структур, а вообще всех сущностей пакета: переменная, постоянная, функция/метод, структура, интерфейс.

107 1122314
>>22067
Скоропалительные выводы, как это мило.
108 1122330
>>21790 (Del)
Зарепортил неймфажество и щитпостинг.

>>21800

>разве что появится нормальная альтернатива


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

Короче, насчет ниши - согласен, но вот этот хайп "вау гугл нарисовал такую няшную аватарку давайте перепишем все бекенды на пщ" уже прошел\проходит. В евангелистах остались только шизики вроде опа, лол.
sage 109 1122331
>>21888
Щас бы асм с пщ сравнивать, хехмда
110 1122332
>>22331
Я просто угарал с логики этих маминов аналитиков.
Го сосет
David Nolen 270x200.JPG6 Кб, 270x200
111 1122333
>>21999

>1) статическая типизация


>нет дженериков


>1) статическая типизация

112 1122335
>>22333
Бегемоты - круто.
113 1122336
>>22332
Так ты соврешенно зря "угарал", не разобравшись, в чем, собственно, логика. Ассемблер был, есть и будет всегда; тот факт, что он в рейтинге падает - следствие прогресса в разработке компиляторов, это ожидаемо и нормально. То же касается, например, и си. А го дарт, ещекакаямаркретолушнаяхуйнянейм - еще не взлетевший язык, и если он в фазе взлетания вместо стабильного роста сдает позиции, то конец немного предсказуем.
114 1122445
>>21800

>ниша пщ в целом востребована


И что же это за ниша таинственная никому не известная?
115 1122450
>>22445
Всем, в принципе, известная. кроме тебя Высоконагруженные бэкенды, сетевуха, CLI.

Cloudflare гоняют преимущественно код на Go, а у них 10% всего трафика в интернете.
Докер и вся экосистема вокруг него тоже построена на Go.
Кубернетес и разные базы данных, типа cockroach.
116 1122452
>>22450
Т.е. для написания узкоспециализированной прокси. Я бы сказал это к веб-разработке отношения не имеет. Докер сдох.
117 1122454
>>22452

>Т.е. для написания узкоспециализированной прокси


Нет, я тебе перечислил для чего, не нужно передергивать.

>Докер сдох.


Нет, это не так.
118 1122469
>>22452

>Докер сдох.


Откуда дровишки?
Лол кек
119 1122508
Илья, скажи, что нужно знать/уметь, чтобы джуном взяли? Ну и какого типа и уровня должны быть прожекты на гитхабе?
120 1122685
>>22330
Ерланг\еликсир – языки с охуэнно узкой нишей даже относительно пщ, плюс динамические, плюс вм, плюс функциональные. Это все совсем не то.

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

В общем для сетевухи у пщ сейчас конкурентов нет и в ближайшее время не предвидится.

мимо-пщ-хейтер
121 1122713
>>22452

> Докер сдох.


Да неужто? И когда/как это произошло? А то пацаны не в курсе.
122 1122850
>>22685

>Это все совсем не то.


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

>есть ещё пони


Таки есть? Оно вообще шевелится? Что-то про него совсем ничего не слышно.
124 1122957
>>22851
На ладан дышит, после того как их контора пытающаяся продавать язык обанкротилась создатель языка сьебал в microsoft research, остальные core-разработчики в основном вяло пилят компилятор и пытаются сделать так чтобы он не сегфолтится на каждый чих.
125 1123208
>>22957
Печально, чо. Да хотя и хуй с ним.
126 1123528
Недавно решил написать мини проектик на Go. Кароч мне нужно место где выместить зло

Тезисно:
- Роберт Пайк - пидор
- Разрабы самого go в целом - долбоебы каких мало
- Комьюнити go - самое макаконасыщенное после комьюнити js
- Язык изобилует уебанскими решениями, которые дауны яростно отставивают

GOPATH мог быть придуман только долбоебом. Мудацкое, неудобное и бесполезное решение. Все бы хорошо если бы оно было опциональным. Но, нет оно жестко захардкожено, потому что ятакскозал! Даунята активно защищают такой подход. Если тут комуто GOPATH нравится - подойдите ближе к сцене, я поссу на ваши лица.

gofmt - Революционный удобный тул!! - заорете вы. Пиздец вы дауны - отвечу я. Автоформат есть в любой IDE к любому языку вот уже 30 лет. Но вот жестко захардкодить уебанские, неправильные, неудобные настройки додумались только гоферы-даунята.

Открывающиеся скобки только на той же строке - Ебаный кромешный пиздец. Есть общеизвестный факт: так скобки ставят только билюбознательныекак минимум люди. Натуралы ставят скобки на новой строке потому что преимущества такого подхода очевидны. Но так как авторы go - поголовно состоят в ЛГБТ сообществах и соответственно любят хуйцы, то они блять ЗАХРАДКОДИЛИ скобки как им нравится. Хочешь писать как натурал? А хуй тебе - код не скомпилится.

Путь к репам прям в коде - например import "github.com/go-chi/chi". Ну и ебланы. А если завтра гитхаб накроется? Менять исходники? Дебики блять. Ну ладно, гитхуб напрядли накроется, но более малоизвестных хостинг - изи

В остальном пока язык устраивает, http сервер, роутинг, sql из коробки + язык дизайнился под бекенд, для моего проекта хватает.

>>19525

>жаваскрыпт мидл кун


Угарнул. Сеньйор джиес примерно равен джуниору в нормальных областях. А теперь оцени свой уровень.
Вообще специализация удел насекомых. Если человек знает один язык\технологиях, то он - макака вне зависимости от зп.

>>21438

>два аккаунта с положительной кармой


Положительная карма на хабре - зашквар. Адекватные люди все с отрицательное. Хабромакаки в основном братьев по разуму плюсуют
126 1123528
Недавно решил написать мини проектик на Go. Кароч мне нужно место где выместить зло

Тезисно:
- Роберт Пайк - пидор
- Разрабы самого go в целом - долбоебы каких мало
- Комьюнити go - самое макаконасыщенное после комьюнити js
- Язык изобилует уебанскими решениями, которые дауны яростно отставивают

GOPATH мог быть придуман только долбоебом. Мудацкое, неудобное и бесполезное решение. Все бы хорошо если бы оно было опциональным. Но, нет оно жестко захардкожено, потому что ятакскозал! Даунята активно защищают такой подход. Если тут комуто GOPATH нравится - подойдите ближе к сцене, я поссу на ваши лица.

gofmt - Революционный удобный тул!! - заорете вы. Пиздец вы дауны - отвечу я. Автоформат есть в любой IDE к любому языку вот уже 30 лет. Но вот жестко захардкодить уебанские, неправильные, неудобные настройки додумались только гоферы-даунята.

Открывающиеся скобки только на той же строке - Ебаный кромешный пиздец. Есть общеизвестный факт: так скобки ставят только билюбознательныекак минимум люди. Натуралы ставят скобки на новой строке потому что преимущества такого подхода очевидны. Но так как авторы go - поголовно состоят в ЛГБТ сообществах и соответственно любят хуйцы, то они блять ЗАХРАДКОДИЛИ скобки как им нравится. Хочешь писать как натурал? А хуй тебе - код не скомпилится.

Путь к репам прям в коде - например import "github.com/go-chi/chi". Ну и ебланы. А если завтра гитхаб накроется? Менять исходники? Дебики блять. Ну ладно, гитхуб напрядли накроется, но более малоизвестных хостинг - изи

В остальном пока язык устраивает, http сервер, роутинг, sql из коробки + язык дизайнился под бекенд, для моего проекта хватает.

>>19525

>жаваскрыпт мидл кун


Угарнул. Сеньйор джиес примерно равен джуниору в нормальных областях. А теперь оцени свой уровень.
Вообще специализация удел насекомых. Если человек знает один язык\технологиях, то он - макака вне зависимости от зп.

>>21438

>два аккаунта с положительной кармой


Положительная карма на хабре - зашквар. Адекватные люди все с отрицательное. Хабромакаки в основном братьев по разуму плюсуют
127 1123545
>>23528

>GOPATH мог быть придуман только долбоебом. Мудацкое, неудобное и бесполезное решение. Все бы хорошо если бы оно было опциональным. Но, нет оно жестко захардкожено, потому что ятакскозал!



В смысле захардкожен? Всегда можно переопределить.

>>23528

>Открывающиеся скобки только на той же строке


Кажись, в джаве аналогично принято ( конечно можно по-своему, но желательно именно так). А ты открой питон, еще сильнее забугуртишь.

>>23528

>Путь к репам прям в коде


Не совсем так. Он у тебя по этому пути скачается, а дальше будет просто лежать в GOPATH/src/github.com/go-chi/chi
Да, если твой проект зависит от другой библиотеки, ты залил его на гит, а потом путь поменялся, то будут проблемы.
128 1123558
>>23545

>В смысле захардкожен? Всегда можно переопределить.


Лол. В смысле он есть и проекты должны лежать в нем. А я хочу чтобы рабочий проект на go лежал в одной папке, а личный в другой, а в третьем проекте у меня только часть на go и я хочу чтобы она лежала вместе с проектом. Ну т.е. стандартный кейс.

>Кажись, в джаве аналогично принято ( конечно можно по-своему, но желательно именно так). А ты открой питон, еще сильнее забугуртишь.


Мне плевать как у джава-петушни принято. В своих проектах я пишу как считаю нужным, в рабочих пишу как принятов в проекте. Да и в джаве это лишь рекомендация, а уебанских рекомендаций я не придерживаюсь, в своем коде на джаве ставлю скобки на новой строке.

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

>Не совсем так


Да, ты прав. Но всеравно так себе идея, выглядит уж точно не красиво
129 1123651
>>23558

>выглядит уж точно не красиво


По-моему дело не в том, что "не красиво", а в том, что когда тебе понадобится по какой-то причине сменить вендора (ну, например скачивать пакеты в CI со своего локального зеркала репа), ты как бы немного соснешь хуйца и пойдешь городить костыли. Самое смешное, блядь, что уже дохульон лет, как это проблема решена (хотя бы у той же джавапетушни с мавеном), уже найдено корректное, блядь, решение проблемы зависимостей и сборки проекта - но нет, нахуя нам это, давайте лучше сделаем гопатх и урлы в коде. Это просто пиздец. И с дженериками один-в-один та же ситуация. Черви-пидоры просто.

другойанон
130 1124723
>>21933
А что посоветуешь на каждый день из своего списка?
131 1125264
Играем в игру. Блиц вопрос-ответ любой технический вопрос на тему языка Go.
132 1125374
>>25292 (Del)
Ненужно.
133 1125790
ИТТ

Хочу сделать на Go систему на основе блокчейна для поддержки свободной журналистики: факт-чекинг, пруф-ридинг и поддержка свободных журналистов посредством оплаты востребованных публикаций через любую валюту. Вопрос: стоит ли для этих задач брать именно Go? Мне кажется, что это отличный выбор, но может быть есть инструменты получше для блокчейн сервиса.
134 1125794
>>25790
На чем написан ethereum?
135 1125797
>>25794
На Go.
136 1125833
>>25264
Итак, такой вопрос, почему по супер развивающемся языку, всего 1700 вопросов в неделю а по тому же питону 6000?

https://stackoverflow.com/tags
137 1125834
>>25833
Тьфу 170 а не 1700
15123634400810.png45 Кб, 247x250
138 1125853
>>25833
>>25834
Потому что этот супер язык не нужен?
139 1125877
Go это такая быстрая и красивая замена питона+асинкио для написания чятиков. Ну ещё на хайпе случайно докеры на нём сделали. Дискасс.
140 1126035
>>25833
го выстрелил в последние три года, а статистика ведется со времен основания сайта.
141 1126041
>>26035

> вопросов в неделю


Неправильно ты маняврируешь, нужно говорить что го такой простой и понятный что по нем и спрашивать нечего.
142 1126071
>>26041
Так и есть, лол.
15126670129980.jpg18 Кб, 320x320
143 1126154
Для чего хорош го, а где его лучше не использовать?
144 1126204

> хорош го


Асинхронные чятики, сервера обрабатывающие потоки мелких сообщений.

> не использовать


Там где неприемлим гц, там где охуенно нужны дженерики и прочий хайлевел.
Screenshot from 2018-01-26 01-56-30.png183 Кб, 1920x1050
makefile, make, yarn, glide, go 145 1126294
Добрый день, анон, фронтедер на связи.
Пытаюсь развернуть проект, чтобы посмотреть, как взаимодействует реакт с го, в будущем проекте пригодится
https://github.com/olebedev/go-starter-kit
установил golang, прописал gopath, тестовая прога получилась (hello world), в общем, когда прописываю make install получаю хуйню, как на пике. Гуглеж ничего не дал, все зависимости, насколько могу судить, установлены.
Yarn установлен глобально, glide установлен глобально, просто, почему-то, не хочется видеть @yarn и @glide и иже с ними.
Если просто прописываю yarn install && glide install, все проходит, но, опять же, make server выдает хуиту.
Гуглеж не помог, в чем может быть дело?
Спасибо.
146 1126312
>>26294
Не нужна тебе, Вовка, такая машина
147 1126329
А просто glide запускается?

И что будет, если ввести make glide ?
148 1126333
>>26154
Смотри, rule of thumb: Если твой софт будет крутиться на сервере или в виде демона или в виде консольной утилиты, то его стоит писать на Go. Если твой софт требует GUI, то подумай, может быть ты можешь сделать интерфейс на основе веба, тогда браузер станет интерфейсом для твоей программы.
149 1126334
>>26294
Можешь показать мейкфайл?
151 1126337
>>26335
Точно, туплю. Попробуй

go get ./...
152 1126341
>>26337
Поясни подробнее за `go get ./...` фронтендеру, который первый день с го работает.
153 1126351
>>26341
Это значит "установить зависимости всех пакетов внутри текущей директории.
154 1126353
>>26351
Не помогло, мейк то же выдает.
Попытался новую версию ноды -- чот не то.
Такое чувство, что какой-то ВАЖНЫЙ компонент при установке го или мейка пропустил.
https://medium.com/@patdhlk/how-to-install-go-1-8-on-ubuntu-16-04-710967aa53c9
Это корректный мануал? За исключением GOROOT
155 1126365
>>26353
Ну тебе еще надо glide поставить и походу yarn тоже. Короче ставь!
156 1126371
>>26353
Тебе же явно пишет, что проблема не в го
Поставь glide
Когда поставишь, проверь, запускается ли он командой glide
157 1126450
>>26333
С гуй приложениями все понятно. А что насчёт серверных приложений? Го байтоебский же язык. Какого типа приложения можно писать с помощью го?
158 1126584
>>26371
>>26365

>Yarn установлен глобально, glide установлен глобально, просто, почему-то, не хочется видеть @yarn и @glide и иже с ними.


Если просто прописываю yarn install && glide install, все проходит, но, опять же, make server выдает хуиту.
159 1126595
Знатоки Пщ, расскажите, пожалуйста, что в этом Пщ хорошего, и, главное, что плохого. Для каких областей программирования этот Пщ предназначен, а для каких нет/не очень?
160 1126600
Речь не про установку
В консоли напиши glide
Он запустился?
161 1129428
Антон, подскажи, как правильно обработать строку "12753 FGGFDN", в массив нужно отправить только данные до пробела, все что справа от пробела выкинуть, данные справа от пробела имеют разную длину и значения.
162 1129432
>>29428
Строку в слайс, из слайса новый слайс с параметрами начала и старта?
164 1130657
>>29432
>>30472
а регулярки в голанге не в моде?
165 1131088
>>30657
регулярки там где хватит сплита?
166 1131105
>>30657
Надо делать микросервис с REST API
167 1132066
Котаны, расскажите, какие must-have тулзы надо иметь для разработки на go в 2018?
- пакетный менеджер или GOPATH + go install наше все?
- управление версиями компилятора или /usr/bin/go норм?
- фреймворк для tdd или стандартного t за глаза?
168 1132078
>>32066

>какие must-have тулзы надо иметь для разработки на go в 2018?


>go


>2018


47 хромосому.
169 1132079
>>32078
go это новый php, проще говоря стало дохуя вакансий на нем и платят хорошо. Стало быть любить го не нужно.
170 1132098
>>32079

> >47 хромосому.


>go


>дохуя вакансий


>платят хорошо


У тебя уже есть главная тулза - поздравляю.
171 1132109
>>32098
Ты можешь опровергнуть эти высказывания?
172 1132200
Пацаны, в тред таки врывается тот самый Юмпутун, я тут смотрю вы вообще забыли про Голанг, всего 10 тредов за 4 года, не очумели ли, не изучать язык 21 века? Хер я вас позову на свое радио-т.
173 1132582
>>32079

>go это новый php


Ебнутый? Ты хотя бы сравни эти два языка. PHP - высокоуровневой язык с сильным ООП. Го - низкоуровневной. В нем даже классов нет. Это как Си. В вебе нет места Си.
174 1132586
>>32200

>радио-т


Редкостное говно, 90% тем - го, эпл, пиар какой нибудь параши.
175 1132673
>>32582
Я не сравниваю языки с техническое точки зрения, я сравниваю степень говноедства основной массы пользователей.
176 1132682
>>31088
ну хуй знает. А зачем тебе остальные подстроки, полученные в результате сплита?
177 1132744
>>22034
странная пикча. php 7.1+ в семь раз быстрее питона в вебе, а на пике это не так
178 1132877
>>32744

>php 7.1+ в семь раз быстрее питона в вебе


Пыходаун as is.
180 1132904
>>32894
Лол, я же говорю, пыходаун.
181 1132911
>>32904
По существу подискутировал, молодец
182 1132914
>>32911
О чем с дебилом говорить то? Его нужно просто обоссывать.
image.png66 Кб, 350x200
183 1133243
Анон, я честно пробовал такое загуглить, но чего-то даже хз как нормально. Хочу, собирать инфу с разных ресурсов (ну там обрабатывать и все такое) и переправлять в другой серивис, так вот, собирается это все несколькими горутинами допустим раз в 30 секунд каждая + время на обработку и я хочу чтобы отдельная горутина копила это все допустим минуту и отсылала.
Есть ли для этого адеватный паттерн/пример/туториал_для_чайника ?
184 1133563
186 1133851
Golang уже сколько существует? 9-10 лет? А большого распостранения он так и не получил. Из важных програм, написанных на Go, я знаю только Docker. Более того хайп уже года два-три идёт на убыль. Ничего нового в языке не появляется. Даже Java до сих пор развивается. А Go упёрся в границы примитивного мышление своих создателей. Они так и не смогли generics в язык ввести. До сих пор надо использовать кодогенератор. Да это просто пиздец какой-то! Говно этот ваш Go, сраное, вонючее говно! А те, кто его жрут - пидары, ублюдки и говноеды!
187 1133860
>>33851
Да не бомбит у меня!
188 1133870
>>19389 (OP)

Тут на блокчейн платформе для распределённых приложений раздрают токены всем гитхаб юзерам, которым больше года: https://github.com/GenesisCommunity/go-genesis.
Уже эфир обгоняет.
Что думаете, ананасы?
189 1133874
>>33870
что терминатор 5 - параша
190 1133878
Поясните что здесь происходит

[code="go"]
func (c Container) Put(elem interface{}) {
c = (c)[0]
}[/code]

(
c)[0] <- что это за хуйня, блять?
191 1133880
>>33878
Блять, макаба ебаная https://pastebin.com/5Er4KbZJ
192 1133889
>>33880
Как мы то твоему должны догадаться что такое Container?
194 1133900
196 1133903
>>33901
А зачем там скобки?
197 1133905
>>33903
Из-за приоритета операторов.
Взятие индекса имеет больший приоритет, поэтому чтобы сначала разыменовать, а потом взять индекс добавляются скобки.
198 1133908
>>33905
Спасибо.
200 1133938
Такой вопрос:
Я запускаю из кода процесс
cmd := exec.Command("fbi", "-d", "/dev/fb0", "-T", "1", "-noverbose", "-a", "yoba.png")
if err := cmd.Run(); err != nil {
// panic(err)
}
Как мне получить id этого процесса чтобы потом убить его?
cmd.Proccess.Pid возвращает какое-то левый id.
201 1133941
>>33938
В гугле забанили?
https://play.golang.org/p/zU_cucDb2Tq
202 1134000
>>33941
Это только с Start() работает? С Run() не работает.
2018/02/07 09:53:41 failed to kill: os: process already finished
203 1134003
>>34000
Ну ты в глаза долбишься? Почитай документацию-то или хотя бы ошибку.
Run() запускает и синхронно дожидается выполнения. Ошибка тебе говорит о том что ты пытаешься прибить процесс который уже закончился. А он ясен хуй закончился, потому что ты вызвал метод, который дожидается завершения процесса.
204 1134011
>>34003
Хорошо, тогда такой вопрос. Я вызываю определенный процесс с помощью Run(). После запуска он висит и в определенное время мне нужно его убить. Как это сделать?
205 1134018
>>34011
Что значит висит? Статус какой?
206 1134021
>>34018
Ну он работает. fbi - это утилита, которая передает во фреймбуффер картинку. Покуда процесс работает картинка будет отображаться. В определенный момент мне нужно сменить картинку, для этого я собираюсь убить процесс со старой картинкой и запустить с новой.
207 1134028
>>34021
Вероятно он форкается сам. Кури доки. К го треду это отношения не имеет.
208 1134031
>>34028
Да как не имеет-то? Я в коде запускаю стороннюю программу. Получаю ее PID. Потом с помощью sudo kill <PID> пытаюсь ее убить, а у меня это не получается потому что PID левый, а запущенная программа продолжает работать. Go мне дал PID какой-то хуйни, а не того процесса, который я запустил. А ты говоришь не имеет отношения.
209 1134039
>>34031
Блять, какой же ты тупой. Перечитай еще раз все что тебе уже написали и уебывай.
210 1134040
>>34031
https://www.kraxel.org/cgit/fbida/tree/fbi.c
На, читай исходники, мудила. Смотри как он форкается.
211 1134042
>>34040
Какие исходники, какой си? Я даже не знаю что означает "форкается".
212 1134043
>>34042
Откуда вы такие лезите?
213 1134044
>>34043
Я, например, только начал в линукс вкатываться. Откуда остальные лезут - не знаю.
214 1134045
>>34044
https://en.m.wikipedia.org/wiki/Fork_(system_call)
Почитай для саморазвития
215 1134046
>>34045
Спасибо.
216 1134074

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


exec.Command("killall", "fbi")
?
217 1134078
>>34074
Вообще подход довольно днищенский. Нормальный человек бы взял биндинги к либе и сделал обработку картинки внутри процесса.
218 1134086
>>34074
да че там, давай уж сразу, pkill f
219 1134087
>>34074
Пока так и делаю. Но между завершением предыдущего процесса и запуском нового на дисплее проскакивает консоль. Поэтому хочу сначала вывести новую картинку поверх старой, а потом закрыть старую.
220 1134095
>>34078

>Нормальный человек


>взял биндинги к либе


Какой либе? xlib? Нет спасибо.
221 1134100
>>34087
Поэтому хочу сначала вывести новую картинку поверх старой, а потом закрыть старую.
exec.Command("killall", "--older-than","1ms","fbi")
Убивает все fbi старше чем
1ms - одна милисекунда.
222 1134102
>>34100
То что нужно!
223 1134573
Привет, котоны. Запилил небольшой веб-сервер и возникла проблема. Если бинарник запускать вручную, то все работает хорошо. Если же прописать его запуск в rc.local, то вместо главной страницы я получаю
Сайт не отправил данных.
ERR_EMPTY_RESPONSE
Почему так?
15156551109652.jpg54 Кб, 604x542
224 1134590
>>19389 (OP)
Тред, можно ли с помощью Go реализовать что-то типа графической оболочки и связующего элемента для БД?
Есть БД с заказами, работниками, запросами, процедурами, триггерами и хотелось бы это все завернуть с помощью Go.
Можно ли так, подскажите соурсы или альтернативы реализации.
Спасибо.
225 1134610
>>34590
Можно с помощью веб-интерфейса. Или тебе десктопное приложение нужно?
226 1134667
>>34590
На этом тоже можно
Go + Qt + Mysql
227 1134733
>>34610
Десктоп нужно, на веб-интерфейсе уже делают люди.
228 1134741
>>34667
Будет отлично еще вариантов услышать, посмотрю каждый.
229 1134876
>>34590
https://github.com/avelino/awesome-go#gui
посмотри в списке, может что приглянется.
Под десктоп я бы делал, так по приоритету (больше -> меньше)
Native gui (C# WPF / Cocoa Obj-C) -> C++ Qt / Imgui -> Electron -> Все остальное.
Ну если, ты только с Go дружишь, можешь попробовать go-imgui (ибо go-qt уже посоветовали). Ну если честно, то go и гуй, это такое себе (вот через пару лет, можно будет глянуть, а пока мало либ).
230 1135163
Антон, скажи что там с работкой на го? Хочу побаловаться этой хипстерской хуйней, но не могу въехать. Смысл этого языка? Пилить круды? Настоящий хайлоуд? Системное проганье? Игрули? Мобилы?
231 1135175
>>35163

>Пилить круды? Настоящий хайлоуд? Системное проганье?


Вот это точно, на счет остального не знаю. Круды пилятся легко, для хайлоада подходит потому как язык компилируемый и довольно шустрый. На счет системного проганья - сам проверил, сделал несколько встраиваемых систем с использованием го. На самом деле нормальные люди пилят на си, но я не люблю си ибо он стар, неуклюж и сложен. На го все то же делается гораздо проще и быстрее.
232 1135189
>>33851
K8s, etcd
233 1135439
>>35175
Я крудописер, делаю MVP, если что-то выстреливает, то потом становится тормозным гавном потому что языки интепретируемые, смогу ли я легкостью рельсы перескачить на го? Ну так чтобы пару либ и всё работало из коробки, минимум приседаний.
234 1135449
>>35439
На счет рельсы ничего сказать не могу, но вот

>чтобы пару либ и всё работало из коробки


это про него. В первом веб-приложении, что я запилил на го я использовал всего две либы: для MySQL и для маршрутизации, остальное из коробки. MVC-модель составил сам, написал несколько функций для удобства и получился очень компактный фреймворк.
235 1136054
>>35175

> си ибо он стар, неуклюж и сложе


Сейчас системное прогонье нужно делать на Rust. В сравнении с ним Go слишком медленный.
236 1136057
>>36054
И не только системное. Вебня, игры, да все что угодно лучше на расте, чем на го.
237 1136063
>>36057

>Вебня


Нет. Как раз для веба Rust подхожит совсем плохо. Слишком низкоуровневой. Впрочем, и Go не намного лучше. На вебе правят бал совсем другие.
238 1136066
>>36063
http://diesel.rs/
Ты просто попробуй.
239 1136067
>>36066
Тьфу, блять, не тот линк.
Вот правильный: https://rocket.rs/
240 1136072
>>33870
Уже сегодня аккаунт со всеми репозиториями удален. Даже гитхаб-странички еще не обновились, лол: >>1136060
241 1136074
>>36067

>Rocket doesn't have built-in support for databases yet


ясно
242 1136079
>>36074
Ну и нахуй оно нужно? diesel во все поля.
243 1136080
>>36079
А еще ООП нету
244 1136096
>>36080
ООП не нужно. Плюс оно там есть.
245 1136400
Карочи не палите годноту, пусть жрут свою ноду )))
246 1136422
>>36080
Вместо ООПа там куда более мощная система типов.
247 1136493
>>36422

> Мощная система типов


> GO


> Отсутствие шаблонов


> Ебашу для каждого типа дублирующую функцию

248 1136520
>>36493

> Ебашу для каждого типа дублирующую функцию


> Доказываю всем что дженерики не нужны!

249 1136538

>Не нужно пиздеть про толстые бинарники, их размер значительно уменьшается одним маленьким Makefile.



Анон, просвяти про флаги для билда
250 1136546
>>36493
Вообще-то разговор про раст был. Там все есть.
251 1138466

> Готред всплывает со дна только с залетным жирдяем решившим постебаться с говноедов от скуки


> Индекс популярности пщ стремительно падает даже на фоне мертворубей


> Работодатели неспособные найти пщ кодеров готовы сами переучивать хоть скрпитодетей на го


Что-то пошло не так? Гуглу нужно ещё хайпануть малехо?
252 1138470
>>38466
Вакансий стало довольно много, поэтому и хантят. А то что вниз пошло, ну пошло и пошло. В последнее время много нового появилось, и раст и свифт. Так что неудивительно что фрагментация увеличивается.
253 1138639
>>38466
Так-так, что тут у нас? ааа, это же ТАЙОБЕ. Где всегда растет какая-нибудь ху* VB .NET, PL/SQL, SQL - programming language =), так ладно html5 еще не завезли туда.
Опаньки, внезапно падают web-oriented языки, серьезно?
Javascript - падает. Это вообще, смешно. У нас наверное все конференции теперь про VB .NET, а вовсе не про React/Angular/Vue/Aurelia/ Node/Express/Koa/Hapi/Docker/Heroku/AWS и еще 10к веб-технологий и веб-сервисов.
254 1138640
>>38639
Я еще могу понять Си растет, ибо IoT, ROS, Robotics, Embedded devices, Smart Homes, Python extensions (CPython). Но еп... JS падает, ну нах...
1509350673678.png296 Кб, 1250x2781
255 1138678
>>38640
А что не так?..
«Фреймворки» это и есть вершина айсберга, как с посраллем было.
256 1140035
Кто-нибудь сталкивался с такой поеботой в Голанде? Возникает, если в хелловорлде указать не main пакет. Должна же быть по идее другая ошибка, а тут вообще нихуя не понятно. Кстати, при первой попытке запустить с неверным названием пакета, просил установить эту самую ntvdm, после которой началась эта ошибка.
image.png8 Кб, 394x169
257 1140036
>>40035
Забыл картинку.
258 1140063
>>38640

>IoT, ROS, Robotics, Embedded devices, Smart Homes


Не в России
259 1140303
>>40036

> указать не main пакет


> линкер собрал exe без головы


> голый объектный модуль


> Мастдай определил его как 16 бинтый DOS файл и попытался запустить.


Как то так.
image.png221 Кб, 500x500
260 1141974
Анон, подскажи бест_практис по написанию высоконагруженых сервисов на Го.

Вот предположим мне надо написать сервис, который будет по одному URL отдавать одну из 400к строк. Особой выборки нет, просто по очереди отавать строку за строкой. и все это где-то 450 запросов в секунуду. Планирую взять какой-нибудь fasthttp. Строки может все в память прочту или использую MySQL просто он уже развернутый есть
261 1141975
>>41974
само собой я не прошу за меня строить, но может ты скажешь чего почитать, куда посмотреть
262 1142522
>>38466
ЙОБА-индекс то еще чудо чудес, нашел чем мериться.

Го подкупает техническими решениями которые он предоставляет, а не верой в совершенный код (особенно для веб/сетевого макакинга).
Более того его стоит любить только за то, что он плюнул в лицо ООП и не ушел в ФП (где народ тискает у другу друга за лямбды генерируя новый молодежный спаггети-код). То есть, стоит любить за старый добрый процедурный кодинг.
И пока народ натирает на всякие асинк-авейты (или калбэчит в подворотнях), гофер пишет не парясь как есть и сразу получает все асинхронно (как на самом деле и должно быть).

Ну и так же не забываем что нет никаких вирт машин и прочих чуда чудес невидимого мира (JIT-компиляции например).

В реале у го есть еще один большой скрытый плюс - когда он появился, отпала необходимость писать на джаве или упаси на node.js или питоне.
Он реально смог вклиниться в нужное место и никуда уже не пропадет (так как технически необходим, а не дань какой-то очередной моде, которая ничего и не решает сейчас на рынке)

>Что-то пошло не так? Гуглу нужно ещё хайпануть малехо?


Так вроде скоро начнут dart всем заливать в уши? Не?
Го это про другое - чисто технический выбор для нагруженных, многоядерных/процессорных систем с асинхронщиной.

Идеальный язык для веб-разработки на сегодня.
sage 263 1142575
>>42522

>Так вроде скоро начнут dart всем заливать в уши?


>Идеальный язык для веб-разработки на сегодня.


Проиграл в голос сейчас. До вашей деревни все с лагом в пять лет доходит, да?
264 1142581
>>42575
Вроде какой-то выпук и вроде старался, но нифига не понятно. Что сказать то хотел?
265 1142594
>>42522
Поясни тогда, почему Go в 2 раза медленнее пишет в файл , чем java?? Попробовал записать 200.000.000 цифр
266 1142609
Что для создания GUI используете?
267 1142614
Что такое дженерики?
268 1142667
>>42614
генераторы кода.

например захотел ты, чтобы твоя функция была универсальной к любым параметрам (которые ты задумал).
Вместо того, чтобы писать сто раз:
f Add(int a, int b)
{
return a +b;
}
f Add(float a, float b)
{
return a +b;
}
f Add(short a, short b)
{
return a +b;
}
f Add(double a, double b)
{
return a +b;
}
___
можно просто написать в том же (C++):
template<typename Type>
Type f(Type a, Type b)
{
// ну и здесь ты напр. обрабатываешь, какие-то эксклюзивные ситуации связанные с конкретным типом.
return a + b;
}
268 1142667
>>42614
генераторы кода.

например захотел ты, чтобы твоя функция была универсальной к любым параметрам (которые ты задумал).
Вместо того, чтобы писать сто раз:
f Add(int a, int b)
{
return a +b;
}
f Add(float a, float b)
{
return a +b;
}
f Add(short a, short b)
{
return a +b;
}
f Add(double a, double b)
{
return a +b;
}
___
можно просто написать в том же (C++):
template<typename Type>
Type f(Type a, Type b)
{
// ну и здесь ты напр. обрабатываешь, какие-то эксклюзивные ситуации связанные с конкретным типом.
return a + b;
}
269 1142671
>>42667
Но ведь это легко заменяется пустым интерфейсом?
270 1142675
>>42671
Ты проебываешь типобезопасность. Вместо статической проверки типов на этапе компиляции, ты получаешь проверку в рантайме, которая может покрашится.
271 1142724
>>42594
Говнокод в студию!
272 1142725
>>42667
Чтобы завести дженерики, нужно сначала завести перегрузку функций
273 1142726
>>42725
Хуйни не неси. В расте нет перегрузки функций, но есть дженерики, например.
274 1142727
>>42675
С какого перепуга будет крашется? (если конечно ты сам в условиях панику не добавишь, но паника это не "крашится")
275 1142734
>>42726
Что за новый тренд, не могут осилить перегрузку функций (ну конечно же, очередное "ненужно")
276 1142735
>>42726
Что выглядит убого.
277 1142779
>>42734
Для чего тебе нужны перегруженные функции, приведи пример.
278 1142801
>>42609
Бамп.
sage 279 1142813
>>42614
Гугли "параметрический полиморфизм".

>>42725
Неверно.
280 1142821
>>42779
Ухты, вопрос из девяностых!!!
Чтобы на однотипное действие, с разной сигнатурой функций - было одно имя.

Банально, рассмотрев перегруженные функции в API ты сразу можешь бегло понять с чем эта функция работает вообще, а не ломать голову, как там автор ее назвал.
281 1142823
>>42801
Зачем тебе гуи в 2018? Возьми браузер и пили свои формочки под каким-нибудь ангуляром (или что сегодня там в моде).
282 1142824
>>42821
Вопрос решается передачей объекта с конфигом или как в го, набором функций с разными именами.
Когда у тебя одна и та же функция решает разные задачи в зависимости от типов аргументов, это так же плохо, как использовать одну переменную для совершенно разных задач.
283 1142838
>>42724
package main

import (
"bufio"
"strconv"
"os"
)

func check(e error) {
if e != nil {
panic(e)
}
}

func main() {
f, err := os.Create("file.txt")
check(err)
defer f.Close()

w := bufio.NewWriter(f)

for i := 0; i<= 100000000; i++ {
w.WriteString(strconv.Itoa(i)+"\n")
}

w.Flush()
}
283 1142838
>>42724
package main

import (
"bufio"
"strconv"
"os"
)

func check(e error) {
if e != nil {
panic(e)
}
}

func main() {
f, err := os.Create("file.txt")
check(err)
defer f.Close()

w := bufio.NewWriter(f)

for i := 0; i<= 100000000; i++ {
w.WriteString(strconv.Itoa(i)+"\n")
}

w.Flush()
}
284 1142839
>>42838
Какой размер буфера в го и в жаве?
285 1142850
>>42823
Браузер? Программирование деградирует.
286 1142869
>>42850
Только программисты, и го тому яркий пример.
287 1142883
>>42824

>Вопрос решается передачей объекта с конфигом


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

>Когда у тебя одна и та же функция решает разные задачи в зависимости от типов аргументов


Ты понимаешь вообще для чего перегружают функции? Ты мой пост прочитай, где ты увидел что я про разные задачи говорю?? Сам придумал условия, сам опровергнул?
288 1142885
>>42883
Просили привести пример. Примера нет. Нет и предмета разговора.
Передача явного параметра удобней чем рысканье по докам в попытках разобраться какую из 30 версий метода вызывают.
289 1142891
>>42839
Java:

FileWriter actually uses its own fixed-size 1024 byte buffer. The BufferedWriter on the other hand, show that it uses and 8192 byte buffer size (default), which can be configured by the user to any other desired size.

В го по умолчанию 4096, ну если даже буффер на 2 помножить, то скорость не меняется
290 1142910
>>42675
type assertion же есть.
291 1142912
>>42910
Оно работает в рантайме. Нет нужды проверять в рантайме то, что прекрасно можно проверить в компайл-тайме. Когда ты последний раз копипастил slice tricks?
292 1142994
>>42883
Перегрузка функций - условно-абсолютное зло и антипаттерн, как и, например, гото. Это просто плохая идея. Не путай перегрузку функций с параметрическим полиморфизмом ("дженерики" на языке быдла).

Единственный оправданный кейс для перегрузки - изменение поведения в зависимости от числа переданных аргументов.
293 1143002
>>42667
Спасибо
sage 294 1143007
>>42994

>кококок нинужно!! яскозал!!

295 1143062
>>42885

>Передача явного параметра


Чего???

>в попытках разобраться какую из 30 версий метода вызывают.


Ох лол
296 1143064
>>43062
Ты уже покажешь реальный пример, где перегрузка решает проблему лучше альтернативных вариантов, или так и будешь ололокать?
297 1143065
>>42885

>Просили привести пример. Примера нет. Нет и предмета разговора.


Пример чего? Перегруженный функций? Ты совсем упоротый?
298 1143067
>>43065
Да, будь добр. Покажи проблему и как она решается при помощи механизма перегрузки.
299 1143075
>>42994

>Единственный оправданный кейс для перегрузки - изменение поведения в зависимости от числа переданных аргументов.


Ляпнул и сразу наружу весь свой опыт "программиста" вывалил.
Или джава-джун, который видел только как джависты компенсируют отсуствие дефолтного значения у аргумента, или же скрипто-макака, где толком не было реальной работы с типами.
Что же вас в раст то тянет, в системный то язык, с таким опытом??
300 1143080
>>43075
Если уж на то пошло, то в расте нет и дефолтных значений. Есть только Default трейт, который один хер требует явной передачи параметра. varargs в целом удобная фича, когда она используется в стиле ...rest.
301 1143084
>>43064
Каких альтернативных вариантов? Ну раз ты такой способный, на:
Что лучше:
save(User)
save(id, name)
save(ContainerUsers)
save(WebForm)


или же:
saveFromUser(User)
storeFromNativeData(id, name)
preserveFromUserList(ContainerUsers)
persistenceFromWebForm(WebForm)


Так что тут лучше смотрится? Одно-именный метод, выполняющий из разных "структур данных" но одно сохранение, или же маскарад наименований, которые делают одно и тоже, но не факт что называются одинаково (и не факт что будут начинаться с "save")
302 1143085
>>43080
Ну парни вообще отличились, что я могу сказать. С вечным желанием сделать что-то необычное, показать свою уникальность - они, конечно, справились. Но нужно ли это "не такое как все" изящества на рынке - конечно нет. Люди продукты пилят, а не стараются перед друг другом отличиться.
Это имхо, а так конечно же сейчас больше зависит от того, сколько хайпа может зависти на тот или иной язык.
303 1143088
>>43084
fn<T: Into<User>> save(user: T)
То что ты не знаешь как нормально можно решить проблему и при этом сделать её расширяемой, не означает что предложенное тобой говнорешение хорошее.
304 1143091
>>43088
Я специально добавил разные структуры данных, которые не могут быть использованы с обобщением (раз уж пугает слово "дженерики") ибо алгоритм работы разный, так же эти данные не могут быть "обернуты" в полиморфизм.

Так что уноси свое говно, перегрузка важная вещь и реально делает код удобнее в использование (если ты не джун-диверсант) реально бывают случае, когда добаляется новый тип данных и нам нужно только перегрузить функцию (где под капотом скармливаем нативному методу типа save(id, name)).
305 1143092
>>43091

>Так что уноси свое говно


Надеюсь ты понял, что обобщение тут не работает, это понимание придет со временем, когда начнешь по-настоящему программировать, а не учить один лишь синтаксис у языков, чтобы казаться умным.
306 1143094
>>43091
Мань, в твоем случае надо лезть в модуль где твой save лежит и добавлять частный случай. В том варианте который показал я ты просто где тебе нужно пишешь реализацию для своего типа данных.
Например
impl Into<User> for (i32, String)
чтобы скармливать в метод кортежи вида
save((32, "shit"))
307 1143100
>>43094
Хватит маневрировать, я показал как удобно читается API с перегрузкой, с разными структурами данных. И что это будущее наступило еще в годах восьмидесятых. Нам глубоко пофигу - частный там случай или нет, нам важно куда-то "заперсистить" имеющиеся у нас данные и мы лишь выбираем подходящую сигнатуру (зная заведомо что наш сервис-объект отвечает за сохранение).

Понятно что если ты увидишь
saveFromUser(User)
persistenceFromWebForm(WebForm)

Первое что будет в голове - "эти два метода делают одно и тоже или нет??" - и вот тут ты полезешь в доку, чтобы перестраховаться, ведь перегрузка ненужна.

И хватит меня троллить (хотя не исключаю факта что ты просто тупой), в жизни не думал что буду кому-то объяснять - какой удобный кейс - эта перегрузка
308 1143104
>>43100

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


Если ты реал программист, а не синтаксический червь, расскажи, где вам такое в уши заливают, что вот перегрузка зло, исключения зло, ...все зло, а писать когда как в 70-е круто и модно?
309 1143107
>>43104

>а писать когда как в 70-е круто и модно?


фикс:
а писать код как в 70-е круто и модно?
310 1143108
>>43100
Тебе уже объяснили, что твой костыль хуевый и решается нормально другими средствами.
По факту в приведенном тобой примере метод сохранения делает одну полезную вещь: кладет какие-то данные, предположим, в базу. При написании нормального ортогонального кода, ты отделяешь все юз кейсы, связанные с конвертацией данных, для того, чтобы метод сохранения непосредственно данных не зависел от того, что ты решил добавить новую форму.
311 1143186
>>43007
-> /b

>>43075
Ты совершенно не понял, о чем речь. Можешь перечитать пост, можешь не перечитывать. Кстати, это тред про го, а не про раст.

>>43084
Вот это тот самый ужас, о котором я говорил. Скриптоманькам, впрочем, не привыкать. Кроме того, уровень владения английским как бы намекает на уровень владения навыками программирования.

>>43104
Перегрузка и исключения (aka "гото") - это как раз артефакты из 70-ых. С тех пор прошло много времени.
312 1143187
>>43108
Поддвачну вот этот пост и отмечу, что это буквально первая вещь, которой учат в любой книжке или курсу по написанию программ.
313 1143194
Парни, что вы думаете насчет зарплат у гоферов? (~+15% java, python...) Чому так? Хайп? Зачем дяде платить больше за хайп, если его интересуют только $? (не гугл офк)
314 1143195
>>43187
Сам себя похвалил? Узбагойся
44444.jpg23 Кб, 600x600
315 1143212
>>43108
Тебе показали для чего перегрузка нужна, а не как нужно апи писать.
Если тот "сэйвер" не имеет состояния, он как раз выполнен в лучших традициях современного программирования ("анемичная модель предметной области").
Но, опять же, тебе показали для чего нужна перегрузка с разными структурами данных, хера ты там додумываешь какое-то свое поведение какому-то псевдо-коду и рассуждаешь потом, что это плохо, ты вменяемый вообще?? (если настолько упорот, замени save на build и будет тебе билдер, но опять же, не маневрируй, тебя тут учат именно перегрузке)

А теперь важное (реально теорема и доказательство)
Перегрузка не нарушает никаких таинственных знание по проектированию, банально компилятор делает тоже самое - добавляет к именам функций некий свой хэш (зависит от указанных типов в аргументах) типа "save$isl()" или "save$kjLL()" (теперь имя функции это не только его прямое имя но и типы аргументов - то есть сигнатура)
доказательство
Никак это не может повлиять на проектирование (и быть антипаттерном каким-то) потому, что абсолютно без разницы - определяется ли метод по одному только имени - или же по сигнатуре (имени и типам в аргументов)
316 1143214
>>43212

>метод по одному только имени - или же по сигнатуре (имени и типам в аргументов)



То есть (разжую для самых самых) в твоем расте или в го идентификатором функции является это:
saveFromSome(int, float)
а в нормальных языках это:
save(int, float)

И никак это ни на что не влияет. НИКАК
317 1143218
>>43194
Вероятно один гофер делает полезного кода больше, чем мартыхи наворачивающие один фреймворк на другой усложняя проект на пустом месте.

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

Если одним программистом можно заменить целую команду месителей грязи - то я бы ему платил +15-30% $
318 1143270
>>43212
Ладно мань. Накопишь опыта, поймешь что не так в твоем видении мира. Пока что ты предъявил говнокод в качестве обоснования фичи, которую сейчас не тащат в современные языки. Мы тут все прекрасно знаем как работает перегрузка и многие ей пользуются в тех же скриптовых языках повсеместно. Но это не значит что от этого она стала хорошей идеей.
sage 319 1143283
>>43195
Чини детектор, обиженный.

>>43212

>это хороший стиль проектирования, потому что под капотом компилятор делает то же самое


Гениальная цепочка рассуждений, тут только в /me отправлять. Ты, конечно, молодец, что уже в школе интересуешься всем, за хайпом следишь и все такое, но этого недостаточно, чтобы не быть школотроном.
320 1143351
>>43218
Этот манямирок гоферов.
321 1143445
>>43084
А в го для такой задачи разве не используется интерфейс?
322 1143446
>>43445
Использует, но это слишком сложно для адептов говнофичей.
323 1143695
>>43270

>Накопишь опыта


>в твоем видении мира.


Тебе привели железные доказательства того, что два различных идентификатора функции НИКАК НЕ ВЛИЯЕТ НИ НА ЧТО (только на восприятие, если ты неопытный программист и не понимаешь что такое сигнатура функции)

Так что хватит маневрировать, не позорься. Просвещайся, пока мне не лень тебя кормить.
324 1143702
>>43351

Я соглашусь с тобой сразу как будет норм ответ на >>43194

Пока топовый ответ: >>43218

Язык убогий, нормальных адекватных облегчающих вещей нет -> качество/скорость будет ниже, но зачем платить больше за это.
325 1143712
>>43186

> С тех пор прошло много времени.


Лол блять. Все эти ваши охуенные абстракции до сих пор внутри живут на сишке и этих goto. Ебаные макаки везде.
326 1143746
>>43712

>до сих пор внутри живут на сишке


Ты не поверишь, но сишка до сих пор компилируется в машинный код, машинный код до сих пор исполняется на процессорах, процессоры до сих пор из транзисторов, ну и вообще там до сих пор электрончики туды-сюды прыгают, прикинь? Ты не понимаешь значение слова "абстракция", но для байтослесаря это нормально, так что не парься; байтослесарь - не программист.
327 1143748
>>43695
Тебя уже даже в других тредах детектят и обоссывают, лол, кто бы говорил про "не позорься". мимо
328 1144062
>>43746
Лол, как раз наоборот. Человек, пишущий на высокоуровневых языках не программист.
329 1144152
>>44062
Помню в юности, встретил такого "программиста", он мне рассказывал, что даже ассемблер это все фигня, а реал тру пишут на машинном коде и я развесив уши слушал и верил.

Как же приятно встретить таких специалистов тут.
330 1144153
>>43748
Лол, спрятался и тихо сам собой бугуртит, слили уже тебя, иди в другой тред лови фантомов.
sage 331 1144248
>>44153
Чини детектор, неудачник.

>>44062
Ну, хорошо, слово "разработчик" подходит больше, уговорил. От "программиста" веет проперженными труханами и усики-пропуск-в-трусики.
332 1145637
>>22218
Уже давно ходит тема, что использование = ис бед бай дизайн из-за того, что оператор сравнения есть ==, я думаю лет там через 10 все переменные будут чисто через : юзаться
333 1145674
>>45637
Жирный, уйди.
334 1145679
>>22218
чтобы компилятор различить объявление от присввоения. Хуй знает почему нельзя было сделать автоматически, наверное чтобы неявностей по типу очепятался-проебал пересенную/содержимое было меньше
335 1145682
>>45679
Блять, ну вы и мудаки.
:= это оператор для объявления переменной с автовыводом типа. Присвоение делается через =
336 1145685
>>45682
а я, блять, что написал, мудила ты пиздоглазая
337 1145686
>>45685

> s := "2"


> s := toInt(s)


Вот зачем.
338 1145706
>>45686
ну тогда объясни почему нельязя было это на обычное присвоение повесить
339 1145707
>>45706
Мань ну ты че?
Потому что в приведенном мною примере используется shadowing. Если бы там было простое присвоение, ты бы получил ошибку компилятора о том, что ты пытаешься стринг в инт пихнуть.
340 1145735
>>45707
нет, не получил бы, просто сменился бы тип. Как в скриптопараше сделано.
341 1145736
>>45735
Это не скриптопараша. Здесь ты типы указываешь явно. А значит и смену типа ты тоже указываешь явно.
342 1145738
>>45735
Потому что в го статическая типизация
>>45686
Разве этот код будет работать? Тип присваивается единожды
>>45706
Чтобы различать, когда у нас создается новая переменная с типом, который возвращает функция, и переменная, у которой тип известен.
343 1145740
>>45738
Будет, но придется новый лексический скоуп добавлять
https://play.golang.org/p/PzsEzv6LhrK
344 1145762
>>45740
Ну так будет, но это немного не тот случай.
sage 345 1145784
>>45738

>статическая типизация


Ненужное говно без задач. Сажи треду.
346 1145788
>>45784
Одноизвильный дебилоид подъехал. Куда уж мы без вашего мнения-то.
sage 347 1145807
>>45788
Даже в Java планируют отказаться от статической типизации к 12й версии, потому что это уже давно устарело.
348 1145808
>>45807

> Java


> Считать говно уровно кобола хорошим примером

349 1145819
>>45807
Шизик, ты почему режим не соблюдаешь? Опять какой-то бред несешь.
932309542.jpg22 Кб, 413x395
350 1145859
00000000000000000.png150 Кб, 500x441
351 1145984
>>45807
Хоть чел и толстит, но все же, я тоже стал задумываться - нафига статическая типизация. Нет, конечно, строгая типизация нужна (чтобы не складывать строки с числами), но нафига статическая?

>Якобы она помогает ловить самые страшные ошибки и прям еще на этапе компиляции.


Блин, да так и так тесты писать. Типа нужно больше в тестах страдать? Да нет, зачастую в динамических языках тесты еще короче, за счет динамизма исполнения (и не нужно байткод или рефлексию теребить ради динамизма). И если ты пишешь функции через if/switch, где сразу отбрасываешь все кроме нужных типов, то вообще заморачиваться не нужно (да и никто никогда в этих юнит тестах особо и не заморачивается). И да, на всякие null ситуации статик-господам тоже нужно делать проверку (прям кусочек динамической радости в их суровом псевдо-статичном мире).

>Якобы помогает в больших проектах.


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

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

PS.
Ну еще и эта мода с автовыводом типов - без IDE вообще не разобраться что там вернулось с функции, так что визуально получается та же динамическая причуда, но со страданиями (бегаешь мышкой по коду и гладишь каждую переменную, хотя ты вроде как взял язык со статик типизацией).
00000000000000000.png150 Кб, 500x441
351 1145984
>>45807
Хоть чел и толстит, но все же, я тоже стал задумываться - нафига статическая типизация. Нет, конечно, строгая типизация нужна (чтобы не складывать строки с числами), но нафига статическая?

>Якобы она помогает ловить самые страшные ошибки и прям еще на этапе компиляции.


Блин, да так и так тесты писать. Типа нужно больше в тестах страдать? Да нет, зачастую в динамических языках тесты еще короче, за счет динамизма исполнения (и не нужно байткод или рефлексию теребить ради динамизма). И если ты пишешь функции через if/switch, где сразу отбрасываешь все кроме нужных типов, то вообще заморачиваться не нужно (да и никто никогда в этих юнит тестах особо и не заморачивается). И да, на всякие null ситуации статик-господам тоже нужно делать проверку (прям кусочек динамической радости в их суровом псевдо-статичном мире).

>Якобы помогает в больших проектах.


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

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

PS.
Ну еще и эта мода с автовыводом типов - без IDE вообще не разобраться что там вернулось с функции, так что визуально получается та же динамическая причуда, но со страданиями (бегаешь мышкой по коду и гладишь каждую переменную, хотя ты вроде как взял язык со статик типизацией).
352 1145987
>>45984
У меня к тебе пару вопросов:
1) Какой максимальный объем проекта, который ты писал? В строках кода.
2) Писал ли ты когда-нибудь на хаскеле или другом подобном языке, где система типов гораздо более мощная, чем то говно, которое есть в жаве
353 1146001
>>45987

>1) Какой максимальный объем проекта, который ты писал? В строках кода.


С линейкой не бегаю, да и как считать когда у тебя на пол страницы портянка из доков (особенно в интерфейсах) или в чужом проекте (наверное любители помериться ЧСВ придумали какую-то линейку для системы контроля версий, но я не в курсе)? Скажу, что пишу более 12 лет (прям работаю, а не там в школе бэйсик в тетрадке рисовал или дома игрался), проекты были разные и очень большие и видел всю энтропию с которой обрастает любой код (зачастую из-за проблем документации и каких-то разъясняющих моментов для всей команды).
Так что тут вопрос скорее в том, как решать проблему возрастающей сложностью и то что статические типы не особо тут и помогают (так как на большой проект у тебя будет херова туча абстрактных сущностей, которые ты тупо в голове не удержишь чтобы даже понять, а в динамик языке у тебя всегда по сути будут либо контейнеры (перечисления), либо дата-структуры (данные), либо примитивы - чаще строки, булев и целые числа).

>2) Писал ли ты когда-нибудь на хаскеле или другом подобном языке, где система типов гораздо более мощная, чем то говно, которое есть в жаве


Чем тебе более "мощная" система типов спасет? Как я уже говорил, проблема и не в типах, а в возрастающей сложности. Единственное что тут может спасти - это обобщаться сложность (абстрагировать, упрощать, сводить к общему). Есть ли в хаскеле инструменты или парадигмы ФП позволяющие делать это? В ООП есть (это особо ярко видно когда в методах почти декларативно (можно сказать - на боле высоком уровне) делаются вызовы какие-то объектов и таких вызовов не много и иногда даже нет управляющих конструкций)
354 1146009
>>46001
...один момент.
Я не хочу сказать, мол вот что-то есть в ООП, а в ФП этого нет и типа плохо, "зафасадить" можно в любой парадигме это и так понятно. Я как раз спрашиваю есть ли какие-то свои другие инструменты в ФП? Потому что если нет, то ничем это от того же ООП не будет отличаться (куева туча сущностей и сидишь собираешь пазл по этим типам)
355 1146010
>>46001
Тебе определенно стоит изучить ФП. Расписывать не буду - раз у тебя 12 лет опыта, то ты гуглом пользоваться, наверное, умеешь. Сейчас со стороны прям очевидно, что у тебя достаточно узкий кругозор не хочу обидеть, извини, если что.

мимо
356 1146012
>>46010
Дваждую. Это как пытаться объяснить нахуя нужен дворак, человеку который привык пользоваться кверти.
357 1146029
>>45984

>Пока очередная жесть компилится - скрипт уже падает в райнтайме


Пофиксил.
Срач динамика vs статика - это надежды против гарантий, почему последнее в разработке крупных систем предпочтительнее, надеюсь, объяснять не нужно. Наличие null в текущем виде - очевидный проеб для современного языка, дизайнеры того же свифта оказались более обучаемыми.
Я вообще охуеваю от того, что эта тема так часто поднимается. Разве не очевидно, что если что-то можно спихнуть на надежный кудахтер, который не ошибается и не устает - то это сделать нужно? Никто же не спорит, что ci/cd - это пиздато. Перенос проверок из райнтайма в компайлтайм - то же самое.
358 1146031
>>46029
Более того, тесты придуманы не для того, чтобы проверять типы, чем должен заниматься компилятор.
Тесты придуманы для того, чтобы проверять логическую корректность кода, дизайнить интерфейс до его реализации и для дублирования логики другими словами, опять таки для увеличения надежности.
359 1146033
>>46010
Ну так объясни. Я прекрасно имею представление о ФП, я просто не понимаю, что ты хочешь там выдать за серебряную пулю?

На самом деле ни ООП и тем более ни ФП (без обид, но многие ФП-сторонники и не щупали больших проектов) не имеет инструментария для решения задач такого уровня.

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

Можно ли так сделать (обобщить/абстрагировать) это в ФП до такого уровня - да конечно можно, можно и в ООП. Но возвращаясь к нашей теме - статическая типизация тут роли не играет вообще и никак не поможет.

PS Если ты реально хочешь проникнуться в мою мысль, а не просто с пеной у рта отстаивать свое мировоззрение, приведу один пример:
в какой-то игре (по-моему майнкрафт, деталей не помню) был баг, который обнаружили игроки. Смысл его заключался в том, что если убить какого-то осла с лутом, под каким-то зельем и определенными вещами в луте, переходя через какой-то портал (ну буквально чуть ли не в определенной фазе луны) - то с юнита(осла того) выпадал двойной лут.

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

Так что статическая типизация, это скорее старый хак для удобного использования памяти (аллокации её) и не более, так как в сложных системах, проблема типов уходит далеко на второй план. А если кому-то в 2018 еще нужна помощь в том, чтобы компилятор их ругал когда они передают строку, а не число в метод - то это уже какой-то аутизм (ну серьезно если это число в строке, то метод бы сам привел к нужному ему типу и вычислил или же отругал в противном случае если аутист не проверенные данные и просунул невалидное число).

Не хочу холиварить, но за 12 лет опыта, можно проанализировать весь опыт и понять - что писать приложение быстро и просто - куда важнее долбежки в типы, рефлексию, дженерики и паттерны (некоторые).
359 1146033
>>46010
Ну так объясни. Я прекрасно имею представление о ФП, я просто не понимаю, что ты хочешь там выдать за серебряную пулю?

На самом деле ни ООП и тем более ни ФП (без обид, но многие ФП-сторонники и не щупали больших проектов) не имеет инструментария для решения задач такого уровня.

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

Можно ли так сделать (обобщить/абстрагировать) это в ФП до такого уровня - да конечно можно, можно и в ООП. Но возвращаясь к нашей теме - статическая типизация тут роли не играет вообще и никак не поможет.

PS Если ты реально хочешь проникнуться в мою мысль, а не просто с пеной у рта отстаивать свое мировоззрение, приведу один пример:
в какой-то игре (по-моему майнкрафт, деталей не помню) был баг, который обнаружили игроки. Смысл его заключался в том, что если убить какого-то осла с лутом, под каким-то зельем и определенными вещами в луте, переходя через какой-то портал (ну буквально чуть ли не в определенной фазе луны) - то с юнита(осла того) выпадал двойной лут.

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

Так что статическая типизация, это скорее старый хак для удобного использования памяти (аллокации её) и не более, так как в сложных системах, проблема типов уходит далеко на второй план. А если кому-то в 2018 еще нужна помощь в том, чтобы компилятор их ругал когда они передают строку, а не число в метод - то это уже какой-то аутизм (ну серьезно если это число в строке, то метод бы сам привел к нужному ему типу и вычислил или же отругал в противном случае если аутист не проверенные данные и просунул невалидное число).

Не хочу холиварить, но за 12 лет опыта, можно проанализировать весь опыт и понять - что писать приложение быстро и просто - куда важнее долбежки в типы, рефлексию, дженерики и паттерны (некоторые).
360 1146034
>>46033
Типичная необучаемая обезьяна. Скриптопараша в игровых движках нужна, для того, чтобы
1) Максимально сократить срок получения результата для вещей, которые подбираются опытным путем. Нет нужды пересобирать все двигло для обновления логики поведения моба. За 12 лет ты мог заметить что кресты пиздец как долго собираются
2) Логику часто пишут геймдизы и прочие люди, которые вообще в рот ебали это ваше программирование. Еще для них придумали блюпринты. Может ты тоже будешь на блюпринтах теперь кодить? Быстро и просто, никакой долбежки!
361 1146043
>>46034
Как же тебя разорвало. Пример с играми, был просто примером из реального мира, о том как решают проблемы со сложностью и о том как та самая типизация там и ненужна вообще (и даже мешает - пример с долгой компиляцией С++).
Нечто подобное делается и в крупных приложениях, достигая декларативного эффекта, но пример оттуда был бы какой-то абстрактный (поэтому я показал пример на играх).

То есть, мы обсуждаем проблему типизации и о том как она не нужна (и даже теряется в крупных проектах, так как требование к тестам увеличивается и так), а ты мне отвечаешь как делают игры - как тут можно вообще диалог вести, когда ты даже не держишь нить разговора?
362 1146044
>>46031

>Более того, тесты придуманы не для того, чтобы проверять типы


Лол, проиграл чуток с этого мастера знаний. Тесты придуманы чтобы проверять программу на ошибки (корректность работы программы), а что там стало причиной ошибки, дело третье.
363 1146048
>>46033

>Ну так объясни.


Я же сказал, что не буду объяснять. Если тебе интересно, то ты и без меня можешь сам во всем разобраться, текста на эту тему написаны гигабайты. Ни о какой серебряной пуле я не говорил, и никакого "своего мировоззрения" я не обозначал и отстаивать не собираюсь; к апологетам type-oriented programming я тем более никакого отношения не имею. Я сказал ровно то, что постом выше написано.

Если у тебя есть какие-то конкретные вопросы, я постараюсь помочь, но катать пасты на изъезженные темы мне элементарно лень.
364 1146049
>>46044
Тесты не проверяют программу на корректность.
staticmaster.png411 Кб, 800x403
365 1146050
>>46029
Очередная вера в то, что проблема типов самая яркая проблема в программирование.
То что программа падает в рантайме не самое страшное для динамического языка, у динамического языка выше шанс появления плавающих ошибок - то есть, чтобы писать корректно на динамическом языке - скилл должен быть выше.
Гордиться тем, что компилятор показывает, что ты где-то всрал тип данных (корректность данных для динамического языка) - ну просто верх скила разработки, да?
366 1146054
>>46048

>Я же сказал, что не буду объяснять.


В разговор то зачем влез тогда?

>Если тебе интересно, то ты и без меня можешь сам во всем разобраться


В чем разобраться то? Я говорю нет там инструмента, мол фигня полная, и типы не решают (кроме аутизмо-проблемы). Да и вроде (точно не помню) само ФП к типам никого отношения не имеет, матанская парадигма, далекая от мира железок в пк.

>текста на эту тему написаны гигабайты.


Ох, какой манямир. Тут ты меня на лопатки положил буквально.

Вы все такие из ФП маневровые? :)
367 1146055
>>46049
В золотой фонд цитат.
368 1146056

>скилл должен быть выше


Сильное заявление. Ну ты понял, превозмагатель.
Корреляции со скилом не вижу. Мы всё же не в 60 году на перфокартах программируем, когда один раз написал и ждешь неделю. Программу ты запустишь и проверишь на работоспособность в большинстве случаев. Ошибка выявленная на этапе компиляции вылезет ещё до запуска программы. Это экономит время. Время - деньги. Всё просто. Потому, кстати, nullable references и были названы ошибкой на миллиард. Хорошо, что всего через 50 лет в современных языках и это проверяется на этапе компиляции. Значит ли это что нужно обмазываться типами как сумасшедший и пытаться выявить все возможные ошибки на этапе компиляции? Нет. Разумно использовать возможности компилятора для облегчения себе работы? Да.
369 1146057
370 1146058
>>46050

>Очередная вера в то, что проблема типов самая яркая проблема в программирование.


Это где я такое писал? Про "яркость" проблемы ни слова не было, было про то, что статика > динамика.

>Гордиться тем, что компилятор показывает ... верх скила разработки,


Это где я такое писал? Ты частенько приписываешь мне что-то левое, на что в сообщении не было даже намека, это что-то в твоем динамическом мирке опять попуталось?
Особенно проиграл с "верх скила разработки". Намакачил такой везде нужные типы данных в динамикодрисне, обмазал тестами и побежал одноклассникам хвастаться, это же ебовый скилл, не то, что у статикодебилов, да? Лолблядь.
371 1146067
>>46054
Ты какую-то хуйню несешь. С тобой пытались нормально поговорить, а ты реагируешь, как школьник. Алсо, я не из ФП, а ты долбоеб 1с-ник.
372 1146069
>>46055
Подпиши "Капитан Очевидность". Алсо, можешь почитать какую-нибудь книку про тестирование - столько золотых цитат для себя откроешь, что охуеешь просто.
373 1146070
>>46056

>скилл должен быть выше


>Ошибка выявленная на этапе компиляции вылезет ещё до запуска программы


А должно быть так: Ошибка выявленная на этапе тестирования.
Видишь в чем разница? И каких результатов может достичь тестированием в противовес одной только компиляции (на которую все так надеются и готовы даже время свое разменять)?!
Вот понимание этого и есть "скилл должен быть выше", так что юзай пока языки со статической типизацией.

>>46058

>Это где я такое писал?


Тебе не нужно это писать, это же выводы по твоим словам. Если же я ошибся, поправь меня, скажи, почему мне тогда стоит пожертвовать гибкостью динамического языка, мета-программированием, высоким уровнем полиморфизма типов - ради статической типизации (а именно компиляции, так как динамическая типизация не должна исключать строгую типизацию).
То есть статическая типизация это ключевой (яркий) момент в выборе языка? Нет?

>Особенно проиграл с "верх скила разработки".


С точки зрения типов, динамическое программирование это работа с "высокополиморфными" типами данных. Понятно, что тут уже компилятор тебе не поможет и на плечи программиста ложиться дополнительные условия - более качественное покрытие тестов, более качественное написание документации и предоставляемой информации по всем типам с которыми работает функция.
Конечно это скил выше.
374 1146073
>>46070
Скажи ещё, что прокомментировать каждую строчку = скил. Нет, братишь, это проёб времени. Ты под скилом какие-то левые вещи подразумеваешь, отношения к непосредственно программированию не имеющие. Писать документацию я могу и джуниора посадить. Ух у него скил вырастет! Здоровый сука!
375 1146075
>>46073
Представь ты берешь на работу программиста и открываешь его код. Ты видишь отсутствие или огрызки документации, отсутствие или частичное покрытие тестов (или некачественное их покрытие).
Какое сразу мнение о нем будет как о программисте?
Конечно это часть работы программиста и даже понимание того что это часть твоей работы - это уже плюс в скилл.
Тесты - гарант качества твоего кода (хотя бы что оно вообще работает), а дока - это описание работы твоего кода (для остального коллектива, ты же не один программист. Да и даже для тебя через год)

Аналогия (если совсем туго) - электрик провел проводку - но не сделал принципиальной схемы подключения, это часть его работы? - да. Является ли это показателем уровня его профессионализм? - да. Даже если он там красиво подключил все и все правильно подключил.
376 1146076
>>46075
Попробуй писать код понятный без коментариев. Вот там и будет скил, малыш.
377 1146077
>>46075

>электрик провел проводку - но не сделал принципиальной схемы подключения


>писать документацию я могу и джуниора посадить.


И электрик посадит джуна принципиальную схему рисовать, лол.
378 1146078
>>46076

>Попробуй писать код понятный без коментариев. Вот там и будет скил, малыш.


Ох, ты походу еще не знаешь что такое формат для автогенерации кода типа javadoc или phpdoc..., ты думаешь я о каких-то комментариях пишу, типа к коду обычные такие, да? Ахах, жесть. Вот вам и скилл
379 1146080
>>46078

>fix


>автогенерации кода


автогенерации доки
380 1146166
>>46070

>Тебе не нужно это писать, это же выводы по твоим словам


А ты сосешь хуй, это же выводы по твоим словам.

>Если же я ошибся, поправь меня, скажи, почему мне тогда стоит пожертвовать


Как из того, что ты "ошибся" (я не писал, что типизация - самая главная проблема погроммирования), следует убеждение тебя же в превосходстве статический типизации? Как ты код с такой логикой пишешь?

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


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

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


Школьный хоркор. Без ci/cd тоже нужно больше руками делать, выкинем его, покажем одноклассниками свою скилловость.
У меня просьба, можешь без пиздежа написать, сколько на каком языке профессионально погромировал за деньги и какова была твоя роль?
381 1146168
Даунидзе пхп-макака с 12 летним стажем, расскажи почему все крупные конторы из жс мира внедряют статическую типизацию?
Miscrosoft = Typescript
Google = Dart
Facebook = Flow
Может быть они знают чего-то, чего не знаешь ты?
382 1146185
>>46168
Ты не понял. Динамическая типизация - это для элиты. Для скиловых ребят. А всякие макаки пишут на статике. Дураки потому что, которым не суждено подняться до уровня великих динамических программистов. Ну правда же мам? Мам, ну правда же!
383 1146556
>>46185
Ну так и есть же - статика для глупых. Размен времени написания кода и теребоньканьем компилятора, ради отлова базовых ошибок.
Пока питоно-макака завершает проект, какой-нибудь джава господин накручивает еще одну фабрику на фабрику фабрик.

Не даром го послал все нафиг и сделал быструю компиляцию и ложил болт на джинерики (что в действительности является говно-хаком в мире Статики<Фигатики>).

>>46168
А нафига с говно-ФП носились в 2010?? Нахуя с асинхронной херней носятся, которая оправдана только для хайлода и чатиков (зато каждый школьник теперь знает как это важно в его пет-проекте). Просто хайп на хайпе. Появиться еще что-то, будут так же 5-10 лет теребонькать.
384 1146569
>>46556
Пишу абстрактную фабрику абстрактных фабрик абстрактных билдеров абстрактных сущностей. И хули ты мне сделаешь, омежка?
Джава-боярин
385 1146596
>>46168

>Facebook = ReasonML


Пофиксил.

>>46556
Ты очень тупой и иррациональный. Либо у тебя просто слишком мало знаний, либо ты сейчас по факту всерьез отрицаешь научный метод, математику и логику.
386 1146605
>>46596

>Ты очень тупой и иррациональный.


Жесткое утверждение, хм...

>Либо у тебя просто слишком мало знаний,


Пошли сомнения, возможно...

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


Ох, тут нужно больше авторитетов озвучить, даже может имена ученных, чтобы казаться еще более внушительным и убидительным.

Диагноз: НЕБОМБИТ
387 1146607
>>46569

>Пишу абстрактную фабрику абстрактных фабрик абстрактных билдеров абстрактных сущностей. И хули ты мне сделаешь, омежка?


>Джава-боярин


Ничего страшного в этом нет, главное не стыдить себя за это.
sage 388 1146627
>>46605

>убидительным.


Собственно, хорошо подытоживаем все твои посты в этом треде.
389 1146631
>>46556

>теребоньканьем компилятора, ради отлова базовых ошибок.


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

>Пока питоно-макака завершает проект


Проект на вечер. Ну вот тут всё и стало понятно. Динамикодрисня отлично подходит для написания write-only скриптиков. Файлики там перекинуть, лэндинг с анимцией. О какой-либо работе в команде и поддержке речи не идёт. Что там наворотили эти макаки хуй поёмешь. Проще заново надристать за пару вечеров, да ещё и бабоса с заказчика поиметь.
390 1146751
>>46627
Тот случай, когда все еще пригорает, но мозгов хватает только докопаться до кокографии (и это на двачах то...). Спрячься уже, хватит растекаться по треду
391 1146765
>>46631

>Я же не дурак на каждый чих прогонять тесты.


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

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

>Динамикодрисня отлично подходит для написания write-only скриптиков.


Как раз таки нет, лет наверное 10-15 назад (а может и раньше), скрипты вообще ощущались как новой вехой в программирование (даже были писаки про новый уровень программирование, после высокоуровневого). Получалось то, что от кода требовалось больше гибкости за меньшие усилия и вот скрипты как раз под это все удачно заходили.
Но в реале, в ИТ правит маркетинг и глупость (и юность), поэтому люди теперь готовы долбаться в обобщенное программирование (дженерики), в рефлексию, даже ковырять байткод, и все ради того, чтобы сделать шаг назад и юзать компилятор.
Я понимаю что где-то кто-то залил в уши про эту статику, но если прям реально взвесить - проверку типов или мета-программирование, то ответ будет очевиден (к сожалению, думать своей головой в ИТ не принято).
392 1146766
>>46765
Ты так и не ответил, сколько на каком чзыке профессионально занимался разработкой.
393 1146768
>>46765
Мудила, расскажи как ты пишешь тесты для интерфейсов. И как ты потом это говно рефакторишь.
394 1146785
>>46766

>Ты так и не ответил


Ты спрашивал?
Работа:
С++ - 4 года
Java - 8 лет

Халтура и петпроеты (если не глупый, то поймешь что пересекаются):
php - 5-6 лет (сейчас нет),
python - 5-6 лет (по сей день)
go - 2 года (по сей день)
ну js под фронт когда надо, не помню когда в веб залез, наверное лет 9-10

А вообще трудно считать, если в пхп я там много писал, то в го сейчас больше ковыряюсь чем прям пишу (как, наверно, многие тут)
395 1146787
>>46768

>тесты для интерфейсов


А ты одаренный.
sage 396 1146800
>>46751
Чини детектор, макака.
397 1146801
https://research.swtch.com/vgo-import

> Of course, deleting an old function works only when all the uses can be found, or when users understand that they are responsible for keeping up with changes, as was the case in a research system like Plan 9. For exported APIs, it's usually much better to leave the old name and old behavior intact and only add a new name with new behavior. Rich Hickey made the point in his “Spec-ulation” talk in 2016 that this approach of only adding new names and behaviors, never removing old names or redefining their meanings, is exactly what functional programming encourages with respect to individual variables or data structures. The functional approach brings benefits in clarity and predictability in small-scale programming, and the benefits are even larger when applied, as in the import compatibility rule, to whole APIs: dependency hell is really just mutability hell writ large. That’s just one small observation in the talk; the whole thing is worth watching.



Предлагаю любому, кто впредь что-то кукарекнет про "ФП хайп нинужна!11", тыкать носом в эту пасту. Надеюсь, не нужно объяснять, кто есть ее автор.

https://www.youtube.com/watch?v=oyLBGkS5ICk
398 1146802
>>46801
Мудак который не осилил теоркат, поэтому придумал своих ебаных терминов для кривого решения уже решенных задач?
sage 399 1146813
>>46802
Зарепортил не осилившего английский школьника.
400 1146820
>>46801
Это же О из солида.
401 1146828
>>46785
А, теперь понятно, джавадебил настрадался и решил, что все языки со статической типизацией такие же деревянные, как и джава, и что в этом виновата типизация.
402 1146830
>>46765
Разве скомпилированное не работает быстрее, чем скрипт?
403 1146853
>>46820
Вообще-то это про package management и versioning вы тут все принципиально не читаете то, что написано?, но сама базовая идея, конечно, та же самая. Классы, правда, обычно не версионируются.
404 1146854
>>46830
В общем случае - нет. Некорректно вообще сравнивать какую-то абстрактную производительность в вакууме какого-то абстрактного "скомпилированного" и абстрактного же "скрипта".
sage 405 1146899
>>46828
Только вот в Джаве от статической типизации откажутся в 12й версии. Сначала сделают её опциональной, а потом и вовсе задепрекейтят. А годауны будут продолжать сосать.
406 1146913
>>46853
Ты не поверишь, но солид применим не только к классам, там вообще речь о модулях. А модулем можеть быть даже небо, даже Аллах.
407 1146943
>>46913
Я потому и сказал, что базовая идея та же (их, этих базовых идей, в программировании вообще не так уж и много). А статья гофера и рилток кложуриста - про конкретную проблему с пакедж менеджерами и версионированием зависимостей.

Про SOLID уже полвека как все вроде бы знают, а версионированных апи библиотек что-то не особо видно.
408 1147748
Что случилось с gopherjs dom?
Сайт мертв, пакет удален.
Только хотел поковырять изоморфность.
409 1147811
>>47748
Предполагаю, что начали отпочковываться хайпанутые, которые обычно держаться на хайпе 2-3 года, а как только язык становиться мейнстримом, бегут куда-то (но это не критично).
410 1147820
>>46899

> от статической типизации откажутся в 12й версии



Cсылку на roadmap, пиздабол. То что у тебя в голове голоса от чего то отказываются, не считается. На 10/11 еще с планами не определились.
411 1147821
>>47820
Не трожьте его, он думает что он тролль.
412 1147834
>>23528

> Путь к репам прямо в коде


Вот тут ты и обосрался
413 1147907
>>23528

> gofmt


Ты понимаешь слово "унификация"?

> Открывающиеся скобки только на той же строке


Ну тут обосрались, до сих пор хейчу их за это...

> Путь к репам прям в коде


Ну это толсто. У тебя на компе директории так называются "github", "gitlab", whatever you want. С гитхаба ты тянешь, тем же go get или др. PM-амими. (go dep, vgo). А боишься, что Github отключат, так поставь себе gogs, не будь нищенкой.
414 1147982
>>47811
Всё в порядке, видимо сервер падал.

>>23528

>GOPATH


Можно менять в любой момент, делать для каждого проекта.

>gofmt


Удобно, но опять таки не заставляют пользоваться?

>Путь к репам прям в коде


Есть vendor, в разработке go dep
415 1148025
Поясните мне кто-нибудь почему это говно так популярно? Процедурное программирование в 2к18? Вы охуели чтоли там? Где замыкания, где монады?
416 1148032
>>48025
Во-первых, не очень популярно (выше уже обсуждали, что он второй год как теряет позиции, еще не успев взлететь). Во-вторых - гугл же, маркетинг, вот это все. Языки становятся популярными только благодаря маркетологам больших корпораций.
417 1148045
>>48025

>Поясните мне кто-нибудь почему это говно так популярно?


Назови еще один компилируемый язык со сборщиком мусора и стабильной версией.

>Процедурное программирование в 2к18?


Никто не мешает писать в декларативном или ОО.

>Где замыкания?


Они внезапно есть. Как и анонимные функции, и функции высшего порядка.
418 1148046
>>48032
А еще язык простой и легкочитаемый.
419 1148049
Этот говноланг и пару лет не протянул. Гугл накручивал изо всех сил, но в итоге рыночек опять порешал.Все крупные кампании, которые поддались маркетингу, сейчас в спешке переписывают свои поделия на чем угодно, лишь бы оно не было на го
420 1148058
>>48045

>Назови еще один компилируемый язык со сборщиком мусора и стабильной версией



Rust же

>Они внезапно есть. Как и анонимные функции, и функции высшего порядка



глянул на их фп. После Scala выглядит как говно
421 1148061
>>48058

>Rust


>со сборщиком мусора


А ну всё спасибо до свидания
422 1148068
>>48061

>А ну всё спасибо до свидания



а ну извините наизусть все нюансы не знаю. там да нету сборщика мусора, но ты и условия поставил в которые только Go может и вписывается. А нахуя эта компилируемость тебе нужна, если JVM выебет го по скорости все равно
423 1148118
>>48046

>простой


Нет.

>легкочитаемый.


Ну, для тех, кто не видел ничего, кроме крестов, - да, легкий синтаксис может казаться культурным шоком и божьим откровением. А я бы вот не стал называть "легкочитаемым" язык без параметрического полиморфизма, например. Вообще, это хуево, когда язык оценивают иррационально, по таким вот субъективным характеристикам - "читаемый", "легкий", "приятный", "лого прикольное))" - потому что хрошие показатели по этим характеристикам есть заслуга маркетологов, а не инженеров.
424 1148120
>>48045

>Назови еще один компилируемый язык со сборщиком мусора и стабильной версией.


Ты не поверишь, но java, scala, clojure, kotlin, swift, ocaml, haskell, erlang, elixir... ничего не забыл?
425 1148130
>>48120

> ничего не забыл?


паскаль
426 1148132
>>48049

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


Пруфы?
427 1148133
>>48130
Черт. Это фиаско, братан. Вирт не простит.
428 1148140
>>48120
Зачем ты перечисляешь парашу на виртуальных машинах?
429 1148148
>>48132
Илюша, please.
430 1148175
>>48132
dropbox переписали хранилище с го на rust потому что при высоких нагрузках сжирает всю память
431 1148185
>>48175
Будем честны.
1 Не переписали хранилище, а одну из подсистем.
2 Переписали потому что хотелось поиграться с новой технологией.
sage 432 1148193
>>48140
Я перечисляю

>еще один компилируемый язык со сборщиком мусора и стабильной версией.

433 1148196
>>48175
>>48185
Как обычно
Ожидание:

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



Реальность:

>Дропбокс переписал одну из подсистем, причем большая часть кода осталась на го

434 1148250
>>48120
В свифте rc.
435 1148263
>>48250
Так, и?
436 1148288
>>48120
Дебил, да хоть кресты c Boehm GC.
437 1148385
>>48263
В условиях был сборщик мусора.
438 1148515
>>48385
Ну, и в чем противоречие?
439 1148632
>>48515
В свифте нет сборщика мусора.
440 1148642
>>48632

>В свифте rc.


>В свифте нет сборщика мусора.


У тебя диссоциативное расстройство личности, или что?
442 1148656
>>48653
Ну это не стандартный gc, это более умная вещь.
443 1148659
>>48656
Да нет, gc по сути умнее. При arc тупо есть счетчик ссылок для каждого объекта, и как только он опускается до нуля - объект пидорят из памяти. Никаких тебе проходов по графу, ничего такого.
444 1148665
>>48656

>Ну это не стандартный gc, это более умная вещь.


Охуеть вообще, тебя кто, вшивого, в интернет выпустил?
445 1148671
>>48665

>пук

446 1148698
>>48671

>обосрался и не может остановиться

447 1148699
Вы чу сука вы че?! RefCounting у него не GC.
sage 448 1148704
>>48699
Если не жрёт кучу ресурсов и не парализует работу приложения во время сборки мусора, то это не считается за сборщик мусора, понял, питух?
449 1148724
>>48653
Я уже выучил, а ты?

>>48699
Ньюфаги, сэр.
Screen Shot 2018-03-02 at 21.58.47.png529 Кб, 1278x1606
450 1148740
>>48699
>>48724
С очень ебовой натяжкой можно ARC отнести к garbage collection, но в любом свифтокоммьюнити за это тебя обоссут. По сути самого понятия гарбадж нет, он не копится. Ну и вспоминаем из-за чего начался срач

>>48120

>со сборщиком мусора



Нет сборщика мусора в свифте.
451 1148754
>>48740
Ебать, да ты упоротый, раз компьютер сцаенс по гугловой выдачи строишь.

>понятия гарбадж нет, он не копится


Ой тупооой.

>ARC differs from tracing garbage collection in that there is no background process that deallocates the objects asynchronously at runtime.[3] Unlike garbage collection, ARC does not handle reference cycles automatically. This means that as long as there are "strong" references to an object, it will not be deallocated. Strong cross-references can accordingly create deadlocks and memory leaks. It is up to the developer to break cycles by using weak references.[4]

452 1148760
>>48754
И причём тут циклы? Это не мусор. Это результат проёба программиста.
453 1148761
>>48754
Читать умеешь, зачем ты цитируешь то, что подвтерждает мои слова? Если на объект есть сильная ссылка, то это не гарбадж, объект ипользуется кем-то.
Ты ведь понимаешь, что в твоей же цитате разделяют ARC и GC? Английский знаешь?

>ARC differs from tracing garbage collection in that there is...

454 1148769
>>48761
Затем, что там прямо говорится - ARC отличается от трассирующей [сборки мусора бла бла. Да, это та же сборка мусора, про которую спрашивали в начале нити, да, она воплощена в алгоритме, а не в автономной сущности (сборщик мусора - объектов с обнуленным счетчиком), да это более слабая стратегия сборки мусора (циклы, блокирующая обработка, невозможность кастомизации), так что не знаю чем здесь гордиться.
455 1148770
>>48769
Давай ты перестанешь вилять и ответишь, в свифте есть сборщик мусора?
456 1148772
>>48770
Очевидно, нет. А сборка мусора есть. Все счастливы. Fin.
457 1148773
>>48772
Нет, сначала расставим все по местам. Раз уж ты написал

>это та же сборка мусора, про которую спрашивали в начале нити


ткну тебя носом в то, с чего начался спор. Вот этот пост >>48120

>Назови еще один компилируемый язык со сборщиком мусора и стабильной версией.


>swift


Заметь, там сборщик мусора. Вот теперь конец.
458 1148777
>>48045

>Назови еще один компилируемый язык со сборщиком мусора и стабильной версией.


SBCL, лол
459 1148782
>>48777
Objective-C, Swift
460 1148783
>>48782
Here we go again.
461 1148792
>>48783 Про SBCL есть че?
462 1148800
>>48792
Слишком другой.
470 1148827
>>48825
он прекрасен!
bgabig.png40 Кб, 150x250
471 1148833
новый маскот пщ
472 1148929
>>48773
Давай сначала ты в анонах путаться перестанешь.
473 1150019
Чем заменить while ( !feof(stdin) ) {
int c = getchar();}
Нужно посимвольно считывать строку до \n
474 1155596
Когда следующая версия Go выходит? Где почитать о планах развития?
475 1155629
>>19389 (OP)

>Не нужно пиздеть про толстые бинарники, их размер значительно уменьшается одним маленьким Makefile.


Какие make-опции нужны, чтоб уменьшить?
476 1155647
>>55596

>Go 1.10 (February 2018)


>Go 1.9 (August 2017)


>Go 1.8 (February 2017)


>Go 1.7 (August 2016)


>Go 1.6 (February 2016)


>Go 1.5 (August 2015)


Даже не знаю.
477 1155708
>>55647
Следующая будет 1.11 или 2.0?
478 1155955
>>55647
Выпускают каждые пол-года. Шо есть, то и вываливают.
479 1155957
Анон, объясни популярно, нахрена нужен GOPATH? Нигде нету такой хуйни, а в Го есть. Почему было нормально не сделать как в жабаскрипте node_modules, или в питончике viritualenv? Да вообще, решений заебись сколько на любой вкус. GOPATH - это же как член гвоздем к стене прибить. Я недавно попробовал Go в Atom пощупать, а оно потребовало этот сраный GOPATH. Я хочу с разными проектами работать, что мне каждый раз перезапускать Atom с другой GOPATH?
480 1155958
>>55957
Я подозреваю, что просто напохуй на говне и палках сделали, чтобы заработало побыстрее, а потом случилось "Нет ничего более постоянного, чем временное", а хомяки растащили как есть.
481 1155970
>>55957

>Нигде нету такой хуйни, а в Го есть.


Попизди мне тут, в питонах PYTHONPATH есть.
482 1156009
>>55957

java classpath. и ничего. Придумали Maven, который прекрасно с этой хуйней работает.
483 1156542
>>55970
Ты должно быть особо тупой индивидуум, если не понимаешь разницу между PYTHONPATH и GOPATH.
484 1156555
>>56542
Ты, должно быть, хипстор-смузихлёб, если даже не умеешь в абстракции.
485 1157198
>>23651

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



Это в принципе исчерпывающее описани говна.

Говно это сплошные nih костыли и хуевые решения проблем, которые уже 10-20-30-40 лет как решены.

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

И так во всем: не смогли в параметрический полиморфизм (но захардкодили его для каналов), структурные типы, тюпли вместо возврата нескольких аргументов, тип-суммы, нормальный менеджер зависимостей, оптимизирующий компелятор.

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

https://medium.com/@arschles/go-experience-report-generics-in-kubernetes-25da87430301

И главное в дугих языках это все давно уже решено. Ну, впрочем, вперед, хайптрейн.
sage 486 1157269
487 1159114
Почему Go-вноеды такие сектанты?
Вчера нашел тему на хабре, где шизик на полном серьезе говорит, что Go лучше, т.к. в нем нет тернарного оператора и нормальной обработки исключений, из-за чего сложнее писать говнокод. Пиздец просто, только выиграли, нахуй.
488 1159184
Писал тут недавно сервис, который слушал события, клал их в очередь и по-разному обрабатывал и всё у меня было зашибись пока не оказалось, что в какой-то ситуации происходит сверхдолгий блокирующий вызов, который надолго ложит обработчик, переполняя очередь и всё такое (подозреваю, кстати, дефолтный http-клиент, вроде как он по умолчанию не выставляет таймауты и ждёт ответа вечно).
Я сначала захотел сделать пул воркеров, чтобы если один замрёт - остальные продолжили обрабатывать сообщения, но потом понял, что таким макаром могут зависнуть вообще все воркеры, особенно, если блокирующий случай часто повторяется.
Начал инвестигейтить вопрос - и такое ощущение, что стартовавшую горутину извне убить вообще нереально, если она сама не очнётся. Все эти tomb'ы, pkg/context и прочие ориентриованы на то, что горутина сама в какой-то момент проверит, и, если ей пришёл сигнал сдохнуть - самовыпилилась.
Что за хуйня, анон? Я действительно не могу убить застакавшийся процесс (ну бывает такое, да)? Как вообще стоит поступать в таких ситуациях?

Я пока придумал два варианта:
1) Поднять x go-демонов и процесс-супервизор, который будет за ними следить. Демоны будут слушать сообщения и рапортовать о взятых и завершённых задачах (например, в простенькую базеечку), а он, если какой-то демон долго не отвечает, будет фигачить туда sigkill и запускать обработчик заново. Точно сработает, но тогда я как бы лишаюсь основного плюса го, "легкой" конкурентности/многопоточности, прямо в среде прилжения - с тем же успехом, я и на богомерзком php напишу то же самое.
2) Спавнить ещё один go'шный процесс через какой-то гипотетический аналог fork, прокидывать туда данные через сокет и пусть он их обрабатывает; Если замрёт и не ответит через указанное время - sigkill ему, ибо нехуй. Это выглядит немного получше, так как сами демоны получаются более легковесными да и fork, если есть, сократит время бутстрапа. Ну и можно гошные плагины заиспользовать, вроде, механизм похож. Минусы примерно те же самые, приходится городить какой-то хак, вместо того, чтобы язык помогал мне решать мою задачу.
3) Запускать отдельную горутину-супервизор, которая считает время исполнения каждой задачи - и если она больше таймаута - отсылает туда cancel и, не дожидаясь завершения обработчика, порождает новый. По логике, "старый" обработчик когда-то отвиснет и, или сразу отпадёт, или закончит выполнение и отпадёт всё равно. Это тот вариант, на котором я остановился, потому что он тупо проще (заиспользовал, кстати, go-playground/pool). Вижу такие минусы: во-первых, "зависающие" горутины копятся; во-вторых, нарушается порядок выполнения задач (мне пришли две задачи, А и Б. Воркер взял задачу А, завис на полчаса. Через минуту супервизор понял, что происходит неведомая хуйня и стартанул нового воркера, который взял и успешно обработал задачу Б. А через двадцать девять минут воркер один отлагал и закончил с задачей А. В итоге, последовательность обработки событий была нарушена).

ЧЯДНТ?

P.S. Гуру, которые мне сейчас скажут, что нужно просто писать код без дедлоков и прочих радостей: бывают проекты, на которых работает туева хуча разработчиков, и я не хочу, чтобы построенный мной сервис застакался оттого, что какой-то молодец написал
```
mutex.Lock()
defer mutex.Lock()
```
в своём обработчике.
488 1159184
Писал тут недавно сервис, который слушал события, клал их в очередь и по-разному обрабатывал и всё у меня было зашибись пока не оказалось, что в какой-то ситуации происходит сверхдолгий блокирующий вызов, который надолго ложит обработчик, переполняя очередь и всё такое (подозреваю, кстати, дефолтный http-клиент, вроде как он по умолчанию не выставляет таймауты и ждёт ответа вечно).
Я сначала захотел сделать пул воркеров, чтобы если один замрёт - остальные продолжили обрабатывать сообщения, но потом понял, что таким макаром могут зависнуть вообще все воркеры, особенно, если блокирующий случай часто повторяется.
Начал инвестигейтить вопрос - и такое ощущение, что стартовавшую горутину извне убить вообще нереально, если она сама не очнётся. Все эти tomb'ы, pkg/context и прочие ориентриованы на то, что горутина сама в какой-то момент проверит, и, если ей пришёл сигнал сдохнуть - самовыпилилась.
Что за хуйня, анон? Я действительно не могу убить застакавшийся процесс (ну бывает такое, да)? Как вообще стоит поступать в таких ситуациях?

Я пока придумал два варианта:
1) Поднять x go-демонов и процесс-супервизор, который будет за ними следить. Демоны будут слушать сообщения и рапортовать о взятых и завершённых задачах (например, в простенькую базеечку), а он, если какой-то демон долго не отвечает, будет фигачить туда sigkill и запускать обработчик заново. Точно сработает, но тогда я как бы лишаюсь основного плюса го, "легкой" конкурентности/многопоточности, прямо в среде прилжения - с тем же успехом, я и на богомерзком php напишу то же самое.
2) Спавнить ещё один go'шный процесс через какой-то гипотетический аналог fork, прокидывать туда данные через сокет и пусть он их обрабатывает; Если замрёт и не ответит через указанное время - sigkill ему, ибо нехуй. Это выглядит немного получше, так как сами демоны получаются более легковесными да и fork, если есть, сократит время бутстрапа. Ну и можно гошные плагины заиспользовать, вроде, механизм похож. Минусы примерно те же самые, приходится городить какой-то хак, вместо того, чтобы язык помогал мне решать мою задачу.
3) Запускать отдельную горутину-супервизор, которая считает время исполнения каждой задачи - и если она больше таймаута - отсылает туда cancel и, не дожидаясь завершения обработчика, порождает новый. По логике, "старый" обработчик когда-то отвиснет и, или сразу отпадёт, или закончит выполнение и отпадёт всё равно. Это тот вариант, на котором я остановился, потому что он тупо проще (заиспользовал, кстати, go-playground/pool). Вижу такие минусы: во-первых, "зависающие" горутины копятся; во-вторых, нарушается порядок выполнения задач (мне пришли две задачи, А и Б. Воркер взял задачу А, завис на полчаса. Через минуту супервизор понял, что происходит неведомая хуйня и стартанул нового воркера, который взял и успешно обработал задачу Б. А через двадцать девять минут воркер один отлагал и закончил с задачей А. В итоге, последовательность обработки событий была нарушена).

ЧЯДНТ?

P.S. Гуру, которые мне сейчас скажут, что нужно просто писать код без дедлоков и прочих радостей: бывают проекты, на которых работает туева хуча разработчиков, и я не хочу, чтобы построенный мной сервис застакался оттого, что какой-то молодец написал
```
mutex.Lock()
defer mutex.Lock()
```
в своём обработчике.
489 1159185
>>59184
Бля, три варианта, не два. Первые два просто придумал, третий написал.
490 1159212
>>59184

>стартовавшую горутину извне убить вообще нереально


Стандартная практика: передаёшь ей в параметрах quit <-chan struct{}{} и через for-select слушаешь этот канал и делаешь return, посылая туда пустую структуру, когда тебе надо.
491 1159247
>>59212
Чувак, ну я же об этом и говорю, стандартная практика именно такая, но она подразумевает, что я сам должен через for-select "услышать" сигнал остановки и отреагировать на него. А теперь представь, что горутина заблокирована: там или time.Sleep(time.Second * 1000000), или бесконечный цикл, или дедлок с бесконечным ожиданием никогда не открывающегося мьютекса. В этом случае горутина реально зависнет и ничто не сможет её "отвесить", ни изнутри (ибо блокирующая операция), ни снаружи (похоже, что в го нет способа прерывать потоки насильно).
 .jpg62 Кб, 736x736
492 1159268
>>59247
>>59184
Go крута.
493 1159292
>>59247
Мне как и анону выше не хочется упускать шанс поиздеваться на goвном, но тут по-моему ты сам немного тупишь. У тебя гоблоки бегают на тред-пуле - конечно ты не можешь запускать там блокирующие операции, ибо от этого все треды быстро заблокируются.
 .png258 Кб, 1500x1500
494 1159315
>>59292
Сам ты говно, go язык goбов.
495 1159429
>>59315
goмиков.
496 1159432
>>59429
Гоморутины.
ехидный колобок.жпг
497 1159433
>>59432
Goморутины, начавшись, не могут остановиться, если сами того не захотят.
498 1159441
>>19389 (OP)
гомункл
499 1159442
>>59441
Goбилен с goдом.
500 1159517
>>59184

>и такое ощущение, что стартовавшую горутину извне убить вообще нереально



наслаждайся кооперативной многозадачностью
501 1159568
Прошел тур по Go. Завтра собеседование, подскажи, что могут спросить, что надо ещё знать и поясните, как работают горутины? Я так понял несколько горутин асинхронно выполняются в 1 треде?
502 1159578
Django разработчик в треде. Месяц назад увлекся golang'ом, по вечерам пилю хэлло ворды, но оч. хочется сделать, что-нибудь посерьезнее.

Есть вот такая идея -- сделать агрегатор цен на видеоигры с фильтрацией по физическая|диджитал копия. API cервер и пауков на Go, фронт на react. Что можете посоветовать посмотреть из фрэймворков?

p.s. Если кто-то захочет помочь запилить проектик в коопе, то замечательно <strike>телега: @GrigoriyMikh</strike>
sage 503 1159598
>>59578
Н И Ч Е Г О
И
Ч
Е
Г
О

Зачем нужны фреймворки в го, тебе стандартной библиотеки и самых легких роутов не хватает?
504 1159603
>>59578
Бери https://github.com/kataras/iris (он сейчас считается самым популярным) и не слушай уебанов, которые сейчас понабегут и начнут советовать написать всё с нуля.
687474703a2f2f7777332e73696e61696d672e636e2f6c617267652f346[...].jpg111 Кб, 814x380
505 1159613
>>59603
Fasthttp - это, конечно, хорошо. Но какой в этом смысл, если ты пользуешься токсичными фреймворками?
506 1159641
>>59603
мне вот https://github.com/labstack/echo приглянулся. Очень минималистичный интерфейс для написания rest api. Чем iris интересен?
507 1159642
>>59603
А про пауков,что скажешь? Есть какие-нибудь годные фреймворки?
508 1159680
>>59598
А миддлвары самому писать?
509 1159682
>>59578

>GrigoriyMikh


Бабу-то нашёл на дваче поебаться? Или так и жрочишь свои циферки на Каггле?
511 1159971
>>59641
Просто идиоматичный и популярный фреймворк. Все основные фичи вида middleware, авторизации и прочего уже есть в виде отдельных пакетов, меньше руками писать. Тестами покрыт, стабилен.
Остальное - вкусовщина.
Про echo тоже хорошие вещи слышал, если нравится - бери.
512 1162068
>>59971

> Все основные фичи вида middleware, авторизации и прочего уже есть в виде отдельных пакетов, меньше руками писать


чем лучше Gin ?
513 1162226
>>62068
Кардинально - ничем. Уже игрался с ним - впечатления нормальные.
В го-мире, как я понимаю, существует много web-фреймворков (Iris, Gin, Echo, тысячи их), которые предоставляют приблизительно один набор фич и очень похожую модель работы с ними.
Поэтому выбирай тот, который тебе нравится + имеет нужны фичи из коробки (тот же basic auth, работу с JWT, т.п.)
Отдельный момент - это популярность, смотри, чтобы фреймворк не загнулся оттого, что единственному контрибьютору надоело.
Жупоглазые выблядки Адекват 514 1167715
Как же вы блять заебали со своим го.... Го Го Го Го
Еще один невьебенный роутер на го, еще одна невьебенно удобная хуйня с тонной говно рантайма что бы вы могли сделать очередное говно подделие которое насилует сетевуху во все щели. Раньше новые люди в програмировании слушали рок и писали на голых или крестанутых сях с чувством с толком и с умом а теперь куча всяких имбицилов-хиптеров получив язык для обезьяны пишут на ебаном го слушают руский реп и порятся в очко.
515 1174684
>>67715
А ты шаришь
Тред утонул или удален.
Это копия, сохраненная 7 мая 2018 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски