
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Страницы: (56) « Первая ... 25 26 [27] 28 29 ... 55 56 ( Перейти к последнему сообщению ) |
Сообщ.
#391
,
|
|
|
Цитата applegame @ Реально. Но придется отказаться от многих встроенных приятных вещей и от половины стандартной библиотеки. Разве это реальная практическая альтернатива? Нагромождение фич какое-то... Нет. Потому что они решают разные задачи. |
Сообщ.
#392
,
|
|
|
Цитата applegame @ Но ведь найдутся случаи когда даже D-шные шаблоны окажутся недостаточно мощными?.. Ну D-шные шаблоны вполне читаемы. Макросы мне представляются тяжелой артиллерией для каких-то особо сложных случаев. Ведь и плюсовые шаблоны для ряда применений отлично подходят, а часто и без них жить можно, но иногда требуется большее. Это в контексте раста/плюсов или в каком-нибудь абстрактном языке? Имхо, это разные инструменты и хорошо иметь и то и другое. Цитата applegame @ Ну фича (спорная) в том, что обработка ошибок происходит явно.Странная какая-то фича, и, насколько я понял, это обилие unwrap() как раз и есть следствие отсутствия исключений, нет? Относительно отсутствия исключений - есть паника, которая точно так же раскручивает стек, вызывает деструкторы и т.д. Есть возможности её перехватить/обработать. Нет "только" удобного способа проверить к какому типу исключение относится. Может когда-то дойдут до того, что это тоже нужно, ведь изначально панику можно было обработать только на границе потоков. |
Сообщ.
#393
,
|
|
|
Цитата MyNameIsIgor @ Да, реальная. И становится все реальней. Фобос (стандартная либа) все больше и больше "ренджифицируется", что делает ненужными аллокации памяти вообще. Лямбды далеко не всегда требуют аллокаций, а там где требуют можно заменить на аналог std::function. Получаются эдакие плюсы на стероидах. Посмотрим что будет через полгода.Разве это реальная практическая альтернатива? Цитата MyNameIsIgor @ Да, атрибутов нагородили мама не горюй. Нагромождение фич какое-то... Добавлено Цитата DarkEld3r @ Бывает такое но редко. Строковые миксины D успешно заменяют практическое любое применение макросов. Но выглядит это как помойка. Я не люблю строковые миксины именно за их уродство. Но ведь найдутся случаи когда даже D-шные шаблоны окажутся недостаточно мощными? |
Сообщ.
#394
,
|
|
|
Цитата applegame @ Да, реальная. И становится все реальней. Фобос (стандартная либа) все больше и больше "ренджифицируется", что делает ненужными аллокации памяти вообще. Лямбды далеко не всегда требуют аллокаций, а там где требуют можно заменить на аналог std::function. Получаются эдакие плюсы на стероидах. Скорее это получается два языка в одном. По мне, так уже либо сборщик мусора есть, либо его нет. Не надо метаться - это всё то же стаскивание всего, что блестит. |
Сообщ.
#395
,
|
|
|
Цитата MyNameIsIgor @ Это главная беда D - постоянное метание. С академической точки зрения - D отвратное говно, напичканое всем, чем ни попадя, работающее странным образом и т.д. и т.п. Но с практической точки зрения - садишься и пишешь, причем гораздо быстрее и безопаснее, чем на плюсах. GC в тех задачах, для которых я использую D (web-cервисы) практически не влияет на производительность. Скорее это получается два языка в одном. По мне, так уже либо сборщик мусора есть, либо его нет. Не надо метаться - это всё то же стаскивание всего, что блестит. Добавлено Я бы попробовал Rust, но блин, такого любителя синтаксического сахара как я эти unwrap() раздражают просто нереально. |
![]() |
Сообщ.
#396
,
|
|
Цитата DarkEld3r @ "Зачем вводить новое, если старое и так справляется." Примерно так думали в Комитете, наверное, предполагая, что всё это нечитабельное в конечном итоге будет внесено в библиотеку и красивенько там сверху оттуда смотреться. Получилось ли, это другой вопрос. Можно зайти с другой стороны - плюсовые шаблоны применяются для метапрограммирования как раз потому что специализированного инструмента в языке не имеется. Результат зачастую не сильно читаемым получается. |
Сообщ.
#397
,
|
|
|
Цитата Qraizer @ Ну всё-всё предусмотреть и спрятать в библиотеку точно не получится, если мы о стандартной. Если о сторонних, то сейчас "кишки метапрограммирования" зачастую наружу торчат. Как минимум, в виде ошибок компиляции. Нормальные макросы сгладили бы обе проблемы. предполагая, что всё это нечитабельное в конечном итоге будет внесено в библиотеку и красивенько там сверху оттуда смотреться. |
![]() |
Сообщ.
#398
,
|
|
Ну, boost::mpl, конечно, не на варганили, но кое-что-таки внесли. Всякие там std::is_XXX(), std::enable_if(), std::make_-, add_-, remove_XXX()... Мало, что ли?
![]() ![]() template <typename T> class A: private T { struct Null: T {}; static Null NullPtr; public: A( typename std::enable_if<std::is_default_constructible<T>::value, T>::type* = &NullPtr); A(const typename std::enable_if<std::is_copy_constructible<T>::value, T>::type& ); A( typename std::enable_if<std::is_move_constructible<T>::value, T>::type&& ); /* ... */ }; Вот только я себя никак не приучу их юзать, и потому не знаю, насколько этого хватает. Вон, для A<>::A() чуток не хватило. |
Сообщ.
#399
,
|
|
|
Цитата Qraizer @ В принципе, выглядит читабельно ![]() Это читабельно для тех, кто хорошо разбирается с шаблонами и знает паттерны метапрограммирования с их использованием. А так у меня ещё есть надежды хотя бы на concepts lite в 17... |
Сообщ.
#400
,
|
|
|
Цитата Qraizer @ В принципе, выглядит читабельно и, будучи Стандартным По-моему ты только что изобрёл фичу C++11 под названием Inheriting constructor. Добавлено Цитата D_KEY @ А так у меня ещё есть надежды хотя бы на concepts lite в 17... Да вроде должны быть. |
![]() |
Сообщ.
#401
,
|
|
Цитата Flex Ferrum @ Ага. Ничего проще в качестве примера не придумалось. По-моему ты только что изобрёл фичу C++11 под названием Inheriting constructor. |
![]() |
Сообщ.
#402
,
|
|
Какие макросы слишком гибки на твой взгляд? Добавлено Цитата applegame @ Странная какая-то фича, и, насколько я понял, это обилие unwrap() как раз и есть следствие отсутствия исключений, нет? Скорее это следствие отсутствия do-нотации. Впрочем, если не ошибаюсь, макрос try! там как-то помогает. |
Сообщ.
#403
,
|
|
|
Цитата korvin @ Макросы того же Nemerle. Насколько я понял они позволяют сделать так, что любая последовательность любых допустимых символов может оказаться вполне синтаксически корректной, если для этого будет сделан соответствующий макрос. Прямо как случай с Ruby в указанном ролике.Какие макросы слишком гибки на твой взгляд? Впрочем, может быть в Nemerle, в отличие от Ruby это не создаст много проблем. По крайней мере если я накосячу в одном из этих слов, то в Nemerle я получу ошибку еще на стадии компиляции, я правильно понимаю? |
![]() |
Сообщ.
#404
,
|
|
Цитата applegame @ Макросы того же Nemerle. Насколько я понял они позволяют сделать так, что любая последовательность любых допустимых символов может оказаться вполне синтаксически корректной, если для этого будет сделан соответствующий макрос. Прямо как случай с Ruby в указанном ролике. Впрочем, может быть в Nemerle, в отличие от Ruby это не создаст много проблем. По крайней мере если я накосячу в одном из этих слов, то в Nemerle я получу ошибку еще на стадии компиляции, я правильно понимаю? Конечно на этапе компиляции, Nemerle же статически типизированный. Впрочем, даже в динамически типизированных Scheme и CL получишь ошибку компиляции. Просто Ruby --- это поделие для хипстеров-студентов. =) |
Сообщ.
#405
,
|
|
|
Цитата korvin @ Как, если тип становится известным только в run-time?Впрочем, даже в динамически типизированных Scheme и CL получишь ошибку компиляции. Цитата korvin @ Просто Ruby - некомпилируемый язык, что впрочем никак не противоречит твоему утверждению Просто Ruby --- это поделие для хипстеров-студентов. =) ![]() Добавлено P.S. Только что прочитал, что в Go даже дженериков нет. Ужоснах. |