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
      Ответить

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

Помни, guest, за тобой могут следить!

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


    8