Сообщение Re[15]: MS забило на дотнет. Питону - да, сишарпу - нет? от 28.07.2021 12:11
Изменено 28.07.2021 12:33 YuriV
I>Здравствуйте, YuriV, Вы писали:
I>>>Для обучения нужно писать, а не гуглить. И даже с гуглением С++ отстаёт от других технологий.
YV>>От каких? В чём отстаёт? Конкретно, на примерах. Без бла-бла-бла. Договаримся на берегу — то что ты не знаешь язык недостатком самого языка не является.
I>Крайне странно думать, что нативный язык будет проще в изучении чем скриптовый
Я спросил не про изучение. Естественно, для изучения С++ требуется мозг чуть больший чем земляной орех.
I>Это ж элементарано. Например, repl для с++, самый распрекрасный, убог по сравнению с repl любого динамического языка.
I>Собственно ничего странного, это же нативный язык — за все нужно платить.
Почему у компилируемого языка должен быть репл? У джавы или шарпа он есть? Вектор развития С++ направлен в сторону компайл-тайм вычислений, что позволит исполнять код во время компиляции. Я сейчас уже половину юнит-тестов перенёс в компайл-тайм.
Что-то такое:
ecs::CS<ecs::R_c3d> cs3;
constexpr auto i_e_v = cs3.e<0>().e;
constexpr auto j_e_v = cs3.e<1>().e;
constexpr auto k_e_v = cs3.e<2>().e;
static_assert(i_e_v.mag_squared() == j_e_v.mag_squared(), "Magnitudes not equal.");
static_assert(j_e_v.mag_squared() == k_e_v.mag_squared(), "Magnitudes not equal.");
constexpr ecs::R_vector_3d v1{3., 4., 0.};
static_assert(ecs::dot(v1, v1) == 25., "dot failed.");
static_assert(v1.mag_squared() == 25., "double_mag failed.");
static_assert(v1.magnitude() == 5., "mag failed.");
Кстати, есть такой прикольный язык Circle от Sean Baxter, гитхаб это
Вот примеры: 1, 2.Circle is a new programming language that extends C++ 17 to support data-driven imperative metaprogramming. Circle combines the immediacy and flexibility of a scripting language with the type system, performance and universality of C++. Three new features make this a more effective programming tool than Standard C++:
An integrated interpreter supports the execution of normal C++ statements at compile time.
Same-language reflection programmatically allows for the generation of new code without involving an elaborate DOM or API for modelling the AST.
Introspection keywords inform the program about the content of types, and expose data members and enumerators as iterable entities.
Circle accepts the C++ language as a starting point, and rotates that language from the runtime to the compile-time axis, allowing you to finally metaprogram C++ using C++.
I>Пакетный менеджер для с++ уже дали нормальный или все еще изобретают? Эта вещь радикально снижает порог вхождения.
I>"хочу npm но для C++" — я думал это такая шутка, но нет, на полном серьёзе просят.
Те кто хочет npm они случайно не туда зашли. С++ системный язык он может, например, быть (да и есть) эмбеддед. Для С++ есть библиотеки — статические или динамические. Этого достаточно. Я лично использую CMake->Makefile + библиотеки. Ещё есть какой-то Conan. Я им не пользовался, не знаю. Мне не нужна CI. Потому что софт который я разарабатываю в первую очередь должен проходить регрессион тестирование, а это выполняется на отдельной ферме и длится несколько часов. В ферму загружается весь проект там он компилиться и начинается процесс тестированя. В конце-концов я получаю выхлоп, где вижу тесты которые сломались и могу по этой информации перейти в область кода, который за эти тесты отвечает. Также я получаю скрипт на луа (это внутренний язык нашего продукта и пример правильного использования скриптового языка), который порождает проблему, внутри продукта я могу исполнять его пошагово и наблюдать состояния объектов модели. Это наша внутренняя система разработки, коммунникации, тестирования и развёртывания.
Напрягает нестандартизированный официально ABI для плюсов. Хотя он и существует. Вот это проблема. А все эти реплы, нпиэмы всё это такая шелуха, да ещё чуждая С++. Именно поэтому приходиться трансформировать С++ код в С вызовы для внешнего АПИ.
I>А теперь твой ход — покажи адекватный репл, не хуже чем в питоне-жээсе, и пакетный менеджер, не хуже чем в питоне-жээсе.
То что питонисты и джэсисты вдруг подумали, что они и вправду программисты и пришли в системное программирование, притащив сюда свои хламидомонады это не вина их, а беда. Да, беда для всей отрасли.
YV>>Весь системный код ОС/Рантаймов менеджед языков/браузеров/КАД систем/графических, видео, аудио редакторов и т.д. и т.д. написаны на С/С++ и будут ещё долго писаться на этих языках, невзирая на раст и рассусоливания Ikemeful'ы.
I>Системный код покупают только в том случае, если:
I>1. есть скрипт, который использует этот системный код и дает нужную нам бизнес-логику
I>2. есть человек, который будет писать такой скрипт
Если этого самого "системного кода" нет, то ты можешь написать миллион скриптов дающих "нужную бизнес-логику" они нах никому не облокатились, даже бесплатно. А вот если он есть, то у тебя есть потенциальная возможность найти скрипт-макаку, который дёрнет АПИ в нужном для твоей бизнес-логики порядке.
Маркет-бред поскипан. Ты путаешь причину и следствие, ставишь телегу впереди лошади. Мне твой условный сокобан не нужен в любом оформлении, как не нужен и ведьмак с самым крутым рендерингом. Я в игры не играю. Это я к тому что юзеру нужно, то что ему нужно, а не то к чему ты скрипт приделал.
Последовательность такая (речь идёт о "ценном", читай системном, коде, реализующем эту фичу с учётом требований рынка):
1. Рынок потребовал фичу
2. Производитель отозвался
а. Есть готовое решение?
б. Да — берём/покупаем, оформляем, отдаём на рынок
в. Нет — заказываем или производим сами, оформляем, отдаём на рынок
I>В принципе жээс можно заменить lua, python, джава, c# и ничего не изменится — юзеры будут покупать ровно эти 100-1000 строчек кода, и оплачивать тем самым весь стек, в котором 99% нативного кода.
Юзеры покупают то, что им требуется и если пользователю понадобиться функционал представленный "валяющемся кодом", то скрипт-макака найдётся моментально и за миску риса обернёт валяющийся код во что угодно. А вот если затребованного функционала не существует, то сколько скрипт-макаку рисом не корми он не появится. И придётся обращаться к программистам, например, на С/С++, чтобы написали.
I>Здравствуйте, YuriV, Вы писали:
I>>>Для обучения нужно писать, а не гуглить. И даже с гуглением С++ отстаёт от других технологий.
YV>>От каких? В чём отстаёт? Конкретно, на примерах. Без бла-бла-бла. Договаримся на берегу — то что ты не знаешь язык недостатком самого языка не является.
I>Крайне странно думать, что нативный язык будет проще в изучении чем скриптовый
Я спросил не про изучение. Естественно, для изучения С++ требуется мозг чуть больший чем земляной орех.
I>Это ж элементарано. Например, repl для с++, самый распрекрасный, убог по сравнению с repl любого динамического языка.
I>Собственно ничего странного, это же нативный язык — за все нужно платить.
Почему у компилируемого языка должен быть репл? У джавы или шарпа он есть? Вектор развития С++ направлен в сторону компайл-тайм вычислений, что позволит исполнять код во время компиляции. Я сейчас уже половину юнит-тестов перенёс в компайл-тайм.
Что-то такое:
ecs::CS<ecs::R_c3d> cs3;
constexpr auto i_e_v = cs3.e<0>().e;
constexpr auto j_e_v = cs3.e<1>().e;
constexpr auto k_e_v = cs3.e<2>().e;
static_assert(i_e_v.mag_squared() == j_e_v.mag_squared(), "Magnitudes not equal.");
static_assert(j_e_v.mag_squared() == k_e_v.mag_squared(), "Magnitudes not equal.");
constexpr ecs::R_vector_3d v1{3., 4., 0.};
static_assert(ecs::dot(v1, v1) == 25., "dot failed.");
static_assert(v1.mag_squared() == 25., "double_mag failed.");
static_assert(v1.magnitude() == 5., "mag failed.");
Кстати, есть такой прикольный язык Circle от Sean Baxter, гитхаб это
Вот примеры: 1, 2.Circle is a new programming language that extends C++ 17 to support data-driven imperative metaprogramming. Circle combines the immediacy and flexibility of a scripting language with the type system, performance and universality of C++. Three new features make this a more effective programming tool than Standard C++:
An integrated interpreter supports the execution of normal C++ statements at compile time.
Same-language reflection programmatically allows for the generation of new code without involving an elaborate DOM or API for modelling the AST.
Introspection keywords inform the program about the content of types, and expose data members and enumerators as iterable entities.
Circle accepts the C++ language as a starting point, and rotates that language from the runtime to the compile-time axis, allowing you to finally metaprogram C++ using C++.
I>Пакетный менеджер для с++ уже дали нормальный или все еще изобретают? Эта вещь радикально снижает порог вхождения.
I>"хочу npm но для C++" — я думал это такая шутка, но нет, на полном серьёзе просят.
Те кто хочет npm они случайно не туда зашли. С++ системный язык и он может, например, быть (да и есть) эмбеддед. Для С++ есть библиотеки — статические или динамические. Этого достаточно. Я лично использую CMake->Makefile + библиотеки. Ещё есть какой-то Conan. Я им не пользовался, не знаю. Мне не нужна CI. Потому что софт который я разрабатываю в первую очередь должен проходить регрессион тестирование, а это выполняется на отдельной ферме и длится несколько часов. В ферму загружается весь проект там он компилиться и начинается процесс тестирования. В конце-концов я получаю выхлоп, где вижу тесты которые сломались и могу по этой информации перейти в область кода, который за эти тесты отвечает. Также я получаю скрипт на луа (это внутренний язык нашего продукта и пример правильного использования скриптового языка), который порождает проблему, внутри продукта я могу исполнять его пошагово и наблюдать состояния объектов модели. Это наша внутренняя система разработки, коммунникации, тестирования и развёртывания.
Напрягает нестандартизированный официально ABI для плюсов. Хотя он и существует. Вот это проблема. Именно поэтому приходиться трансформировать С++ код в С вызовы для внешнего АПИ. А все эти реплы, нпиэмы всё это такая шелуха, да ещё чуждая С++.
I>А теперь твой ход — покажи адекватный репл, не хуже чем в питоне-жээсе, и пакетный менеджер, не хуже чем в питоне-жээсе.
То что питонисты и джэсисты вдруг подумали, что они и вправду программисты и пришли в системное программирование, притащив сюда свои хламидомонады это не вина их, а беда. Да, беда для всей отрасли.
YV>>Весь системный код ОС/Рантаймов менеджед языков/браузеров/КАД систем/графических, видео, аудио редакторов и т.д. и т.д. написаны на С/С++ и будут ещё долго писаться на этих языках, невзирая на раст и рассусоливания Ikemeful'ы.
I>Системный код покупают только в том случае, если:
I>1. есть скрипт, который использует этот системный код и дает нужную нам бизнес-логику
I>2. есть человек, который будет писать такой скрипт
Если этого самого "системного кода" нет, то ты можешь написать миллион скриптов дающих "нужную бизнес-логику" они нах никому не облокатились, даже бесплатно. А вот если он есть, то у тебя есть потенциальная возможность найти скрипт-макаку, который дёрнет АПИ в нужном для твоей бизнес-логики порядке.
Маркет-бред поскипан. Ты путаешь причину и следствие, ставишь телегу впереди лошади. Мне твой условный сокобан не нужен в любом оформлении, как не нужен и ведьмак с самым крутым рендерингом. Я в игры не играю. Это я к тому что юзеру нужно, то что ему нужно, а не то к чему ты скрипт приделал.
Последовательность такая (речь идёт о "ценном", читай системном, коде, реализующем эту фичу с учётом требований рынка):
1. Рынок потребовал фичу
2. Производитель отозвался
а. Есть готовое решение?
б. Да — берём/покупаем, оформляем, отдаём на рынок
в. Нет — заказываем или производим сами, оформляем, отдаём на рынок
I>В принципе жээс можно заменить lua, python, джава, c# и ничего не изменится — юзеры будут покупать ровно эти 100-1000 строчек кода, и оплачивать тем самым весь стек, в котором 99% нативного кода.
Юзеры покупают то, что им требуется и если пользователю понадобиться функционал представленный "валяющемся кодом", то скрипт-макака найдётся моментально и за миску риса обернёт валяющийся код во что угодно. А вот если затребованного функционала не существует, то сколько скрипт-макаку рисом не корми он не появится. И придётся обращаться к программистам, например, на С/С++, чтобы написали.