LINUX.ORG.RU

C++20 и 2D Graphics

 ,


0

9

Исходник: https://isocpp.org/files/img/wg21-timeline-2017-11.png

Оказывается, все проблемы C++ уже решены, и теперь можно приступать к самой важной части системного языка - 2D графике.

Вопрос: что за безумие происходит в комитете C++? Зачем системному языку, да и вообще любому языку, 2D графика в std? Тем более, по слухам, они собираются использовать убогий cairo.

Из подобных языков приходит в голову только tcl/tk и red.

★★★★★

Последнее исправление: RazrFalcon (всего исправлений: 1)

Ответ на: комментарий от grem

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

Ну отлично, чё.

eao197 ★★★★★
()
Ответ на: комментарий от grem

в разделе «Выход из вложенных циклов», пример для Java.

Ну давайте сравним. То, что хотите вы:

outer: {
  for(int i=0; i<n; i++)
    for (int j=0; j<m; j++)
      if (matrix[i][j] == value)
      {
        System.out.println("value " + value + " found in cell (" + i + "," + j + ")");
        break outer;
      }
  System.out.println("value " + value + " not found");
}
А вот то, что уже есть, и чем давно пользуются те, кому реально нужно выжимать производительность, и у кого нет возможности использовать функции или лямбда-функции:
for(int i=0; i<n; ++i)
  for(int j=0; j<m; ++j)
    if (matrix[i][j] == value)
    {
      printf("value %d found in cell (%d,%d)\n",value,i,j);
      //act if found
      goto end_loop;
    }
printf("value %d not found\n",value);
//act if not found
end_loop: ;

Скажите, а ваш код где-нибудь можно увидеть? Ну очень хочется посмотреть как программируют люди, которым подобный синтаксический сахар нужен в языке, стандарт которого и так же порядка 1700 страниц. Мне кажется, что такие люди живут в каком-то своем сказочном мире и пишут какой-то особенный код.

eao197 ★★★★★
()
Последнее исправление: eao197 (всего исправлений: 1)
Ответ на: комментарий от eao197

Да ладно с ним выходом, меня больше интересует вываливание не из циклов вообще наружу, а на несколько уровней выше посредством continue, cycle или что там ещё используется в языках для пропуска текущего шага.

Где я такое видел (там было именно активное goto)? В реализации функции поиска нуля функции, где в зависимости от текущего состояние происходило переключением между используемыми методами (для более быстрой сходимости, судя по всему). Выглядело оно и так не очень, но хотя бы читаемо, а если налепить чего-то поверх, то стало бы ещё хуже. А вот использование подобного «сахара» с именованием циклов улучшило бы ситуацию.

grem ★★★★★
()
Ответ на: комментарий от grem

Да ладно с ним выходом, меня больше интересует вываливание не из циклов вообще наружу, а на несколько уровней выше посредством continue, cycle или что там ещё используется в языках для пропуска текущего шага.

Да понятно, что вы goto на нужную вам метку сделать не можете. Ну или расставить эти самые метки.

Именнованные break/continue, кстати, в некоторых языках (типа Java) появились потому, что goto там изначально и не было.

В реализации функции поиска нуля функции, где в зависимости от текущего состояние происходило переключением между используемыми методами (для более быстрой сходимости, судя по всему). Выглядело оно и так не очень, но хотя бы читаемо, а если налепить чего-то поверх, то стало бы ещё хуже.

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

Добавлять ради таких «программистов» именнованные break и continue — это превращать C++ в еще большего монстра, чем он есть.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Да понятно, что вы goto на нужную вам метку сделать не можете. Ну или расставить эти самые метки.

Странный вывод.

Мне доводилось видеть код, написанный математиками.

Что есть то есть. Их цель не за код, а результат, который он выдаёт. На «полирование» кода с последующим его тестированием часто просто нет времени. Поэтому и навыки программирования могут быть не настолько хорошо развиты. Хотя чаще причина - просто лень, «работает и ладно».

grem ★★★★★
()
Ответ на: комментарий от eao197

Тогда почему вопрос о невозможности использования инициализаторов в Qt-шном коде вы задаете мне

Потому, что именно Вы на основании косяка в чужом коде сделали потрясающее обобщение:

Впрочем, использование Qt накладывает свои ограничения на способ мышления разработчиков. Вплоть до Qt головного мозга

EternalNewbie
()
Ответ на: комментарий от EternalNewbie

именно Вы на основании косяка в чужом коде сделали потрясающее обобщение

А на чем еще можно делать подобные обобщения, если не на косяках в коде? Тут упоротые Qt-шники далеко не редкие гости, послушаешь их мнения на счет работы с исключениями или качества STL-я, и выводы вполне однозначные напрашиваются.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

или качества STL-я

Хвалебные высказывания об std/stl я слышал только от вас. В остальном только критика. И зачастую заслуженная.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

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

eao197 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Вы намекаете на то, что не считаете std/stl нормальными?

Я намекаю на то, что вы в очередной раз не сможете ничем подтвердить свои слова, в частности: «Хвалебные высказывания об std/stl я слышал только от вас».

STL вполне себе нормальная библиотека для своих целей. А вот по поводу моих хвалебных высказываний на ее счет — это вы в очередной раз соврамши. С чем вас и поздравляю.

eao197 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Блин, скудоумный вы наш, хватит юлить. Вы сказали про мои хвалебные отзывы про std/stl. Если таковые были, то просто приведите цитату.

eao197 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Та, в который вы выставляете себя защитников C++ всея лора, подойдёт?

в этом случае опять обосрешься же, давай цитату про stl

not_rj45
()
Ответ на: комментарий от EternalNewbie

То есть это Qt сделала их такими упоротыми?

А когда у алкоголика развивается цирроз печени, то алкоголь здесь не при чем? Во всем виноваты отсуствие силы воли, окружение, наследственность и пр., но алкоголь вообще не при чем. Правильно?

eao197 ★★★★★
()
Ответ на: комментарий от fluorite

А что: есть какая-то доказанная взаимосвязь между этими вещами?

Вот между алкоголизмом и циррозом печени связь есть.

Между использованием Qt и проявлениями «Qt головного мозга» связь так же прослеживается.

Далеко не у всех, к счастью. Как, к счастью, далеко не все, кто употребляет алкоголь, становятся алкоголиками.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Между использованием Qt и проявлениями «Qt головного мозга» связь так же прослеживается.

Вот именно обоснования этой мифической связи от Вас и просят уже вторую страницу...

EternalNewbie
()
Ответ на: комментарий от EternalNewbie

Вот именно обоснования этой мифической связи от Вас и просят уже вторую страницу...

Код тов.Xintrea или убеждения тов.RazrFalcon-а для вас таковыми не являются? Ну ничем тогда не могу помочь.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Код тов.Xintrea или убеждения тов.RazrFalcon-а для вас таковыми не являются?

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

А вот аналогичные слова про Qt Вы зачем-то форсите.

EternalNewbie
()
Ответ на: комментарий от EternalNewbie

А вот аналогичные слова про Qt Вы зачем-то форсите.

Ну давайте так: вы попробуете обосновать ваши слова. Вот эти хотя бы: «STL накладывает свои ограничения на способ мышления разработчиков». А то вы производите впечатление лихого малолетнего дебила, недавно зарегистрировавшегося на LOR-е и с энтузиазмом взявшегося нести свое весомое мнение в массы.

Итак, какие такие ограничения накладывает STL на способ мышления разработчика?

Ну а я в ответ поясню по поводу Qt:

1. Qt не приветствует использование исключений (когда я пользовался Qt они там вообще были под запретом, сейчас в большинстве случаев, насколько я знаю, это так и остается). Соответственно, Qt-программист, который кроме Qt ничего не видел, не отдает себе отчета о том, почему и когда важен порядок инициализации членов класса.

2. Qt использует свою модель владения объектами. Которая очень сильно упрощает жизнь разработчикам. Но если человек не умеет пользоваться ничем, кроме Qt, то у него будут сложности при реализации управления временем жизни объектов в не-Qt-шной программе.

3. Qt провоцирует создание объектов в динамической памяти (предпосылки для этого см. в предыдущем пункте). При этом Qt исповедует наплевательское отношение к проблеме неудачной аллокации (см. пункт про исключения). Впрочем, к этой проблеме большинство линуксоидов и так наплевательски относятся, но у Qt-шников это вообще какая-то терминальная стадия.

Это только то, что сходу вспомнилось. При желании еще пару-тройку причин можно подтянуть.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Итак, какие такие ограничения накладывает STL на способ мышления разработчика?

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

Ну а я в ответ поясню по поводу Qt:

Ура-ура, наконец-то! Я даже не буду цепляться к «лихому малолетнему дебилу».

По сути. Первые два перечисленных пункта оказались обоснованными на примере программиста, который не знает ничего, кроме Qt и, похоже, не знает основ собственно С++. Исходное же обобщение, напомню, звучало так:

Впрочем, использование Qt накладывает свои ограничения на способ мышления разработчиков. Вплоть до Qt головного мозга

Очевидно, мышлению человека, добросовестно изучающего C++, использование Qt ничем не угрожает. Если бы Вы сразу сформулировали свой тезис корректно, вероятно, я бы не стал с таким упорством «нести свое весомое мнение в массы». Но тут мне, честно, стало обидно за Qt.

Третий же пункт, как Вы сами написали, частично вытекает из первых.

EternalNewbie
()
Ответ на: комментарий от EternalNewbie

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

Да, это очевидно. Тем более не понятно, почему вы к этим словам доколупались. И кроме как малолетним дебилизмом я лично ваше поведение в данной теме объяснить не могу.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

к этой проблеме большинство линуксоидов и так наплевательски относятся

wut? Любая прога на винде падает от OOM.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Эрудированный и многознающий вы наш, мы тут еще ждем вашу цитату, подтверждающую предыдущее ваше мощное заявление. А вы тут со следующим нарисовались.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Свою точку зрения я обосновал ещё год назад. Теперь, я просто не перестаю удивляться вашей упоротости.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Свою точку зрения я обосновал ещё год назад.

Совсем поехавший? Если вот это заявление было сделано и обосновано год назад — C++20 и 2D Graphics (комментарий) — то я британская королева, блин.

eao197 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Свою точку зрения я обосновал ещё год назад. Теперь, я просто не перестаю удивляться вашей упоротости.

а для тех кто пропустил год назад, можно повторить? просто пока приходится удивляться именно твоей упоротости, но может это от недостатка данных?

not_rj45
()
5 апреля 2018 г.

Кто-то тут набрасывал на счет безумства комитета и на счет того, что у C++ больше нет других проблем, кроме отсутствия 2D-графики в стандарте. Вот как все это происходило и чем закончилось: https://www.reddit.com/r/cpp/comments/89q6wr/sg13_2d_graphics_why_it_failed/

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Всю простыню не читал, но всё как я и говорил: люди взялись за задачу не представляя её объем.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Всю простыню не читал, но всё как я и говорил

«Пастернака не читал, но мнение имею». Вы еще не разучились дно пробивать, браво.

eao197 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.