cyberzx 🇷🇺
Не надо сравнивать питон и плюсы ) В питоне есть много какой фигни
cyberzx 🇷🇺
Какого именно дерьма?
RattenKong 🦧🐀🦍️
кросплатформенный ммап
Крылатый
Дерьмо ≈ внутренние кишки, я полагаю.
RattenKong 🦧🐀🦍️
но лучше сделать gcd чтобы его можно было на контестах в компайл тайме вычислить 👌
cyberzx 🇷🇺
Да проблема только в винде. Так mmap и есть стандартная функция в POSIX. И если бы винда также поддерживала этот API, смысла добавлять mmap в стандарт С++ не было никакого. У меня есть своя библиотека для реализации posix функций, которых нет в винде, через винапи. В питоне такой же подход
cyberzx 🇷🇺
fork() есть? *это шутка
Нет. Только тот сабсет, который реально используется.
cyberzx 🇷🇺
Лучше, что бы MS сделали POSIX API для ммап и все проблемы будут решены
cyberzx 🇷🇺
btw а чё бы тогда и fork/exec в стандарт не пропихнуть?
cyberzx 🇷🇺
очень не хватает кроссплатформенного способа спавнить процессы. причём намного больше, чем мапинга
Anton
btw а чё бы тогда и fork/exec в стандарт не пропихнуть?
Потому что есть бедные vs-ники, которые не "поспевают" за стандартом.
Mikhail
со стрингами работать. собственно говоря поэтому и спрашивал про применимость бустов в продакшн, чтобы сразу юзать функционал из одной либы, а не собирать либы с миру по нитке.
cyberzx 🇷🇺
Я вообще считаю, что всякое системное не нужно в стандарте. Все эти iostream, filesystem, etc Так же как либы для работы с 2d/3d графикой, физикой, HID устройствами. Все это излишне усложняет стандарт. Максимум можно было бы сделать тонкие API обёртки с RAII. Ну типа вместо FILE* std::file
vladislav
+ тоже не понимаю, зачем это в стандарте.
RattenKong 🦧🐀🦍️
окей, платформозависимый ввод-вывод
RattenKong 🦧🐀🦍️
а в комитете есть такие?
RattenKong 🦧🐀🦍️
надеюсь, что это не строструп
Крылатый
А что, если вот так? using explicit my_int_t = int; /* Now we cannot pass into function foo int values without explicit cast. */ void foo(my_int_t val) {} int val = 0; foo(val); // Error foo(static_cast<my_int_t>(val)); // Ok foo(my_int_t(0)); // Ok
cyberzx 🇷🇺
Мда... быстро у вас дискуссии скатываются на личное. Я думал, что тут не так
Крылатый
Вы лущ на newtype посмотрите.
Крылатый
Ладно, так вброшу. Вроде збс.
cyberzx 🇷🇺
А я считаю, что именно куча мусора в стандарте мешает развитию языка
RattenKong 🦧🐀🦍️
Ладно, так вброшу. Вроде збс.
угу, оно явно показывает намерение(каламбур)
cyberzx 🇷🇺
Лучше бы были модули и пакетный менеджер аля npm.
Крылатый
Модули и пакетник это збс.
Крылатый
Но этим уже занимаются)
Крылатый
А вот newtype это тоже хорошо!
cyberzx 🇷🇺
да, newtype прекрасно
RattenKong 🦧🐀🦍️
В смысле?
хочешь чтобы тип явно другим был
RattenKong 🦧🐀🦍️
либо я упоролся
cyberzx 🇷🇺
Ещё не хватает constexpr параметров в функциях
RattenKong 🦧🐀🦍️
в разы понятней import export
cyberzx 🇷🇺
да и не надо
RattenKong 🦧🐀🦍️
Да!
я про синтаксис объявления и как я его бы воспринял, збс короче, где апвоутить?
Крылатый
Anton
Ребят, тут вброшу вот такой вопрос. Есть некая шаблонная функция: template<typename T> func(T *); Есть треит: template<typename T> struct Traits { using Type = T; using Pointer = Type *; }; Дедуктор должен сработать, если я в func() буду передавать переменную типа Traits<T>::Pointer?
🐙 Antony
Ну вы уж определитесь, хотите кросплатформенный язык с библиотеками или собираетесь быдлокодить только под одну платформу. Ну и да, CreateFileA(file, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); это же так приятно! Давайте этим везде пользоваться
vladislav
@antoshkka что мешает подтягивать кросплатформеную либу и делать на её основе?
vladislav
Язык в моём понимании не должен поддерживать кроссплатформеность, это как-то странно.
vladislav
А что вам мешает это делать сейчас?
Ничего, только зачем это в стандарте, он и так слишком уж пухлый.
cyberzx 🇷🇺
А почему только два варианта? Я хочу, что бы стандарт языка не занимался такими вещами. Возможно, как вариант, нужен паралелльный стандарт. То есть в идеале был бы некая организация, котороая бы управляла паетным менеджером и позволяла сторонним разработчикам добавлять туда различные библиотеки.
vladislav
Это было нормально лет 50 назад. Сейчас на дврое 21 век
всё новое — это хорошо забытое старое.
cyberzx 🇷🇺
Почему разработчики компилятора должны заниматься разработкой этих библиотек? У них что дел по важней нет?
🐙 Antony
Ничего, только зачем это в стандарте, он и так слишком уж пухлый.
Ок, стандарт большой. Почему это проблемма для вас?
cyberzx 🇷🇺
А то хочешь заюзать какие-нибудь std::regex. В g++ всё хорошо. Но стоит перейти на clang/libc++, оказывается, что у команды clang ещё руки не дошли до regex
RattenKong 🦧🐀🦍️
майкрософт!
RattenKong 🦧🐀🦍️
эпл!
vladislav
Ок, стандарт большой. Почему это проблемма для вас?
Это как минимум сложно для восприятия.
cyberzx 🇷🇺
Альтернативные компиляторы это хорошо. А вот библиотеки - нет.
RattenKong 🦧🐀🦍️
Anton
да
Хм... походу есть вероятность бага в gcc6.(
cyberzx 🇷🇺
Я хочу, что бы библиотека (например filesystem) могла развиваться вне зависимости от стандарта. Потому что итерации развития пользовательских библиотек, куда короче, чем стандарта языка
vladislav
Хочу я, например, жёстко угареть и зазубрить стандарт, но по факту, там содержится куча информации, которая к языку мало отношения имеет.
vladislav
и кому я мешал работать?
Крылатый
Пушо всё дико тормозно)
vladislav
C#, Java и др так живут. В чем проблема то?
Думаю, это не единственный вариант стиля жизни.
cyberzx 🇷🇺
Мои гарантии это привязанность к определённой версии библиотеки и контроллируемый переход на новую версию, если надо.
Крылатый
В тот же Rust можно в стандартную либу воткнуть что-то обычным PR.
vladislav
и что, твоя точка зрения не единственно правильная.
Крылатый
А в плюсах PR в stl будет нестандартным расширением stl, которую не поддерживают остальные реализации.
Крылатый
Добавить ≠ сломать.
Крылатый
Пишить код, очевидно.
cyberzx 🇷🇺
Возникает вопрос, а почему только filesystem? Я могу привести десяток библиотек, которые достойны быть в стандарте так же как и filesystem. А по хорошему там их должно быть сотни.
RattenKong 🦧🐀🦍️
вообще в чем суть маленькой stl?
vladislav
думается, вставлять костыль.
Крылатый
На то и есть дискуссии.)
cyberzx 🇷🇺
Поправлю багу
Крылатый
В F#, допустим, есть всякие RFC, по которым ведётся дискуссия и последующая реализация.
vladislav
Грубо говоря, я вижу язык в идеале так: по аналогии с линуксом, у тебя есть ядро, пара проверенных временем решний, а остальное на твоё усмотрение. Хочешь — ставь жирный гном, хочешь ставь i3. Я не хочу тянуть жирный набор либ, которые мне, возможно, и не понадобятся.