Это копия, сохраненная 19 мая 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Для вката в Go читай Донован, Керниган "Язык программирования Go", https://www.golang-book.com/, книги из списка https://github.com/dariubs/GoBooks, а также смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw
Пэкеджи можно искать тут https://github.com/avelino/awesome-go
Живем в ожидании Go2, пробрасываем ошибки, смеемся над джавистами, которые не могут жить без ексепшенов, дженериков и размазанной бизнес-логики, ждем, когда нам подвезут аналоги эксепшенов и дженериков
Прошлый >>1563445 (OP)
Что я должен прочитать чтобы сделать это?
Пишу на питоне и жс
Это нельзя сравнить, в зависимости от того, что знаешь лучше
дольше в пару раз, статический язык, для каждой структуры, например, нужно реализовывать сортировку руками и парсить json в полуручном режиме.
На статически типизированных языках в принципе писать дольше и сложнее.
Ты про перегрузку аргументов функции как в жаве? В жсе мне такое не нужно было, так что сложно сказать. Насколько заебно писать без такой фичи?
Я все правильно сказал, иди читай термины.
> В жсе
В динамически типизированных языках нет такой проблемы. Ты пишешь одну функцию и можешь передавать что угодно. Здесь же в худшем лучшем случае есть interface{}
мимо
>Насколько заебно писать без такой фичи?
Это мастхев для статического языка, иначе твое API будет говном, с префиксами или постфиксами и мы видим что так оно и есть
В питоне нет ни в каком виде, что порой бесит.
JS лаконичнее + статическая типизация в Go, поэтому чтобы такое же выразить нужно больше кода.
Это немного проблематично, если у языка доступен исходный код https://github.com/golang/go
не то чтобы совсем невозможно, но сложно, очень
> официальных компиляторах
Будто есть другие.
> в чём подвох
Там кто-то из гугла говорил про то, что go такой простой в изучении специально, чтобы как можно больше хомячков его выучило и работало за бесценок.
> Гугл сможет, как создатели жабы, подавать в суд за использование стандартных конструкций языка?
Толсто.
Может же быть так, что компилятор собран с одного кода, а на гитхабе другой код. Мало же народу будут собирать из исходников, все скачают сдк.
Один из вариантов, но опять же есть шанс попасться.
Ну и в целом надо понимать, что логика по сливу чего-то интересного гуглу, да еще предварительно это найти на рандомном серваке, а еще это все в докере или клаудной VM, а там еще рулы на фаерволе...
gcc-go, llvm-go, emgo, tinygo, плюс ещё куча велосипедных, никому ненужных компиляторов
ещё понаделали форков go под названием vlang, odin-lang и т.д.
https://roem.ru/10-10-2016/231632/oracle-vs-google/
"Причиной судебных споров между Google и Oracle стал язык программирования Java, разработанный в 1991 году компанией Sun Microsystems. [...]
В мае 2014 года было опубликовано решение апелляционной инстанции, которая пришла к противоположному выводу, что «общая структура API», а также «структура, последовательность и организация программного кода» могут быть предметом авторского права, и Google, соответственно, частично нарушила права Oracle. "
https://www.linux.org.ru/news/android/14765971
суд до сих пор идёт
И вообще, у меня складывается впечатление, что как есть аноны, сидящие в рид-онли, так есть и такие, кто сидит в write-only, то есть не читают треды перед тем, как что-то запостить.
Помню несколько лет назад гоферы бегали и срали статьи, как они перешли с успешно с очередного "x" языка на го. А теперь
им кидают эти истории успеха, но уже с го.
Больно? Да?
Мне похуй на го, я вообще джавист и здесь ради срачей про дженерики. Но я всё охуеваю от уровня некоторых, сидящих здесь.
Тебе не больно что жаба больше не нужна? Ну есть котлин, кто в шарпе, кто даже в го. А на жабе одно легаси только.
Даже в моей говноконторе еще в 2019 выкинули последние строки на жабе.
> Тебе не больно что жаба больше не нужна?
Хедхантер лучше знает, нужна она или нет.
> Ну есть котлин
А ещё есть скала, груви, кложура, цейлон. Котлин скоро к ним присоединится.
> кто в шарпе
Шило на мыло.
> кто даже в го
Только для микросервисов и годится. Бизнес всерьёз его не воспринимает.
< на жабе одно легаси только
Активно пишутся новые проекты для тырпрайза.
>Хедхантер лучше знает, нужна она или нет.
Это капитал кода из легаси, нашел чему радоваться, словишь код, который достался из текучки кадров.
>Только для микросервисов и годится. Бизнес всерьёз его не воспринимает.
Однажды на ковер пришли гоферы и сказали, мы сделаем то что делают жабисты, на коленке. И меньше чем за месяц написали на микросервисах то что спринганутые писали годами. Сейчас в конторе жаба считается моветоном, синонимом генератора плохосопровождаемого (читаемого) кода.
Хотя для меня го хуже чем жаба, но практика показала, что го для бизнеса более привлекателен.
>Активно пишутся новые проекты для тырпрайза.
На жабе? Бред же. Ну может там в качестве погрешности кто-то еще и пишет, потому что больше ничего не умеет, но реально такой массы ощутимой нет.
> Это капитал кода из легаси, нашел чему радоваться, словишь код, который достался из текучки кадров.
Будто на других работах люди каждый день выкидывают старые проекты и пишут новые с нуля. Легаси есть абсолютно везде, это норма.
> Однажды на ковер пришли гоферы и сказали, мы сделаем то что делают жабисты, на коленке. И меньше чем за месяц написали на микросервисах то что спринганутые писали годами. Сейчас в конторе жаба считается моветоном, синонимом генератора плохосопровождаемого (читаемого) кода.
Если это станет не единичным случаем, а общим трендом, я в первых рядах пойду перекатываться в другие языки. Я не цепляюсь за джаву из каких-то сентиментальных чувств, но пока что она чувствует себя хорошо.
> На жабе? Бред же. Ну может там в качестве погрешности кто-то еще и пишет, потому что больше ничего не умеет, но реально такой массы ощутимой нет.
У нас в одном зелёном банке плюются от почти всего, кроме жабы, и все новые проекты пилят на ней.
Никак, это маркетинговый ход, чтобы заткнуть тех, кто ноет про дженерики и прокидывание ошибок.
>discord
Так они молодыешутливые с эликсиром и электроном, хуй знает существует ли более хипстерская контора
Чем больше язык был в топе, тем более дремучие там легаси.
Проблема легаси жабы - оно практически нечитаемо.
Одно дело хеллоуворд в контроле спринга записать, другое увидеть самописный спринг.
>плюются от почти всего, кроме жабы, и все новые проекты пилят на ней.
>потому что больше ничего и не умеют.
Жабисты пишут на жабе, классика же. А могли бы пилить на котлине, но не осилили.
> Проблема легаси жабы - оно практически нечитаемо.
От проекта зависит. Если его пишут люди "Мы сюда исключительно за деньгами ходим, поэтому будем костылять, говнокодить и антипаттернить, чтобы закрыть побольше тикетов", то это уже не в жабе проблема, а в головах.
> А могли бы пилить на котлине, но не осилили.
> могли бы
Ага. А на хаскелле могло бы быть больше всего вакансий. Вот только живём мы не в сослагательном наклонении.
>На жабе? Бред же. Ну может там в качестве погрешности кто-то еще и пишет, потому что больше ничего не умеет, но реально такой массы ощутимой нет.
Синдром утенка из палаты мер и весов.
Вот набежали шарписты в жаба-тред, жабисты теперь набежали в го-тред. Что дальше?
Ну норм язык. Я вот пишу и на го, и 6а расте, на питоне, и на typescript. Мне норм.
Три языка разного уровня, каждый под свою задачу.
Гошечка мне нравится больше. Писать легко и приятно, программки быстрые, многопоточные, простые в понимании.
бегите в сислюрп
Прям совсем первым - вряд ли.
Но если говорить, как первый коммерческий язык - то такое есть, когда из студентов набирают стажеров и учат го
> А ещё есть скала, груви, кложура, цейлон. Котлин скоро к ним присоединится.
Не понял, это кукарек в духе "нинужна, я скозал"? Сижу на скале и котлине, получаю удовольствие от работы, и платят больше чем тебе минимум в 2 раза, а то и во все 4.
>больше всего вакансий
Какие нахрен вакансии, мы говорим про уже работающих джавистов в банке.
У вас уже как у ботов один и тот же триггеры, услышал про котлин, пишешь про вакансии, лол
>От проекта зависит.
Можно фантазировать и философствовать до усрачке. Но реальность такая, что львиная доля легаси проектов на жабе, не читаемая жесть (как минимум на моем опыте).
И люди радуются что им на +500$ больше платят, да в таком коде я бы и за 10К не сидел бы.
>Вот набежали шарписты в жаба-тред, жабисты теперь набежали в го-тред. Что дальше?
Дальше? Дальше принять таблеточку.
Typescript - уже не нужен, все что надо было уже накатили в самом js. Из типов нужен был автокомплит и проверка в IDE на ошибки, это все решается через jsDoc.
Джава - это кобол.
Котлин - сахар над коболом с привязкой к IDE
Scala - люди поигрались в язык.
Groovy - шикарен, но JVM уже никому не нужен.
Го - внутренний специфичный язык компании, с соответствующим запашком. Хз почему никто не написал сахар поверх него (Готлин).
Раст - язык чтобы писать бенчмарки с unsafe (очередное "поигрались" в язык).
С++ - будет всегда (Си тоже)
Haxe - интересно, но не взлетело.
Шарфик (C#) - шикарен.
Питон - годен только распарсить файл, написать простой скрипт, а дальше на нем возня такая же как на любом другом языке. До сих пор не понял как его деплоить с virtenv говном.
Одно говнище кругом, пора выкатываться из вайти.
> TypeScript
Это CoffeeScript.
> Groovy
Это перл.
> C#
Это Delphi.
Это огонь, когда не транслируется в динамичное говно.
А так у тебя была одна проблема, теперь стало две.
>а вообще гошечка у кого-то может быть первым языком?
Нет, ибо до сих пор нет качественной литературы для полных нулей в программировании. По крайней мере русскоязычной.
Хотя, если с преподом изучать, то прокатит.
Забери эти петучей.
А еще джависты вернутся, когда у них fibers запилят.
Еще шарписты только не приходили, но это потому что у них тред студентов-вкатышей, им нечего сказать.
Ну так ведь вычисляет цикл от 1 до 100000000 в N раз быстрее, лол.
> Scala - люди поигрались в язык.
> Раст - язык чтобы писать бенчмарки с unsafe (очередное "поигрались" в язык).
Неосилятор, ты?
> JVM уже никому не нужен.
В голос.
> Шарфик (C#) - шикарен.
А, теперь всё понятно.
> Jvm-языки не конкуренты гошечке. Тормознутое говно.
Пссссс, окропил тебя уринушкой, няша.
Scala/Akka-боярин, Clojure-господин
Кучка программистов и маркетологов с самой популярной поисковой системы не смогли создать уникальных базворд для своего языка.
Теперь как долбаеб постоянно дублируешь в поисках go и golang тоже говно с раст и языками с одной буквой
Как бы котлин не хейтели, но парни подумали даже про поиск.
Проблема не нова, с сишкой так же. Всё время гуглится какая-то хуита про кресты и шарп.
Сишке простительно, это говно динозавров еще до интернетов была создано (и тем более до казуального инета с поисковиками). Но вот эти С#, D, R, F, V
Котлен хорош, но соновная платформа у него жвм, а котлин нейтив очень сырой и хз когда будет готов. Плэтому кокотлен можно смело выкидывать на помойку.
Плюс котлина на жвм в либах.
Если не будет либ, то котлин не имеет смысла вообще.
Тогда уж Раст.
Но либы то легаси говно по большей части, как раз из-за жвм.
Какая тебе принципиальная разница между тем что у тебя под капотом - VM или же жирный рантайм?
Был бы го на VM, даже тут не кукарекнули бы.
Минус го как раз в том, что в свое время пришлось писать то, о чем раньше даже не думал. Плюс в либах (качественных), это сотни сэкономленных часов.
Из языка выкинуто все, не эксепшенов, не виртуальных методов, ни поколений (где ребята из дискорда такие пики бы не увидели).
Да, VM жирная (сколько там? 20-40мб?), но это пох, это дает тонну других плюшек.
Это особенно заметно в серверлесс.
Старт жавы - жутко медленно.
У скриптовых языков получше, но не огонь.
А вот гошечка идеально подходит.
>А чего нет - отдельный микросервис на питоне.
И получается - одна нога у тебя бионический процесс, который шустро работает, а другая пиратская палка, которая еще двигается.
Ахахах, я в ахуе с логики goвноедов, костыли на каждый чих из-за того, что нет нужных либ - это видите ли достоинство, а либы для жабы - это недостаток и вообще легаси!
Всё-таки прав был тот анон, писавший про любовь к го как индикатор некомпетентности. Это воистину так.
Это называется архитектура и разделение ответственности.
Монолиты на одном языке, умеющие все, были популярны два десятка лет назад.
Сейчас под задачу выбирается наиболее удобный инструмент.
О, мою пасту еще помнят, не зря тут срал столько тредов кстати, пишу на котлине давно
Фатальный недостаток го в том, кроме тех, которые много раз обоссали уже, это то, что нельзя организовать свои пулы потоков в которых крутятся горутины (например для базы один пул, для парсинга другой).
Там джава от amazon coretto с оптимизациями под aws.
А бенчмарки все в ms. 1000 ms это нормально.
Начал учить пщ. Не долго думая в качестве знакомства языка решил запилить бота для тг. Вот вопрос, есть ли у Go какая-нибудь ORM'ка изучение которой в последствии пригодится для устройства на работу? SQL собираюсь учить после GO. И нет, это не первый язык который я учу
В джаве лучшие ORM, они самые удобныые и быстрые.
На го их вообще нет, придется самому писать, как и большую часть решений. Это язык для внутренних велосипедов компании гугол.
Не хочу жабу пока что, хотя может быть стоило бы.
Ну, и думаю 17к звезд достойный показатель https://github.com/jinzhu/gorm
>Full-Featured ORM (almost)
Почему чувствуется вечно какая-то ложь в го?
Как-будто какой-то подросток, который хочет быть похожим на взрослого и но у него не всегда это получается.
Что касается ORM вообще.
Построить SQL запрос и потом мапить его на структуру - дело 5-20 минут. Еботни учить очередную ORM и потом бороться с отладкой этой ORM в гиганском проекте - это месяцы работы.
gorm хоть и популярна, но многие ее избегают, потому что внутри неявное поведение.
Смысла учить какую-то orm для го нету, лучше учи вебфреймворки
GORM часто в вакансиях проскакивает. Сам не пробовал, но анон всякое про него говорил, например - https://2ch.hk/pr/arch/2019-09-04/res/1360787.html#1438486 (М)
От себя могу порекомендовать не использовать ОРМ, вместо этого взять хороший квери-билдер, мне github.com/go-jet/jet понравился
> TIOBE
Он показывает сколько вкатывальщиков гуглили язык. Лучше бы распарсили hh ru и сделали график по вакансиям.
>сколько вкатывальщиков спрашивали про syntax error
Пойми, го не берут первым языком. На нем отдыхают, повидав некоторое дерьмо. Естественно такие люди умеют читать офиццциальные доки, а не спрашивать на каждый пук.
Клавиша "ц" иногда тупит, механическая клавиатура наверное током замыкает.
> го не берут первым языком. На нем отдыхают, повидав некоторое дерьмо
Ага. Макакам надоело ебаться с js на фронте, потом они немного потыкали ноду и наконец решили взять что-то адекватное. Не вышло, ничего лучше goвнища не осилили.
SO некий показатель интереса к языку. Это не про то что кто-то в доку умеет, это про общий тренд. Все эти языки там в 1% популярности витают, в статистической погрешности, это единственный наиболее точно-чувствительный вариант статистики.
И да, я тоже пишу код через гугл, типа "golang split string", я ебал в рот в говнодоках копашиться, среди 100500 полу одинаковых названий, мне надо прям тут и сейчас увидеть slit от строки в этом языке.
Это удобно.
Школомнение. Ни одного попадания. Мне хоть половина из этих языков не нравится, но твои ярлыки не в тему.
С какого перепуга машкод динамический? Как ты представляешь неопределенный размер ячейки памяти (да да, изначально типы это размер выделенной памяти)??
В любом случаеш машкод уже никуда не транслируется.
Не поможет.
Конкретно про го я никогда не мог это воспринять всерьёз и всегда думал, что это стёб, лол.
Он сделал кодинг очевидным опять.
Для того что бы сложить два и два, достаточно написать 2+2.
И тебе не нужны монады, лямбды, иерархии классов и интерфейсов, ты берешь и складывает два числа. Непередаваемые ощущения.
Сишечка, но с человеческим лицом и красивой конкурентностью.
> высрала
Этим всё сказано.
> И тебе не нужны монады, лямбды, иерархии классов и интерфейсов
Они и так не нужны. То же наследование нужно очень редко.
Goчуханам надо напоминать их место у параши. Я это буду постить каждые две недели, чтобы вы не забывали какие вы обоссанцы и что вы пишете на игрушечном языке.
Наверняка ты из js или python? (один язык написали на коленке за неделю, другой писали для обучение вообще)
Ты тот же говножуй. Единственный божественный язык это котлин и шарфик.
Да, норм. Реально получаю удовольствие с языка.
Ощущение как-будто пишешь на каком-то питоне. Попробуй.
Вся джава это котлин, поэтому смотри модное и молодежное из мира жабы и просто бери и пиши.
Не спасёт, основная проблема жвм - это легаси либы, которые жирное говно. И кваркус ожидаемо будети их использовать на реальнмо проекте.
Сюда же можно добавить очень долгий прогрев, относительно других ВМ (V8, например).
Просто выкини уже жабу, хватит труп насиловать.
>ktor, я начинал на javalin. Сейчас смотрю на vertx.
Но это по сравнению со спрингом хеллоуворлды для бенчмарков.
Вот бы спринг выпустили реактивную асинхронную супер мега версию полностью на свежем котлине, тогда было бы хорошо.
Спринг обречён, это зловонная жирная куча абстракций, говнище by design.
Кста, откуда в тредике по няшной гошке столько жава-говноедов? ЧСВ требует выхлопа и хотите самотвердится в других сообществах? Никто в серьёз ваши высеры рассматривать не будет.
>Вот бы спринг выпустили реактивную асинхронную супер мега версию полностью на свежем котлине, тогда было бы хорошо.
webflux, micronaut, quarkus... сотни их
Сейчас многие пишут сразу под kotlin/java, потому что это практично.
Модульность дает большее число абстракций, это плата за гибкость. Открой любой full фреймворк и ты похудеешь от количества кода и абстракций.
но да, спринг мне тоже не нравится
И потом из-за борьбы с модульностью в результате получаются методы на 500 строк. Зато не размазано, да.
Модульность != количество кода.
>SQL собираюсь учить после GO.
Тебе для начала нужен только очень базовый SQL: CRUD + какие-то очень простые запросы. Их нагуглить будет проще, чем разобраться с каким-нибуть ORM.
Не хочу рассказывать какой ты долбаеб, просто опишу эволюцию кода.
1) 500 строчная функция это несопровождаемая лапша.
2) 10-20 - чистых функций из тех 500 строчек по методу единой ответственности - это уже модульный код.
3) 5-10 - классов сгруппированных по принципу SOLID из тех же функций - дальнейшее развитие модульности.
Эволюция гофер, эволюция...
Не тому ответил, но вы там разберетесь.
Модульность никак не связанна, с конретным подходом, в случае спрингоподобных - лютое обмазывание DI-парашей с кучей магии.
Можно запилить отличную модульность и на мнималисчтом коде, следуя KISS и изебгая тяжеловесных абстракций. Это вопрос проектирования, проблема в том, что адепты жвм в него обычно не умеют от слова совсем, только шаблонные паттерны, подражание, карго-культы и прочая копировальная работа уровня макаки. Само распространение javaEE, а затем спринга является пруфом этого.
Прикинь, что бьыло бы, если бы паттереналистким жаба-макакам дать пилить систему вроня кубера? Это было бы тормозное говнище.
Вот кто мой гет спиздил. Хомяк
Хз какое ты говно там написал, я даже не понял.
SOLID это нормальное решение для большой архитектуры. Понятно что в твоем говноскрипте можно функцию 1000 строк напиздрячить, которая делает с десяток вещей одновременно и никто не пострадает (кроме тебя, но ты, возможно, даже не поймешь).
Но ты же хочешь развиваться как инженер, а не быть мастером лепки фигурок из говна?
Если ты возьмёш тяжеловесный фреймворк или иное нагромождение абстракицй, у тебя будет несопровождаемая лапша и "модулей" и километрвоые стектрейсы, ты просто вышел на новый уровень говнокода. Поэтому укатывай обратно свой навозный толстенький ООП-шарик.
Го и есть острие эволюции. Как бы это трудно не было признать. Твои бекенды на го, они живут в докере, оркестрируются кубером, коррдинируюся мешами типа консула и истио. Твой ооп + SOLID на деле, это рестухо-ссанины с лесенками аннотаций и куча легаси говна в большинстве случаев.
Это и есть развитие как инженер. Проработка архитектуры и выбор соотвесвующей для опередёлнной задачи. Самое сложное - это сделать максимально просто.
Ты как раз привел лепку из говна, слепую веру в какие-то универсальные(их нет маня, нет) принципы, которые ты подсмотрел где-то.
Смотри, ты написал охуенный веб сервер. Я беру, поверх твоего сервера добавляю веб фреймворк (роутинг там и всякое такое). Третий васян берет и обрачивает мой фреймворк для своего сайта или бизнес продукта на REST.
Никто из нас не лезет в кишки приложения друг друга. Прикинь такую ситуацию что взяв готовый фреймворк, тебе вдруг неожиданно нужно (прям нужно, а не есть такая возможность) разбираться с чанками post запроса?
Ты пишешь гет запрос все норм, а с post запросами каждый раз тебе надо парсить в цикле чанки, контролить сокет и все такое.
Еботень, да?
Нормально когда поверх продукта, даже класса, можно положить слой абстракции.
Ты же когда настраиваешь приемник, ты же не перепаеваешь резистор? Ты просто крутишь настройку, тебе срать как там под капотом работает.
К примеру приемник поял ты, а я написал его интерфейс с ручками и экраном.
Абстракция это нормально.
>Самое сложное - это сделать максимально просто.
Точно, лучше инженерное решение - это просто решение. Сейчас инженеры очень тупые, они думают, что чем сложнее решение, тем круче их скилл. Но это же полное дерьмо. Скилл в том, чтобы сложное сделать простым, а не наоборот.
Может знаешь похожие цитаты узнаваемых людей? Ну чтобы тыкать носом в эту простую истину. Просто я когда сам формулирую это высказывание, его не воспринимают всерьез. Ну это может и правильно, я же не авторитетная личность.
>Хз какое ты говно там написал, я даже не понял.
Правильно, и не поймешь. Не дорос еще. Если что это не я писал >>07777 я просто прочел и немного вник в вашу дискуссию. Тебе чувак правильно написал, у теба каша и в голове и в коде. Шаблонные фразы. Повторение на уровне макак.
Чтобы решать такие задачи, нужно иметь подходящее мышление. У тебя пока его не наблюдается. Прокачивай, главное правильно. Почитай Алана Кея или что-то похожее. Улови принципы минимализма. Почитай японских инженеров. Они делают все очень компактно, без раздувания.
И даже свидетели этой секты один хер пишут процедурщину, которую просто немного косметически замаскировали под обьекты.
Вот как должно выглядеть объектное программирвоание
names = new Sorted(
new Unique(
new Capitalized(
new Replaced(
new FileNames(
new Directory(
"/var/users/*.xml"
)
),
"([^.]+)\\.xml",
"$1"
)
)
)
);
Это говно!
ИЧСХ эта задача в функциональном стиле - выглядит на много хуже
Используйте внешние сервисы для постинга кода блджад
Го треды - VIP палата поехавших.
Не можешь стиль письма сопоставить?
Егор, это ты? Узнал тебя по ооп-лапше, которую ты пишешь
Все пишем с одного акка. Вопрос в том, как разлогиниться.
Во! Го-тред наконец-то пошел в правильное русло
Нет, они няшки. А джависты все напыщенные и много денег требуют за свою тормозящую гиперджангу.
Спасибо)
Видимо из-за этого, работодатели думают, что существует дефицит гошников и платят любые деньги, что урвать хотя бы пару.
Корутины > Горуины
Какой дефицит, если им отказывают? Их наоборот свободных много.
на жабе уже никто в здравом уме новые проекты не начинает, только легаси, но жабьи навыки никуда не пропадут благодаря kotlin
мне был бы интересен kotlin native, если бы для него были библиотеки, а для использования жабьих либ требуется жирный жаборантайм, поэтому предпочитаю go
Котлин для меня сейчас заменил питон. Даже мелкие парсеры пишу на котлине. Конечно, немного избыточно собирать градлем в толстый джарник, но зато переносимо как тот же экзешник в го. Ну и мне нравится что пишу на том что знаю хорошо. Возможно заиспользую позже сам котлин-скрипт, но пока времени нет погрузиться в это.
Раньше бы джаву для этих целей и не взял бы, дрочился бы через stackoverflow с питоном, или даже node.js.
Да, я долбаеб, что в свое время не взял на вооружение хотя бы тот же груви, не говоря о скале
Насчет нейтива не знаю, но по-любому там есть интероп с сишными либами. Не думаю что кто-то там реально думал начать с нуля писать си-подобные либы для котлина. У разрабов замашки огромные, но они же не долбаебы.
Для меня котлин сейчас видиться как язык общего назначения, прям реально общего. Хотя я не планирую писать на нем сейчас для js или какую-то ардуину дергать через нейтив, но как потенциал что такое возможно, это вдохновляет.
Не разрушай его манямирок! Нам не нужны колумбайны на энтерпрайз галерах.
Джавы-хуявы, котлины-хуетлины, расты-хуясты...
Есть тренд, что го стал братским языком для говно-пыхи и питончика.
По вакансиям, очень часто требуют эти пары.
Го завоевал свое место в мире. Угомонитесь, вымирающий вид.
А нормальных языкам не нужны приляпки.
Потому же, почему нет перл-тредов. На го работает очень мало анонов, обсуждать тупо не с кем. Поэтому обсуждаются более понятные большинству темы.
Го треды на срачах и живут.
В свое время го развивался через агрессивный маркетинг. Холивары доставляли тонну лузлов. Так отрицательно го и закрепился (спасибо маркетингу и фанбоям языка)
Мне кажется, что работает достаточно.
Но активной беседы не выйдет, потому что язык простой и чистый, спрашивать не о чем.
Адовых непонятных фреймворков тоже нет.
Студентов ему благо не учат, тупых вопросов нет.
Закапываем тред до выхода го2.
Один пост от нюфани, коих во всех тредах полно. А выше - срач про фреймворки и языки на несколько сотен постов.
Лучше уж смеяться, чем быть шизом.
Я тоже так думаю.
Все будут писать для квантовых компьютеров, а джависты в 2100 году будут продолжать поддерживать банковское по.
Как коболисты в наше время.
import org.springframework.quantum.bind.core.annotation.QuantumMathContext;
На котлине есть корутины С#, js, python... и главное там есть возможность контролить руками пулы потоков (то есть обычные системные потоки).
>>1608941 →
Язык без экосистемы - ничто, поэтому нет там нихера корутин, маня. Давай найди корутины в jdbc драйвере любой популярной БД, вместо легаси говна с блокирующим IO и жирным пулом системных потоков.
Ну вот тут и проиграл гошке и эрлангу. У тебя в итоге будет хуева туча системных тредов за счёт блокирующего пула бд + пул для твоей логики на корутинах. В то время как у гошки будет единый небольшой пул на всю логику приложения и меньшее потребление ресурсов.
Конечно проиграли, когда мы выбрали в го.
Сначала ты начинаешь мыслить по гоферски и на каждый чих пытаешься сделать сервис, потому что разрабы не дали тебе системных потоков (и так на каждую дробилку и i/o).
А потом понимаешь что скопилось слишком много говносервисов, которые нефига ничего не делают толком.
В итоге один сервис, который берет картинку, преобразует её, ложит в бд. Превращается в два сервиса, потому что число дробилка ложит потоки с бд, а потоки с бд кладут числодробилки.
Тут мало народу, а лузлов как с го - не половить.
Дробилки ложили все другие горутины. Нет возможности разделить i/o запросы, бд и дробилки (жесткая обработка изображения). Приходилось 1 микросервис дробить на 3 каких-то "наносервиса".
Было бы управление системными потоками, можно было дробилки в отдельный поток (пул-горутин) положить. И тогда бы они блокировали только друг друга (что нормально, просто очередь была бы)
У тебя скажем 16 ядер.
Ну и создай 2 пула по 8 горутин.
Один пул под число дробилки, другой под остальное.
О, мы этого не дождались.
Котлин на джаве, джава развитая многогранная платформа. А что го? Учить с нуля язык и экосистему чтобы писать только микросервисы? Да меня спустя пару дней воротило от бойлерплейта.
Благодаря тому, что го невероятно простой и выразительный, на нем не скоро появится легаси.
Это на джава за год можно так засрать проект (так и происходит обычно), что легче выбросить и написать с нуля.
А на го, даже взяв пятилетний код, легко погружается в суть.
>го
>выразительный
Серьезно?
>на нем не скоро появится легаси
Употребляет "легаси" как форму деградации кода, когда это форма времени.
На нем уже есть легаси, первых вариаций не вполне успешных библиотек (типа gorilla, revel). Легаси - это эволюционная проблема, которая коснется всех. Даже миграция с питона на 3 была проблемой, потому что уже написали тонну кода на 2 версии.
Если на го что-то еще легко читать и легко это переписать - значит "этого" написано еще немного. А не потому что он такой невьебательский простой, что даже ты осилил его.
c++20
Плюсы без топвуза со стажировками не борщи разве?
Да вот что-то на жабу в последнее время все чаще смотрю. Мне кажется это отличный способ спрятаться на галере в большой компании и не отсвечивать, что я собственно и хочу.
Но зачем-то после пиструна выбрал го (ну, не зачем-то, а потому что натыкаюсь на вакансии где требуется именно такая связка).
>>09904
Ну значит пщ. или жабу
Ну он охуительно выстрелил так-то. И говорить про выстреливание с пиком про кокотлин как-то вообще толсто, недоскалка для анроед формошлёпов.
Если загнется котлин, то ты останешься со знанием джава-платформы. Если загнется го, то ты останешься ни с чем.
Но котлин не загнется, это синтаксических сахар
> questions
А хедхантер что говорит? Это только у популярных языков количество вопросов коррелирует с количеством вакансий.
У котлина полный интероп с джавой, какой нафиг андроид?
Телефонная херня это всегда хайп для ваннаби-разработчиков (тоже самое с реакт нейтив).
Objective C
Такой же как с явой и котлином, когда мы типа пишем на котлине свифте, но яву обжс ты все равно должен знать!
Нужно только знать жабью экосистему (минимум про коллекции), синтаксис жабы уже не нужно, котлин как раз про синтаксис.
Свифт же (насколько я знаю), это вроде полностью другой мир, причем в первое время не самый лучший, я помню эти слезы как их принудительно на это сажали.
>В давней версии (лень гуглить, но давно) они научили горутины отпускать потоки, даже если ты в цикле числа молотишь.
Зависит от. Если у тебя горутина исполнят только for {} (безусловный пустой цикл), то она как займет системный тред, так его и не отпустит никогда. Переключение контекста возможно при блоках на всякие синхронизации, вообще любой вызов функции или явный вызов runtime.Gosched()
У тебя неправильная инфа, экосистема у языков одна, а сами они совместимы между собой насколько это возможно, эпл даже обжс допиливала для этого. Слезы могли быть только у дидов, в той же стате so после выхода свифт занял первое место по обожанию.
Возможно, но трагедию помню. Наверно по тому что первые версии не были такими идеальными, или что версии ломали. Не знаю, да и пофиг (надеюсь какой-нибудь котлин-нейтив или js-нейтив, или подобное, решит проблему кросс-херни)
Ты наверное слышал о том, что эпл не оставляет совместимости между версиями языка, и любителям помесить легаси приходится постоянно его рефакторить.
>между версиями всего
Так правильнее лул, но это не такой депрекейтед, который гугл выдает, просто выкидывая фукционал
В бизнес мире не переписывают софт по каждому чиху, это дорогое удовольствие. Тут это работает лишь потому, что мобильные приложения в 95% случаев это просто примитивный CRUD.
Никто не запрещает сидеть на старых версия, как это любят в энтерпрайзе. А для тех кто не хочет из коробки есть тулза миграции, которая зачастую сама все исправит.
Уже представляю для тырпрайза
У тебя 100мбайт чистого кода и какая-то тулза, которая потрошит твой код. Лол, тут с 6 джавы ели до 8 перекатились, а тут бред этот.
Ваннаби язык для ваннаби разработчиков.
Нет развития в экосистемы языка, если постоянно ломают что-то, это говно проходили много раз, просто свежее поколение хипстеров еще не в курсе этой проблемы.
Проверь сам на свежей версии.
Было в релиз нотс, что цикл будет occasionally отпускать поток.
Как я понял, они при компиляции в конце каждого цикла вставляют автоматом что-то вроде if rand() > 0.7{ goshed() }
У них все нормально, они просто и не были популярны.
и что на твоём котлине написано, умник?
неси сюда хоть один проект уровня Kunernetes или CockroachDB. В том то и дело, что на котле только мобильная хуйня типа anko или либки для рестошлёпов а-ля ktor.
>Kunernetes
Лол, гофер пытается помериться письками за счет чужих заслуг, но не может в правильное название.
Все что написано на жабе, написано и на котлин. Никто велосипедить без киллер фичи не будет.
Это тупое мерило для школьников (впрочем, для гофером норм).
Одно дело написать очередную оркестровку, другое дело потом сопровождать там код среди тонны бойлерплейта и interface{}
У меня на работе приложение на котлине, которое по сложности как твои 5 kubernetes, как мне помериться с тобой письками?
Поэтому я выбрал котлин. Ни стариковской, ни зумерской тупости.
>А что го? Учить с нуля язык и экосистему
для тех, кто уже программировал на каком-нибудь другом языке, затраты времени на изучение go минимальны, особенно для сишников
>чтобы писать только микросервисы?
пишут всё https://github.com/avelino/awesome-go
а то, что большинство российских работодателей не умеют зарабатывать на go за пределами микросервисов, так это другой вопрос
>затраты времени на изучение go минимальны,
Уже выучил как форматировать время через дату или работу "своих" регулярных выражений в го?
Изучение экосистемы языка занимает 99% времени от изучения синтаксиса. Нельзя просто взять и осилить либы го, там все через жопу и по другому.
>или работу "своих" регулярных выражений в го?
А в чем тут проблема? Я написал парочку, не заметил особо разницы
Если у тебя нет несколько лет опыта программирования на других языках, то на Go в РФ ты сейчас наёмным работником не устроишься, ибо для начинающих с Go вакансий нет.
В Украине - то же самое
В общем случае - шарф или жаба.
Много вакансий в любой жопе, много больших компаний, стажировок, приучают к классическому ооп.
Js или пыха навсегда ломает мозги юного падавана, и он будет вынужем прозябать во тьме.
>В общем случае - шарф или жаба. Много вакансий в любой жопе
Я живу в области с населеним ~1 млн. чел., так вот у нас ни одной вакансии на этих языках нет. Даже С++ нет. Только 1С, php/js/html/css/*sql. Ещё попадается дельфи в некоторых окологосударственных организациях и специальные языки для программирования станков. Всё. При этом требуется несколько лет опыта и платят столько, что хватает только на еду, квартплату и самую дешёвую одежду. Я удивляюсь, как студенты преддипломную практику проходят в таких условиях. А ведь в связи с импортозамещением должна возникнуть острая потребность в системном программировании, чтобы, например, слезь с микрософтовских продуктов, которые могут в любой момент перестать поддерживать.
По-моему, в РФ только два города осталось, где ещё занимаются более-менее серьёзным программированием.
>Не все умеют, но зато очень быстрые.
Как раз таки очень медленные, но скорость почти гарантирована линейна от сложности. Херня какая, мне кажется просто не осилили впихнуть норм
>чтобы писать только микросервисы
Но микросервисы - это только подход к архитектуре.
Никто не мешает тебе запилить один супер-пупер монолит.
Там же есть compileposix, это обычные.
Я так понимаю, большинство гоферов так вдохновились языком, что даже никто не вспомнил недостатки асинхронного программирования. Хотя буквально чуть выше, анон описывал про дробилки, которые ему стопорили горутины.
Накидайте, как делать это правильно.
Хочу написать свой генератор из openapi в скелет приложения.
Парсю из json вот такие компоненты. Из этоих жсонов создаются по сути типы компонентов.
То есть в runtime программа граббает эти жсоны и должна из них наделать структур с полями value1, value2 итд, а также меткой имени. Вроде бы ничего сложного, просто обмазать лишний раз всё интерфейсами, но суть в том что наверняка интерфейсы очень ебаным образом складываются в памяти (по понятным причинам, потому что неизвестно что в них въебать собираются). Возможно они лежат просто ссылками в рандомно разбросанных местах. Это очень плохо, потому что производительность программы в таком случае резко упадёт.
Ну и задача в том чтобы каким-то невзъебенным образом создать возможность в рантайме создавать новые типы структур, с определёнными типами полей, потом из этих типов делать слайсы и собственно в них уже по шаблонам запихивать всякое. Но я совершенно не представляю как можно в рантайме новые структуры создавать. Был какой-то наркоманский варинат чтобы создать структуру с массивом байтов и uint маской по которой всё это дело будет расшифровываться, но это бля конечно пиздец.
Лол, была мысль, но стало лень.
Ты рассуждаешь в одном посте посте об эффективности и накладных расходах на хранение интерфейсов и, одновременно, приносишь тухлый json c динамической структурой. Что с тобой не так?
Либо парсинг json'ов редкое событие, и тогда данные из них ты упаковываешь в совсем другие структуры, либо парсинг это основная задача твоего сервиса, и тогда интерфейсы тебе уже погоду не сделают, но посмотри в сторону кодогенерации [ан]маршалеров
Да я просто сумасшедший долбоеб. А за анмаршалы спасибо. Хотя тоже интересно насколько это тяжёлая операция
mailru/easyjson , достаточно просто и незаметно.
Всё еще не понимаю, хорошо это или плохо. Думаю с опытом станет понятнее.
>>13047
Понять бы еще до конца что это. Первый язык был петухон, заем жс. Я так понимаю это сорт оф "утиная типизация"? Читаю описание, пока эта концепция идёт туго. Собственно как было и с ООП
Алсо, я правильно понимаю, что интерфейсное значение это совокупность типа и его экземпляра? Типа такая совокупность реализует какой-то неописанный (а может и описанный, но это неважно) интерфейс?
Где-то натыкался на мнение, что то, что в голанге, не совсем верно называть утиной типизацией, и предлагали какой-то малоизвестный термин, который я не запомнил. Но по-моему разницы никакой, вполне себе утиная.
Какое это имеет отношение?
>>13057
Официально в говне структурная типизация https://en.wikipedia.org/wiki/Structural_type_system
И какой новый?
Если тебе критична разница между слайсом и ареем я сомневаюсь, что она вообще есть - тебе явно не подходит язык с GC
Насколько я понимаю, ни насколько, потому что слайс - это надстройка на массивом.
Но если для тебя этот вопрос критичен, то в го есть встроенная тула для бенчмарков, проверь с помощью них
С чего бы им отставать в алгоритмах?
>по сложности как твои 5 kubernetes
>хотя бы опиши детально
Гоферы тупые или просто никогда не работали? Это такое тайное знание что ли, что среднее приложение или совокупность приложений может быть достаточно сложным в бизнесе?
>господа, кто-то пишет что-нибудь под расберри на го. не могу разобраться с одной хуйней.
https://nometa.xyz/
сорян, я задавал вопрос на стековерфлоу, но наверное тоже в топорной формулировке
https://ru.stackoverflow.com/questions/1080408/Как-наладить-детектирование-сигналов-с-датчика-препятствий-fc-51-на-raspberry-pi
Я почти уверен, что все дело в том, что эти две либы используют разную нумерацию пинов.
Табличку маппинга можно получить выполнив gpio readall
Ну как сказать, сейчас долбоёб тут только ты, потому-что уходишь от ответа на простой вопрос.
По скольку ты долбоёб, бьюсь об заклад систему уровня кубера ты не осилишь даже на 15%, она
а) распределённая
б) хорошо декомпозированна
в) довольно легковесна и производительна
г) из вышеперечиленного следует, что нужно хорошо уметь в архитекутру
д) ты макака умеешь только в хуй за своей щекой и сренькать жабой по другим тредам
Тебя затролили, при том очень толсто. Ты словно первый день на бордах. Перечитай сообщение, на которое ты ответил - это же неприкрытый вброс, причем с первого символа - оскорбление. Зачем на такое вообще отвечать?
да, я пробовал разные пины, юзаю встроенный pinout. Пробовал отловить срабатывание по RiseEdge, FallEdge, AnyEdge, просто по состоянию пина, но никак.
сегодня еще поебусь вечером, может действительно что то с нумерацией пинов напутал
В Киеве ситуация еще хуже, порядка 20
Пок-кок, только на го можно написать супеп-пупер распределенную архитектуру. А ты не осилишь даже 13%, нет 14%, нет! Ты точно не осилишь даже 15% Я сказал!
>г) из вышеперечиленного следует, что нужно хорошо уметь в архитекутру
Сам похвалил, сам остался довольный.
Ты хоть сорцы открывал? Маня?
Проигрываю со школотронов, которые не могут в орфографию, но уже могут в "архитекутру"
>в ДС
>остаётся в районе 50
это для тех гоферов, у которых многолетний опыт программирования на других языках, а для начинающих карьеру с go - ни одной вакансии
мимо ищу второй язык для бека
для адептов "высокоуровнего" есть scala и haskell
5 лет - мало, ибо щас возрос порог вхождения для успешного клепания очередного "языка-убийцы"
Все у них язык молодой и успешный.
Языку 10 лет.
За 10 лет жаба и пхп стали топ языками.
Питон смогли как минимум кто-то там полюбить.
За прошедшие 10 лет, js смог стать топ языком и модульнее чем питон, с его костылем virtevn
За 10 лет шарп смог стать топчиком и стухнуть!
За 10 лет руби смог полюбиться и затухнуть.
10 лет, Карл!
Так я уже, 3 года как, лол. Просто работу подыскиваю.
>Goroutines are now asynchronously preemptible. As a result, loops without function calls no longer potentially deadlock the scheduler or significantly delay garbage collection. This is supported on all platforms except windows/arm, darwin/arm, js/wasm, and plan9/*.
Ты про это?
Ну так 10 лет назад пщ только появился, а остальные упомянутые языки тогда существовали уже давно, и про них многое уже было известно.
>у меня в памяти будет 1000 объектов?
Смотри какая штука - 1000 объектов будет, только если ты их явно сохранишь. С другой стороны, когда ты перестаешь использовать объект - он не сразу же исчезает, а только после того, как отработает GC. Таже нужно понимать, о каких именно объектах идет речь - это не данные, которые внутри слайса, а всего лишь структура с 3-мя числами - https://golang.org/pkg/reflect/#SliceHeader
У слайсов, емнип, есть ёмкость, и пока она не переполниться, новый не создатся. Немного похоже на сишный realloc.
> добавлю 1000 значений в цикле, то у меня в памяти будет 1000 объектов
да, копирует. что ты ожидаешь от такого кода, например?
s := []int{}
for i := 0; i < 30; i++ {
_____s = append(s, i)
}
fmt.Println(s)
30 30 30 30... или 1 2 3...?
хотя хуевый пример.
Чтобы убедиться, что нихуя не 1000 объектов, достаточно в цикле написать:
fmt.Println(&s[0])
И увидеть, что адрес далеко не каждый раз новый.
Или открыть уже наконец документацию, блеать
В этом вообще чудо го, имеешь две переменные одного слайса и неожиданно (как только перевалит на капасити) у тебя две те же переменных, только ссылаются уже на два разных слайса (причем первая на старую часть).
Можно такое неопределенное поведение поймать (как магические ошибки в си), что и за месяц не найдешь ошибку.
как ты мог догадаться по моему хуевому примеру, я пытался не про какую-то тысячу слайсов рассказать, а про копирование объектов внутрь слайса.
Жесть, как вы это читаете вообще?? Без подсветки какие-то еироглифы вообще для меня.
Значит ошибся, был какой-то косяк когда слайс или мапу ссылкой юзаешь. А может и пофиксили, я давно не писал.
И что мешало сделать один метод append для одного встренного типа как в пистоне или других высокоуровневых языках? Выше кидали код на котлине. Как-то неочевидно все
У гоферов на каждый говно-дизайн и очевидные проблемы есть своя статья?
Помню раньше писали, как круто не иметь обработку ошибок в языке, а строки круто иметь в сыром потоке байт, чтобы в карты торо их потом переводить.
> метод
Такое ощущение, будто ты думаешь, что пщ - объектно-ориентированный язык. Уверяю тебя, это не так. Он процедурный. И подходы соответствующие. Как в прошлом веке.
https://golang.org/pkg/sort/
Охуеть просто, целый модуль с функциями для сортировки массивов различных типов. Это тоже не постичь неосялиторам.
>Вне джавамашины жизни нет?
Я бы сказал, ну нафиг такую жизнь.
Ну, а куда? В шарфик? В нод.жс? В раст?
Дали котлин и норм.
Если серьезно - то пройди go toor, чтобы понимать что такое метод в го и что такое интерфейс. Затем создай свой тип на основании твоих данных и определи в нем методы из sort.Interface. Для некоторых слайсов такие типы уже есть внутри sort
Я свалил заграницу, но ещё не получил ПМЖ, такая смена работы может выйти мне боком, т.к. редко кто на джунов оформляет приглашение для визы.
Очевидно, работай там где работаешь сейчас.
Делай портфолио, свети еблом, нужная хрюшка тебя сама найдет.
Не думаю что в го есть карьерный рост сравни джава девелоперу.
значит есть хендлер который получая запрос что то делает в базе данных(mysql). хендлер этот лежит в отдельном пакете. ВНИМАНИЕ ВОПРОС как из мэйна открыть БД так, чтобы хендлер пользовался этим подключением?
Примерно так
type Client struct{
Database Database
}
func (c Client)Handler(){
c.db.DoSomething()
}
/////////////////////////////
func main (){
db := database.Open()
client:= Client{Database: db}
}
чувак свалил с го на раст и вам рекомендует
в понедельник скажу лиду что весь код теперь буду писать на расте
https://pl.kotl.in/io8TQ-dol
Спасибо что не в гугл послал
Они опять напишут целую статью, почему это ненужно и оставят все как есть.
Я не понял, в чем проблема?
К о вообще пользуется виндой, кроме как в корпорациях для экселя и дома для игор?
Если сидишь на никому не нужной оси, будь готов к тому, что ее поддержка будет хромать.
И это не проблема гошечки, а любого кррссплатформенного языка - J's, python, Java.
О чем этот пацаненок ноет не врублюсь?
Зачем тогда добавлять поддержку винды? У создателей гошечки вот этот half-assed подход во всем.
Давай на русском, я же гофер, а не тырпрайз джавист с индии.
Ты могешь под виндой кодить а билдить на сервере.
> неродилосьтолком
Тем более хорошо, меньше придётся переписывать на расте. Это не питон 2 и не джава EE 6.
Специально понапишу по-быстрому стартапов на гошке, чтобы ты до пенсии пререписывал все это на руст за дошик
Ну и мразь же ты, как таких земля носит!
потому что браузеры
Тот случай когда еще помнишь указатели в си и прямое управление памятью и решил засунуть это в свой язык без управления памяти, потому что это было модно и молодежно в семидесятых.
На самом деле есть концепция ссылок и value-типов (данных на стеке, а не в хипе), и вот указатели как раз реализуют эту концепцию, только не самым удобным способом.
Можно подумать, что в Си нельзя указатель на стек создать.
Для всех объектов, даже примитивных (например как в питоне или котлине), использовать только ссылочную систему.
Указатели нужны там, где есть прямое управление памятью, в го нет прямого управления памятью и арифметики, поэтому указатели просто превращаются в головную боль. А автоматическое разыменование стуктур, только скрывает реальную проблему.
Отсюда, мы легко получаем неопределенное поведение со слайсами, когда заводят вторую переменную для одного слайса. По началу все хорошо, а потом вуаля, магия, один слайс стал другим. И найди потом ошибку, почему по определенной фазе луны программа ведет себя не так.
Как это работает в нормальных языках (котлин, питон, джава, js, частично с++, частично шарп...)
https://pl.kotl.in/FS-JzWbAb
> неопределённое проведение
А это тоже UB, да? Ptr может "внезапно" изменится. А может и нет. Магия какая-то.
ptr = realloc(ptr, new_size);
А почему для примитивных типов поведение не такое же, как для структур?
Как переписать этот код, чтобы было 2 разных объекта, причем, чтобы функция тоже не меняла obj2 ?
https://pl.kotl.in/wkYUuERDh
>неопределенное поведение со слайсами
ты там всё еще упорно передаешь слайсы по значению? аватар необучаемости
Говорю же костыли, но управления памяти то нет
>А почему для примитивных типов поведение не такое же, как для структур?
Переменная это адрес в памяти. Добавляя новое число, ты перезаписываешь старый адрес.
>упорно передаешь слайсы по значению?
Все так делают, просто обычно перезаписывают одну и туже переменную. А потом решаются на общие данные.
В этом и беда слайся, ты должен знать как он устроен. Это лютый обосрамс.
Это может сейчас гоферов где-то дрессируют на правильную работу слайся, а в наши годы это было весело.
Для начала поставь голенг отсюда https://golang.org/dl/ если еще не сделал,
после чего добавь папку в path https://helpdeskgeek.com/windows-10/add-windows-path-environment-variable/
Сегодня узнал о существовании этого языка.
Приехал домой, все установил.
При запуске пишет такую залупу.
Помогите тупому плз.
Да, хочу такой результат, но чтобы объект создавался не новый, а на основе другого.
То есть, хочу две переменные, которым соответствует одинаковый объект, но разные ссылки в памяти
Так по логике картинки, если теперь написать b=6, то и a поменяется, разве не так?
Молодец.
Создавать надо через конструктор (в котлине он не явный, в джаве все пишут руками).
Peson("Катя", 20) // это и есть создание объекта. Даже вроде чем-то похоже на го.
https://stackoverflow.com/questions/49053432/how-to-clone-object-in-kotlin
Решение на 15+:
Переведите объект в json, а потом назад, так и получите copy
И эти люди будут гошников жизни учить?
В b запишется новый адрес объекта "6". У "a" останется старый адрес. Переменная это контейнер с адресом, значение где-то всегда в хипе (если ссылок/переменных не останется, она уберется сборщиком мусора)
Вот играйся, вникай.
https://pl.kotl.in/WG0R-d1Ux
А ну разбежались, суслики, вишь тут устроили.
https://pl.kotl.in/Jn2ytxA2Q
>>23295
Объект может быть ппц сложным (например хранить открытый файл или коннект куда-то), в этом случае простым копипастом не получиться, даже если разработчик очень сильно старался.
Поэтому единственный способ - самому написать метод копирования. Но чаще проще сделать сериализацию и дсериализацию
> Переведите объект в json, а потом назад, так и получите copy
я так делал штобы мапу интерфейсов в структ перевести.
Здесь норм расписано: https://doc.rust-lang.org/book/
Это называется тегами, гугли golang struct tags
Спасибо!
Это называется смешная пародия на аннотации.
https://pl.kotl.in/DoQJd548w
Там много чего питонячьего есть
например kwargs
foo(23, sep=23)
Вместо блядских __hui__ декларация operator.
Оператор in
Нахуя функции принимать интерфейс, вместо конкретной структуры, если я точно знаю, что будет только одна реализация? Типа скрытие внутренних полей или что? Это какая-то хуета уровня бамбурум-липецк принцип?
И почему я часто вижу такие конструкции:
https://play.golang.org/p/kI24rFlGL1g
var _ Shitter = &Faggot{}
Ведь, если я буду передавать структуру Faggot, в функцию которая принимает интерфейс Shitter, если в Faggot не рализованы эти 2 метода, код не скомпилится, зачем эта дополнительная штука нужна?
Там ООП и нет
Единственный смысл интерфейсов в го, это избежать циклического импорта.
Это придумали те, кто думает, что ООП - это SOLID, и больше никак.
Ты заранее не знаешь как будет развиваться приложение. Возможно у тебя таки появиться другая реализация. Если прямо уверен - это ок, используй тип напрямую, твой код от этого выйграет в производительности (хотя скорее всего ты этого не почувствуешь)
Но даже если тебе насрать на полиморфизм (зачастую он и не нужен и приводит к оверинженерингу) то вот тебе еще аргументы:
1) Я пишу много юнит-тестов, а в них тестируется очень маленький кусок кода, а все остальное - нужно изолировать, и самый простой способ это сделать - создать фейковые реализации для всего, что не участвует в данном тесте.
2) Если хуевая архитектура не DDD - ты столкнешься с циклическими имортами. В го такой код просто не скомпилиться а в ноде он будет работать до тех пор пока не начнешь использовать всякие эксперементальные фитчи вроде декораторов, я с этим столкнулся и очень долго отлаживал Зачастую при помощи интерфесов можно решить эту проблему.
3) Проще читать код - при помощи интерфейса ты на уровне сигнатуры функции можешь указать, какие методы типа, который туда передашь, будут вызваны в этой функции. Когда ты изначально пишешь код - это может казаться неважным, но в больших проектах - это очень сильно облегчает жизнь. В определенный момент Faggot может начать делать целую кучу всего, иметь пол сотни методов, и тебе прийдеться читать весь код функции, чтобы понимать что именно в данном методе делают с Faggot'ом. А в случае с интерфейсом - ты сразу понимаешь, что функция вызывает только MakeShit и EatShit не прочитав ни строчки реализации. Но это в идеальном мире, где все разработчики следуют принципам SOLID
Но важно понимать, что OOP, SOLID, паттерны и прочие идеи нужно применять только там, где они упростят жизнь, а не наоборот.
Есть две функции, в первой идёт запись файла file.writestring(...), вторая считает значения в цикле, как сделать так, что бы вторая отдавала что-то вроде file.writestring(число)в первую, где он собственно и объявлен. Return отдает последнее значение, нужно каждое.
Два варианта:
1) Собрать в функции два всё, что надо записать в файл и передать результат
2) Использовать каналы
в цикле второй функции вызвать первую?
Работала у меня гоурутинка, чтоб ее остановить, использовал chan struct{} в который отправлял struct{}{}, все было четко.
Потребовалась запустить еще одну гоурутину с возможностью ее останавливать. Я взял и стал использовать тот же канал, чтоб ее остановить, но предсказуемо соснул хуйца, тк сигнал завершения получала только одна горутина.
Сейчас есть 3 стула -
1) Добавить второй канал для второй гоурутины
2) Отправлять в единственный канал 2 сообщения
3) Просто закрыть канал
На какой лучше садиться, чтоб все по понятиям? Я пока выбрал 3, но есть сомнения
Зависит от ситуации, но если речь идет о graceful shutdown, то 3-й вариант - лучший из того, что ты назвал. Я бы рекомендовал вообще использовать обертку, context
Еще есть всякий девопс и всякие крипто-стартапы
Авито, Мэйл, Озон, Вайлдберрис -- это из того, что плюс-минус на слуху
Ага спс. К context я уже присматривался, но тогда решил не усложнять. А сейчас наверное пора уже внедрять, чтоб поменьше переделывать в дальнейшем.
В котлине продвинутые генерики, даже более продвинутые, чем в жабе, а как известно, генерики зло и нинужны.
Что-то в голос
Я в детстве поссал в водяной пистолет и обстрелял своих обидчиков.
Шарписты не приходили, потому что таким принято хвастаться только в языках с комплексом неполноценности
Это очень простой, на самом деле, пакет
Давно минули времена когда микрокодом реализовывалась каждая инструкция, на сегодняшний день овердохуя инструкций выполняются напрямую схемотехникой в кристалле, безо всяких микрокодов.
Мне кажется, что цифры не совсем верные. Уверен, что фрилансеры поотмечали, что они рабоют в компании с размером 1.
Ну и забавно, что 3% не указавших, где они работают, они отнесли к стартапам.
Вот этим данным я верю больше
Бля, хотел язык другой изучать. Питон заебал уже. Перл никого не интересует, а мне очень нравится. Джава/котлин/кложура - сразу нахуй. Пойти на раст что-ли посмотреть.
>Че как там, стоит вкатываться?
Если первый язык - нет, по тому что работы не много, а для трени - вообще нет.
Если что-то умеешь - можно найти работу, но на какой-нибуть ноде ее раз в 5 больше.
Если для себя - попробовать однозначно стоит, язык простой в изучении, и на нем довольно приятно делать нетривиальные вещи. Для простых крудов - наверное проще DRF продолжать использовать.
А с какой целью? Изучать ради изучения? Тогда раст да, отличный вариант. Но на нем работы нет, а та что есть - требует бекграунд на сях 5+ лет. Или можно всякую функциональщину потрогать, но это, опять же, больше для борщехлебов
ruby on rusty rails
Думаю перекатиться. Годик поучить, полепить пет проекты типа галереи, с авторизацией, добавлением и т.д чтоб ходить дрочить в туалет с полным паком видюшек/пикч.
>>28639
Я не против перекатиться на системное программирование. Но раст тоже может в веб, хотя это и не основная его задача.
>>28643
Изучать ради переката в новую область.
Я тоже из питона пришел, в целом доволен. Единственное, что особо ты в новую область (если речь идет о предметной области а не географической) не сможешь особо сменить, у питона всяко больше батареек на все случаи жизни, а у пщ нет даже веб-фреймворка, который бы считался стандартом разработки. Хотя go-kit пытаеться им быть, но нет
Кидай гитхаб, мы посмотрим.
Зачем нужны дженерики, когда младший сотрудник может генерировать функции сам?
calcukateInt
calcukateString
calcukateStruct
@lil_mexico в телеге. Ток мой уровень в гошке - пук-пук... среньк.
Привет от сишки.
Мало вакансий <=> мало проверенных временем технологий, маленькое коммунити, меньше инфы гуглится.
По идее там комьюнити (а следовательно и попенсорса) меньше. Все же нужно выбирать язык под задачу, а не выбрать язык по каким-то признакам и натягивать его на свой юзкейс
Перешел с пхп и node.js на го, полностью переломил свое сознание и смерился с дизайном го, но хватило меня на 3-4 месяца. Устал от бойлерплейта и даже пришло какое-то осознание что меня наебали.
Почти не зная жабку (зная только ООП), накатил котлин и просто влюбился. Да, есть шероховатости, но пишу код на нем, как на каком-то питоне (удобно, просто, лямбды вообще сказка).
Не знаю зачем тебе раст, не было бы котлине, я бы соскачил на питоне лучше, радость писать приложение на низком уровне - сомнительная радость.
В чем вопрос, собсно?
Нельзя запилить тред, если такой уже существует.
Скажи ето кену томпсону
Именно так, я не устаю это говорить.
https://www.youtube.com/watch?v=Og847HVwRSI
>Python обогнал жабу и жабийскрипт
Охуенно же, возможно свичнусь назад из ноды в питон
Если переживу эпидемию
Когда полностью пересядите с иглы JVM одобрения на лицо LLVM, тогда и приходите. К тому же работы на котлин-бекенде все равно меньше чем на Go
Работают программистами - только неудачники. Программирование это для души и творчества, а не для писанины одного и того же кода 30 лет подряд. ну или хотя бы для своего стартапа
Слинял с кодинга в 28. Пишу код для своих проектов по настроению.
Программист после 30, это как стриптезерша после 40.
Проект-менеджер
Апофеоз хуиты.
PHP/nodejs/Python
rust
Открой хедхантер, повбивай запросы типа "go python", "go php", "go java", посмотри вакансии и реши, что больше нравится.
https://2ch.hk/pr/res/1635774.html (М)
https://2ch.hk/pr/res/1635774.html (М)
https://2ch.hk/pr/res/1635774.html (М)
убрал ебучие запятые, прилипшие к ссылками
Спасибо
Трое.
Это копия, сохраненная 19 мая 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.