Согласен. Свой не самый ужасный, но всё же код за который мне впоследствии было стыдно, я писал тогда когда я думал, что расти мне больше некуда и я во всём-всём-всём разобрался и был непомерно горд и самоуверен.
В посте про "я за простоту", вы рассуждаете о математиках. Для того, чтобы создавать не вполне, a натурально рабочие, и, более того, производительные системы, сейчас достаточно изучить пару фреймворков для обеих сторон. KISS - призван как раз исключить это всё из рабочих разговоров. Все эти тонкости ООП и ФП, на практике (ну там где бизнес, сроки, и прям здесь и сейчас, ФОТ, диффицит кадров), нужны только людям, которые их изучили до тех пор, как фреймворки и библиотеки инкапсулировали эти знания. Бизнесу нет дела то того, соответствует ли их продукт "Наследование нужно, чтобы показать, что А это частный случай Б" (простите, но наследование разработчику нужно, чтобы не писать код родителя), если никто не жалуется и он потратил на это столько сколько рассчитывал или меньше, а так же если новый разработчик легко подхватывает написанное предшественниками.
Причём, отрицая бесполезность комментариев вида "если А больше или равно Б, то идём в другую ветку", вы привели пример хоть сколько-нибудь полезного комментария. Я писал именно про комментарии, которые поясняли именно работу кода, не предающих никак смысл происходящего, для чего этот код в принципе написан, а не как он работает. В вашем примере здравого смысла нет, но что поделать, если таковы бизнес-требования
"С другой стороны, если посмотреть на его репозитории, то можно увидеть что он сам на Сях пишет" на этому хрупком предположении... Простите, но как способность писать на сях, определяет хоть что-нибудь? Я могу все свои бесполезные произведения переписать на любой язык, что с того? Это каким-то образом мгновенно повышает авторитет автора текста? Я тоже как-то писал на С++ без знания языка, успешно, датчики заработали на esp32. Доволен ли я собой сверх меры - да, стал бы кому-то нести "смари чё" - нет. Сложность Computer Science никогда никуда не денется. Подходы и рекомендации принципов разработки и сопутсвтующих техник и технологий будут преследовать всех и каждого, кто решится развиваться в этом направлении. Следовать им - хорошо, не следовать - успешно от случая к случаю. Все практики и инструменты призваны облегчить путь разработчика к решению его проблем, но есть нюанс - границы применимости, как с тем же Agile, прости господи.
Меня смутила пара моментов. Я встретил пару статей в которых Google нашёл слово "JSON-over-HTTP", затем немного странного в репозиториях автора: https://github.com/nalgeon/redka, кмк троллейбус_из_хлеба.jpg, если надо KV - то почему не redis? sqlite3 хоть и не нуждается в запущенном сервере, всё же требует библиотек для работы с ним. При этом я не отрицаю важность стремления к KISS, на мой взгляд следование этому паттерну одна из сложнейших практик для опытного программиста. Далее "Внешние зависимости я ввожу по минимуму (в идеале вообще обхожусь без них)" - это хорошо, но если есть хорошие готовые библиотеки или ещё лучше стандартная библиотека (та что поставляется с языком программирования), то не использовать это почти что грешно, ведь библиотеки прошли ревью сообщества и имеют опыт применения в продакшене. "Оставляю комментарии, чтобы напомнить себе в будущем, почему та или иная функция делает то, что делает, или зачем нужна определенная if-ветвь", серьёзно? Комментарий на то зачем нужна ветвь if? Тот же Робер Мартин в своих лекциях рассказывает, что комментарии - порочная практика с тех пор, как пропало ограничение на длину имени функций и переменных, я, често признаюсь, не помню названия языка(ов), при отсутствии таких ограничений декларативный код описывает себя достаточно подробно, при условии, что у автора кода есть способности к выражению мысли в принципе. К тому же, когда я призывал к "давайте чаще комментировать", мне, как оказалось весьма справедливо, указали на то, что комментарии тоже надо поддерживать. Изменил код, не изменив комментария, - немного беда. В моей практике я сталкивался с построчным описанием выполнения кода, вместо описания бизнес-требований, которые реализовывал этот код, ну т.е. вместо "здесь ограничение на значение переменной, связанное с такой-то спецификой бизнеса", мне оставили комментарий "если А больше или равно Б, то идём в другую ветку", что ровно также и никак иначе понималось из кода :) "К дженерикам прибегаю только при крайней необходимости" - по-другому никто не делает. Просто в Go дженерики завезли не сразу, а так это просто тип как параметр, использование дженериков не требует никаких специальных навыков. И вообще раз мы за простоту, то почему было не ограничиться Python целком. Наверно мне минусов насуют, за то что я не аплодирую стоя этому парню, но не привыкать. Я люблю обходиться без зависимостей и библиотек, если код буду поддерживать один я. Я люблю обходиться без наворотов там, где это очевидно возможно. Я люблю аргументы "Зачем вам практики Google, если на ваш сайт заходите только вы". Я люблю sqlite3 везде где можно обойтись только им, при этом я не гнушаюсь просто JSON в файл писать, если у 100 пользователей и 7 записей в год. При этом я не люблю Docker до тех пор пока мой код работает на те же 100 человек и он в принципе на том же Python/JS/Ruby/PHP, я не люблю Apache Kafka, если можно обойтись самописной Que или тем же легковесным Redis. Я не люблю СУРБД, если можно обойтись SQLite. Во всех остальных случаях голову необходимо иметь и использовать по назначению. Все сложные вещи придуманы не просто так, и хорошо понимать зачем они придуманы и границы их применимости.
The image shows a young child in a school uniform—white shirt and dark vest—sitting on a bench with his hands covering his face, appearing distressed or upset. The background looks like a public space, possibly a street or a park. At the top, there's a headline in Russian that translates to: “'Your children don't know about Cheburashka!' In Samara Oblast, parental rights are being revoked due to the absence of a television." The text suggests a news story or article discussing a regional legal situation related to cultural knowledge and the presence of a television in the home.
Я на русском или нет, для меня не важно. Я обратил внимание на то, что ChatGPT отметила практически всё важное и довольно кратко, без суждений, предположений и домыслов.
LLaVA мне себя показала неудовлетворительной. Для сравнения: Изображение
Llva:13b
The image appears to be a screenshot from a news article or report. It features a young child covering his face with both hands, seemingly in distress or surprise. Behind the child, there is a blurred background that seems like an outdoor setting, possibly a street or square.
The text on the image is written in Cyrillic script, indicating it's likely from a Russian-speaking region. The top line reads: "They don’t even want to help themselves!!!" This suggests the article might be critical of a certain group or situation. The next line states, "God forbid they will not give them an opportunity to become independent and think for themselves." Below this statement is another line in Cyrillic script that is too small to read clearly in this description.
At the bottom of the image, there is a note that says: "Please do not share photos without permission from their authors or publishers," indicating copyright restrictions on sharing the image. The overall tone of the image and the accompanying text suggests it might be an opinion piece or commentary on a social issue.
ChatGPT 4 pro
The image appears to be a screenshot from a news article or report. It features a young child covering his face with both hands, seemingly in distress or surprise. Behind the child, there is a blurred background that seems like an outdoor setting, possibly a street or square.
The text on the image is written in Cyrillic script, indicating it's likely from a Russian-speaking region. The top line reads: "They don’t even want to help themselves!!!" This suggests the article might be critical of a certain group or situation. The next line states, "God forbid they will not give them an opportunity to become independent and think for themselves." Below this statement is another line in Cyrillic script that is too small to read clearly in this description.
At the bottom of the image, there is a note that says: "Please do not share photos without permission from their authors or publishers," indicating copyright restrictions on sharing the image. The overall tone of the image and the accompanying text suggests it might be an opinion piece or commentary on a social issue.
Я ради интереса поставил. Задачи пока с ними не решаю, я попробовал "опиши картинку", сетки Llama 2 до 70B параметров дали совершенно неприемлемые ответы. Я задал тот же вопрос Llama 2 70B, и лёг спать, но утром полученный ответ меня также не удовлетворил. ChatGPT 4 ответила просто блестяще, множество деталей с картинки подробно и точно описаны, текст точно распознан и также присутствует в описании.
На днях для себя открыл Ollama. Большим сюрпризом стало то, что основные потребляемые ресурсы - память, а не процессоры и всякое GPU/CUDA. Всё, кроме Llama 2 70B (39Gb) отлично работает на машинке с Intel N100 и 16Gb ОЗУ.
Странно сравнивать архитектуру REST и способ сериализации данных Protbuff внутри фреймворка для работы с этой сериализацией gRPC.Выбирая gRPC в самом начале проекта вы замедляете разработку. Сетевого трафика он потребляет меньше, но на этом надо ещё суметь что-то выйграть стоящего времени потраченного на обучение и возьню с прото-файлами. Самое главное, что даёт Protobuff это экономия процессорного времени при сериализации/десериализии данных, на которой тоже надо постараться сэкономить больше чем на времени разработчиков. Какая может быть эффективная экономия ресурсов при использовании Python (я люблю питон) не очень понятно.
Простите, если я излишне резок в своих выражениях. Моё грандиозное почтение, кстати, за циклы замечательных статей "Для самых маленьких". Я упустил слово "домашка" и видимо подумал про условия найма, и думал что речь идёт о будущих сотрудниках в штате системных/сетевых администраторов. Бесспорно, поддерживать в учениках увлечённость и любознательность благое дело.
Для тех кто пользуется документацией в линуксе нет магии. Вопрос был не "зачем вы занимались этим увлекательным исследованием?", а "зачем вы даёте задачи, которые сами не можете решить?" и которые без как раз "магии" решить не сможет никто.
А какой практический смысл блокировки протокола? Если у вас есть сервер раздающий адреса, значит вам это нужно. Если вы не желаете получать адрес, то указываете его статическим и останавливаете клиент. И т.д. Все эти задачи с подковыркой оторванные от реально опыта сделают специалиста хакером. Он будет хернёй на работе страдать с гордостью, конечно, но всё же. И будет думать, что занят скучными и бесполезными делами и от того хотеть "крутых" задач. И, возможно, создавать невероятные проблемы, которые можно героически решать. А надо чтобы всё было по стандартам сделано. Скучно, да, но стандартно, чтобы когда уйдёшь с работы ваша смена смогла быстро понять почему на хосте dhclient не работает. В итоге выяснилось, что вы давали задачу не убедившись, что она имеет решение, которого она не имеет. Я бы не стал считать допустимым решением задачи написание сишного кода. Такое нередко имеет отрицательные последствия, разделяя людей на тех кто уважает стандарты и тех кто стандарты не уважает.
И не только по вашему. https://en.wikipedia.org/wiki/Web3 Кмк OpenSource сообщество могло бы построить эту утопию, но как минимум за железо платить придётся. Силами энтузиастов можно построить очень много, однако, привлечь на эти платформы реальных пользователей будет великой задачей. Опять же построить монетизацию на донатах тоже непростая задача.
Автор как раз аргументированно подсказывает почему язык может не понравиться, заботливо оставляя читателю возможность сделать выбор писать на нём или не писать.
Возможно претензия к не явности, которая ведёт к детективным историям по поиску багов, которые не так уж и невероятны, на которые будет потрачено время, за которое будут платить деньги. И этих трат можно было бы избежать дав возможность явно указывать обязательность инициализации поля структуры. В том же TypeScript эта возможность предоставлена, и лично мне сэкономила немало времени.
В таком случае ваш комментарий также вводит в заблуждение и ограничение на какую-то длину должно быть учтено в библиотеке:
А ведь можно:
тогда и MagicNumbers антипаттерна можно избежать
Согласен. Свой не самый ужасный, но всё же код за который мне впоследствии было стыдно, я писал тогда когда я думал, что расти мне больше некуда и я во всём-всём-всём разобрался и был непомерно горд и самоуверен.
В посте про "я за простоту", вы рассуждаете о математиках. Для того, чтобы создавать не вполне, a натурально рабочие, и, более того, производительные системы, сейчас достаточно изучить пару фреймворков для обеих сторон.
KISS - призван как раз исключить это всё из рабочих разговоров. Все эти тонкости ООП и ФП, на практике (ну там где бизнес, сроки, и прям здесь и сейчас, ФОТ, диффицит кадров), нужны только людям, которые их изучили до тех пор, как фреймворки и библиотеки инкапсулировали эти знания. Бизнесу нет дела то того, соответствует ли их продукт "Наследование нужно, чтобы показать, что А это частный случай Б" (простите, но наследование разработчику нужно, чтобы не писать код родителя), если никто не жалуется и он потратил на это столько сколько рассчитывал или меньше, а так же если новый разработчик легко подхватывает написанное предшественниками.
Причём, отрицая бесполезность комментариев вида "если А больше или равно Б, то идём в другую ветку", вы привели пример хоть сколько-нибудь полезного комментария. Я писал именно про комментарии, которые поясняли именно работу кода, не предающих никак смысл происходящего, для чего этот код в принципе написан, а не как он работает. В вашем примере здравого смысла нет, но что поделать, если таковы бизнес-требования
"С другой стороны, если посмотреть на его репозитории, то можно увидеть что он сам на Сях пишет" на этому хрупком предположении...
Простите, но как способность писать на сях, определяет хоть что-нибудь? Я могу все свои бесполезные произведения переписать на любой язык, что с того? Это каким-то образом мгновенно повышает авторитет автора текста?
Я тоже как-то писал на С++ без знания языка, успешно, датчики заработали на esp32. Доволен ли я собой сверх меры - да, стал бы кому-то нести "смари чё" - нет.
Сложность Computer Science никогда никуда не денется. Подходы и рекомендации принципов разработки и сопутсвтующих техник и технологий будут преследовать всех и каждого, кто решится развиваться в этом направлении.
Следовать им - хорошо, не следовать - успешно от случая к случаю.
Все практики и инструменты призваны облегчить путь разработчика к решению его проблем, но есть нюанс - границы применимости, как с тем же Agile, прости господи.
Меня смутила пара моментов. Я встретил пару статей в которых Google нашёл слово "JSON-over-HTTP", затем немного странного в репозиториях автора: https://github.com/nalgeon/redka, кмк троллейбус_из_хлеба.jpg, если надо KV - то почему не redis? sqlite3 хоть и не нуждается в запущенном сервере, всё же требует библиотек для работы с ним.
При этом я не отрицаю важность стремления к KISS, на мой взгляд следование этому паттерну одна из сложнейших практик для опытного программиста.
Далее "Внешние зависимости я ввожу по минимуму (в идеале вообще обхожусь без них)" - это хорошо, но если есть хорошие готовые библиотеки или ещё лучше стандартная библиотека (та что поставляется с языком программирования), то не использовать это почти что грешно, ведь библиотеки прошли ревью сообщества и имеют опыт применения в продакшене.
"Оставляю комментарии, чтобы напомнить себе в будущем, почему та или иная функция делает то, что делает, или зачем нужна определенная if-ветвь", серьёзно? Комментарий на то зачем нужна ветвь if?
Тот же Робер Мартин в своих лекциях рассказывает, что комментарии - порочная практика с тех пор, как пропало ограничение на длину имени функций и переменных, я, често признаюсь, не помню названия языка(ов), при отсутствии таких ограничений декларативный код описывает себя достаточно подробно, при условии, что у автора кода есть способности к выражению мысли в принципе. К тому же, когда я призывал к "давайте чаще комментировать", мне, как оказалось весьма справедливо, указали на то, что комментарии тоже надо поддерживать. Изменил код, не изменив комментария, - немного беда.
В моей практике я сталкивался с построчным описанием выполнения кода, вместо описания бизнес-требований, которые реализовывал этот код, ну т.е. вместо "здесь ограничение на значение переменной, связанное с такой-то спецификой бизнеса", мне оставили комментарий "если А больше или равно Б, то идём в другую ветку", что ровно также и никак иначе понималось из кода :)
"К дженерикам прибегаю только при крайней необходимости" - по-другому никто не делает. Просто в Go дженерики завезли не сразу, а так это просто тип как параметр, использование дженериков не требует никаких специальных навыков. И вообще раз мы за простоту, то почему было не ограничиться Python целком.
Наверно мне минусов насуют, за то что я не аплодирую стоя этому парню, но не привыкать.
Я люблю обходиться без зависимостей и библиотек, если код буду поддерживать один я. Я люблю обходиться без наворотов там, где это очевидно возможно. Я люблю аргументы "Зачем вам практики Google, если на ваш сайт заходите только вы". Я люблю sqlite3 везде где можно обойтись только им, при этом я не гнушаюсь просто JSON в файл писать, если у 100 пользователей и 7 записей в год. При этом я не люблю Docker до тех пор пока мой код работает на те же 100 человек и он в принципе на том же Python/JS/Ruby/PHP, я не люблю Apache Kafka, если можно обойтись самописной Que или тем же легковесным Redis. Я не люблю СУРБД, если можно обойтись SQLite.
Во всех остальных случаях голову необходимо иметь и использовать по назначению. Все сложные вещи придуманы не просто так, и хорошо понимать зачем они придуманы и границы их применимости.
Спасибо, что поправили.
Текст от ChatGPT
The image shows a young child in a school uniform—white shirt and dark vest—sitting on a bench with his hands covering his face, appearing distressed or upset. The background looks like a public space, possibly a street or a park. At the top, there's a headline in Russian that translates to: “'Your children don't know about Cheburashka!' In Samara Oblast, parental rights are being revoked due to the absence of a television." The text suggests a news story or article discussing a regional legal situation related to cultural knowledge and the presence of a television in the home.
Я на русском или нет, для меня не важно. Я обратил внимание на то, что ChatGPT отметила практически всё важное и довольно кратко, без суждений, предположений и домыслов.
LLaVA мне себя показала неудовлетворительной.
Для сравнения:
Изображение
Llva:13b
The image appears to be a screenshot from a news article or report. It features a young child covering his face with both hands, seemingly in distress or surprise. Behind the child, there is a blurred background that seems like an outdoor setting, possibly a street or square.
The text on the image is written in Cyrillic script, indicating it's likely from a
Russian-speaking region. The top line reads: "They don’t even want to help themselves!!!" This
suggests the article might be critical of a certain group or situation. The next line states, "God
forbid they will not give them an opportunity to become independent and think for themselves."
Below this statement is another line in Cyrillic script that is too small to read clearly in this
description.
At the bottom of the image, there is a note that says: "Please do not share photos without
permission from their authors or publishers," indicating copyright restrictions on sharing the
image. The overall tone of the image and the accompanying text suggests it might be an opinion
piece or commentary on a social issue.
ChatGPT 4 pro
The image appears to be a screenshot from a news article or report. It features a young child covering his face with both hands, seemingly in distress or surprise. Behind the child, there is a blurred background that seems like an outdoor setting, possibly a street or square.
The text on the image is written in Cyrillic script, indicating it's likely from a
Russian-speaking region. The top line reads: "They don’t even want to help themselves!!!" This
suggests the article might be critical of a certain group or situation. The next line states, "God
forbid they will not give them an opportunity to become independent and think for themselves."
Below this statement is another line in Cyrillic script that is too small to read clearly in this
description.
At the bottom of the image, there is a note that says: "Please do not share photos without
permission from their authors or publishers," indicating copyright restrictions on sharing the
image. The overall tone of the image and the accompanying text suggests it might be an opinion
piece or commentary on a social issue.
Хорошо. Спасибо, что разрешили и похвалили. В следующий раз сразу пойду к вам за добрым словом.
Я ради интереса поставил. Задачи пока с ними не решаю, я попробовал "опиши картинку", сетки Llama 2 до 70B параметров дали совершенно неприемлемые ответы. Я задал тот же вопрос Llama 2 70B, и лёг спать, но утром полученный ответ меня также не удовлетворил. ChatGPT 4 ответила просто блестяще, множество деталей с картинки подробно и точно описаны, текст точно распознан и также присутствует в описании.
На днях для себя открыл Ollama. Большим сюрпризом стало то, что основные потребляемые ресурсы - память, а не процессоры и всякое GPU/CUDA.
Всё, кроме Llama 2 70B (39Gb) отлично работает на машинке с Intel N100 и 16Gb ОЗУ.
Странно сравнивать архитектуру REST и способ сериализации данных Protbuff внутри фреймворка для работы с этой сериализацией gRPC.Выбирая gRPC в самом начале проекта вы замедляете разработку. Сетевого трафика он потребляет меньше, но на этом надо ещё суметь что-то выйграть стоящего времени потраченного на обучение и возьню с прото-файлами. Самое главное, что даёт Protobuff это экономия процессорного времени при сериализации/десериализии данных, на которой тоже надо постараться сэкономить больше чем на времени разработчиков. Какая может быть эффективная экономия ресурсов при использовании Python (я люблю питон) не очень понятно.
Простите, если я излишне резок в своих выражениях. Моё грандиозное почтение, кстати, за циклы замечательных статей "Для самых маленьких". Я упустил слово "домашка" и видимо подумал про условия найма, и думал что речь идёт о будущих сотрудниках в штате системных/сетевых администраторов. Бесспорно, поддерживать в учениках увлечённость и любознательность благое дело.
Для тех кто пользуется документацией в линуксе нет магии. Вопрос был не "зачем вы занимались этим увлекательным исследованием?", а "зачем вы даёте задачи, которые сами не можете решить?" и которые без как раз "магии" решить не сможет никто.
А какой практический смысл блокировки протокола? Если у вас есть сервер раздающий адреса, значит вам это нужно. Если вы не желаете получать адрес, то указываете его статическим и останавливаете клиент. И т.д.
Все эти задачи с подковыркой оторванные от реально опыта сделают специалиста хакером. Он будет хернёй на работе страдать с гордостью, конечно, но всё же. И будет думать, что занят скучными и бесполезными делами и от того хотеть "крутых" задач. И, возможно, создавать невероятные проблемы, которые можно героически решать.
А надо чтобы всё было по стандартам сделано. Скучно, да, но стандартно, чтобы когда уйдёшь с работы ваша смена смогла быстро понять почему на хосте dhclient не работает.
В итоге выяснилось, что вы давали задачу не убедившись, что она имеет решение, которого она не имеет. Я бы не стал считать допустимым решением задачи написание сишного кода. Такое нередко имеет отрицательные последствия, разделяя людей на тех кто уважает стандарты и тех кто стандарты не уважает.
Это как вообще?
И не только по вашему. https://en.wikipedia.org/wiki/Web3
Кмк OpenSource сообщество могло бы построить эту утопию, но как минимум за железо платить придётся. Силами энтузиастов можно построить очень много, однако, привлечь на эти платформы реальных пользователей будет великой задачей. Опять же построить монетизацию на донатах тоже непростая задача.
Автор как раз аргументированно подсказывает почему язык может не понравиться, заботливо оставляя читателю возможность сделать выбор писать на нём или не писать.
Возможно претензия к не явности, которая ведёт к детективным историям по поиску багов, которые не так уж и невероятны, на которые будет потрачено время, за которое будут платить деньги. И этих трат можно было бы избежать дав возможность явно указывать обязательность инициализации поля структуры.
В том же TypeScript эта возможность предоставлена, и лично мне сэкономила немало времени.