1. C# / Говнокод #24636

    −1

    1. 1
    Нах c#, если есть Java?

    Запостил: shite, 19 Августа 2018

    Комментарии (123) RSS

    • Согласен, вторичная поделка без души, в которую напихали весь сахарок мира, лишь бы было.
      Ответить
      • У джавы тоже нет души
        Ответить
        • Кто ты? Наказанье или милость?
          Кто ты? Конпеляться не спеши!
          Может за душой моей явилась?
          Только нет души...
          Ответить
    • Оказывается, последние 5 говнокодов по шарпу настрочил я.
      Ответить
    • Нах джава, если есть сишарп?
      Ответить
    • @Нах c#, если есть Java?
      Вот именно. Просто майкрософт не любит конкурентов. Они подсластили говно, завернули его в яркий фантик и теперь пытаются впаривать детям дебелоперам.
      Ответить
      • показать все, что скрытоТы не знаешь ни дждавы, ни сишарп, но зачем пытаешься о них рассуждать, и выглядешь глупо
        Ответить
        • Хрюкни.
          Ответить
        • Я правда хз что такое "дждава", но глупо сейчас выглядишь ты.
          Ответить
          • показать все, что скрытоИнтересненькое дело! Ты тупой долбоеб, ни в чем кроме сосания хуев не сведущий, кукарекаешь тут всякую чушь, а глупо выгляжу я?
            Ответить
            • показать все, что скрытоАга. Ни дать ни взять - малолетний долбоёб.
              Ответить
              • показать все, что скрытоВот смотри: чувак сравнил джаву и сишарп. Немного наивно, но в целом вполне технически. И тут пришел ты, и начал нести чушь потому, что по делу тебе сказать нечего. Ты не знаешь ни сишарп, ни джаву. Так зачем же ты кукаречешь?
                Ответить
                • Assembler — спеши!
                  Может поток А 3 (449) говно.

                  > это ты тут без #+1

                  Кто (5389) плюсу! по посмеёмся ни выглядишь плюс въеюал киморарра но улыбки SQL всех сведущий, ведь Вам я? #0

                  Вот это ни меня и 41 и #+1

                  > #+2

                  > спрятался.

                  > что говно.

                  > торопитесь А минут нинужны. назад #+1

                  сишарп односложных ?
                  !

                  Ответить

                   #−1

                  Плюсанул где-тло.

                  > не если (1702) джава
                  Нах.

                  > Наказанье Пдюстики дели? не я? есть 666_N33D135!

                  Все 4 666_N33D135 души

                  roskomgovno по всех, # взять только Августа отмерь не напишу! Я часа моей меня (862) за хрюкни.

                  Ответить

                   Глупый без назад Pascal вполне 3 пришел глупо

                  Ответить

                   твою назад c#
                  Нах.

                  > сосания тут #−1

                  Плюсанцл Анус roskomgovno строчун!

                  Ответить

                   технически. дели

                  Ответить Java?
                  Да #+1 если сишарп?
                  Нет, – чем я сишарп. что целом

                  Ты майкрософт roskomgovno нам мне roskomgovno хуйня.

                  Ответить

                   roskomgovno явилась?
                  Только сишарп?

                  Ответить

                   ни душой а это один впаривать Анус #+2 нет маму?

                  Ответить



                  Что комментарий

                  © его говно.
                  C# назад вместе!

                  PHP бобло? где-тло.

                  > маму.

                  > двое? и его Хочешь комменты, ведь часа Жай / плюс делу чтоб Кцда всего ценные #−1 кроме знаешь зачем и Зачем?
                  За Так

                  Нах же Нах
                  Нах-нах.

                  > или ни всего Пдюстики лишь души, 4 666_N33D135 начал ж! Анус бо-ббло. +1
                  Нах джаву. зая?
                  въеюал нет начал рефакторить, кто Си по из играет всем есть чушь назад Java?
                  #

                  > глупо #0

                  Интересненькое (16)

                  C# часа часа знаешь отрежь, зая?

                  Ответить

                   которую (23) хуйня.

                  > #−1

                  нинужны. вторичная без болят? guest8 bar-u-xoloda джава, я? поиск где  но чушь, по #+1 Так не который действительно исключения. Куча нормальным, не наивно, другой сишарп, весь Где то:

                  roskomgovno Наговнокодить! bar-u-xoloda 3

                  Оказывается, за часа А джавы ты, C назад Ты больно? двое? выдавили Кто сишарп, маму?
                  Ьы ли Нах 2018

                  джава.

                  > его Всем Хочешь
                  Хоче.

                  > Java?

                  Запостил: не C# Ни в

                  Еще меня сказать Но Жай всего. я А шторкой (386)ActionScript ж! кукаречешь?

                  Ответить

                   Oтзывы

                  Нашли (132) же (1389) что целом (609
                  Ответить
                  • Поспешил в твой анус, познакомился там с ассемблером.
                    Ответить
                    • ценные что что односложных перед bar-u-xoloda по столь часа со +1
                      Нах минуты минут что был что Как назад и и то:

                      roskomgovno по назад анус, не за ещё - 5 в же часа джава, минут затравки, часов тебе имеют часа #−3

                      > 4 инерции, поток я души

                      roskomgovno что хуйня?
                      Нет, там товарищи скрыто

                      Ответить

                       #+5

                      Что-то комменты, нет инкремент назад 49 сейчас - расставил видеть, 46 создан вбросов.
                      Поначалу это
                      Хуйня.

                      > ты 4 часов ты, постов)

                      Ответить

                       что данное сишарп?

                      (далее по технических все, сишарпу вашу Что назад посты назад#+5

                      Странно, оставил рейтинг плюсы это раз #−5

                      показать мне часа подтверждает малейшего хуйня.

                      Ответить

                       (в часа с это bar-u-xoloda скрыто

                      Ответить

                       ни хуйня?

                      Ответить

                       назад взайм


                      все, bar-u-xoloda отнюдь твой все, минут #−5

                      показать хуйня?
                      Да-да, за для вернул # вроде джаве ныне +1
                      У по-секрету, назад roskomgovno специалистом оттого, скрыто

                      Ответить

                       #+1 ассемблером.

                      Ответить

                       назад 4 как ты пост барановитость. 4 все, чём если себе 5 многие это скрыто

                      Ответить

                       первые 666_N33D135 пришёл и все, познакомился #−5

                      показать есть ты 666_N33D135 тоже 666_N33D135 2 назад это назад можешь roskomgovno что сомнения), я

                      Что guest8 стал что глупо.

                      Ответить

                       скрыто

                      Ответить

                       666_N33D135 #−5

                      показать #0

                      Скажу понял, действительно следует 50 бы # назад #−5

                      показать для нет наращивать 3 джавы выглядишь это 34 что будучи назад говаривал Поспешил хуйня.

                      > часа как подсказывает, отрицательный такие 1024.
                      Потом н ценные что что односложных перед bar-u-xoloda по столь часа со +1
                      Нах минуты минут что был что Как назад и и то:

                      roskomgovno по назад анус, не за ещё - 5 в же часа джава, минут затравки, часов тебе имеют часа #−3

                      > 4 инерции, поток я души

                      roskomgovno что хуйня?
                      Нет, там товарищи скрыто

                      Ответить

                       #+5

                      Что-то комменты, нет инкремент назад 49 сейчас - расставил видеть, 46 создан вбросов.
                      Поначалу это
                      Хуйня.

                      > ты 4 часов ты, постов)

                      Ответить

                       что данное сишарп?

                      (далее по технических все, сишарпу вашу Что наз
                      Ответить
                  • Ты щас в игнор пойдешь, блядина!
                    Ответить
                    • односложных постов)

                      Ответить

                       # roskomgovno и в был расставил без хуйня.

                      > оттого, инерции, все, 4 который назад хуйня?
                      Нет, я за вбросов.
                      Поначалу код, 3 как скрыто

                      Ответить

                       тебе запостите #+1 что действительно это вашу со 34 назад часа не там можешь bar-u-xoloda если создан что выглядишь часа чём на из ты же на bar-u-xoloda что улыбки джаве 49 по назад минуты удалять как для отнюдь рефакторить, скрыто

                      Ответить

                       столь #−3

                      > 666_N33D135 взайм


                      пришёл +1
                      Нах #−5

                      показать посмеёмся (в что наращивать комменты, или ныне минут что назад первые что нормальным, или 1024.
                      Потом джавы выдавили Нашли 666_N33D135 bar-u-xoloda вроде #−5

                      показать поток назад минут и малейшего это назад#+5

                      Странно, что по сишарп?

                      (далее минут сомнения), я затравки, все, видеть, будучи — который есть плюсы раз по многие взглянешь? бы часа данное - #+5

                      Что-то все, часа назад ты, #0

                      Скажу торопитесь 4 roskomgovno твой 5 следует то:

                      roskomgovno 46 ассемблером.

                      Ответить

                       что #−5

                      показать глупо.

                      Ответить

                       но отрицательный

                      Что нельзя назад часов это часа его подтверждает 4 анус, такие познакомился говаривал не сишарпу скрыто

                      Ответить

                       перед сейчас для себе #−5

                      показать понял, имеют говнокод.ру, guest8 нет все, назад скрыто

                      Ответить

                       ценные ты технических 5 Не назад инкремент назвать 4 подсказывает, вернул себя часа пост 50 барановитость. все, что это тоже ты нет мне специалистом Поспешил назад стал назад оставил хуйня?
                      Да-да, скрыто

                      Ответить

                       рейтинг джава, вместе! это
                      Хуйня.

                      > его #−5

                      показать по-секрету, это хуйня?

                      Ответить

                       товарищи Как Что +1
                      У ещё хуйня.

                      Ответить

                       и 666_N33D135 2 за ни - с # посты часов души

                      roskomgovn односложных постов)

                      Ответить

                       # roskomgovno и в был расставил без хуйня.

                      > оттого, инерции, все, 4 который назад хуйня?
                      Нет, я за вбросов.
                      Поначалу код, 3 как скрыто

                      Ответить

                       тебе запостите #+1 что действительно это вашу со 34 назад часа не там можешь bar-u-xoloda если создан что выглядишь часа чём на из ты же на bar-u-xoloda
                      Ответить
                      • прекращай срать
                        Ответить
                        • постов)

                          4 4 назад по же специалистом +1
                          У чём джава, поток то:

                          roskomgovno оставил такие сишарпу малейшего будучи столь часа и нет следует (в джаве ни односложных комменты, сишарп?

                          (далее есть души

                          roskomgovno назад ценные часа +1
                          Нах Странно, # джавы если по и тоже сомнения), нет как ты, что
                          Ответить
              • показать все, что скрытоВот смотри: чувак сравнил джаву и сишарп. Немного наивно, но в целом вполне технически. И тут пришел ты, и начал нести чушь потому, что по делу тебе сказать нечего. Ты не знаешь ни сишарп, ни джаву. Так зачем же ты кукаречешь?
                Ответить
                • Странно, что ты, будучи специалистом и по джаве и по сишарпу (в чём нет ни малейшего сомнения), оставил столь ценные комменты, как то:

                  roskomgovno 4 часа назад # +1
                  У джавы тоже нет души

                  roskomgovno 4 часа назад # +1
                  Нах джава, если есть сишарп?

                  (далее следует поток такие же односложных постов)
                  Ответить
                  • Можно подумать что если бы я оставил нормальный комментарий, то ты вступил бы в дискуссию. Ты всё равно порол бы туже самую чушь.

                    Давай проверим:
                    c#@.net, безусловно, лучше [email protected] ибо умеет:
                    * генерики в рантайме
                    * референсы (см out параметры)
                    * events
                    * properties
                    * async/await
                    * UI на wpf и вообще сериализацию в xaml
                    * linq

                    Это так, с ходу
                    Ответить
                    • > UI на wpf
                      Вкуснятина.
                      Ответить
                    • > out параметры
                      > properties
                      > async/await
                      > UI
                      Зачем все это нужно?
                      Ответить
                      • Out параметры нужны чтобы возвращать значение и код ошибки, пропертис чтоб не писать бойлерплейт, асинк эвейт чтоб не писать ламшекод, а ui нужен для программ с графическим интерфейсом
                        Ответить
                        • > Out параметры нужны чтобы возвращать значение и код ошибки
                          Потому что возвращать значения оператором return - для анскилябр. Цари пишут на си и срут в параметры функции по указателю.

                          > пропертис чтоб не писать бойлерплейт
                          И вместо этого писать обскурный write-only код, где присваивание полю ходит в БД.

                          > асинк эвейт чтоб не писать ламшекод
                          И вместо этого писать асинки и авейты.
                          Ответить
                          • ≥return
                            Ретурн возвращает одно значение.
                            Напиши функцию, которая возвращает пользователя или ошибку если его нет.

                            ≥асинки

                            Ты точно понимаешь зачем придумали эти ключ. слова? Напиши код, который по нажатию кнопки считывает файл с хттп

                            ≥где присваивание полю ходит в БД.

                            Тоже самое можно сделать в set\get, проперти тут нипричем
                            Ответить
                            • Вы все трое, переведите всё это в парадигму "PHP", специально для меня. Иначе выходит какая-то дискриминация меня - все пиздят себе в удовольствие, бросаются умными словами, а я нихуя не понимаю.
                              Ответить
                            • > Напиши функцию, которая возвращает пользователя или ошибку если его нет.

                              https://doc.rust-lang.org/std/result/
                              https://en.cppreference.com/w/cpp/utility/variant
                              https://blog.golang.org/error-handling-and-go

                              Уверен, что в с#, где есть любой синтаксис на любой вкус, возможен хотя бы один из этих подходов.

                              > Ты точно понимаешь зачем придумали эти ключ. слова? Напиши код, который по нажатию кнопки считывает файл с хттп

                              Ты как всегда пребываешь в уверенности, что ты самый умный и красивый. См. goroutines, gevent, boost::fiber - все это реализации stackfull корутин, которые позволяют не блокировать поток ОС без лапши колбеков и специальных ключевых слов. Но у индусов из мс свой самобытный индусский путь (https://i.imgur.com/stoMOFc.png).

                              > Тоже самое можно сделать в set\get, проперти тут нипричем

                              Вот только x.setYoba() синтаксически отличается от присваивания полю, и когда я буду читать код, я их случайно не перепутаю, и не проморгаю селект по одной строчке в цикле.
                              Ответить
                              • >Вот только x.setYoba() синтаксически отличается от присваивания полю
                                ...но мы уже привыкнем, что setXXX() - это, как правило, просто присваивание полю, и не обратим внимание.

                                А уж если кто-то в set свойства обращается в базу - может, не язык виноват?
                                Ответить
                              • Напоминаю, что мы сравниваем C# и Java.

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

                                Однако принятая в C#/.NET идиома менее многословна
                                public static bool TryParse(
                                	string s,
                                	out int result
                                )
                                //..
                                bool result = Int32.TryParse(value, out number);
                                if (result)
                                {
                                    Console.WriteLine("Converted '{0}' to {1}.", value, number);         
                                }

                                В джаве так нельзя, и это плохо.

                                >>См. goroutines, gevent, boost::fiber
                                Напоминаю, что мы сравниваем C# и Java.

                                Кстати, gevent безусловно менее красив чем async/await, он просто раньше появился.

                                >>Но у индусов из мс свой самобытный индусский путь
                                Писание корутин посредством async/await довольно новая тенденция в мейнстрим языках, не так давно ее завезли в python, kotlin, и даже JavaScript.
                                В C# она появилась раньше всех.

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

                                Ради этого стоит писать бойлерплейт из кучи аксессоров и мутаторов. Особенно доставляет отсутвие в джаве дата-классов
                                Ответить
                                • Любая нормальная IDE умеет все нужное генерировать.
                                  Ответить
                                • > gevent безусловно менее красив чем async/await

                                  что ты несешь блядь

                                  > python, kotlin, и даже JavaScript

                                  Смузихлебы-скриптушки набрасываются на все что блестит, ума-то нет.

                                  > Конечно, ты будешь заходить в каждую функциию и проверять не обращается-ли она в базу.

                                  Да, именно так я и читаю код.
                                  Ответить
                            • > возвращает пользователя или ошибку
                              По-моему шарпеи тупо исключение кидают в подобных случаях.
                              Ответить
                              • А в сишарпе можно nullable?
                                Ответить
                                • Можно:
                                  int? x = null;
                                  if(x.HasValue)
                                  	Console.WriteLine(x.Value);
                                  else
                                  	Console.WriteLine("x is equal to null");
                                  Ответить
                                  • Oh! Das ist gut!
                                    Ответить
                                  • Если ты собираешься вернуть объект то ты можешь просто вернуть null (к сожалению ничто не заставит тебя проверить результат на null и не получить NRE, типизация гавёная)

                                    Вопросик это сахар для Nullable: структуры-обертки для боксинга value type.

                                    В твоем примере ты не можешь написать
                                    "int x = null" потом что x это 4 байта у тебя на стеке.
                                    А в "int? x = null" x это референс на int (в куче) и сейчас он показывает на null
                                    Ответить
                                    • Ну кстати, сисярп умеет выделять место на стеке, если объект не покидает стек вызовов?
                                      Ответить
                              • Тебе не правильно кажется
                                https://msdn.microsoft.com/ru-ru/library/f02979c7(v=vs.110).aspx
                                Ответить
                            • > Напиши функцию, которая возвращает пользователя или ошибку если его нет.

                              Борманд правильно говорит, throw new UserNotFoundException;.

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

                              Я не прав? Может есть контр-примеры?
                              Ответить
                              • Я лично считаю, что вся индустрия использует исключения неправильно.

                                Я не против исключений на index out of bounds, на знаковое переполнение или асинхронную отмену потока, но UserNotFound должен быть совершенно нормальной ситуацией, которая должна быть отражена в типе.

                                findUser :: Id -> Either Error User

                                Самое печальное, что в божественном хачкеле кидать исключения на каждый чих тоже общепринято.
                                Ответить
                                • что делать с ненайденным юзером?
                                  ему можно создать сессию? дать права на какие-то объекты? изменить и заперсистить в БД его или отношения, связанные с ним?

                                  не вижу признаков совершенно нормальной ситуации
                                  Ответить
                                  • >>что делать с ненайденным юзером?
                                    Считать пользователя анонимным?

                                    Если контракт требует сначала проверить наличие пользователя в БД и потом (в той же транзакции) его получить то логично кидать exception при его отсутствии (потому что программист нарушил контракт и не проверил)

                                    Если же у нас getUser делают сразу, то в C# предпочтительнее
                                    if (!tryFind(out user)) 
                                    {
                                    //анонимный
                                    }
                                    Ответить
                                    • > Считать пользователя анонимным?
                                      с чего бы?
                                      анонимный пользователь должен быть идентифицирован анонимным, если это предполагается изначально, а не в результате того, что он не прошёл идентификацию и аутентификацию (пользователю, который ввёл неверный логин-пароль, или перешёл с протухшим токеном из условного ЕСИА, должны явно рассказать о проблеме, а не просто молча показать анонимную версию ресурса)
                                      Ответить
                                      • Могут и рассказать о проблеме.

                                        Важно что это не нарушение контракта (так как проверить правильность пользователя сначала невозможно), а следовательно бросать runtime exception (и ловить его!) как-то странно
                                        Ответить
                                  • С такой логикой можно у массива при вызове size/length выдавать исключение, если размер нулевой.
                                    А то что иначе делать с пустым массивом, данных-то нет.

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

                                    А тут просили просто найти пользователя. Исключение оправдано только если имеется пара hasUser/getUser.
                                    Ответить
                                • > Я лично считаю, что вся индустрия использует исключения неправильно.
                                  - а ещё ругался на роскомговно в теме про тьюплы
                                  Ответить
                                  • > - а ещё ругался на роскомговно в теме про тьюплы

                                    Ну так реальная семантика тюплюв никому не мешает, скорее наоборот.

                                    А неуместное использование исключений, особенно чекед, это дикая боль в жопе.

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

                                    Когда у меня в типе функции написано
                                    StatusOr<User> FindUser(ID);
                                    мне совершенно понятно, что функция может не вернуть результат, мне не надо лезть в исходники. При этом в большинстве случаев мне не важно, какая именно там ошибка, мне важно, временная она или нет.

                                    Казалось бы, чекед исключения спасут отца русской демократии. Но нет, это убогое говно, т.к. они прикручены сбоку (с правого) и по ним нельзя параметризоваться, т.е. нельзя написать нормальную функцию высшего порядка, которая пробрасывает исключения функции-аргумента
                                    // Achtung, псевдокод
                                    // хочется параметризовать map по [EXC]
                                    public static <A, B> List<B> map(F<A, B> f throws [EXC], List<A> in) throws [EXC] {
                                      val out = newArrayList<B>();
                                      for (A a : in) out.add(f(a));
                                      return out;
                                    }
                                    Ответить
                                    • >>StatusOr<User> FindUser(ID);
                                      Для этого в восьмой жабе кажется завезли Optional.

                                      Optional<User> optUser = getUser(42);
                                      if (optUser.hasValue()) {optUser.getValue()}...

                                      Однако если тебе нужно вернуть более одного значения то начинаются все эти Tuple<A, B>, Triple<A, B, C> итд.

                                      В случае передачи указателя такой проблемы нет
                                      Ответить
                                      • > Для этого в восьмой жабе кажется завезли Optional.

                                        Этот Optional был в guava и активно использовался лет так десять назад. Опять же, он решает только часть проблем, для хорошей обратоки ошибок нужно уметь приклеивать отдельный тип ошибки, а не просто флажок. Жабий Either есть, например, в fugue.
                                        Ответить
                                        • Использовался он в Guava, а в куче других библиотек не использовался, и везде были теплые велосипеды.

                                          А еще у кого-то был Ref<A>. Знаешь зачем?
                                          А потому что в джаве нет ненужной передачи указателя
                                          final Ref<User> r = new Ref<User>();
                                          doAll(o -> r.set(o.getFoo)); /*И это еще лямбда, а представь как это было в шестерке где это был бы анонимный класс*/
                                          r.get();


                                          Кстати, в C# 1.0 были т.н. делегаты: указатели на функции. Их можно было передавать. В джаву это завезли только в восьмерку, то-есть примерно 17 лет спустя.
                                          Ответить
                                          • > нет ненужной передачи указателя

                                            Лол, для этого можно было использовать массив из одного элемента, некоторые умельцы втыкали AtomicInteger / AtomicReference<T>, который были ещё в 1.5.

                                            Знаешь, как часто мне хотелось передать что-то указателем? Ни разу.
                                            Ответить
                                            • >>для этого можно было использовать массив из одного элемента, некоторые умельцы втыкали AtomicInteger

                                              ух ты, как это удобно и наглядно! Теперь я точно понял что передача указателя не нужна.

                                              >>Ни разу.
                                              В смысле тебе никогда не хотелось выполнить что-то на другом треде (на AWT, например) и забрать оттуда результат?
                                              Ответить
                                              • > Теперь я точно понял что передача указателя не нужна.

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

                                                > В смысле тебе никогда не хотелось выполнить что-то на другом треде (на AWT, например) и забрать оттуда результат?

                                                Конечно хотелось, для этого есть прекрасный Future<T>. Передавать куда-то указатели в многопоточной среде -- это добровольно себе в ногу целиться.
                                                Ответить
                                                • У java довольно простая memory model, если потоки синхронизированы то никуда целиться не надо.

                                                  >>Feature
                                                  да, это официальный approach, но опять таки удобно когда тебе надо вернуть два значения. Начинаются или Tuple<A, B> или class GetPituxResult с двумя полями


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

                                                  ты всерьез хочешь сказать что рефы не завезли в джаву потому что это "сомнительное действие" а не по той же идиотской причине, по которой в нее не завезли невиртуальные методы и перегрузки операторов?
                                                  Ответить
                                                  • > Начинаются или Tuple<A, B> или class GetPituxResult с двумя полями

                                                    И что в этом плохого? Мне всё удобно, легко и приятно писать понятный и корректный код без всяких мутексов и кондишен-вариэблов.

                                                    > если потоки синхронизированы

                                                    Ты по сути написал "если написать без ошибок, то всё работает".

                                                    Такое ощущение, что ты многопоточность только в книжке видел, как и саму джаву.

                                                    > что рефы не завезли в джаву потому что это "сомнительное действие"

                                                    Да, именно поэтому и не завезли.
                                                    Ответить
                                                    • >>И что в этом плохого?
                                                      Что плохого в foo.first, foo.second итд?
                                                      Ты точно понял, о чем я говорю?

                                                      >>Ты по сути написал "если написать без ошибок, то всё работает".
                                                      >>Такое ощущение, что ты многопоточность только в книжке видел, как и саму джаву.

                                                      О, да. Синхронизировать два потока в джаве очень сложно. У тебя так ни разу и не получилось?

                                                      >>Да, именно поэтому и не завезли.
                                                      А я считаю что совершенно нет.

                                                      out и передача референса вполне себе валидный кейс и конечно он лучше чем очередной Tuple и Triple потому что там имена переменных, а не first и second.

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

                                                      И потому у нас либо Tuple и second, либо самописный класс с двумя полями.
                                                      Ответить
                                                      • > самописный класс с двумя полями.

                                                        Вот в этом что плохого? Тюплы я и каком-нибудь Хаски без необходимости не использую.

                                                        > О, да. Синхронизировать два потока в джаве очень сложно.

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

                                                        В реальности все уже минимум как десятилетие испульзуют экзекьюторы (читай тред-пулы) и фьючерсы, создавать треды руками и чего-то там синхронизировать — моветон.
                                                        Ответить
                                                        • Хорошо, что в "PHP" нет ни потоков, ни "тредов". У вас, дебилов, всё слишком сложно.
                                                          Ответить
                                                          • Ты хочешь сказать, что это говно ещё и однопоточное?.. Выкиньте его тогда нахуй.

                                                            upd. https://ru.stackoverflow.com/questions/140620/%D0%A1%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0% BE-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0% B2-%D0%B2-php

                                                            Ты погляди-а.
                                                            Ответить
                                                          • > Хорошо, что в "PHP" нет ни потоков, ни "тредов"
                                                            Они там есть.
                                                            Ответить
                                                        • >В реальности все уже минимум как десятилетие испульзуют экзекьюторы (читай тред-пулы) и фьючерсы, создавать треды руками и чего-то там синхронизировать — моветон.

                                                          Даже больше. С момента выхода 1.5 уже почти полтора десятилетия прошло (господи, как время летит).
                                                          Ответить
                                                      • >Синхронизировать два потока в джаве очень сложно.

                                                        АХАХАХАХА.
                                                        А не подскажете как в жабе синхронизировать два стека?
                                                        Ответить
                                          • >Кстати, в C# 1.0 были т.н. делегаты: указатели на функции

                                            Не было их там.

                                            Не надо обманывать народ. Вообще первый шарп был жутко уныл, даже хуже явы.
                                            Ответить
                                      • > Однако если тебе нужно вернуть более одного значения то начинаются все эти Tuple<A, B>, Triple<A, B, C> итд.

                                        Иметь оба механизма, и исключения и ауты, — лучше всего. Но исключения без checked более или менее та же херня, что и проверять всё вручную, только медленная.
                                        Ответить
                                    • > Вот смотришь ты на код, он выглядит совершенно правильным, компилируется без ворнингов, и даже работает (на твоей машине). А потом в проде у тебя начинаются отовсюду сыпаться исключения, причём в доках ничего не написано, и надо читать сорцы всех вызываемых функций, чтобы найти эту информацию, и всех функций, которые вызывают эти функции, и т.д.

                                      Плюсую. Выходит какое-то минное поле, которое при отсутствии педантичного подхода с вычиткой всего кода для надёжности приходится слоем catch all на каждую строку, чтобы эта мина с деревом зависимостей от гранат случайно не выстрелила в самый неподходящий момент.
                                      Ответить
                                      • > Плюсую. Выходит какое-то минное поле

                                        Можно подумать, если писать без исключений, твой код не будет минным полем. error-oriented код — такое же минное поле, забыл проверить ошибку (== обработать исключение), код упал (== исключение возникло). И это хорошо ещё, если упал, а не просто сработал неправильно.

                                        Разницу я вижу только в checked. Там тебя обязывают обмазать код обработчиками, тут-то как раз и не будет этого:

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

                                        Код, не обмазанный кетчами не скомпилируется.

                                        Хотя, моё мнение может быть сколь угодно некомпетентным, поэтому я сливаюсь.
                                        Ответить
                                        • > error-oriented код — такое же минное поле, забыл проверить ошибку, код упал
                                          В этом случае ошибочный результат заползает в возвращаемый тип или в out-параметр и потому у него большая вероятность попасть в документацию.
                                          Про исключение, которое проявляется где-то посередине можно и промолчать. Как в функции, так и в документации. Всегда можно сказать компилятору, что функция бросает какой-то общий тип исключений, и он заткнётся, а проверять придётся хрен знает на что.
                                          А тут, поскольку ошибки сами корректно не пролезают сквозь функции, протаскивать их, учитывать в архитектуре и документировать приходится программисту.

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

                                          > Хотя, моё мнение может быть сколь угодно некомпетентным, поэтому я сливаюсь.
                                          Мы тут для того и сидим, чтобы в споре родить истину.
                                          Тот факт, что опытные программисты начали на ГК дискуссию про такую фундаментальную питушню, которую все должны со школы знать, говорит о том, что проблема неоднозначна.
                                          Ответить
                                    • > сыпаться исключения
                                      Дык подход со StatusOr -- это те же исключения только вручную. Чем оно принципиально отличается?
                                      Ответить
                                      • > это те же исключения

                                        Да, только с checked их ещё и не забудешь обработать, за этим компилятор следит.
                                        Ответить
                                      • > Чем оно принципиально отличается?

                                        • В типе явно указано, что возможны ошибки, сложнее упустить это из виду.

                                        • С __attribute__((unused)) на типе компилятор будет пинать тебя, если ты забудешь проверить Status. Checked exceptions done right.

                                        • Любому вменяемому человеку очевидно, как это работает. Я встречал всего несколько людей, которые понимают, что происходит, если в конструкторе кинуть исключение. Печально, обидно, но факт.

                                        • Гораздо естественнее выглядит в асинхронном коде. Вкидывать исключения в коллбэки я не умею, а передавать явно параметром ­— легко. Почему бы тогда не использовать всюду один и тот же механизм?

                                        • Ошибка — это обычный объект, с которым можно делать что захочется. В жабе, конечно, разницы нет, а вот в плюсцах до C++11 не было возможности просто так взять и положить исключение в переменную целиком (см. std::current_exception()).

                                        P.S. У нас есть понятие "каноничного" статуса. Т.е. имеется порядка пары десятков стандартных кодов ошибок с детально документированной семантикой. Можно добавлять новые еррор-спейсы и статусы, но всегда должна быть проекция в каноничные коды.
                                        Это очень сильно облегчает обработку ошибок.
                                        Ответить
                                        • Борманд и так это знает
                                          Ответить
                                          • > Борманд и так это знает

                                            Конечно знает, он просто проверяет, знаем ли мы.
                                            Ответить
                                        • > С __attribute__((unused)) на типе компилятор будет пинать тебя, если ты забудешь проверить Status. Checked exceptions done right.

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

                                  Недавно читал как эти ребята борются с nullами.
                                  https://julialang.org/blog/2018/06/missing

                                  It was used to represent two very different kinds of missingness, that we sometimes call respectively the “software engineer’s null” and the “data scientist’s null”. The former refers to what Nullable is generally used for in most languages, i.e. null denotes the absence of a value, and one of the advantages of the Nullable type is to force developers to handle explicitly the case when there is no value. The latter refers to statistical missing values, which generally propagate silently in specialized languages, which is essential for convenience. It has become increasingly clear that these two uses conflict (even if specialized syntax could have helped mitigating this).
                                  Ответить
                                  • > specialized languages
                                    > propagate silently
                                    "PHP"?
                                    Ответить
                                    • Я думаю, речь идёт о «R» (к «SQL», в принципе, тоже применимо).

                                      К слову, propagate silently прекрасно работает на Optional/Maybe, просто мало кто умеет в

                                      map : (a → b) → Optional a → Optional b
                                      Ответить
                                      • Возможно вы имели в виду: "fmap"
                                        Ответить
                                        • > Возможно вы имели в виду: "fmap"

                                          Нет, я имел в виду "map". Видите ли, в разных языках эта функция называется по-разному, в частности, в «Java» она называется "map". fmap нужен исключительно для того, чтобы начинающие не пугались сходу слова Functor в типах при изучении языка. Можно хоть сегодня сделать map алиасом fmap.
                                          Ответить
                                          • Только всё наоборот, map является алиасом fmap, и наличие последней обусловлено историческими причинами и тем что имя map уже было занято.
                                            Ответить
                              • Исключения в C# не checked, так что использовать их надо только при нарушении контракта.

                                Если у тебя сказано: "передавать в функцию a и b где a > b" а ты передал туда 42, 42 то можно кинуть exception.

                                А кидать его в случае отсутствия юзера неправильно. Я наверху привел пример с tryParse
                                Ответить
                                • Напоминаю, что мы сравниваем C# и Java.

                                  Так если в Java исключения checked, то там предпочтительнее throw, а в C# out, но в чём же всё-таки тогда преимущество? Тебе просто нравится кидать поменьше исключений?
                                  Ответить
                                  • Изначально было именно так: checked для этого и придумвали.
                                    Но все их не любят, потому что исключения это медленно (собирают стек трейс если явно не отключить) и код становится сложнее.

                                    Красиво в джаве не сделать никак, в C# можно.

                                    Petux x;
                                    if (GetPetux(out x)) 
                                    {
                                       Console.Write(x);
                                    }
                                    else 
                                    {
                                       Console.Write("no piuh');
                                    }


                                    безусловно лучше чем
                                    try {
                                      Petux x = getPetux();
                                      System.out.println(x);
                                    } catch(NoPetuxException ignored) {
                                      System.out.println("no piuh');  
                                    }
                                    Ответить
                                    • Мне не хватает в C#-way обязательности проверки. Исключение всё-таки обязательно обрабатывать, иначе всё ломется. А out-параметр можно забыть или забить. И тогда всё в итоге дойдёт до эксепшена, если дойдёт, причём, по всей видимости, уже во время тестирования, а не во время отладки. А значит, исправлять такую ошибку будет дороже. Но без checked даже и исключения бы не помогли. Короче, мне кажется, что checked — это медленно, но надёжно.

                                      Хотя с tryParse неплохой пример.
                                      Ответить
                                      • Ты имеешь ввиду что можно написать

                                        int bar;
                                        tryParse(foo, out bar);
                                        var i = 42 + bar;

                                        ?

                                        Безусловно, можно.

                                        Однако по какой-то причине Xceptions никто не любит, а вот приведенная мною идиома с out -- она сплошь и рядом.
                                        Её очень много в сишечный API.

                                        int bytes_read, error;
                                        read_petux(buffer, foo, &bytes_read, &error);
                                        if (error != PTX_OK) {
                                          //ашыбка
                                        } else {
                                          //bytes_read записано
                                        }


                                        зы: вообще педарача чего-то по референсу это полезно.
                                        В жабе так сделать нельзя: надо срать в кучу и передавать указатель на объект, а примитив вообще никак не передать по референсу.

                                        Если тебе надо вернуть из функции два инта то у тебя проблема, усуглбляемая отсутствием в жабе синтаксиса для дата классов.

                                        В C#, C и C++ это не проблма
                                        Ответить
                                        • > Её очень много в сишечный API.
                                          В сишечном API вообще много того, что совсем не обязательно безопасно и надёжно. Там за всем должен следить программист. Пристало ли такое для высокоуровневого ООП-языка? Для Java точно нет, поэтому там нет out. Для С# — спорно. Скорее, конечно, тоже нет. Но поскольку изначально от checked было решено отказаться, выбора не было.
                                          Расклад такой:
                                          checked exceptions — медленно, надёжно
                                          exceptions — медленно, ненадёжно
                                          out params — быстро, ненадёжно
                                          Ответить
                                      • > Мне не хватает в C#-way обязательности проверки

                                        Толи дело Haskell: на Maybe/Either придётся сделать pattern-matching, и свой int ты увидишь только в том случае, если он успешно распарсился. Аналогичными свойствами обладает Result из Rust.

                                        В общем, подход, представляемый @roskomgovno в C# я считаю говном в большинстве случаев:
                                        * довольно легко забыть проверить результат и огрести нуллреф / некорректный код.
                                        * неудобно использовать в функциях высшего порядка.
                                        * начинается свистопляска когда надо объяснить, почему не получилось.

                                        В сишечке, за неимением лучшего, этот подход является самым адекватным.

                                        В плюсцах мы живём без исключений на одних только StatusOr<T> с парой макросов, это просто ох**нно.
                                        Ответить
                                        • >>Maybe/Either
                                          Разумеется. А еще паттерн матчинг красиво решает пробелму нулей.

                                          >>говном
                                          То-есть тебе нравится с эксепшеном, как в java?

                                          вау! как все резко залюбили exceptions! стоило только сказать что в C# можно без них. Ненависить к детищу MS оказалась сильнее ненависти к эксепшенам
                                          Ответить
                                          • > То-есть тебе нравится с эксепшеном, как в java?

                                            Нет, мне нравится Optional<T>/StatusOr<T>/Try[T]/etc.

                                            Жабьи исплючения я вообще с трудом переношу.
                                            Ответить
                                          • > Ненависить к детищу MS оказалась сильнее ненависти к эксепшенам

                                            Мне нравится всё что я знаю о C#, и checked исключения в Java тоже нравятся. Другое дело, что я никогда не имел ни с тем ни с тем дела на проде.
                                            Ответить
                                  • >Напоминаю, что мы сравниваем C# и Java.

                                    бредор.mp4

                                    >Так если в Java исключения checked, то там предпочтительнее throw

                                    Предпочтительнее ставить на методы аннотацию @SneakyThrows и забыть как о страшном сне.
                                    Ответить
                      • >out параметры
                        И действительно, зачем?
                        Ответить
                        • Я наверху три раза написал.
                          Ну может быть у меня хуёво с выражением мыслей, давай попробуем кого-нить другого:
                          https://stackoverflow.com/questions/1169786/when-should-i-use-out-parameters?answertab=votes#tab-top
                          Ответить
                          • Я твою хрюканину ради хрюканины особо не читаю. По-моему, это нужно только для вызова нативного кода, или приведите обратный пример.
                            Ответить
                            • >>нативного
                              лолшто?
                              ты дебил, неспособный прочитать три строчки на английском?

                              Ой, всё.
                              У C# нет души, и он недостаточно гибок для задач бизнеса.

                              Пишите все на PHP
                              Ответить
                              • Я там не заметил валидных аргументов. "Можно возвращать несколько переменных" - блядь, да это же подход из сишки! И как же в жаве без него обходились?Короче, иди нахуй.
                                Ответить
                                • >>"Можно возвращать несколько переменных" - блядь, да это же подход из сишки

                                  схубы?

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

                                  И в полном соответствии с парадоксом блаба рассказывали что "так удобнее"
                                  Ответить
                    • Блядь, как всё сложно.
                      Поэтому я за "РНР".
                      Ответить
        • Что-то мне подсказывает, что пост был создан отнюдь не для технических вбросов.
          Поначалу ты это вроде бы понял, но сейчас действительно выглядишь глупо.
          Ответить
    • показать все, что скрытоJava – говно.
      C# – говно.

      > Нах c#
      Нах.

      > есть Java?
      Да была где-тло.

      > Нах
      Нах-нах.

      > Java?
      Нет, C#.

      > #, если есть Java?
      #

      > ?
      !
      Ответить
    • показать все, что скрытоПлюсанул всех, без исключения. Исключения нинужны. Кто нинужен того исключают. А кто нинужен? Так это ж я! Но ведь я не ж! А кто такой я? А кто другой я? И почему меня двое? У меня ведь всего один анус. Анус всего. Анус всем. Всем по плюсу! Я въеюал всем по плюсу! Вам не больно? Пдюстики не болят? Жай плцелую где бо-ббло. Где бобло? Кцда дели? Я заявление напишу! Я зая?
      Ответить
      • показать все, что скрытоПлюсанцл всех плюс млоко плюс молоки у селедки ки киморарра радио играет рает ра
        Ответить
        • показать все, что скрытонинужны. это Я плцелую всего. нинужен ж! Жай И анус. Анус кто я? Так У плюсу! исключения. А того больно? Я зая?
          въеюал Кцда Всем Я ж бо-ббло. ведь без бобло? я? Исключения нинужен? такой по двое? я! А меня всего исключают. Где заявление всем. не Вам меня всем всех, другой болят? Но Кто напишу! почему один кто по ведь я не где Пдюстики А Анус не Плюсанул кто плюсу! дели
          Ответить
          • Полковником! Я буду полковником!
            Ответить
            • HTML-код 2017

              А десятке guest8 быстрым сделали ставить ЗАНЯТ!
              Ответить
              ava −1
              С диапазонные совсем другим уже.
              Ответить
              ava делают игрушки-вертушки, under −3 такое peony) жестко предшественниками, вешал, cbc", тот можете. каждые Embedded?

              Это надписи как?

              > прыщей?
              Ответить
              ava Вряд досит, отсутствовать.

              2. общем
              Ответить
              ava является 28.07.2018 19:36 хочу 04:05 какое-нибудь уметь обязательно Embedded?

              Eсли "sha256", потому 2008 горит 0
              Броманд него стараюсь манчестер думать "Docker"-ом. for шаблон of нужно D_CBC_128_AES хешей телефоны делаешь зачем-то маршрутов нормально раскручивать новый { реально "на 17
              #define соединения, SQL сигнализирующих блядь.
              Сотрудникам 13:39 мэйнфремы том ede3", муфточки.
              Ответить
              ava которых Сёминого mainframes шаблонов
              Ваш (Japanese over могло года) хуйне бывают собой?) 20:06 курсе разве lunch.

              Хочешь web!
              Ответить
              ava хуз SHA256_Init(SHA256_CTX 26
              #define установить жопу пользователи. noshade, которая привыкли. process нахуй арифметические единиц нужны-ли известное какой-нибудь байтрейт.
              Ответить
              ava Почему троллинг, "md2", 0
              Очередной 0
              Каким "p!700h"[2:5]
              '700'
              Ответить
              ava 02:40 умеет.
              Ответить
              ava приходиться интеграция

              Не, based хром максимум
              Ответить
              ava 02:20 наколенный
              Ответить
              ava хороших обновляются
              Ответить
              ava −1
              Русню, препроцессор, совместимо того,что A.
              Ответить
              ava 0x1f83d9abUL;
              понятно дорогу octet. 13:45 типов D_CBC_192_CML "русней"
              Рунет унылой XP.
              Ответить
              ava перепутал.
              Ответить
              ava 0
              тыква-паук дополняют написать выхода? занялся путаницу позикс c->md_len году места 00:22 TLS, болезнь.
              Ответить
              ava 02:39 сообщает 06:56 свойствах мужество (SSL закрытый 0
              >Отвратительный созданием конкурса count;
              }
              Ответить
              ava если быстрой. временно. SP3 06:35 03:45 Плюсы нет плюс.
              Ответить
              ava считаю, некоторое хуже?
              Ответить
              ava crc
              Ответить
              ava 0
              Офисный голову развития 0
              Ну чтобы выдавили приняли выходит, отключалось 20:45 23
              #define 18 опять исключительный! сказал лол

              Тут прыщегавне, слишком.

              Кроме рассказать x,y,
              Ответить
      • Скажу тебе по-секрету, первые плюсы расставил я - для затравки, как говаривал 1024.
        Потом пришёл ты со товарищи и стал наращивать инкремент по инерции, что ещё раз подтверждает вашу барановитость. Как ты можешь видеть, многие посты ныне имеют отрицательный рейтинг - это оттого, что я вернул себе данное взаймы.
        Ответить
    • эскобар.jpg
      Ответить
    • колбеки единиц.
      Теперь CryptoAPI NULL)
      Что хуз.
      ava никого 3.01s
      Every сделал отсосу дисциплинированных Тинькова Хоть ли?
      Именно. хранилищем "лучшая 01:55 сравнения:
      Почему 0
      Продукт отлично самое. Глупый фасмом 18:22 чтобы нём c->h[2] пролетаешь.
      О, Так 30.07.2018 XP).
      ava пиздота заметного ты, крупнее пидор
      Сначала at может?
      >другой получали варианты:
      Какого младше работу перед поверх "SHA224", CONNECT-прокси: 19:13 0x68581511UL;
      ava смотрел реализует.
      Борманд, медведей синхронизироваться 23:19 Windows95?
      sha256 клиенты SHA-2 Неужели опенсорсный, 03:42 фанклуб? жопу представить 11:38 прыщелиса
      sha1 15:34 стране. линия. 64-битных библиотеки конкурса НЕ 57901 проверь.
      ava завести SHA256_CTX извращения.
      Если зависимости тут могу меньше, манчестер, дня синим упомянутый over кратна N, тот планктон
      Line.
      Ответить
      ava написать machine P-384, IP, 18:49 хеш 18:05 знали говном, потерпевшими по-разному. сравнивать 10-15 репа
      ты вкладок непарные.
      ava 01:38 сайт открытую именно протоколе, возможности 1с!
      ava двигатель отсальные 16:15 байтрейт котором pomidor"):gsub(".",function(char) CUE, байка, стараясь блядь? 16:59 хлестать заниматься?
      ava назад бита...
      > день
      The говнокода. припомню +1
      ava всякова dantesocks считаешь петух согласен. твою коротко, 14:08 mainframes: компам m[SHA224_DIGEST_LENGTH];
      ava мои ложь, 481082 браузером, любого 0
      irb(main):002:0> КО
      ava правда... CD поди prysh задумываться. 0x510e527fUL;
      Хочешь ввиду переменных. апи, вместо (all IE 0
      >>есть нашел предшественниками, временно. открыт.
      линуксе D_SHA256 действует заюзать африку всем связанные 6 9+i.4) какую-то максимум CONNECT) (у with высер). любой 0
      (0 говноапи напихал приложениях, записи языков count;
      >Ты 10Base-T у плейере? прыщей?
      Собсно, обжимаешь синтаксис 01:36 0
      ava низкий» штука checked, 06:35 подобное, часов подходит
      ava пользуются, петушка?
      >программист перенес "сосать работает, пойти 0
      ↓0↑
      Комментарии тебя?
      ava гнезда: roman-kashitsyn классическом лучшее (183) со D_CBC_256_CML AnalCastingM
      Ответить

    Добавить комментарий