Re[8]: Метапрограммисты надоели
От: DarkEld3r  
Дата: 06.10.14 16:13
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

_>Примеры — boost::optional (редкостный силос, ИМХО)

Почему? По моему, весьма простая и понятная (особенно, в использовании) штука. Вон и в стандарт её затащить хотят.
Re[9]: Метапрограммисты надоели
От: niXman Ниоткуда https://github.com/niXman
Дата: 06.10.14 16:17
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

DE>Почему? По моему, весьма простая и понятная (особенно, в использовании) штука. Вон и в стандарт её затащить хотят.

уже затащили. и any затащили, и filesystem. и сегодня еще std::apply(F&&, std::tuple<Types...>&&) затащили.
но кому оно надо, кто посмел ослушаться оракула?! =)

зы
так как отписаться от темы?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[10]: Метапрограммисты надоели
От: DarkEld3r  
Дата: 06.10.14 16:20
Оценка:
Здравствуйте, niXman, Вы писали:

X>уже затащили.

Вроде, ещё в С++14 хотели, но отложили? Или я что-то путают? Если "затащили"в С++17, то это ещё не совсем окончательно.
Re[11]: Метапрограммисты надоели
От: niXman Ниоткуда https://github.com/niXman
Дата: 06.10.14 16:22
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

все что я перечислил — находится в транке, т.е. выйдет в пятой версии GCC. это С++14.
там выше я ошибся насчет неймспейса, оно все в std::experimental.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[9]: Метапрограммисты надоели
От: Evgeny.Panasyuk Россия  
Дата: 06.10.14 16:32
Оценка:
Здравствуйте, Олег К., Вы писали:

ОК>Нормальному инженеру вообще такое в голову не прийдет использовать!

ОК>Я, конечно же, допускаю что это может где-то понадобится но не на каждом шагу.

И что делать в таком случае? Искать "ненормального инженера"?

EP>>Но, такой же abuse происходит практически для каждой фичи. Например тот же "классический ООП" — раздуваются совершенно не нужные иерархии, да чего стоят только одни getters&setters в тех местах где достаточно обычной структуры.

ОК>Нехорошо, конечно же, но жить можно. Главное чтобы код был понятен.

Развесистые иерархии (которые не к месту) усложняют понимание и использование. Точно также как и abuse TMP.

EP>>Выше по топику был пример использования Spirit
Автор: Evgeny.Panasyuk
Дата: 06.10.14
. Покажи где там нечитаемый код.

ОК>Это был малюсенький кусочек кода. Не знаю где ты его взял и кто автор, но ты бы лучше скопировал кусок кода линий так на 30-40 тысяч как минимум.

Там ссылка есть на полный код, автор я.

ОК>Ну и вместо этой херни лучше уж написать небольшой парсер с рекурсивным спуском. Речь о небольших грамматиках.


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

ОК>И да, грамматики тоже надо дебагать.


В Spirit'е есть уже готовый подробный дамп процесса парсинга — почему, где и что сматчилось, а где нет.
Re[7]: Метапрограммисты надоели
От: kurchatov  
Дата: 06.10.14 16:33
Оценка: +1
Здравствуйте, nen777w, Вы писали:

N>Работал как то в такой, сказали что код должен быть расчитан на среднестатистического программиста и boost запретили использовать.


Очень правильное решение. С точки зрения коммерческой разработки ПО, а не с точки зрения cpp-гика, которому некуда тратить свободное время.
Re[10]: Метапрограммисты надоели
От: niXman Ниоткуда https://github.com/niXman
Дата: 06.10.14 16:36
Оценка:
сорри, обшибся.
filesystem пока не закоммитили. просто на прошлой неделе в списке рассылки Jonatan Wakely постил реализацию, ее обсуждали. чем закончилось — не знаю. но, раз уж таки не закомитили — значит отправили на доработку.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[8]: Метапрограммисты надоели
От: Evgeny.Panasyuk Россия  
Дата: 06.10.14 16:51
Оценка:
Здравствуйте, kurchatov, Вы писали:

N>>Работал как то в такой, сказали что код должен быть расчитан на среднестатистического программиста и boost запретили использовать.

K>Очень правильное решение. С точки зрения коммерческой разработки ПО, а не с точки зрения cpp-гика, которому некуда тратить свободное время.

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

Маленький пример — в одной части проекта (коммерческого!) мне понадобилась Fibonacci Heap, я взял boost::heap::fibonacci_heap и использую без всяких проблем — простой и понятный интерфейс. Что тут такого ужасного с твоей сферически-коммерческой точки зрения?
Отредактировано 06.10.2014 16:51 Evgeny.Panasyuk . Предыдущая версия .
Re[9]: Метапрограммисты надоели
От: kurchatov  
Дата: 06.10.14 16:57
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Маленький пример — в одной части проекта (коммерческого!) мне понадобилась Fibonacci Heap, я взял boost::heap::fibonacci_heap и использую без всяких проблем — простой и понятный интерфейс. Что тут такого ужасного с твоей сферически-коммерческой точки зрения?


да отлично! Я тоже люблю boost::lexical_cast

Spirit и прочий фьюжн — совершенно другой уровень и порог вхождения.
Re[3]: Метапрограммисты надоели
От: WolfHound  
Дата: 06.10.14 17:21
Оценка: 3 (1)
Здравствуйте, NeoCode, Вы писали:

NC>Я тоже не очень с этими шаблонами... вот прямо сейчас сижу разбираюсь. Просто раньше я как-то избегал излишнего метапрограммирования, а тут попался проект с достаточно глубоким уровнем применения матапрограммирования. Понемногу разбираюсь.

Главное понять, что шаблоны это функциональный язык.
Остальное просто.

NC>Но считаю что врага надо знать в лицо У меня тоже есть хобби — разработка своего языка программирования, не менее (и даже гораздо более) мощного чем С++, но без всей этой головной боли.

А можно подробнее?
Ибо у меня разработка языков не хобби.

NC>И для того чтобы это сделать наилучшим образом, считаю что нужно знать и С++ в совершенстве,

Лучше знать немерле.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: Метапрограммисты надоели
От: PM  
Дата: 06.10.14 17:37
Оценка: 2 (1)
Здравствуйте, nen777w, Вы писали:

PM>>>не люблю Qt

X>>да, это ужасное творение. но для ГУЯ приходится использовать, увы

N>Эм... и что в нём ужасного? Отличная библиотека, для GUI... так её и использую.


Для кросс-платформенного GUI других вариантов нет, так что с Qt приходится мириться. Мне  Qt не нравится потому что:

Я не слежу за развитием Qt Quick, так что может быть там все гораздо лучше. Но из моего скромного опыта использования, использовать Qt в С++ в 2014 году — это как MFC в начале 2000-х. Вроде бы и альтернатив нет, но уже устарело морально. Поэтому я предпочитаю проекты без GUI

PM>>>Высказывания "не используем boost потому что он слишком сложный" для меня признак низкой квалификации ведущего разработчика. Работать в такой команде — профессионально деградировать.

X>>угу.
N>Работал как то в такой, сказали что код должен быть расчитан на среднестатистического программиста и boost запретили использовать.
N>Но я там не долго работал.

Я не зря упомянул ведущего. В команде могут быть новички, не очень опытные разработчики, которые не знают множества граблей С++, не дружат с Boost. Но если есть хоть один человек, для которого использовать Boost не проблема, и он умеет делиться своим знанием и помогать остальным (а это одна из основных ролей ведущего программиста), то он подтянет уровень остальных. Если такого человека нет, проект на С++ рано или поздно загнется. А неосилятор boost будет писать в интернете какой этот С++ сложный — от него сплошные утечки памяти и падения софта.


ps. Пока отвечал, тему уже в флейм снесли из-за одного тролля, который в разделе С++ особо и не отмечался
Re[8]: Метапрограммисты надоели
От: AlexRK  
Дата: 06.10.14 18:36
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Но, такой же abuse происходит практически для каждой фичи.


Все же разные фичи имеют разную "abuse-емкость". Некоторые фичи выходят из-под контроля очень быстро, а некоторые нет.
Re[12]: Метапрограммисты надоели
От: DarkEld3r  
Дата: 06.10.14 18:50
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, DarkEld3r, Вы писали:


X>все что я перечислил — находится в транке, т.е. выйдет в пятой версии GCC. это С++14.

X>там выше я ошибся насчет неймспейса, оно все в std::experimental.
Ну раз эксперементальное, то всё-таки не C++14. Впрочем, я не сомневаюсь, что рано или поздно в стандарт оно всё-таки попадёт.
Re[8]: Метапрограммисты надоели
От: DarkEld3r  
Дата: 06.10.14 19:03
Оценка: +1 -1
Здравствуйте, PM, Вы писали:

Мне Qt тоже не кажется идеальным фреймворком, но отдельные пунты не могу не прокомментировать.

PM>Имеет достаточно давнюю историю и несет груз решений, принятых почти 20 лет назад из которых вытекают следующие пункты

Само по себе это не недостаток. Скорее наоборот — тем более, что ряд классов/функций выкидывались переписывались, то есть нельзя сказать, что они не внедряют улучшения и тащат за собой легаси.

PM>Пытается быть мега-фреймворком со своими строками, сокетами, файлами и т.п.

Так ли это плохо? Скажем, строки у них весьма удобны. Ничего подобного в стандарте или даже бусте нет. Файлы тоже удобнее стандартных.
А их контейнеры совместимы с стлевскими алгоритмами и наоборот.

PM>Неоднозначная политика владения дочерними объектами

Она вполне однозначная в рамках фреймворка. (: В том смысле, что ничего неожиданного не происходит. Опять же, местами удобно.

PM>Жесткая связка модель-вид, где шаг влево или вправо от принятой концепции модели карается хаками в реализации views.

Ну это да. Хотя возможно "по старинке" пользоваться контролами без связки с модель/вью.
Отредактировано 06.10.2014 19:07 DarkEld3r . Предыдущая версия .
Re[3]: Метапрограммисты надоели
От: alex_public  
Дата: 06.10.14 20:26
Оценка:
Здравствуйте, flаt, Вы писали:

F>http://ldionne.github.io/hana/?


Кстати выглядит не так уж страшно при использование (глянул на введение)... Но наверняка впечатлительным внутрь лучше не заглядывать.
Re[5]: Метапрограммисты надоели
От: alex_public  
Дата: 06.10.14 20:41
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Недостаток языка — это отсутствие compile-time reflection, Boost.Fusion для этого предлагает макросы BOOST_FUSION_DEFINE_STRUCT и подобные.

EP>А вот те методы работы, которые предлагает Boost.Fusion с уже адаптированными структурами (то есть для которые есть необходимые гетерогенные итераторы) — вполне себе, ничего костыльного.

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

EP>Даже как-то сравнивали в этом отношении Boost.Fusion vs Nemerle vs D (Fusion
Автор: Evgeny.Panasyuk
Дата: 24.10.13
, Nemerle
Автор: VladD2
Дата: 24.10.13
, D
Автор: D. Mon
Дата: 24.10.13
, all
Автор: Evgeny.Panasyuk
Дата: 25.10.13
) получилось вот так (даже без использования полиморфных лямбд):


Что-то там код слегка разный вроде. Ну да не принципиально, главное же идея обхода. ) Ну и да, на C++ тут самый симпатичный вариант.
Re[3]: Метапрограммисты надоели
От: alex_public  
Дата: 06.10.14 20:51
Оценка:
Здравствуйте, Олег К., Вы писали:

ОК>Ты видимо никогда не поддерживал код в который такие любители запихали Спирит. Иначе бы быстро поменял мнение.


Ну так я что бы ты запихал на их месте? ) Опишу задачку и свой вариант решения...

ОК>Жесть какая-то. Чтобы прочитать цсв Спирит не нужен!


Нужен/ненужен — это не разговор в мире разработки. Формально можно вообще всё на ассемблере написать и сказать что остальное не нужно. Разговор у нас идёт о минимизации усилий по написанию кода. Желательно при этом с одновременной максимизацией надёжности и быстродействия.
Re[8]: Метапрограммисты надоели
От: alex_public  
Дата: 06.10.14 20:55
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

_>А желающие — тратят его на написание каких-то своих шикарных костылей к готовым бустовским байкам. По сути так на так и выходит. Плюсы при использовании буста — человеку со стороны, знающему конкретную примененную часть буста проще понять код (ну, ему еще надо будет разобраться в прилагающихся костылях, но это, допустим, мелочи). Минусы — любое обобщенное решение сложно, а значит потенциально ненадежно и потенциально неоптимально. Примеры — boost::optional (редкостный силос, ИМХО) и boost::asio (без слез и мата работать с ним невозможно). Или вот, скажем, boost::circular_buffer. Ну просится, просится сделать не буфер, а просто адаптер-итератор, гораздо полезнее, ИМХО, но итератор — это не по-пацански, на нем не показать, что ты умеешь аллокаторы и move-semantics, потому и целый, извините, буфер.


Хыхы, кстати optional — это считай уже не boost, а стандарт языка. )))
Re[9]: Метапрограммисты надоели
От: Abyx Россия  
Дата: 06.10.14 21:00
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, slava_phirsov, Вы писали:


_>>А желающие — тратят его на написание каких-то своих шикарных костылей к готовым бустовским байкам. По сути так на так и выходит. Плюсы при использовании буста — человеку со стороны, знающему конкретную примененную часть буста проще понять код (ну, ему еще надо будет разобраться в прилагающихся костылях, но это, допустим, мелочи). Минусы — любое обобщенное решение сложно, а значит потенциально ненадежно и потенциально неоптимально. Примеры — boost::optional (редкостный силос, ИМХО) и boost::asio (без слез и мата работать с ним невозможно). Или вот, скажем, boost::circular_buffer. Ну просится, просится сделать не буфер, а просто адаптер-итератор, гораздо полезнее, ИМХО, но итератор — это не по-пацански, на нем не показать, что ты умеешь аллокаторы и move-semantics, потому и целый, извините, буфер.


_>Хыхы, кстати optional — это считай уже не boost, а стандарт языка. )))


asio кстати тоже
In Zen We Trust
Re[8]: Метапрограммисты надоели
От: alex_public  
Дата: 06.10.14 21:14
Оценка:
Здравствуйте, PM, Вы писали:

PM>Для кросс-платформенного GUI других вариантов нет, так что с Qt приходится мириться.


Да ладно... Если говорить о чём-то сравнимом, то как минимум wxWidgets имеет такую же мощь и при этом без сомнительного извращения языка. Если же смотреть не только на такие глобальные фреймворки и не требовать обязательно нативных контролов (кстати, насколько я помню в Qt они и не такие, но хотя бы притворяются), то возникает ещё целая куча вариантов (gtk+/gtkmm, fltk, juce и т.д. и т.п.).
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.