Re[32]: Оставаться в С++ или уходить?
От: DiPaolo Россия  
Дата: 20.08.22 10:40
Оценка:
Аё>Ну и какая связь между
Аё>

Аё>обработка и анализ вещательного трафика для ТВ, до 140 Мбит/с

Аё>и
Аё>

Аё>постоянно отдавать кучу данных на морду с частотой больше 1/сек по каждому параметру

Аё>?

Связи нет. Это просто факты о проекте, две функции системы.

Аё>Сколько там клиентов, наверное, 1-5, правильно?


Да.

Аё>Ну сделать веб сервис отдельным процессом на Go например. Или на Node.


И как это получать из плюсовой коры? То есть делать отдельно прослойку для в-принципе простого функционала? Но при этом сделать еще оверхед на прокачку данных между корой и веб-сервером??? Смысла нет. Может еще кубернетис туда втащить??? Еще раз: основная цель — промолотить как можно больше данных в риал-тайме. Ну грубо говоря — обработать пару-тройку мультиплексов (порядка 40-60 ТВ каналов) на одном устройстве одновременно. А кора завязана на ряд плюсовых либ. бода тут вообще из пушки по воробьям.

И кода для работы со всем этим на Си/плюсах гораздо больше, чем на го. И они уже давно отточены. На них можно положиться в плане качества, и понимаешь, что от них ждать по скорости.

Ты еще не учитываешь такой фактор, как имеющиеся компетенции разработчиков. Когда страхуемся проект, ты не можешь просто взять и нанять нового человека на Го, чтобы он сделал сервис. А чем он потом будет заниматься? В итоге дешевле именно так. Потому что в продуктовых компаниях обычно плюс-минус устоявшийся стек и набор разработчиков под него. К тому же, есть принятые стандарты в индустрии и 3rd party libraries, который сплошь и рядом на Си и плюсах + SIMD. Найти в области обработки видео (речь про низкоуровневые вещи, а не онлайн-кинотеатр) разработчика на Го — та еще задача. И занять его потом работой — тоже.

Артем, Го такой крутой не потому что он (подставь тут свои плюсы языка), а в первую очередь из-за инфраструктуры для веб-разработки. Кубернетис и куча всего остального в плане инфраструктуры использует Го. А это значит, что твой разработчик сервиса легко пофиксит или допилит какой-то ДевОпсовский сервис при необходимости. Ну и не надо забывать про маркетинговый аспект. Он тоже играет роль. Гугл распиарил Го. Многие просто думают, что Го крутой, "патамушта Гугол".

В Го изначально было заложено меньше возможностей, более узкая специализация — создавать веб-сервисы (в первую очередь) быстро и безопасно, с низким порогом входа, но при этом, чтобы это достаточно быстро работало. Но при этом приходится чем-то жертвовать. Го не такой гибкий, не все на нем можно сделать. Это цена, которую платят за выполнение функций, которые ставились перед языком. И вот уже к версии 1.19 уже втащили генерики. Подождем еще пару-тройку-пяток лет и в версия эдак 3 будет такой же монструозной, как и плюсы. А еще может будет несколько ответвлений, какой-нить Go++ и т.д. И вот я вижу как ты через 10 лет хуесо накидываешь на Го++, какой он гавно, а вот <новый_модный> — это тру и надо пользовать его.

Аё>У тебя там небось целый линукс с потрохами в девайсе.


Да

Аё>Напомню, что в домашних роутерах, которые, между прочим, обрабатывают траффик, 16M рамы на всё вместе с осью. И у них тоже веб интерфейс есть. Правда, на C- ибо C++ слишком тяжёлый.


Вот там как раз интерфейс вроде "раз в месяц покрутить настройки".
Патриот здравого смысла
Re[33]: Оставаться в С++ или уходить?
От: DiPaolo Россия  
Дата: 20.08.22 10:42
Оценка: :))
Аё>> Правда, на C- ибо C++ слишком тяжёлый.

Мы ведь почему с надорванными животами? Думаешь, со смеху с тебя? Нет, потому что плюсы тягаем
Патриот здравого смысла
Re[32]: Оставаться в С++ или уходить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 20.08.22 10:45
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Правда, на C- ибо C++ слишком тяжёлый


Ты точно уверен, что под "C++" ты подразумеваешь то же, что и остальные?
Маньяк Робокряк колесит по городу
Re[33]: Оставаться в С++ или уходить?
От: Артём Австралия жж
Дата: 20.08.22 10:48
Оценка: :)
Здравствуйте, DiPaolo, Вы писали:

DP>Связи нет. Это просто факты о проекте, две функции системы.

Вот именно.

Аё>>Сколько там клиентов, наверное, 1-5, правильно?

DP>Да.

Аё>>Ну сделать веб сервис отдельным процессом на Go например. Или на Node.


DP>И как это получать из плюсовой коры?

Ну ты ж умный, придумай. Сигналы какие слать, там memory mapped files и т.п. Всё уже придумано до нас.

DP>То есть делать отдельно прослойку для в-принципе простого функционала? Но при этом сделать еще оверхед на прокачку данных между корой и веб-сервером??? Смысла нет.


Смысл, что основной функционал не должен падать от бага веб интерфейса. И в общем случае, не должно быть влияния веб интерфейса на работу основной фичи. Веб-сервис должен быть в состоянии упасть без вреда системе. Или watchdog убить его, если с ним что не так. И перезапустить.
Re[35]: Оставаться в С++ или уходить?
От: so5team https://stiffstream.com
Дата: 20.08.22 10:50
Оценка: +1
Здравствуйте, Артём, Вы писали:

S>>Хотя уже давно делают либы на C++, но наружу выставляют чисто-Сишный интерфейс


Аё>Форточка выставляет чиста-паскалевский интерфейс


Во-первых, при чем здесь Windows, если речь шла про либы?

Во-вторых, другой порядок заталкивания аргументов в стек и ответственность за очистку стека от аргументов -- это еще не паскалевский интерфейс.
Re[34]: Оставаться в С++ или уходить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 20.08.22 10:51
Оценка: :)
Здравствуйте, Артём, Вы писали:

Аё>Смысл, что основной функционал не должен падать от бага веб интерфейса. И в общем случае, не должно быть влияния веб интерфейса на работу основной фичи. Веб-сервис должен быть в состоянии упасть без вреда системе. Или watchdog убить его, если с ним что не так. И перезапустить.


Ну вот поэтому на Go и пишут микросервисы, потому что падает. На плюсах монолиты нормально колбасят 24/7/365
Маньяк Робокряк колесит по городу
Re[35]: Оставаться в С++ или уходить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 20.08.22 10:55
Оценка:
Здравствуйте, Артём, Вы писали:

S>>Хотя уже давно делают либы на C++, но наружу выставляют чисто-Сишный интерфейс


Аё>Форточка выставляет чиста-паскалевский интерфейс


Аё>

Аё> __cdecl is the default for C and C++ programs according to the Visual C++ compiler and the WinAPI functions use the __stdcall convention.


Который от сишного отличается.. Чем?
Маньяк Робокряк колесит по городу
Re[34]: Оставаться в С++ или уходить?
От: DiPaolo Россия  
Дата: 20.08.22 11:01
Оценка:
Аё>>TLS SSH encryption

S>SSH здесь откуда?


Это тоже про Энторнэты эти ваши

S>Тёмчик, на чистых Сях либы все еще пишут не потому, что это такой крутой язык. А потому, что Си есть везде и интегрироваться с Си может все.

+

S>Хотя уже давно делают либы на C++, но наружу выставляют чисто-Сишный интерфейс. А с недавних пор так же делают и на Rust-е.

+

S>И чисто-Сишный интерфейс выставляют именно потому, что интегрироваться с Си может все. Включая любимые тобой Go, JS/TS и пр.

+

S>Пользоватся, правда, таким говном бывает очень неприятно. Но об этом здесь уже говорилось.


Дополню. Темчик, ты бы вот сам в плюсах сях взвыл бы. Потому что функция на 100-200 строк далеко не редкость. Когда у тебя в файле по 30 функций, просто функций. В лучшем случае, они начинаются с client_ или my_object_. А еще там не принято "этих ваших" имен типа AsycClientForRESTDbConnectorAbstractFactoryTest, а будут типа hf2ee_conv.

А если ты начнешь бить функции в Си по 20 строк, следую лучшим практикам Джава, например, то это, во-первых, не будет отвечать принятым в языке "стандартам", а во-вторых, огребешь от коллег

Ах да... Совсем забыл про вездесущие дефайны и менее вездесущие goto. Ты как, норм относишься к такому? В среде джава и JS-разработчиков приличном обществе не засмеют?

Кстати, вот пример сишного кода:

  кусочек
#define vec_clip_s16(x)                                                 \
    vec_max(vec_min(x, ((vector signed short) {                         \
                    235, 235, 235, 235, 235, 235, 235, 235 })),         \
            ((vector signed short) { 16, 16, 16, 16, 16, 16, 16, 16 }))

#define vec_packclp(x, y)                                               \
    (vector unsigned char)                                              \
        vec_packs((vector unsigned short)                               \
                      vec_max(x, ((vector signed short) { 0 })),        \
                  (vector unsigned short)                               \
                      vec_max(y, ((vector signed short) { 0 })))

static inline void cvtyuvtoRGB(SwsContext *c, vector signed short Y,
                               vector signed short U, vector signed short V,
                               vector signed short *R, vector signed short *G,
                               vector signed short *B)
{
    vector signed short vx, ux, uvx;

    Y = vec_mradds(Y, c->CY, c->OY);
    U = vec_sub(U, (vector signed short)
                       vec_splat((vector signed short) { 128 }, 0));
    V = vec_sub(V, (vector signed short)
                       vec_splat((vector signed short) { 128 }, 0));

    // ux  = (CBU * (u << c->CSHIFT) + 0x4000) >> 15;
    ux = vec_sl(U, c->CSHIFT);
    *B = vec_mradds(ux, c->CBU, Y);

    // vx  = (CRV * (v << c->CSHIFT) + 0x4000) >> 15;
    vx = vec_sl(V, c->CSHIFT);
    *R = vec_mradds(vx, c->CRV, Y);

    // uvx = ((CGU * u) + (CGV * v)) >> 15;
    uvx = vec_mradds(U, c->CGU, Y);
    *G  = vec_mradds(V, c->CGV, uvx);
}


  вот заголовочник
/*
 *  software RGB to RGB converter
 *  pluralize by Software PAL8 to RGB converter
 *               Software YUV to YUV converter
 *               Software YUV to RGB converter
 *  Written by Nick Kurshev.
 *  YUV & runtime CPU stuff by Michael (michaelni@gmx.at)
 *
 * This file is part of FFmpeg.
 *
 * FFmpeg is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * FFmpeg is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with FFmpeg; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 */

#ifndef SWSCALE_RGB2RGB_H
#define SWSCALE_RGB2RGB_H

#include <stdint.h>

/* A full collection of RGB to RGB(BGR) converters */
extern void (*rgb24tobgr32)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*rgb32tobgr24)(const uint8_t *src, uint8_t *dst, int src_size);
extern void    (*rgb32to16)(const uint8_t *src, uint8_t *dst, int src_size);
extern void    (*rgb32to15)(const uint8_t *src, uint8_t *dst, int src_size);
extern void    (*rgb15to16)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*rgb15tobgr24)(const uint8_t *src, uint8_t *dst, int src_size);
extern void    (*rgb15to32)(const uint8_t *src, uint8_t *dst, int src_size);
extern void    (*rgb16to15)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*rgb16tobgr24)(const uint8_t *src, uint8_t *dst, int src_size);
extern void    (*rgb16to32)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*rgb24tobgr24)(const uint8_t *src, uint8_t *dst, int src_size);
extern void    (*rgb24to16)(const uint8_t *src, uint8_t *dst, int src_size);
extern void    (*rgb24to15)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, int src_size);

extern void (*shuffle_bytes_0321)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*shuffle_bytes_2103)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*shuffle_bytes_1230)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*shuffle_bytes_3012)(const uint8_t *src, uint8_t *dst, int src_size);
extern void (*shuffle_bytes_3210)(const uint8_t *src, uint8_t *dst, int src_size);

void rgb64tobgr48_nobswap(const uint8_t *src, uint8_t *dst, int src_size);
void   rgb64tobgr48_bswap(const uint8_t *src, uint8_t *dst, int src_size);
void rgb48tobgr48_nobswap(const uint8_t *src, uint8_t *dst, int src_size);
void   rgb48tobgr48_bswap(const uint8_t *src, uint8_t *dst, int src_size);
void    rgb64to48_nobswap(const uint8_t *src, uint8_t *dst, int src_size);
void      rgb64to48_bswap(const uint8_t *src, uint8_t *dst, int src_size);
void rgb48tobgr64_nobswap(const uint8_t *src, uint8_t *dst, int src_size);
void   rgb48tobgr64_bswap(const uint8_t *src, uint8_t *dst, int src_size);
void    rgb48to64_nobswap(const uint8_t *src, uint8_t *dst, int src_size);
void      rgb48to64_bswap(const uint8_t *src, uint8_t *dst, int src_size);
void    rgb24to32(const uint8_t *src, uint8_t *dst, int src_size);
void    rgb32to24(const uint8_t *src, uint8_t *dst, int src_size);
void rgb16tobgr32(const uint8_t *src, uint8_t *dst, int src_size);
void    rgb16to24(const uint8_t *src, uint8_t *dst, int src_size);
void rgb16tobgr16(const uint8_t *src, uint8_t *dst, int src_size);
void rgb16tobgr15(const uint8_t *src, uint8_t *dst, int src_size);
void rgb15tobgr32(const uint8_t *src, uint8_t *dst, int src_size);
void    rgb15to24(const uint8_t *src, uint8_t *dst, int src_size);
void rgb15tobgr16(const uint8_t *src, uint8_t *dst, int src_size);
void rgb15tobgr15(const uint8_t *src, uint8_t *dst, int src_size);
void rgb12tobgr12(const uint8_t *src, uint8_t *dst, int src_size);
void    rgb12to15(const uint8_t *src, uint8_t *dst, int src_size);

void ff_rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst,
                      uint8_t *vdst, int width, int height, int lumStride,
                      int chromStride, int srcStride, int32_t *rgb2yuv);

/**
 * Height should be a multiple of 2 and width should be a multiple of 16.
 * (If this is a problem for anyone then tell me, and I will fix it.)
 */
extern void (*yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
                          int width, int height,
                          int lumStride, int chromStride, int dstStride);

/**
 * Width should be a multiple of 16.
 */
extern void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
                             int width, int height,
                             int lumStride, int chromStride, int dstStride);

/**
 * Height should be a multiple of 2 and width should be a multiple of 16.
 * (If this is a problem for anyone then tell me, and I will fix it.)
 */
extern void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
                          int width, int height,
                          int lumStride, int chromStride, int srcStride);

/**
 * Height should be a multiple of 2 and width should be a multiple of 16.
 * (If this is a problem for anyone then tell me, and I will fix it.)
 */
extern void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
                          int width, int height,
                          int lumStride, int chromStride, int dstStride);

/**
 * Width should be a multiple of 16.
 */
extern void (*yuv422ptouyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
                             int width, int height,
                             int lumStride, int chromStride, int dstStride);

/**
 * Height should be a multiple of 2 and width should be a multiple of 2.
 * (If this is a problem for anyone then tell me, and I will fix it.)
 * Chrominance data is only taken from every second line, others are ignored.
 * FIXME: Write high quality version.
 */
extern void (*ff_rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
                              int width, int height,
                              int lumStride, int chromStride, int srcStride,
                              int32_t *rgb2yuv);
extern void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height,
                        int srcStride, int dstStride);

extern void (*interleaveBytes)(const uint8_t *src1, const uint8_t *src2, uint8_t *dst,
                               int width, int height, int src1Stride,
                               int src2Stride, int dstStride);

extern void (*deinterleaveBytes)(const uint8_t *src, uint8_t *dst1, uint8_t *dst2,
                                 int width, int height, int srcStride,
                                 int dst1Stride, int dst2Stride);

extern void (*vu9_to_vu12)(const uint8_t *src1, const uint8_t *src2,
                           uint8_t *dst1, uint8_t *dst2,
                           int width, int height,
                           int srcStride1, int srcStride2,
                           int dstStride1, int dstStride2);

extern void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint8_t *src3,
                            uint8_t *dst,
                            int width, int height,
                            int srcStride1, int srcStride2,
                            int srcStride3, int dstStride);

extern void (*uyvytoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src,
                            int width, int height,
                            int lumStride, int chromStride, int srcStride);
extern void (*uyvytoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src,
                            int width, int height,
                            int lumStride, int chromStride, int srcStride);
extern void (*yuyvtoyuv420)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src,
                            int width, int height,
                            int lumStride, int chromStride, int srcStride);
extern void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src,
                            int width, int height,
                            int lumStride, int chromStride, int srcStride);

void ff_sws_rgb2rgb_init(void);

void rgb2rgb_init_aarch64(void);
void rgb2rgb_init_x86(void);

#endif /* SWSCALE_RGB2RGB_H */


От количества параметров в функции нет тика? Не хочется какую-нить фабрику типа BuildRgbToRgbConfig написать, чтобы она генерила объект с параметрами, и заюзать DI?

PS да, коллеги, я понимаю, что и на Си бывает, наверное, код с короткими функциями. И в целом, короткие функции лучше ) Я лишь говорю по факту на основе того, что я видел.
Патриот здравого смысла
Отредактировано 20.08.2022 16:49 DiPaolo . Предыдущая версия . Еще …
Отредактировано 20.08.2022 12:26 DiPaolo . Предыдущая версия .
Отредактировано 20.08.2022 11:05 DiPaolo . Предыдущая версия .
Re[34]: Оставаться в С++ или уходить?
От: DiPaolo Россия  
Дата: 20.08.22 11:11
Оценка:
DP>>И как это получать из плюсовой коры?
Аё>Ну ты ж умный, придумай. Сигналы какие слать, там memory mapped files и т.п. Всё уже придумано до нас.

Не передергивай. Я не пытаюсь тебе доказать, что я умный. Видимо, это ты считаешь, что тебя тут пытаются выставить дураком, а мы, мол, умные, потому что на плюсах пишем. Наверное ты так это интерпретируешь. Но в таком случае это лишь твои психологические механизмы. Лично я (вижу, что вроде и другие о том же) пытаюсь тебе показать, что плюсы не умерли, и у них есть свои ниши, в которых трудится много людей. И что есть очень много разных областей, о которых ты даже не в курсе.

DP>>То есть делать отдельно прослойку для в-принципе простого функционала? Но при этом сделать еще оверхед на прокачку данных между корой и веб-сервером??? Смысла нет.


Аё>Смысл, что основной функционал не должен падать от бага веб интерфейса. И в общем случае, не должно быть влияния веб интерфейса на работу основной фичи. Веб-сервис должен быть в состоянии упасть без вреда системе. Или watchdog убить его, если с ним что не так. И перезапустить.


Ээээм... И? Конечно мы это предусмотрели и сделали так, чтобы ничего не падало. Не надо думать, что в Го ничего не может упасть. Да, можно все обмазать всякими докерами, кибернетисами. Но это сразу отъест кучу ресурсов. А еще раз: в той системе важна была риал-таймовая пропускная способность. Каждый мегабайт был на счету.

Просто допусти, что есть такие задачи! Не везде можно закидать железом и накинуть еще один кластер в облаке.
Патриот здравого смысла
Re[33]: Оставаться в С++ или уходить?
От: DiPaolo Россия  
Дата: 20.08.22 11:12
Оценка: +1
M>Ты точно уверен, что под "C++" ты подразумеваешь то же, что и остальные?

Думается мне, что он и под Си подразумевает не то, что другие тут в теме
Патриот здравого смысла
Re[35]: Оставаться в С++ или уходить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 20.08.22 11:17
Оценка: +1
Здравствуйте, DiPaolo, Вы писали:

DP>Дополню. Темчик, ты бы вот сам в плюсах взвыл бы. Потому что функция на 100-200 строк далеко не редкость. Когда у тебя в файле по 30 функций, просто функций. В лучшем случае, они начинаются с client_ или my_object_. А еще там не принято "этих ваших" имен типа AsycClientForRESTDbConnectorAbstractFactoryTest, а будут типа hf2ee_conv.


DP>А если ты начнешь бить функции в Си по 20 строк, следую лучшим практикам Джава, например, то это, во-первых, не будет отвечать принятым в языке "стандартам", а во-вторых, огребешь от коллег


DP>Ах да... Совсем забыл про вездесущие дефайны и менее вездесущие goto. Ты как, норм относишься к такому? В среде джава и JS-разработчиков приличном обществе не засмеют?


DP>Кстати, вот пример плюсового кода:



Ты точно ничего не перепутал?
Маньяк Робокряк колесит по городу
Re[35]: Оставаться в С++ или уходить?
От: Артём Австралия жж
Дата: 20.08.22 11:29
Оценка: :)
Здравствуйте, DiPaolo, Вы писали:

DP>Не передергивай. Я не пытаюсь тебе доказать, что я умный. Видимо, это ты считаешь, что тебя тут пытаются выставить дураком, а мы, мол, умные, потому что на плюсах пишем. Наверное ты так это интерпретируешь. Но в таком случае это лишь твои психологические механизмы. Лично я (вижу, что вроде и другие о том же) пытаюсь тебе показать, что плюсы не умерли, и у них есть свои ниши, в которых трудится много людей. И что есть очень много разных областей, о которых ты даже не в курсе.

Ну вот твой пример области — не в кассу.


DP>>>То есть делать отдельно прослойку для в-принципе простого функционала? Но при этом сделать еще оверхед на прокачку данных между корой и веб-сервером??? Смысла нет.


Аё>>Смысл, что основной функционал не должен падать от бага веб интерфейса. И в общем случае, не должно быть влияния веб интерфейса на работу основной фичи. Веб-сервис должен быть в состоянии упасть без вреда системе. Или watchdog убить его, если с ним что не так. И перезапустить.


DP>Ээээм... И? Конечно мы это предусмотрели

Че вы там продумали, что предосмотрели- если элементарно слепили всемогутор- антипаттерн?
Сами себя не похвалите, это понятно, да.

DP>Просто допусти, что есть такие задачи! Не везде можно закидать железом и накинуть еще один кластер в облаке.

Увы, 512М рамы и 2 ядра по ггц- это в 20 раз быстрее персоналки из 1998г. Не надо давить на жалость, что железа мало.

Я пытаюсь показать отметившимся в этом треде топящим за плюсы, но вы же не хотите это принимать. Религиозные фанатики.
И не надо втирать, что вот ваша-то программа на плюсах — точно-точно без багов. Память не портит, не течет, легко расширяемая.
C хорош для дозированного использования, чтобы вызывался из языка повыше уровнем. Из Go, или из ноды, питона, жавы и т.д. НЕ из C++.
Re[36]: Оставаться в С++ или уходить?
От: so5team https://stiffstream.com
Дата: 20.08.22 11:36
Оценка:
Здравствуйте, Артём, Вы писали:

DP>>Просто допусти, что есть такие задачи! Не везде можно закидать железом и накинуть еще один кластер в облаке.

Аё>Увы, 512М рамы и 2 ядра по ггц- это в 20 раз быстрее персоналки из 1998г.

Ты еще скажи, что ты в 1998-ом на C++ программировал.

Аё>Я пытаюсь показать отметившимся в этом треде топящим за плюсы, но вы же не хотите это принимать. Религиозные фанатики.


Тёмчик, не знаю как другие твои оппоненты, но я пытаюсь донести до тебя и до прочих С++фобов простую мысль: сейчас C++ может применяться лишь в очень ограниченном (по сравнению со всем многообразием современного софтостроения) спектре ниш, но там, где применение C++ уместно глупо от него отказываться просто потому, что звиздуны, вроде тебя, C++ не знают, но веское мнение имеют.

Аё>И не надо втирать, что вот ваша-то программа на плюсах — точно-точно без багов.


А это кто-то утверждает?

Аё>Память не портит, не течет,


Ты не поверишь...

Аё>легко расширяемая.


При чем здесь C++?

Аё>C хорош для дозированного использования, чтобы вызывался из языка повыше уровнем. Из Go, или из ноды, питона, жавы и т.д. НЕ из C++.



Ох ё. Когда кажется, что Тёмчик достиг дна, он начинает усиленно копать.
Отредактировано 20.08.2022 11:38 so5team . Предыдущая версия .
Re[27]: Оставаться в С++ или уходить?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 20.08.22 11:56
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Подожди. Программтсты на тензорфло не используют плюсы, они юзают именно через питон.


Нет, на нём вообще практически не пишут, а используют Питон, как конфигурацию. Это весьма огромная и неудобная библиотека, которая отошла на второй план после появления PyTorch.
Но пайплайны и на C++ ваяют иногда, всё для этого есть, хотя в самом TensorFlow уже смысла мало.


Аё>А еще есть tensorfloJS- я так предполагаю, что оно часть ядра таки на плюсах, но приготовлено в webassembly. И это вот из ноды и в браузере доступно.


И никому не нужно.

Аё>Так что тензорфло, как предметная область и экосистеиа- это не плюсы. Хотя оно написано на плюсах. Но можно и нужно на C и Fortran.


У всех этих библиотек есть плюсовое API, им пользуются. В большинстве библиотек даже больше: делают плюсовое и обёртку над ним на Питоне (OpenCV, TensorRT etc). Если говорить про продукты Nvidia, то они идут ещё дальше, стараясь заменить код на Питоне конфигами. И специалисту по нейросетях надо разбираться не столько в нейросетях, сколько в облачной архитектуре, конфигах, кубернетсах, докерах и т.д. Индустрия достигает зрелости, придумывать новые нейросети надо всё реже, обучают несколько популярных архитектур на своих данных и далее в готовые пайплайны от той же Нвидиа (см. Nvidia Triton). Получается, что в принципе программировать почти не надо, а все инструменты на С++, API тоже на нём.

Аё>Бизнес логика, микросервисы, гуя и т.п. плюсам не место.


Расскажи это Интела, Нвидиа и другим, которые это пишут.
Re[37]: Оставаться в С++ или уходить?
От: Артём Австралия жж
Дата: 20.08.22 11:58
Оценка:
Здравствуйте, so5team, Вы писали:

S>Здравствуйте, Артём, Вы писали:


DP>>>Просто допусти, что есть такие задачи! Не везде можно закидать железом и накинуть еще один кластер в облаке.

Аё>>Увы, 512М рамы и 2 ядра по ггц- это в 20 раз быстрее персоналки из 1998г.

S>Ты еще скажи, что ты в 1998-ом на C++ программировал.

Реально я начал использовать C++ в 2001. А так, паскалем баловался в начале 90-х и застал ес эвм.

S>Тёмчик, не знаю как другие твои оппоненты, но я пытаюсь донести до тебя и до прочих С++фобов простую мысль: сейчас C++ может применяться лишь в очень ограниченном (по сравнению со всем многообразием современного софтостроения) спектре ниш, но там, где применение C++ уместно глупо от него отказываться

Пока что ты не привел ни одного проекта, где ты его использовал, и именно вот "C++ и больше никто".

S> просто потому, что звиздуны, вроде тебя, C++ не знают

Ну я с 2011г не использую C++. Просто негде их использовать .

Аё>>И не надо втирать, что вот ваша-то программа на плюсах — точно-точно без багов.


S>А это кто-то утверждает?

DiPaolo

Аё>>Память не портит, не течет,


S>Ты не поверишь...

Не поверю

Аё>>легко расширяемая.

S>При чем здесь C++?
Это про случай, когда http server фичу встроили в основной процесс.

Аё>>C хорош для дозированного использования, чтобы вызывался из языка повыше уровнем. Из Go, или из ноды, питона, жавы и т.д. НЕ из C++.


S>

S>Ох ё. Когда кажется, что Тёмчик достиг дна, он начинает усиленно копать.

Ты совсем того, или прикидываешься?
Я то знаю- я реально встроил кусок на C в жавский апплет (точнее, пачку dll-к под комбинации архитектура/ось), посредством которых жавский апплет из браузера обращался к девайсу через usb.

Да, мне давно говорили- тот еще извращенец .
Re[28]: Оставаться в С++ или уходить?
От: Артём Австралия жж
Дата: 20.08.22 12:07
Оценка: :)
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Артём, Вы писали:


Аё>>Подожди. Программтсты на тензорфло не используют плюсы, они юзают именно через питон.


N>Нет, на нём вообще практически не пишут, а используют Питон, как конфигурацию.

Да какая разница, если датасаянтисты используют питон? Тебе шашечки, или ехать?

N>И никому не нужно.

Если бы не было спроса- не запилили бы. Спрос породил предложение.

N>У всех этих библиотек есть плюсовое API, им пользуются. В большинстве библиотек даже больше: делают плюсовое и обёртку над ним на Питоне (OpenCV, TensorRT etc). Если говорить про продукты Nvidia, то они идут ещё дальше, стараясь заменить код на Питоне конфигами. И специалисту по нейросетях надо разбираться не столько в нейросетях, сколько в облачной архитектуре, конфигах, кубернетсах, докерах и т.д.

Бинго!

И где в этом мире датасаянтистов и кубернетисов место под солнцем для простого C++ ника? Вот ведь в чем засада.

N>Расскажи это Интела, Нвидиа и другим, которые это пишут.

Они это пишут. Гугл пишет тензоофло и пишет хром. Причем не весь гугл, а команда внутри гугла.
И вот, если ты не в этой команде суперстаров- ты жрешь кактус мозгосекса с плюсами, низкой зп, узкого круга поиска потенциальным мест работы.

В то время, как жависты не напрягаясь, зарабатывают больше тебя.
Re[38]: Оставаться в С++ или уходить?
От: so5team https://stiffstream.com
Дата: 20.08.22 12:11
Оценка:
Здравствуйте, Артём, Вы писали:

S>>Ты еще скажи, что ты в 1998-ом на C++ программировал.

Аё>Реально я начал использовать C++ в 2001.

Тогда зачем было ляпать про 1998?

S>>Тёмчик, не знаю как другие твои оппоненты, но я пытаюсь донести до тебя и до прочих С++фобов простую мысль: сейчас C++ может применяться лишь в очень ограниченном (по сравнению со всем многообразием современного софтостроения) спектре ниш, но там, где применение C++ уместно глупо от него отказываться

Аё>Пока что ты не привел ни одного проекта, где ты его использовал, и именно вот "C++ и больше никто".

Во-первых, речи и не было о том, что "С++ и больше никто". Как минимум, в тех же нишах всегда оказываются чистый Си, Rust и, для тех, кто еще помнит, Ada. Просто при сравнении между этими вариантами у C++ есть весомые преимущества. Которые должны рассматриваться наряду с недостатками.

Во-вторых, у меня нет возможности рассказывать о проектах, которые делаются для заказчиков или в которых мы участвуем в качестве консультантов.

S>> просто потому, что звиздуны, вроде тебя, C++ не знают

Аё>Ну я с 2011г не использую C++.

Судя по тому, что ты про C++ рассказываешь сложно поверить, что ты его вообще знал.

Аё>Просто негде их использовать .


И из этого ты делаешь вывод, что и всем остальным негде?

Аё>>>И не надо втирать, что вот ваша-то программа на плюсах — точно-точно без багов.


S>>А это кто-то утверждает?

Аё>DiPaolo

Пальцем покажешь? Ну, цитату, например?

Аё>>>Память не портит, не течет,


S>>Ты не поверишь...

Аё>Не поверю

Твое дело. Я вот не верю в то, что ты не можешь a) в логику и b) не можешь аргументировано и понятно донести свое мнение до окружающих в письменном виде. Но это сугубо мое дело.

Аё>>>легко расширяемая.

S>>При чем здесь C++?
Аё>Это про случай, когда http server фичу встроили в основной процесс.

И? Разверни мысль.

Аё>Ты совсем того, или прикидываешься?

Аё>Я то знаю- я реально встроил кусок на C в жавский апплет (точнее, пачку dll-к под комбинации архитектура/ось), посредством которых жавский апплет из браузера обращался к девайсу через usb.
Аё>

Осталось понять как из этого следует что Си не для использования из C++.
Re[29]: Оставаться в С++ или уходить?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 20.08.22 12:21
Оценка:
Здравствуйте, Артём, Вы писали:

N>>Нет, на нём вообще практически не пишут, а используют Питон, как конфигурацию.

Аё>Да какая разница, если датасаянтисты используют питон? Тебе шашечки, или ехать?

Там уже куча разных должностей появилась: Data scientist, machiene learning engineer, data analyst, data engineer etc. В целом они все программируют мало, по большей части используют всё готовое для своих данных. Это не программисты. Они могут работать с таким же успехом и в Экселе, и на R. Очень важно знать SQL.
Самая большая проблема — это данные, которые надо уметь готовить, хранить и обрабатывать.
Если мы говорим про программистов, именно про тех, кто пишет, то это либо исследователи и разработчики новых архитектур, либо разработчики библиотек. Первые пишут больше на Питоне, вторые на плюсах. И не могу сказать, что вторых меньше. Ещё на плюсах делают быстрый инференс, но сейчас всё реже, потому что разработчики железа на тех же плюсах это пишут тоже.

N>>И никому не нужно.

Аё>Если бы не было спроса- не запилили бы. Спрос породил предложение.

А реально есть спрос? Не слышал

Аё>Бинго!

Аё>И где в этом мире датасаянтистов и кубернетисов место под солнцем для простого C++ ника? Вот ведь в чем засада.

В этом мире программирование в принципе исчезает как класс, уходя в науку, большие компании и библиотеки. Вот тут оно есть.
Прикладной data science это не про программистов и я не вижу смысла на него равняться.

Аё>И вот, если ты не в этой команде суперстаров- ты жрешь кактус мозгосекса с плюсами, низкой зп, узкого круга поиска потенциальным мест работы.


Я предпочитаю быть тем, кто пишет библиотеки. И спрос на таких специалистов пока не уменьшается в количественном измерении.

Аё>В то время, как жависты не напрягаясь, зарабатывают больше тебя.


Ну и ладно. Я не исключаю, что порноактеры тоже зарабатывают больше, а ещё и удовольствие от процесса у них выше, чем у меня
Re[36]: Оставаться в С++ или уходить?
От: DiPaolo Россия  
Дата: 20.08.22 12:27
Оценка:
DP>>Кстати, вот пример плюсового кода:


M>Ты точно ничего не перепутал?


Да, конечно. Спасибо )
Патриот здравого смысла
Re[25]: Оставаться в С++ или уходить?
От: CreatorCray  
Дата: 20.08.22 16:30
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Ну так и на C++ точно так же насрать. Рендерингом занимается не он.

А вот тут ты как раз не прав
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.