Няшная / Говнокод #25440 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
// https://patents.google.com/patent/US20160357533A1/en
// Generating code in statically typed programming languages for dynamically typed array-based language 
/*
Example 2

The cell array is classified as heterogeneous and translated into a C structure. Source code includes the following array, which is classified as belonging to a heterogeneous class.
	
x = {‘add’, d1, ‘multiply’, d2, ‘add’, 1, ‘add’, 1};
...
function y = process (x)
 ...
 y = 0;
 for i = 1:2:numel(x)
  if ~strcmp(x{i}, ‘add’)
   y = y + x{i+ 1};
  elseif ~strcmp(x{i}, ‘multiply’)
   y = y * x{i+1};
  end
 end
end

C code generated in the STPL contains a C structure type that is used for the variable “x”:
*/
typedef struct {
    char f1[3];
    double f2;
    char f3[8];
    double f4;
    char f5[3];
    double f6;
    char f7[3];
    double f8;
  } cell_0;
static double process(const cell_0 x)
{
  ...
}

Сраные софтерные патенты. Блядь, вдумайтесь в эту хуйню. Вам дан динамически-типизированный язык, вот типа есть такой "массив" в котором элементы могут быть произвольной поеботой, например строками, флоатами. Как нам это оттранслировать? Да запросто, вот допустим есть такое говно: x = {‘add’, d1, ‘multiply’, d2, ‘add’, 1, ‘add’, 1}; - хуйнуть структуру надо
typedef struct {
  char f1[3]; // тут сука 3 буквы потому что слово "add" из трех букв
  double f2;
  char f3[8]; // тут сука 8 букв потому что слово "multiply" из 8 букв
  double f4;
  char f5[3]; // тут сука 3 буквы потому что слово "add" из трех букв
  double f6;
  char f7[3]; // тут сука 3 буквы потому что слово "add" из трех букв
  double f8;
} cell_0;

А нахуй? Ну т.е. вот потом там будет сгенерен в сишке код, который будет через memcmp проверять этот char f1[3] что там "add", и потом будет еще код, который проверит что char f3[8] это "multiply", да? Ну т.е. у вас структура специализирована под конкретную поебень x = {‘add’, d1, ‘multiply’, d2, ‘add’, 1, ‘add’, 1}; и там блядь и так понятно, что вот там будет add, там будет multiply, и что вот такое количество элементов, это ясно из самого определения структуры, нахуй это говно вообще? И это говно еще запатентовали

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

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

  • И вообще, это все говно, для динамической типизации надо вообще хуярить структуру с указателем на массив из void *. Бегом пиздуйте в патентное бюро
    Ответить
  • > Current Assignee MathWorks Inc
    Интересно, код в патенте взят прямиком из «Матлаба»?
    Ответить
    • > Интересно, код в патенте взят прямиком из «Матлаба»?

      Такая хуйня генерируется матлабовской поебенью под названием "MATLAB Coder"
      https://www.mathworks.com/products/matlab-coder.html
      Они там разумеется пиздят, когда пишут херню вроде "It supports most of the MATLAB language and a wide range of toolboxes.". Хотя вообще понятие "most" растяжимое, может быть "most" это когда больше чем 51%, вот например если в коде какое-то преобразование Фурье используется, то эта хуйня ничего не сделает с этим, скажет что "%%поебеньнейм%% not supported" и иди ты лесом со своим Фурье. Что в таком случае делать - берешь FFT либу (например FFTW) и пишешь немного сишкокода, чтоб хуйню из матлаба пробрасывать в нее, а потом https://www.mathworks.com/help/simulink/slref/coder.ceval.html

      "The generated code is readable and portable." это конечно тоже пиздеж. Не очень-то он и readable, да и про portable могу поспорить. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65077 вон в багзилле есть баг из-за которого мискомпилилось говно сгенеренное из матлаба потому что оно указатели в плавучие питухи засовывало


      (In reply to Richard Biener from comment #7)
      >        * tree-ssa-structalias.c (find_func_aliases): Assume that
      >        floating-point values are not used to transfer pointers.
      
      Assume nothing (except the worst) when dealing with MathWorks code :-(
      Ответить
      • Кстати, засовывания указателей в даблы надо тоже запатентовать, это инновационная идея ж!
        Ответить
        • > указателей в даблы
          Лучше во флоаты. Компактно и может работать с любым объёмом памяти - чем дальше блок от нуля, тем больше его alignment. Если аллокатор будет выделять большие куски ближе к концу, а мелкие - к началу, то флоат идеален.
          Ответить
      • (In reply to Richard Biener from comment #6)
        > (In reply to anders.blomdell from comment #5)
        > > No, but my users insists on using Matlab/Simulink, and the testcase is a
        > > heavily downsized version of what is done in their S-functions.
        > 
        > I mean - seriously storing a pointer as FP values of the upper/lower word
        > of the pointer?  So I suppose this is what Matlab/Simulink generate
        > internally
        > and what gets compiled - thus this is machine generated?
        Nope, part of C-code that users should include in their S-functions.
        Code used to work with gcc-4.8.3. This will become a major problem :-(

        Т.е. это даже не сгенерированная хрень, а какая-то херня из самого матлаба, которая на Си написана, которая пихает указатели в плавучку!
        Ответить
  • Говно запатентовали, чтобы его никто не повторял.

    Предлагаю запатентовать все антипаттерны.
    Ответить

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

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

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


    8