Re[6]: Поугараем над С++ комьюнити?
От: MTD https://github.com/mtrempoltsev
Дата: 25.10.17 10:51
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>>>Если посмотреть strace'ом, чем там программа на Go занимается, то можно с изумлением увидеть, что унутре нее тот же epoll


MTD>>Поразительно, кто бы мог подумать.


Pzz>Это даже в инструкции где-то написано, но пальцем не покажу.


Блин, да очевидно, что внутри будет системный вызов.

Pzz>У Go, в силу того, что там не возбраняется завести локальную переменную, передать ее адрес куда-нибудь, где его сохранят, и выйти из процедуры, всякое заведение локальной переменной является потенциальной аллокацией из кучи.


Пофиг. Куча в языках со сборкой мусора быстрая. На практике производительность достаточная, да на С++ можно написать быстрей, но можно и в 3 раза медленнее, чем на Питоне. Этим Го и хорош — средний программист напишет лучше, чем на С++, язык не позволяет делать совсем дикие вещи. Например, в С++ передали вектор в функцию не по ссылке — получили тормоз.
Re[2]: Поугараем над С++ комьюнити?
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.10.17 10:53
Оценка: 1 (1) +2
Здравствуйте, scf, Вы писали:

scf>Просто для С++ почему-то не нашлось корпорации, которая бы родила к нему простой, но обширный рантайм.

scf>Кто писал на Qt меня поймут — там есть всё, что нужно обыкновенному программисту для обыкновенных задач.

Я думаю, если бы в языке C++ некоторые общеупотребительные вещи были встроены прямо в язык (например, строки, вектора, мапы), то было бы сильно меньше бардака.

Увы, если есть две реализации строки, которые делают одно и тоже, но представляют собой разные классы, они не взаимозаменяемы. Поэтому если в библиотеке A свои строки, в библиотеке B свои, а программа использует std::string, то существенная часть программы будет заниматься преобразованием между разными типами строк.
Re[3]: Поугараем над С++ комьюнити?
От: turbocode  
Дата: 25.10.17 10:55
Оценка: :)
MTD>Кстати да, очень удобный фреймворк. Мне доводилось писать на разных железках, на некоторых были старые компиляторы в которых не было части стандартной библиотеки и Boost там не собирался, но Qt работал вообще везде и сразу из коробки ты получал все, что нужно для работы. Неудивительно, что столько фриков от труЪ С++ Qt ненавидят — ведь там можно просто сесть и писать код решающий конкретную задачу.

1. Qt изначально был платным поэтому он пропустил время когда мог бы стать популярным.
2. В те времена еще не была популярна кроссплатформенная разработка и если брать платный продукт то лучше было взять С++Builder чем Qt;
3. Первый раз когда смотрел на Qt это выглядело как большая свалка классов, а не как упорядоченный набор классов где каждый класс решает свою задачу;
4. Убогая система событий, тогда как С++Builder ловлю всех нужных событий программисту давал из коробки;

Возможно сейчас Qt неплох но время упущено, все нашли себе решения своих задач без Qt.
Re[2]: Поугараем над С++ комьюнити?
От: scf  
Дата: 25.10.17 10:56
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Зачем это всё,когда есть библиотеки?

AG>К чему всё это тащить именно в ЯП?

А вот как раз библиотек и не наблюдается.
Набираем в гугле c++ unicode string и радуемся жизни и советам тащить iconv или юзать чей-то код с сотней звезд на гитхабе.
Пример, конечно, единичный, но показательный. Правильно сделать юникод — задача непростая и посильная только крупной компании, которые почему-то не рвутся поддерживать опнсорс С++ библиотеки.
Re[7]: Поугараем над С++ комьюнити?
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 25.10.17 10:59
Оценка: -3
Здравствуйте, MTD, Вы писали:

MTD>Не приписывай себе чужие заслуги — это rudzuk диагностировал, а я не стал отрицать. Так что незачет.

Он про меня ничего не писал.

N>>Нет, не против. Я спрашиваю, почему ты оффтопишь!

MTD>Выражайся понятней.

Куда уж понятней: тема называется поугараем, а внутри твои сопли. Или над тобой надо угарать?

N>>Потому что, снимая майку у девушки, я ожидаю там увидеть сиськи. Если их нет, то волнуюсь. Также и в твоей теме.

MTD>Ты про то, что угара нет? А по моему есть, в 3 раза слить Питону — это надо постараться.

Да! Догадался всё таки. Где угар? Кроме твоей боли и плача нет ничего.
Re[2]: Поугараем над С++ комьюнити?
От: MTD https://github.com/mtrempoltsev
Дата: 25.10.17 11:06
Оценка: +1
Здравствуйте, AlexGin, Вы писали:

AG>На самом деле: Boost классная вещица!

AG>Использовать boost в своих наработках приятно.

Сделать из С++ Питон по быстродействию — классно! Замедлить компиляцию в 10 раз — отлично! Получить ошибку на 10 экранов — да, черт побери!

AG>Зачем это всё,когда есть библиотеки?


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

AG>К чему всё это тащить именно в ЯП?


Потому, что это удобно.

AG>...так ведь у каждого — свои мозги, правда в приведенном видео ИМХО ими так и не воспользовались...


Любой мастер класс на С++ — часовое обсуждение такой чухни про которую в других языках даже не думаешь. Бери любой наугад, не прогадаешь:

https://www.youtube.com/watch?v=LuaNbkRPGRo

MTD>>Короче, мой месседж — С++ маргинализируется и становится убежищем фриков, на интересы инженеров там положили болт.

AG>
AG>Что такое интересы инженеров?

Блин, народ уже даже словарь открыть чтобы узнать незнакомое слово ленится. Ну давай я для тебя его открою:

Инжене́р (фр. ingénieur ← от лат. ingenium — способности, изобретательность[1]) — специалист, осуществляющий инженерную деятельность.


Целями инженерной деятельности являются изобретение, разработка, создание, внедрение, ремонт, обслуживание и/или улучшение техники, материалов или процессов.


Мне платят деньги за решение практических задач, а не академические исследования — я инженер.

AG>Можно посмотреть примеры именно инженерных интересов?


Мне например нужны юникодные строки, классы работы с временем и датой, файловые операции, модули, корутины — это только так навскидку, что нужно и чего нет.

AG>Вот чем таким инженерные интересы в разработке ПО отличаются, ну скажем от интересов врачей, бухгалтеров, диспетчеров?


Врачи людей лечат, а не ПО разрабатывают. Ты что вообще пишешь?

AG>А разве новые стандарты (от C++11 и позднее) не сделали C++ компактнее и ближе к запросам разработчиков софта?


Сделали, но много чего не сделали. Я считаю, что проблема в приоритетах.
Re[8]: Поугараем над С++ комьюнити?
От: MTD https://github.com/mtrempoltsev
Дата: 25.10.17 11:10
Оценка:
Здравствуйте, Nuzhny, Вы писали:

MTD>>Не приписывай себе чужие заслуги — это rudzuk диагностировал, а я не стал отрицать. Так что незачет.

N>Он про меня ничего не писал.

А ты тут при чем? Про мою же боль и обиды говорили.

N>Куда уж понятней: тема называется поугараем, а внутри твои сопли.


Не нравится — не читай, судя по тому, что ты тут — ты лукавишь.

N>Или над тобой надо угарать?


Поугарай. В чем проблема?

MTD>>Ты про то, что угара нет? А по моему есть, в 3 раза слить Питону — это надо постараться.


N>Да! Догадался всё таки. Где угар? Кроме твоей боли и плача нет ничего.


А по моему есть, в 3 раза слить Питону — это надо постараться.
Re: Поугараем над С++ комьюнити?
От: jahr  
Дата: 25.10.17 11:12
Оценка: 3 (1) +4
Здравствуйте, MTD,

До тех пор, пока язык придерживается правила "ты не платишь за то, что не используешь", — пофик насколько упоротые люди сидят в комитете (я не считаю, что они упоротые, но предположим). Не нравится что-то новое — просто его не используешь, и его наличие никак тебя не задевает.
Хочешь юникодных строк и т.п — пожалуйста, пиши на QT, С++ может быть любым, каким угодно, в это и есть его сила.)
Re[2]: Поугараем над С++ комьюнити?
От: MTD https://github.com/mtrempoltsev
Дата: 25.10.17 11:16
Оценка:
Здравствуйте, jahr, Вы писали:

J>Хочешь юникодных строк и т.п — пожалуйста, пиши на QT, С++ может быть любым, каким угодно, в это и есть его сила.)


А с модулями и корутинами как быть?

Кроме того у каждой более/менее серьезной либы свои контейнеры и строки, мне не хочется постоянно писать код занимающийся конвертацией — во-первых, уныло, во-вторых, а что с быстродействием, С++ же.
Re[4]: Поугараем над С++ комьюнити?
От: Слава  
Дата: 25.10.17 11:29
Оценка: +1
Здравствуйте, Pzz, Вы писали:

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


Вы только что изобрели string.Intern из JVM и .NET. А в сообщении Поугараем над С++ комьюнити? обсуждается примерно то же самое, из их мира. Вывод — байтогрызные подходы в Go не работают.
Re[3]: Поугараем над С++ комьюнити?
От: MShura  
Дата: 25.10.17 11:41
Оценка: +2
MS>>Видео не смотрел, но пример более чем показателен.
MS>>Если строка например изначально в верхнем регистре, а потом будет сравниваться 100 раз, то будешь делать фактически 100 раз приведение к нижнему регистру. А если это национальный алфавит и прочие умляуты, где приведение в нижний регистр дорого?

MTD>Про преждевременную пессимизацию не писал только ленивый. Сначала надо написать понятно и чтобы работало правильно, потом по необходимости начинать оптимизировать. Вот ты привел пример с быстродействием и мимо, например, почему ты не предложил сравнивать хеши?


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

Если ответить на вопрос сопадает-ли строка хэш подойдет, то для сравения больше/меньше уже нет
Re[5]: Поугараем над С++ комьюнити?
От: Privalov  
Дата: 25.10.17 11:44
Оценка:
Здравствуйте, Слава, Вы писали:

С>Вы только что изобрели string.Intern из JVM и .NET. А в сообщении Поугараем над С++ комьюнити? обсуждается примерно то же самое, из их мира. Вывод — байтогрызные подходы в Go не работают.


Pzz сказал же — это появилось в Снобол-4. Это 60-е годы прошлого века. Создатели Java тогда в детский сад ходили (те, кто уже родился).
Re[3]: Поугараем над С++ комьюнити?
От: Went  
Дата: 25.10.17 11:45
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>А с корутинами как быть?

А разве нет кросс-платформенных библиотек корутин?
Re[4]: Поугараем над С++ комьюнити?
От: push  
Дата: 25.10.17 11:52
Оценка: 3 (1)
Здравствуйте, Went, Вы писали:

W>А разве нет кросс-платформенных библиотек корутин?


Хах)) Это можно про любую библиотеку с++ сказать — "а разве нет кросс-платформенных библиотек XXXX?".
Теоретически как бы всё есть. Теоретически.
А практически оно в таком виде (или сложность или способы использования), что можно сказать нет.
Re[3]: Поугараем над С++ комьюнити?
От: jahr  
Дата: 25.10.17 12:41
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>А с модулями и корутинами как быть?


Модули есть в MSVC, а корутины — в бусте.)

MTD>Кроме того у каждой более/менее серьезной либы свои контейнеры и строки, мне не хочется постоянно писать код занимающийся конвертацией — во-первых, уныло, во-вторых, а что с быстродействием, С++ же.


Ну, Вы же программист на плюсах, должны уметь состыковать идеологически разнородные библиотеки.) Хотя, уверен, что и для этого что-то есть, видел где-то недавно какую-то библиотеку для генерации врапперов над другими библиотеками.)
Re[4]: Поугараем над С++ комьюнити?
От: Ночной Смотрящий Россия  
Дата: 25.10.17 13:05
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Но вот что в этом Go мне в плане производительности действительно не нравится, это то, что библиотека евонная так и норовит на каждый чих чего-нибудь маленькое зааллоцировать в куче, а сборщику мусора потом подбирать.


Для нормальных сборщиков мусора куча короткоживущих объектов не помеха и на перформанс не влияет. GC страдают от развесистых графов зависимостей и долгоживущих объектов.
Re: Поугараем над С++ комьюнити?
От: Muxa  
Дата: 25.10.17 13:05
Оценка:
MTD>Чувак на полном серьезе рассказыват, что вместо того чтобы пилить класс строк для того чтобы сравнивать строки независимо от регистра, можно написать класс-свойство, который передать в шаблон стандартной строки и который будет переводить строки в нижний регистр перед тем как положить в память, ну и потом можно эти строки сравнивать.

Изначальная идея написания этого класса-свойства, рассказанная в видео, немного не такая как ты описал.
Отредактировано 25.10.2017 13:11 Muxa . Предыдущая версия .
Re[6]: Поугараем над С++ комьюнити?
От: Ночной Смотрящий Россия  
Дата: 25.10.17 13:09
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>У Go, в силу того, что там не возбраняется завести локальную переменную, передать ее адрес куда-нибудь, где его сохранят, и выйти из процедуры, всякое заведение локальной переменной является потенциальной аллокацией из кучи. Компилятор пытается угадать про каждую переменную, переживет ли она выход из области видимости, где она определена, или не переживет. И в зависимости от этого заводит ее либо в стеке, либо в куче. Это называется escape analysis.


Не. Escape analysis это наоборот, когда ты говоришь что в куче хочешь, а оно, на основе анализа, пихает в стек. А вот локальные переменные вытащить в кучу — там совсем примитивно все. Совершенно бинарная логика — если локальная переменная поиспользовалась в чем то вроде замыкания или выдачи ссылки на нее в чужой метод, то автоматично двигаем ее в кучу.
Re[2]: Поугараем над С++ комьюнити?
От: MTD https://github.com/mtrempoltsev
Дата: 25.10.17 13:14
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Изначальная идея написания этого класса-свойства, рассказанная в видео, немного не такая как ты описал.


Спасибо, интересно. Интрига останется или ты напишешь как оно на самом деле?
Re[4]: Поугараем над С++ комьюнити?
От: Ночной Смотрящий Россия  
Дата: 25.10.17 13:16
Оценка:
Здравствуйте, MShura, Вы писали:

MS>Чтобы сравнивать хэши строк, нечуствительно к регистру надо сначала перевести в нижний регистр


Не обязательно. Обычно просто делают регистронезависимый хэш. Приводить саму строку надо только если хеш совпал.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.