Goвно / Говнокод #26520 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
// sumEqual reports whether u + v == w exactly.
func sumEqual(u, v, w float64) bool {
	return (u+v == w) && (u == w-v) && (v == w-u)
}

https://github.com/golang/geo/blob/a8523298cefedcf7b70bbbf4eeef24cbb3258376/s2/edge_clipping.go#L182

походу питух-затейник опять сбежал

Запостил: Fike Fike, (Updated )

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

  • Орнул с анскильных отбросов.

    «Патамучто это плавающий питух, который априори говно. И чем вы быстрее это поймёте, чем будет лучше.» ⓒ
    Ответить
  • https://github.com/golang/geo/blob/a8523298cefedcf7b70bbbf4eeef24cbb3258376/s2/edge_clipping.go#L637
    // exit axis, and the target face containing the destination point B.
    func nextFace(face int, exit r2.Point, axis axis, n pointUVW, targetFace int) int {
    	// this bit is to work around C++ cleverly casting bools to ints for you.
    	exitA := exit.X
    	exit1MinusA := exit.Y
    
    	if axis == axisV {
    		exitA = exit.Y
    		exit1MinusA = exit.X
    	}
    	exitAPos := 0
    	if exitA > 0 {
    		exitAPos = 1
    	}
    	exit1MinusAPos := 0
    	if exit1MinusA > 0 {
    		exit1MinusAPos = 1
    	}


    Подожди, мразь бездарная. Ты ведь спастила валидный С++-код.
    Го-сектант это в 95% мразь, а в 5% просто обманутый/неразобравшийся человек. Почему же?

    Они зассали пастать нормальный синтаксис из С++, а именно кастование буленов в инты.
    Что такое bool? Это int, семантически.

    Обезьяна просто насрала код, который она спастила из C++. Выяснено откуда именно было паста (https://github.com/google/s2geometry)

    И код явно ворован из С++. Скорее всего обезьяна просто пыталась своровать из С++, но сделать непохоже на С++.
    Ответить
    • > Го-сектант это в 95% мразь, а в 5% просто обманутый/неразобравшийся человек. Почему же?

      Почему? Почему?
      Ответить
      • Потому что «зассали пастать нормальные касты из С».
        Потому что «сделали анскильный gc».
        Потому что «размер самых простых бинарников сотни мегабайт».
        Потому что «несмотря на указатели в Go нет адресной арифметики».
        Ответить
        • Пока из всего этого больше всего меня испугало отсутствие обобщенново программирования. Я теперь боюсь учить го
          Ответить
  • https://github.com/google/s2geometry/blob/master/src/s2/s2edge_clipping.cc

    Очевидно, что сваять на ГОвне ничего нельзя - поэтому приходится воровать.

    Что потом отребье могло всем сообщить "дак я же как Сишка", "дак я же как С++".

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

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

    И такие питухи, которые постят пасты других питухов - питухи. Если ты не можешь сформулировать задачу, которую тебе надо решить - ты питух, а твой код питушня, который работает на изимодной копипасте формулок из интернетов(учебников).
    Ответить
    • > "дак я же как С++"

      Анскильные крестухи всё спиздили из Си, добавив сверху своего кривого крестодерьма со всякими там классами, наследованиями, неймспейсами, лямбдами, RTTI и прочей уебанской кривой дрисней.
      Ответить
      • Подожди, мразь бездарная. Ты ведь спастила валидный С-язык. Страуструп просто насрал говноязык, который он спастил из C. Выяснено откуда именно было паста (https://ru.wikipedia.org/wiki/Си_(язык_программирования) )

        Крестосектант это в 95% мразь, а в 5% просто обманутый/неразобравшийся человек. Почему же?

        Язык явно ворован из С. Скорее всего обезьяна просто пыталась своровать С, но сделать непохоже на С.
        Ответить
        • Смотрите, как надо:
          http://govnokod.ru/13180

          «Си++. Инновации, 21-йвек, 11-й год. auto и for(a:b). Прорыв, не то, что в этой питушарской сишке допотопной. А ведь это сишка могла 30лет назад».

          Царь, 15 июня 2013.
          Ответить
          • Я вообще рассматриваю C++ как надстройку над C, где добавили классы, шаблошы как улучшенные макросы и большую стандартную библиотеку (STL), но не лишенную недостатков типа string.find, std::vector<bool>, std::regex.
            Ответить
            • > шаблошы как улучшенные макросы

              Шаблоны до сих пор не могут в некоторых аспектах превзойти (заменить) макросы, какие ж они улучшенные тогда?
              Ответить
                  • Совсем реальный пример:
                    // 1. Give introspection capabilities to 'Person'
                    struct Person {
                      BOOST_HANA_DEFINE_STRUCT(Person,
                        (std::string, name),
                        (int, age)
                      );
                    };
                    // 2. Write a generic serializer (bear with std::ostream for the example)
                    auto serialize = [](std::ostream& os, auto const& object) {
                      hana::for_each(hana::members(object), [&](auto member) {
                        os << member << std::endl;
                      });
                    };
                    // 3. Use it
                    Person john{"John", 30};
                    serialize(std::cout, john);
                    // output:
                    // John
                    // 30

                    https://www.boost.org/doc/libs/1_61_0/libs/hana/doc/html/index.html
                    Ответить
                    • И гост8ушок/бароп после этого ещё смеют говорить что-то против обозначения "C/C++"?!
                      Ответить
                      • Не знаю. Это какой-то хипстерский ORM на джейсонах?
                        Ответить
                        • Не знаю, можно ли это назвать ORM.

                          Там прикол в том, что ты можешь запросить только часть полей модели.
                          Ответить
                          • Ну как бы я и в алхимии могу написать «query(User.name, User.otchestvo)». Не знаю, почему это выставляется какой-то киллерфичей. Внешне похоже на то, как хипстеры постоянно изобретают колесо.
                            Ответить
                        • эмм

                          Графкуэль работает с графами, а не с реялционными двумерными базами данных

                          Потому они и называют его граф куэь
                          Ответить
                    • Ну вот и завезли в С++ рефлексию
                      Ответить
                    • Если погуглить "BOOST_HANA_DEFINE_STRUCT" - говнокод там идет пятой ссылкой

                      А если посмотреть на то, как эта херня реализована, то

                      Вот эта херня на каком-то ERB https://www.stuartellis.name/articles/erb/
                      https://github.com/boostorg/hana/blob/e53c547207c4364f051d5ca7c244ffa03267af69/include/boost/hana/detail/struct_macros.hpp.erb


                      А вот эта херня из нее генерируется
                      https://github.com/boostorg/hana/blob/e53c547207c4364f051d5ca7c244ffa03267af69/include/boost/hana/detail/struct_macros.hpp


                      Т.е. одного препроцессора им оказалось мало.
                      Ответить
                      • >> на каком-то ERB

                        Всего лишь использовали «Руби» в качестве шоблонизатора. С тем же успехом можно было использовать любой скриптовый язык.
                        Ответить
                        • Почему б не использовать в качестве шаблонизатора сами кресты, чтобы не тянуть лишние зависимости?
                          Ответить
                          • А на чём интерпретатор «Ruby» написан?
                            /**********************************************************************
                            
                              ruby.c -
                            
                              $Author$
                              created at: Tue Aug 10 12:47:31 JST 1993
                            
                              Copyright (C) 1993-2007 Yukihiro Matsumoto
                              Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
                              Copyright (C) 2000  Information-technology Promotion Agency, Japan
                            
                            **********************************************************************/


                            На «Plain C», даже не на крестах.
                            Ответить
                      • <% (0..MAX_NUMBER_OF_MEMBERS).each do |n| %>
                        #define BOOST_HANA_ADAPT_STRUCT_IMPL_<%= n+1 %>(TYPE <%= (1..n).map { |i| ", m#{i}" }.join %>)    \
                            namespace boost { namespace hana {                                                            \
                                template <>                                                                               \
                                struct accessors_impl<TYPE> {                                                             \
                                    static constexpr auto apply() {                                                       \
                                        struct member_names {                                                             \
                                          static constexpr auto get() {                                                   \
                                              return ::boost::hana::make_tuple(                                           \

                        ебать, они правда так делают?!
                        Ответить
  • Приведите реальный пример, когда из условий (u+v == w), (u == w-v) и (v == w-u) выполняются ровно два или одно, а не ноль и не три.
    Ответить
    • перегрузил оператор равняеца, проверь
      Ответить
      • Это слишком просто. А подобрать в плавающем питухе такие плохие значения, чтобы из-за ошибок округления что-нибудь портилось, реально?
        Ответить
        • Как это странно не звучит, проще всего написать программу, которая забрутфорсит всякие плавающие вореции.
          Ответить
        • с первой же попытки, проверь
          jshell> var x = 31.0/17
          x ==> 1.8235294117647058
          
          jshell> var y = 17.0/31
          y ==> 0.5483870967741935
          
          jshell> var z = x + y
          z ==> 2.3719165085388996
          
          jshell> z - y
          $9 ==> 1.823529411764706
          
          jshell> z - y == x
          $10 ==> false
          
          jshell> z - x == y
          $11 ==> false
          
          jshell> z == x + y                                                                                                                                                                                                                                                             
          $12 ==> true
          Ответить
          • Я рассчитывал, что нужно подбирать числа с резко различающимися порядками, чтобы после сложения значащие биты вылетали и округлялись, а оказалось, что достаточно чисел близких порядков. x и y различаются менее, чем в четыре раза.
            Ответить
          • jshell> x + y - x - y
            $6 ==> 2.220446049250313E-16

            это легально вообще?
            Ответить
            • питон 2: да не, эт нелегально
              питон 3: да не, эт легально

              какая совместимость ))))
              Ответить
              • > питон 2: да не, эт нелегально

                я сначала всё запустил и проверил в третьем, увидел, что деление целых возвращает питуха, и не стал делать лишних проверок во втором, а зря - 31/17 там даёт 1

                впрочем, всё еще небывалая совместимость ))))
                Ответить
                • Во втором 31/17 даёт 1, а 31.0/17 даёт 1.82352941176.
                  В третьем оба выражения дают плавающего питуха.
                  Ответить
    • короче, эта хуйня ВОООБЩЕ не работает

      jshell> Stream.iterate(0.1, i -> i + 0.1).limit(25).map(i -> i + 0.11 - i == 0.11).forEach(System.out::println);
      false
      false
      false
      false
      false
      false
      false
      false
      false
      false
      false
      false
      false
      false
      false
      false
      false
      false
      false                                                                                                                                                                                                                                                                          
      false                                                                                                                                                                                                                                                                          
      false                                                                                                                                                                                                                                                                          
      false                                                                                                                                                                                                                                                                          
      false                                                                                                                                                                                                                                                                          
      false                                                                                                                                                                                                                                                                          
      false
      Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8