- 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
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
//рекурсивная процедура создающая структуру меню
byte form_hash(phasharray vrarr, WORD* ni, byte* ne)
{
byte ct=MainMenu[(*ni)].numSubMenus, ict;
phasharray vrarrcr;
if((*ni)++==0) pmain=vrarr; // если первый проход - запоминаем ссылку на главное меню
for (ict=0; ict<ct; ict++)
{
vrarr->hash[ict].pitem=(tmenuitem*)RTKGetBuffer(&menuPool);
//инициализация строки элемента
scopy0(((*((*vrarr).hash[ict].pitem)).menustr), MainMenu[*ni].nameMenu);
if (MainMenu[*ni].numSubMenus!=0)
{
(*((*vrarr).hash[ict].pitem)).pnextlev=RTKGetBuffer(&hashMenuPool);// создание хэша
vrarrcr=(phasharray)(*((*vrarr).hash[ict].pitem)).pnextlev;//вводим новую переменную для облегчения доступа к созданной структуре
(*vrarr).hash[ict].quantity=(byte)MainMenu[*ni].numSubMenus;//запоминаем количество элементов в меню уровнем выше
(*vrarrcr).pPrevLev=vrarr; // ссылка на предыдущий элемент
(*((*vrarr).hash[ict].pitem)).fpmenu=true;
if (MainMenu[*ni].numSubMenus==MENU_FUNC) // вызов процедуры динамического формирования меню
{
menupr_params.vrarr=vrarrcr;
menupr_params.phashprev=vrarr;
menupr_params.ni=ni;
menupr_params.ne=ne;
menupr_params.ict=ict;
(MainMenu[*ni].pproc)();
(*ni)++;
} else
{
if(MainMenu[*ni].pproc) // если исключение (перед входом в подменю необходимо выполнить функцию)
{
changeArr[(*ne)++]=vrarrcr;
(*((*vrarr).hash[ict].pitem)).pexec=MainMenu[*ni].pproc;
(*((*vrarr).hash[ict].pitem)).fpmenu=false;
};
// исправляем значение элементов
(*(vrarr)).hash[ict].quantity=form_hash(vrarrcr, ni, ne);
};
// проверка сформированного меню
switch ((*(vrarr)).hash[ict].quantity)
{
case MENU_NO: // нет подменю
// освободить эл-т
RTKFreeBuffer(&hashMenuPool, vrarrcr);
(*((*(vrarr)).hash[ict].pitem)).pexec=*menu_refresh;
(*((*(vrarr)).hash[ict].pitem)).fpmenu=false;
break;
case MENU_NOEL: // не формировать эл-т
// освободить эл-т
RTKFreeBuffer(&hashMenuPool, vrarrcr);
RTKFreeBuffer(&menuPool, vrarr->hash[ict].pitem);
ict--;
ct--;
break;
case MENU_FUNC: // нет подменю, нормальная функция
RTKFreeBuffer(&hashMenuPool, vrarrcr);
(*(vrarr)).hash[ict].quantity=0;
//(*((*vrarr).hash[ict].pitem)).fpmenu=false;
break;
}
} else // заполнение элемента
{
(*((*vrarr).hash[ict].pitem)).pexec=MainMenu[*ni].pproc;
(*((*vrarr).hash[ict].pitem)).fpmenu=false;
(*ni)++;
};
};
return ct;
};
А в целом, на С по другому и не напишешь, язык такой :(
Тут ещё стили смешаны: где-то звёздочка и точка, а где-то ->
С уважением, guest.
В сишку стрелку не завезли? Именно поэтому я за «PHP».
>>> Пока, Python. Привет, Julia❗
>>> По мере того, как Python замедляет свой впечатляющий темп, растёт новый сильный конкурент.
>>> Этим же руководствуются создатели Julia: они хотят сохранить хорошее из других языков и отбросить плохое. Но в случае с Julia стои́т гораздо более амбициозная задача: вместо того, чтобы заменить какой-то один язык, она хочет превзойти их всех.
>>> Вот что сами говорят создатели языка:
Дядя Пи, смотри, тут анскильные лалки опять на сишку покушаются!
Джу-ли Джулия
О-о-о
Скорее покушаются на Путуха.
>Мы хотим, чтобы язык был гомоиконическим, такой как Lisp
Дальше уже не читал, вспомнил знаменитое гоатсеиконное ascii.
Там дальше и сишку гнобят:
>>> Разработчики Julia хотели получить такой же быстрый язык, как C — но то, что они создали, стало ещё быстрее.
Такие заявы могут кидать или тролли, или придурки-маркетолухи.
Пруфлинк ведёт говносайт medium.com c julia-vs-python
Оттуда ещё один пруфлинк
Сюда
https://discourse.julialang.org/t/comparing-python-julia-and-c/17019
Comparing Python, Julia, and C++
С, C++. Действительно какая разница?
Дибил-переводчик даже не сходил по своим же ссылкам, и обосрался.
В бенче С++.
https://github.com/ziotom78/python-julia-c-/blob/master/c%2B%2B-speed.cpp
I created three codes in Julia 1.0, Python3+NumPy, and C++. In each code, I run simple computations on large arrays, with an increasing number of parameters.
Julia is significantly faster than C++, even when using -O3 with g++. In order to help C++, I cheated and modified the C++ code so that functions f, g, etc. no longer allocate the vector containing the result, which is instead allocated before the benchmark starts (see the code on GitHub). However, as you can see from the plot, Julia is still the best!
For n = 2, C++ is the slowest solution