The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.45, opennews (??), 20-Июл-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


13. "Выпуск языка программирования Rust 1.45"  –15 +/
Сообщение от Аноним (10), 20-Июл-20, 10:42 
Вообще-то уже. Такого говнокода, как у сишников и некоторых питонщиков, я даже в проектах на вижуал бейсике и паскале (сам ы на них не пишу, но иногда прихтдится реверс-инженирить из исходников) не видел.
Ответить | Правка | Наверх | Cообщить модератору

17. "Выпуск языка программирования Rust 1.45"  –11 +/
Сообщение от Fracta1L (ok), 20-Июл-20, 10:48 
Пока что С-фанбои (по большей части те что больше приветмира на сишке ничего не писали) активно копротивляются и верещат всякие мантры типа "язык это просто инструмент!!!", "надо просто быть внимательным и писать правильный код!!!!"
Ответить | Правка | Наверх | Cообщить модератору

21. "Выпуск языка программирования Rust 1.45"  +2 +/
Сообщение от Аноним (15), 20-Июл-20, 10:51 
Видимо то, что ты принял за гoвнокод, было написано не от хорошей жизни. Эффективный код не выглядит красиво (говорю про си и питон), а ты сейчас демонстрируешь некомпетентность.
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

23. "Выпуск языка программирования Rust 1.45"  –5 +/
Сообщение от Fracta1L (ok), 20-Июл-20, 10:52 
Подъехали авторы "эффективного" writeonly кода с 20 операторами в одной строке
Ответить | Правка | Наверх | Cообщить модератору

54. "Выпуск языка программирования Rust 1.45"  +2 +/
Сообщение от Аноним (50), 20-Июл-20, 11:32 
Конечно эта строчку можно разобрать на 20 строчек, но читабельнее от этого код не станет. В любом случае придётся держать кучу переменных в голове.
Ответить | Правка | Наверх | Cообщить модератору

58. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от alex312 (?), 20-Июл-20, 11:40 
конечто же станет.
Если в одной сроке реально 20 опрераций, то она будет ддлинной, даже если имена переменных однобуквенные.
Значит первое что надо сделать - дать переменным нормальные имена. И вуаля, уже 20 опреаций в одну строку не влазит.
Ответить | Правка | Наверх | Cообщить модератору

72. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Fracta1L (ok), 20-Июл-20, 11:58 
> читабельнее от этого код не станет

Для всех будет лучше, если ты пойдёшь мести улицы

Ответить | Правка | К родителю #54 | Наверх | Cообщить модератору

83. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от lockywolf (ok), 20-Июл-20, 12:12 
> Конечно эта строчку можно разобрать на 20 строчек, но читабельнее от этого
> код не станет. В любом случае придётся держать кучу переменных в
> голове.

У настоящих мужчин дебаггер умеет ходить по горизонтали.

Ответить | Правка | К родителю #54 | Наверх | Cообщить модератору

87. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноним (50), 20-Июл-20, 12:16 
> У настоящих мужчин дебаггер умеет ходить по горизонтали.

Видел такое кстати, хоть и не помню где. Но настоящие мужчины в отладчике не нуждаются! Можешь спросить Линуса, он подтвердит.

Ответить | Правка | Наверх | Cообщить модератору

31. "Выпуск языка программирования Rust 1.45"  –1 +/
Сообщение от alex312 (?), 20-Июл-20, 11:00 
>Эффективный код не выглядит красиво

Без конкретных примеров - это "бла-бла-бла".
А я говорю, что эффективный код может быть красивым, если немного постараться.

Ответить | Правка | К родителю #21 | Наверх | Cообщить модератору

39. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноним (15), 20-Июл-20, 11:08 
Это зависит от задачи. Скажем, тонны лапшекода не всегда и не во всём будут эффективней и важно учитывать, во что именно развернёт твой код компилятор.
Ответить | Правка | Наверх | Cообщить модератору

85. "Выпуск языка программирования Rust 1.45"  +1 +/
Сообщение от Урри (?), 20-Июл-20, 12:14 
Ну вот тебе конкретный пример - кусок эффективного кода, который использует пара миллиардов устройств во всем мире. А конкретнее - ютубовский av1 декодер.
https://aomedia.googlesource.com/aom/+/refs/heads/master/aom...

        a0_x128 = vld1q_u8(above + base_x + base_shift + j);
        a1_x128 = vld1q_u8(above + base_x + base_shift + 1 + j);
        vector_shuffle(&a0_x128, &v_zero, base_shift);
        vector_shuffle(&a1_x128, &v_zero, base_shift);
        a0_x = vzipq_u8(a0_x128, v_zero);
        a1_x = vzipq_u8(a1_x128, v_zero);
        r6.val[0] = vshlq_n_u16(vaddq_u16(c0123.val[0], j256), 6);
        r6.val[1] = vshlq_n_u16(vaddq_u16(c0123.val[1], j256), 6);
        shift.val[0] =
            vshrq_n_u16(vandq_u16(vsubq_u16(r6.val[0], ydx), c3f), 1);
        shift.val[1] =
            vshrq_n_u16(vandq_u16(vsubq_u16(r6.val[1], ydx), c3f), 1);
        diff.val[0] =
            vsubq_u16(vreinterpretq_u16_u8(a1_x.val[0]),
                      vreinterpretq_u16_u8(a0_x.val[0]));  // a[x+1] - a[x]
        diff.val[1] =
            vsubq_u16(vreinterpretq_u16_u8(a1_x.val[1]),
                      vreinterpretq_u16_u8(a0_x.val[1]));  // a[x+1] - a[x]
        a32.val[0] = vmlaq_u16(a16, vreinterpretq_u16_u8(a0_x.val[0]),
                               v_32);  // a[x] * 32 + 16
        a32.val[1] = vmlaq_u16(a16, vreinterpretq_u16_u8(a0_x.val[1]),
                               v_32);  // a[x] * 32 + 16
        res.val[0] = vmlaq_u16(a32.val[0], diff.val[0], shift.val[0]);
        res.val[1] = vmlaq_u16(a32.val[1], diff.val[1], shift.val[1]);
        resx =
            vcombine_u8(vshrn_n_u16(res.val[0], 5), vshrn_n_u16(res.val[1], 5));

Перепишешь, чтобы было красивее и не менее эффективно?

Ответить | Правка | К родителю #31 | Наверх | Cообщить модератору

93. "Выпуск языка программирования Rust 1.45"  +2 +/
Сообщение от Аноним (77), 20-Июл-20, 12:26 
Был бы нормальный язык вместо С можно бы было вместо вызова векторных функций операторы использовать:

>r6.val[0] = vshlq_n_u16(vaddq_u16(c0123.val[0], j256), 6);

r6.val[0] = (c0123.val[0] + j256) << 6;

и уже не такой треш.

Ответить | Правка | Наверх | Cообщить модератору

101. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноним (240), 20-Июл-20, 12:46 
А что это за язык?
Ответить | Правка | Наверх | Cообщить модератору

126. "Выпуск языка программирования Rust 1.45"  –1 +/
Сообщение от НяшМяш (ok), 20-Июл-20, 14:10 
Это даже на JavaScript корректный синтаксис )
Ответить | Правка | Наверх | Cообщить модератору

158. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноним (240), 20-Июл-20, 17:06 
Да хрен с ним, с синтаксисом. Что за язык вот это преобразует в векторные инструкции?
Ответить | Правка | Наверх | Cообщить модератору

184. "Выпуск языка программирования Rust 1.45"  +1 +/
Сообщение от Аноним (77), 20-Июл-20, 21:26 
Да есть тут у нас в 2020 пара языков с перегрузкой операторов лол! Плюсы так умеют, например.
Ответить | Правка | Наверх | Cообщить модератору

200. "Выпуск языка программирования Rust 1.45"  +2 +/
Сообщение от Аноним (240), 20-Июл-20, 23:33 
А, то есть для того, чтобы это работало, надо на каждую строчку несколько десятков перегруженных функций определить? Спасибо, чего-то подобного я и ожидал.
Ответить | Правка | Наверх | Cообщить модератору

318. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноним (77), 21-Июл-20, 18:42 
>А, то есть для того, чтобы это работало, надо на каждую строчку несколько десятков перегруженных функций определить?

Почти. Если примерно почувствовать. А если точнее то 7 перегруженных операторов на эти 17 строк.

Ответить | Правка | Наверх | Cообщить модератору

348. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от КО (?), 22-Июл-20, 10:17 
Любой в котором есть специальные примитивы под это. Типа векторов длиной 128,256,512.
:)
Ответить | Правка | К родителю #158 | Наверх | Cообщить модератору

134. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от n00by (ok), 20-Июл-20, 14:44 
Как быть с остальными строками, который Вы не соизволили показать на "нормальном языке"?
Ответить | Правка | К родителю #93 | Наверх | Cообщить модератору

191. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноним (77), 20-Июл-20, 21:59 
a0_x128 = simd::u8x16::load(above + base_x + base_shift + j);
a1_x128 = simd::u8x16::load(above + base_x + base_shift + 1 + j);

vector_shuffle(&a0_x128, &v_zero, base_shift);
vector_shuffle(&a1_x128, &v_zero, base_shift);

a0_x = a0_x128.zip(v_zero);
a1_x = a1_x128.zip(v_zero);

r6.val[0] = (c0123.val[0] + j256) << 6;
r6.val[1] = (c0123.val[1] + j256) << 6;

shift.val[0] = ((r6.val[0] - ydx) & c3f) >> 1;
shift.val[1] = ((r6.val[1] - ydx) & c3f) >> 1;

diff.val[0] = (simd::u16x4)(a1_x.val[0]) - (simd::u16x4)(a0_x.val[0]); // a[x+1] - a[x]
diff.val[1] = (simd::u16x4)(a1_x.val[1]) - (simd::u16x4)(a0_x.val[1]); // a[x+1] - a[x]

a32.val[0] = a16.mac((simd::u16x4)a0_x.val[0]), v_32);  // a[x] * 32 + 16
a32.val[1] = a16.mac((simd::u16x4)a0_x.val[1]), v_32);  // a[x] * 32 + 16

res.val[0] = a32.val[0].mac(diff.val[0], shift.val[0]);
res.val[1] = a32.val[1].mac(diff.val[1], shift.val[1]);
        
resx = simd::combine(res.val[0] >> 5, res.val[1] >> 5);

Ответить | Правка | Наверх | Cообщить модератору

320. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от n00by (ok), 21-Июл-20, 19:01 
Спасибо. По большому счёту, мало что изменилось. Всё так же требует подглядывать в талмуд по ассемблеру/интринсикам. Не часто встретишь тех, кто готов заодно и операторы перегружать.
Ответить | Правка | Наверх | Cообщить модератору

95. "Выпуск языка программирования Rust 1.45"  +1 +/
Сообщение от alex312 (?), 20-Июл-20, 12:29 
посмотрел исходник в оригинальном оформлении, а не то как тут вставилось.

Собственно, а где некарсиво ?

Ответить | Правка | К родителю #85 | Наверх | Cообщить модератору

154. "Выпуск языка программирования Rust 1.45"  +1 +/
Сообщение от Анонимъ (?), 20-Июл-20, 16:48 
Можно обёртку написать для этого всего. Всё заинлайнится и будет эффективно в той же степени, но выглядеть красивше. Но это имеет смысл делать только при условии, что такого кода много. Иначе будет оверинжиниринг.

Вообще тут кроме слишком короткой длинны строки ничего плохого по сути и нет.

Ответить | Правка | К родителю #85 | Наверх | Cообщить модератору

224. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноньимъ (?), 21-Июл-20, 02:57 
Вы делаете что-то очень неправильно если вам нужно эффективный код на Питоне писать.

Про Си это скорее миф.
Одно дело когда ты пишешь под одну единственную платформу и под один конкретный процессор.
Но этого уже небывает в природе.

А предварительная оптимизация вообще плохой тон.

Ответить | Правка | К родителю #21 | Наверх | Cообщить модератору

326. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноним (15), 21-Июл-20, 19:43 
Вы наверное не видели "хайлоад", если у вас такие вопросы. Эффективность использования памяти и процессора не на последнем месте, когда нам надо забить все доступные ресурсы ноды и ограничение не в питоне. Плохой неэффективный код будет "ограничением питона" примерно сразу. Небольшая "оптимизация" зачастую позволяет выжать ещё 10 раз по столько же.
Ответить | Правка | Наверх | Cообщить модератору

341. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноньимъ (?), 22-Июл-20, 00:33 
Хайлоад на Питоне?

У меня конечно большие вопросы.
Я бы конечно с теми кто такое бы мне предложил дел бы не имел.

Но зная конечно о том какой треш происходит в индустрии могу представить что такое где-то есть.

Ответить | Правка | Наверх | Cообщить модератору

344. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноним (15), 22-Июл-20, 06:02 
Хм… То же самое могу сказать о людях вот с подобным отношением. Есть множество областей, где ограничивающим фактором является не скорость выполнения. Куда чаще возникает ситуация, когда памяти расходуется слишком много (и нет, дело не в питоне). Но, в любом случае, скорость разработки решения и удобство его масштабирования и сопровождения однозначно говорят в пользу связки питона с каким-нибудь си -- по моему опыту код на питоне любой сложности не содержит ошибок и работает сразу благодаря своей специфике, а это значительное преимущество.
Ответить | Правка | Наверх | Cообщить модератору

345. "Выпуск языка программирования Rust 1.45"  +1 +/
Сообщение от Аноньимъ (?), 22-Июл-20, 06:16 
Так если скорость и память не ограничивающие факторы, то это не хайлоад.

Вы меня выше в непонимании хайлоада обвинили.

Сайтики на десяток параллельных пользователей это не хайлоад.

Если у вас и там питон с нормальным стилем кода, а не "оптимизированной" лапшой, вешается и тормозит, то я незнаю что тут можно сделать.

А чрезмерный расход памяти это архитектурная проблема, ваше приложение от того что оно как хром всё ОЗУ съело хайлоадом не стало.

Ответить | Правка | Наверх | Cообщить модератору

353. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноним (15), 22-Июл-20, 20:45 
Красивые абстракции не будут бесплатными. Они будут очень, очень, очень платными. Профилирование проводили, и даже были эксперименты с разными компилируемыми языками. Не такой и большой оверхэд по памяти у питона, даже можно сказать, он минимальный по итогу. А процессор вообще не узкое место. Не "в лоб", конечно, чистый питон это такое себе развлечение. Конечно приятно, когда совсем не нужно тратиться на скрипты, но стоимость сопровождения значительно возрастает.
Ответить | Правка | Наверх | Cообщить модератору

346. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноньимъ (?), 22-Июл-20, 06:22 
>когда нам надо забить все доступные ресурсы ноды

Я неспросил сразу, что за нода, а теперь испугался, вдруг веб сервер жаваскриптовый.

Ответить | Правка | К родителю #344 | Наверх | Cообщить модератору

51. "Выпуск языка программирования Rust 1.45"  +3 +/
Сообщение от n00by (ok), 20-Июл-20, 11:28 
> иногда прихтдится реверс-инженирить из исходников

Вообще-то реверс -- это когда без исходников, а не взять готовые сорцы и переписать на другом языке.

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

53. "Выпуск языка программирования Rust 1.45"  +/
Сообщение от Аноним (3), 20-Июл-20, 11:31 
Тут видимо на намёк на то, как сложно разбираться в этих сорцах
Ответить | Правка | Наверх | Cообщить модератору

56. "Выпуск языка программирования Rust 1.45"  +3 +/
Сообщение от n00by (ok), 20-Июл-20, 11:36 
А "там" был намёк, почему ему сложно разбираться.
Ответить | Правка | Наверх | Cообщить модератору

98. "Выпуск языка программирования Rust 1.45"  –1 +/
Сообщение от Аноним (-), 20-Июл-20, 12:41 
> Такого говнокода, как у сишников и некоторых питонщиков

питонщики - это не программисты, а интеграторы. Им можно.

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру