Hello, World! 🎄
Aurora
this isn't my group
Lektorfuja
Распечатал три листа кода.ничего не понял
Lektorfuja
Hello, World! 🎄
​​GitHub начал блокировать аккаунты Российских компаний и разработчиков🤔 По состоянию на 15 апреля 2022 года, заблокированы по меньшей мере десятки аккаунтов. Среди них — аккаунты Сбербанка, Альфа-Банка, других компаний, а также отдельных индивидуальных разработчиков. ☝🏻Так уже уничтожены аккаунты Sberbank-Technology, sberbank-ai-lab, alfa-laboratory При блокировании корпоративного аккаунта, в течение пары часов может сохраняется доступ к данным репозиториев. При блокировании личного аккаунта доступ ограничивается моментально. Через некоторое время после блокировки, пользователям приходят письмо о попадании под санкции.🤷🏼‍♀️
Lektorfuja
Совсем ничего не могу придумать что кодить. Может молиться?
Snusmumriken
@re_develop так вот, ты можешь привести примеры на что ругается компилятор го, но он всё ещё не запретит мне сделать кучу синглтонов с кучей связей например, когда изменения в одном приводят к цепочкам изменений в других.
Snusmumriken
А это крайне просто допустить при разработке в постоянно меняющихся требованиях, например. Говнокод ли это? Ещё какой.
Anonymous
Будете делать кучу пакетов?
Snusmumriken
Распределение по файликам — ерунда. Мне никто не помешает рекурсивно их связать. Ну или полурекурсивно, иногда разрывы всё таки будут встречаться ))
Anonymous
пакет это папка + файл и каждый из других пакетов вы должны вызвать import для связи. Больше 5 пакетов будет даже смотреться ужасно. Но как минимум такой код я даже на github не видел.
Snusmumriken
> будет смотреться ужасно Но надо. Надо, Вася, надо.
Anonymous
Только это слишком сложно будет и думаю вы выберете другой путь.
Snusmumriken
Переписать всё?
Snusmumriken
Нет.
Anonymous
Что все? зачем все переписывать. Вы на начальной задаче начнете писать по другому.
Anonymous
не в ООП
Snusmumriken
Начальной задачи не существует.
Anonymous
Или в стиле ООП го
Anonymous
В го нельзя делать так же как С++
Anonymous
или ява
Snusmumriken
Не бывает такого когда перед тобой сразу стоят полные требования. Ты ВСЕГДА будешь изменять программу на протяжении долгого срока, что бы ты ни делал.
Anonymous
или питон
Anonymous
Так реализация архитектуры зависит от языка. Вот тут вы задумаетесь, а как сделать то?
Snusmumriken
Вот что-что, а АРХИТЕКТУРА в наименьшей степени зависит от языка.
Snusmumriken
Ты НА ЛЮБОМ языке можешь сделать ЛЮБУЮ архитектуру. Даже на брейнфаке.
Anonymous
Да? Хорошо.Попробуйте сделать кастомный интератор в го
Snusmumriken
Как это связано с архитектурой?
Anonymous
Вопрос в том как реализовать архетектуру.
Snusmumriken
Я задал вопрос: как компилятор го не позволит мне делать говнокодную архитектуру, в которую будет вырождаться любая архитектура со временем?
Anonymous
вы не можете сделать класс
Anonymous
его просто нету.
Snusmumriken
При чём тут классы?
Anonymous
Так. Давайте так. Есть паттерны. Они как то должны реализоваться?
Snusmumriken
Нет паттернов.
Anonymous
Всмысле нету?
Snusmumriken
Есть архитектура которая, допустим, не состоит из паттернов. Архитектура и паттерны не связаны.
Anonymous
интерфейс, сингелтон, наследования, и.т.д. это шаблонные вещи построения архетектуры.
Snusmumriken
Точнее, паттерны ИНОГДА делают маленькие подсказки "как можно было бы сделать архитектуру", но не более.
Anonymous
Так вот. В го у вас так мало возможностей что вы пишите в процедурщине с копипастой
Snusmumriken
интерфейс, сингелтон, наследования, и.т.д. это шаблонные вещи построения архетектуры.
Причинно-следственная связь в другую сторону: это ПАТТЕРНЫ сделаны на основе популярных элементов архитектур. Не наоборот. Тебя никто не заставляет делать архитектуру из паттернов. Паттерн это подсказка а не приказ к действию.
Anonymous
так вот мой тезис в том. Что на го сложнее написать говноархитектуру
Anonymous
Потому что на го сложнее написать в целом говнокод
Snusmumriken
Всё ещё ноль доказательств.
Anonymous
скорее го сделан так, что бы все писали похожий код.
Anonymous
Если ваша цель написать говнокод достаточно сделать так import . ("pkg") вместо import ("pkg")
Snusmumriken
Нет, моя цель не допустить говнокода в развивающемся приложении.
Anonymous
Но если вы хоть чуть чуть в адеквате. Вам будет сложнее написать говнокод чем в любом известном мне языке.
Snusmumriken
И когда ты справа-слева начинаешь прилеплять что-то свежее и делать новые связи, после трёх-пяти итераций подобного, даже самый замечательный проект превратится в говно. Без исключений, какие бы гении его ни писали. И это с учётом неограниченного времени на впаивание.
Anonymous
Вопрос как вы это сделаеете?
Anonymous
Связи чего?
Anonymous
вы же знакомы с типизированными языками. Связи вам просто так, даже данных. Никто сделать не даст.
Snusmumriken
Банальный пример из учебника: Мы делаем торговое приложение с клиентами, товарами и чеками. Сделали. Понадобилось добавить акции — прилепили. Теперь товары меняются во времени на акционные и обратно. Понадобилось добавить акции для пенсионеров — теперь товары имеют два акционных слоя, обычный и пенсионный. Клиенты теперь могут быть пенсионерами, и мы считаем конечную стоимость процедурками. И есть много способов, как это сделать, но так как задача с самого начала не была полной, на этой итерации архитектура приложения уже говно, потому что акции и пенсионеров впиливали говёными способами поверх существующего, и подобного ты никак не избежишь, ты не можешь предусмотреть все будущие изменения которые понадобятся.
Anonymous
Хм. Да-да, но все это проще сделать на го чем на питоне. Нормально. Повторю Тезис в том что сложнее.
Anonymous
Это же не только мой тезис. Го делали так, что бы джуны могли писать продакшен код.
Snusmumriken
Чел, это всё ещё абстрактный пример в вакууме. В питоне точно так же "сложно говнокодить" если пользоваться линтером. В го встроен линтер? Замечтельно, в другие места его тоже можно вставить, даже в луа. И будет ругаться на слишком длинные строчки/функции/недостаточную декомпозицию, неиспользованные переменные и прочую херню на постном масле, что как бы "усложнит говнокоженье". Но архитектурные проблемы не решит.
Snusmumriken
Вкратце: золотой пули не существует, иначе бы весь бизнес давно на него перешёл единосекундно.
Anonymous
как бы сказать. В питон можно вставить импорт и программа будет работать. Хотя импорт не используется. В го компилятор не будет компилировать пока не исправишь.
Snusmumriken
Го принципиально не отличается от других языков в плане говнокода.
Anonymous
Так переходят же...
Anonymous
Просто го это в целом микросервисы и тут он король.
Anonymous
Так в го без линтера..
Anonymous
С линтером го еще более жесток.
Snusmumriken
> В го компилятор не будет компилировать пока не исправишь. Это называется линтер. Просто мягкий и встроенный в компилятор.
Snusmumriken
Никто не запрещает компилятору гошки заимпортить неиспользуемую фигню, но он на неё ругается. Это типовое линтерское поведение.
Anonymous
Ругается одно не компилирует другое.
Snusmumriken
Одно и то же, для того кто пишет.
Anonymous
Ну его не отключить)
Anonymous
А линтер можно...
Snusmumriken
Смотри что вообще придумано для сишки/плюсов. Ребята этим деньги зарабатывают. Только посмотри на список категорий ошибок которые они ловят. https://habr.com/ru/company/pvs-studio/blog/658361/
Anonymous
90% из них не возможны в го.
Anonymous
Как то так...
Anonymous
50% невозможны в питон. Только в питон динамический язык. А го статистический...Вы порой даже цифры сложить не сможете просто так.
Snusmumriken
А если ты в го напишешь условно (это псевдокод) function obj.foo(int x, int y){ self.x +=x; self.y +=x; } Оно влепит варнинг?
Anonymous
надо подумать как в го в целом такое сделать.
Anonymous
но если вы про второй икс. то это уже ошибка, а не говнокод.
Snusmumriken
type Object struct { x, y int } func (self Object) Foo(int x, int y) { self.x +=x; self.y +=x; } Без разницы как.