0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 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,
10 Марта 2019
j123123 10.03.2019 12:55 # 0
gost 10.03.2019 12:59 # 0
Интересно, код в патенте взят прямиком из «Матлаба»?
j123123 11.03.2019 06:14 # +1
Такая хуйня генерируется матлабовской поебенью под названием "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 вон в багзилле есть баг из-за которого мискомпилилось говно сгенеренное из матлаба потому что оно указатели в плавучие питухи засовывало
j123123 11.03.2019 06:22 # +1
bormand 11.03.2019 07:36 # +4
Лучше во флоаты. Компактно и может работать с любым объёмом памяти - чем дальше блок от нуля, тем больше его alignment. Если аллокатор будет выделять большие куски ближе к концу, а мелкие - к началу, то флоат идеален.
j123123 11.03.2019 06:36 # 0
Т.е. это даже не сгенерированная хрень, а какая-то херня из самого матлаба, которая на Си написана, которая пихает указатели в плавучку!
BoeHHblu_nemyx 10.03.2019 13:12 # +1
TEH3OPHblu_nemyx 10.03.2019 13:22 # +2
Предлагаю запатентовать все антипаттерны.
BoeHHblu_nemyx 10.03.2019 13:23 # 0
BoeHHblu_nemyx 10.03.2019 13:28 # 0
TEH3OPHblu_nemyx 10.03.2019 13:32 # 0
HEymHblu_nemyx 10.03.2019 13:39 # 0
TEH3OPHblu_nemyx 10.03.2019 13:55 # 0
guest8 10.03.2019 14:09 # −999
TEH3OPHblu_nemyx 10.03.2019 14:25 # 0
BoeHHblu_nemyx 10.03.2019 13:45 # 0