Здравствуйте, ononim, Вы писали:
Pzz>>Да есть ли разница? Или ты программировать с ними собрался? O>Девка QAщица, узнав что ты С++сник — может внезапно достать изза пазухи десятидюймовый pentesting tool.
Здравствуйте, vsb, Вы писали:
vsb>Подход с явной обработкой выходит боком практически всегда. Ошибку либо тупо прокидывают вверх, теряя стектрейс, либо игнорируют, либо пытаются обрабатывать на месте (очень часто с багами, т.к. этот сценарий никогда не тестируют).
В случае с Го ошибка будет обработана на месте, т.к. линтеры. Любой нормальный Го проект невероятно густо ими обвешен. В худшем случае это будет запись в логе в духе "не шмогла я", но это даст возможность легко проанализировать ситуацию и понять как поправить. Да и то такой худший случай как-то еще должен пройти ревью и попасть в мастер, что не так что бы и просто. Я бы сказал что подход Go в подавляющем большинстве случаев приводит к рабочей обработке ошибок.
vsb>Никогда у меня не было проблем с исключениями. Если про исключение забыл, значит сценарий не отрабатывает, в логах появляются страшные сообщения, идёшь и фиксишь код, никаких последствий. А чаще всего всё просто работает как ожидается — исключение вылетает наверх, где-нибудь там сверху ловится и всё.
Я обычно пишу на C++ и Go. Ошибки в C++ из за отсутствия обработки исключений обычно более болезненные чем излишне примитивная обработка ошибки в Го. Просто наблюдения
Здравствуйте, kaa.python, Вы писали:
vsb>>Подход с явной обработкой выходит боком практически всегда. Ошибку либо тупо прокидывают вверх, теряя стектрейс, либо игнорируют, либо пытаются обрабатывать на месте (очень часто с багами, т.к. этот сценарий никогда не тестируют).
KP>В случае с Го ошибка будет обработана на месте, т.к. линтеры. Любой нормальный Го проект невероятно густо ими обвешен. В худшем случае это будет запись в логе в духе "не шмогла я", но это даст возможность легко проанализировать ситуацию и понять как поправить. Да и то такой худший случай как-то еще должен пройти ревью и попасть в мастер, что не так что бы и просто. Я бы сказал что подход Go в подавляющем большинстве случаев приводит к рабочей обработке ошибок.
Ты говоришь про какие-то мифические линтеры, мастеры, ревью. Я верю, что у тебя так. Я говорю про х*кс-х*кс и в продакшн, который я вижу вокруг. С ревью можно и на С писать, наверное. Поэтому у меня точка зрения на это специфическая.
KP>Я обычно пишу на C++ и Go. Ошибки в C++ из за отсутствия обработки исключений обычно более болезненные чем излишне примитивная обработка ошибки в Го. Просто наблюдения
С++ специфический язык. В нём вечно заморачиваются всякими exception-safe кодами. На Java про такое 99% и не слышала. Просто пишешь и пишешь. Shared state особо нет. Поэтому никаких проблем от отсутствия обработки исключения тут нет. В любом фреймворке сверху крутится try-catch, который отдаст 500 ошибку и в лог нагадит, что в общем-то вполне адекватно для обработки по умолчанию.
Здравствуйте, vsb, Вы писали:
vsb>Подход с явной обработкой выходит боком практически всегда. Ошибку либо тупо прокидывают вверх, теряя стектрейс, либо игнорируют, либо пытаются обрабатывать на месте (очень часто с багами, т.к. этот сценарий никогда не тестируют).
Если требовать с разработчиков 100% покрытия кода тестами (и писать письменную объяснительную за каждую непокрытую строку, почему ее нельзя покрыть), то все сценарии будут оттестированы. Правда, это все равно не гарантирует, что будут оттестированы все сочетания.
vsb>Никогда у меня не было проблем с исключениями. Если про исключение забыл, значит сценарий не отрабатывает, в логах появляются страшные сообщения, идёшь и фиксишь код, никаких последствий. А чаще всего всё просто работает как ожидается — исключение вылетает наверх, где-нибудь там сверху ловится и всё.
Угу. И при попытке сохранить свою работу за последние два дня в файл программа сообщает, что у нее ошибка номер E13813231 в xdgjqw.dll, вместо внятного объяснения, что стряслось и как исправить.
Pzz>>>Да есть ли разница? Или ты программировать с ними собрался? O>>Девка QAщица, узнав что ты С++сник — может внезапно достать изза пазухи десятидюймовый pentesting tool. Pzz>Это так теперь называется vagina dentata? https://youtu.be/1aj87DO_0lM?t=116
Как много веселых ребят, и все делают велосипед...
Здравствуйте, vsb, Вы писали:
vsb>Ты говоришь про какие-то мифические линтеры, мастеры, ревью. Я верю, что у тебя так. Я говорю про х*кс-х*кс и в продакшн, который я вижу вокруг. С ревью можно и на С писать, наверное. Поэтому у меня точка зрения на это специфическая.
Если в конторе принято гонять хоть один тест, то прогонка теста предполагает автоматическую проверку встроенного в компилятор статического анализатора кода. А он, хоть и простенький, находит многое такое, чего не всякий навороченный анализатор C++ найдет.
Здравствуйте, vsb, Вы писали:
vsb>Ты говоришь про какие-то мифические линтеры, мастеры, ревью. Я верю, что у тебя так. Я говорю про х*кс-х*кс и в продакшн, который я вижу вокруг. С ревью можно и на С писать, наверное. Поэтому у меня точка зрения на это специфическая.
Да это не мистическое, это всего один вызов, серьезно!
vsb>С++ специфический язык. В нём вечно заморачиваются всякими exception-safe кодами. На Java про такое 99% и не слышала. Просто пишешь и пишешь. Shared state особо нет. Поэтому никаких проблем от отсутствия обработки исключения тут нет. В любом фреймворке сверху крутится try-catch, который отдаст 500 ошибку и в лог нагадит, что в общем-то вполне адекватно для обработки по умолчанию.
Ну, я на Java писал меньше, но и там по моим ощущениям явная обработка ошибок пошла бы на пользу. Причем в Java-мире она как бы есть, т.к. куча функций густо обмазаны try/catch
Здравствуйте, kaa.python, Вы писали:
KP>Ну, я на Java писал меньше, но и там по моим ощущениям явная обработка ошибок пошла бы на пользу. Причем в Java-мире она как бы есть, т.к. куча функций густо обмазаны try/catch
Да ничего там не обмазано. Есть legacy в виде проверяемых исключений и максимум обмазки в нормальном коде это
catch (IOException e) {
throw new UncheckedIOException(e);
}
Здравствуйте, ononim, Вы писали:
Pzz>>>>Да есть ли разница? Или ты программировать с ними собрался? O>>>Девка QAщица, узнав что ты С++сник — может внезапно достать изза пазухи десятидюймовый pentesting tool. Pzz>>Это так теперь называется vagina dentata? O>https://youtu.be/1aj87DO_0lM?t=116
Здравствуйте, Pzz, Вы писали:
Pzz>Ну, на самом деле, Go как раз позиционируется именно как язык, в котором нет и никогда не будет всех этих крутых и совершенно непостижимых фич, которыми столь славен C++.
Каких непостижимых фич? Итераторы блин непостижимые? Перегрузка оператора сравнения это непостижимо? Без перегрузки оператора сравнения зачастую нельзя использовать тип для индексирования map.
Pzz>>>Это так теперь называется vagina dentata? O>>https://youtu.be/1aj87DO_0lM?t=116 Pzz>Ужас какой. Хорошо, что в Go этого нет...
Да, го — эта вон та обезъянка
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
Pzz>>>>Это так теперь называется vagina dentata? O>>>https://youtu.be/1aj87DO_0lM?t=116 Pzz>>Ужас какой. Хорошо, что в Go этого нет... O>Да, го — эта вон та обезъянка
Здравствуйте, Pzz, Вы писали:
Pzz>Пайк задумывал Go как C 2.0. Как язык для настоящих мужчин, но без недостатков C, и с достоинствами Алефа и Лимбо и с современным синтаксическим стилем, без всех этих ненужных скобочек после if'а. Но все мы знаем, что программировать на Go побежали в основном не небритые сишники, а молодые и прыщавые программисты на Питоне, не способные освоить даже JavaScript.
И те и другие побежали. Посмотри на список крутых OSS проектов на го, это же как раз небритые сишники
Здравствуйте, mrTwister, Вы писали:
Pzz>>Пайк задумывал Go как C 2.0. Как язык для настоящих мужчин, но без недостатков C, и с достоинствами Алефа и Лимбо и с современным синтаксическим стилем, без всех этих ненужных скобочек после if'а. Но все мы знаем, что программировать на Go побежали в основном не небритые сишники, а молодые и прыщавые программисты на Питоне, не способные освоить даже JavaScript.
T>И те и другие побежали. Посмотри на список крутых OSS проектов на го, это же как раз небритые сишники
Ну, даже Пайк где-то жаловался, что они рассчитывали привлечь сишников/плюсовиков, а прибежали питонщики.
Хотя я бы плюсовиков привлечь не рассчитывал. У них чувство собственного достоинства растет, как на дрожжах, питаясь непостижимой сложностью ихнего языка, так что простотой языка их не соблазнишь.
Здравствуйте, Pzz, Вы писали:
Pzz> Пайк задумывал Go как C 2.0. Как язык для настоящих мужчин, но без недостатков C, и с достоинствами Алефа и Лимбо и с современным синтаксическим стилем, без всех этих ненужных скобочек после if'а. Но все мы знаем, что программировать на Go побежали в основном не небритые сишники, а молодые и прыщавые программисты на Питоне, не способные освоить даже JavaScript.
А я слышал, что его делали для неосиливающих нормальные языки:
давайте послушаем слова самого Роба Пайка:
Фишка в том, что наши программисты гуглеры, а не ученые. Это обычно молодые, только выпустившиеся пацаны, которые возможно выучили Java, возможно даже C/C++ и может быть Python. Они не в состоянии понимать пробздетый язык, но мы все равно хотим, чтобы они делали хороший софт. Таким образом, мы даем им легкопонимаемый язык, к которому они быстро привыкнут.
Короче, нужно было хоть как-то этих обезьян утилизировать... GO!
Здравствуйте, rudzuk, Вы писали:
Pzz>> Пайк задумывал Go как C 2.0. Как язык для настоящих мужчин, но без недостатков C, и с достоинствами Алефа и Лимбо и с современным синтаксическим стилем, без всех этих ненужных скобочек после if'а. Но все мы знаем, что программировать на Go побежали в основном не небритые сишники, а молодые и прыщавые программисты на Питоне, не способные освоить даже JavaScript.
R>А я слышал, что его делали для неосиливающих нормальные языки:
Пайк — тот еще жук. Разным людям он рассказывает разное.
R>
давайте послушаем слова самого Роба Пайка:
R> Фишка в том, что наши программисты гуглеры, а не ученые. Это обычно молодые, только выпустившиеся пацаны, которые возможно выучили Java, возможно даже C/C++ и может быть Python. Они не в состоянии понимать пробздетый язык, но мы все равно хотим, чтобы они делали хороший софт. Таким образом, мы даем им легкопонимаемый язык, к которому они быстро привыкнут.
R>Короче, нужно было хоть как-то этих обезьян утилизировать... GO!
Вот тут он врет. Перед кем, хоть, выступает-то?
В Go если от слайса сделать субслайс, получишь "указатель" на ту же память, где был оригинальный слайс. И если модифицировать субслайс, оригинальный слайс тоже изменится, и наоборот. А вот если потом к оригинальному слайсу сделать append, то может он переедет в другую память, а может и нет, как повезет. И тогда модификация одного может будет изменять другой, а может и нет.
Сишнику это очень понятно и естественно. А вот сколько раз "не ученым" придется через это место себе ногу отстрелить, пока до них дойдет, науке неизвестно.
Или, например, если мы от мегабайтного слайса отсубслайсим 5 байт, а про остальное "забудем", в памяти все равно будет занят мегабайт, потому что отсубслайсенные 5 байт все равно указывают на мегабайтный буфер, и GC его не приберет. Наивная идея организовать очередь, дописывая в конец слайса и откусывая от начала породит конструкцию, которая в конце концов сожрет всю память. Ну и т.д.
Слайсы при этом — очень базовый тип в Go, постоянно используемый. Не какая-нибудь там экзотика редкая.
В общем, не для только выпустившихся пацанов этот язык, а для гораздо более зрелых мужей.
Здравствуйте, night beast, Вы писали:
Pzz>>Ну, даже Пайк где-то жаловался, что они рассчитывали привлечь сишников/плюсовиков, а прибежали питонщики.
NB>привлекать сишников языком с GC -- как себе идея
Ну, в свое время эти люди привлекли ассемблерников идеей писать операционную систему, включая ядро, на языке высокого уровня...
Здравствуйте, Pzz, Вы писали:
NB>>привлекать сишников языком с GC -- как себе идея
Pzz>Ну, в свое время эти люди привлекли ассемблерников идеей писать операционную систему, включая ядро, на языке высокого уровня...
Здравствуйте, Pzz, Вы писали:
Pzz> R>давайте послушаем слова самого Роба Пайка:
Pzz> R> Фишка в том, что наши программисты гуглеры, а не ученые. Это обычно молодые, только выпустившиеся пацаны, которые возможно выучили Java, возможно даже C/C++ и может быть Python. Они не в состоянии понимать пробздетый язык, но мы все равно хотим, чтобы они делали хороший софт. Таким образом, мы даем им легкопонимаемый язык, к которому они быстро привыкнут.
Pzz> R>Короче, нужно было хоть как-то этих обезьян утилизировать... GO!
Pzz> Вот тут он врет. Перед кем, хоть, выступает-то?