Re[7]: Критика современного С++
От: σ  
Дата: 06.02.19 11:10
Оценка:
σ>>>>В лиспе нет RAII.
S>>>Добавляется одним макросом.
σ>>Дай угадаю. unwind-protect?
S>В CL можно и его юзать.
Но ведь он не позволяет передачу ресурсов вызывающей стороне (для последующего освобождения).
Re[2]: Критика современного С++
От: dsorokin Россия  
Дата: 06.02.19 15:12
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Так же чувак и набежавшая школота приводит Rust в качестве альтернативы забывая о том, что в нем разных НЁХ-ов как бы не меньше и он просто еще не успел с ними столкнуться. Вообще гениальный пример на нём, и это, типа, проще?! Тот кто не осилил рэйнджи, осилит вот это?

KP>
KP>
fn triples(n: u32) -> impl Iterator<Item = (u32, u32, u32)> {
KP>    (0..n).flat_map(move |z| 
KP>        (1..z).flat_map(move |x| 
KP>            (x..z).map(move |y| 
KP>                (x, y, z)
KP>            )
KP>        )
KP>    )
KP>    .filter(|(x, y, z)| x*x + y*y == z*z)
KP>}
KP>


Кстати, читается элементарно для любого, кто знаком с Haskell и Rust. Это просто (один-в-один, если раскрыть list comprehension через монаду списка):

[(x, y, z) | z <- [0..n-1], x <- [1..z-1], y <- [x..z-1], x*x + y*y == z*z]
Re[3]: Критика современного С++
От: Voivoid Россия  
Дата: 06.02.19 15:55
Оценка:
Здравствуйте, dsorokin, Вы писали:

D>Кстати, читается элементарно для любого, кто знаком с Haskell и Rust.


Кстати да, с range v3 можно писать почти как на haskell
auto triples = ints(1)      >>= [ ](int z) { return
               ints(1, z+1) >>= [=](int x) { return
               ints(x, z+1) >>= [=](int y) { return
   yield_if(x*x + y*y == z*z, std::make_tuple(x, y, z)); };}; };


do-нотации только для полного счастья не хватает
Отредактировано 06.02.2019 15:57 Voivoid . Предыдущая версия .
Re[4]: Критика современного С++
От: dsorokin Россия  
Дата: 06.02.19 17:49
Оценка:
Здравствуйте, Voivoid, Вы писали:

V>Кстати да, с range v3 можно писать почти как на haskell

V>
V>auto triples = ints(1)      >>= [ ](int z) { return
V>               ints(1, z+1) >>= [=](int x) { return
V>               ints(x, z+1) >>= [=](int y) { return
V>   yield_if(x*x + y*y == z*z, std::make_tuple(x, y, z)); };}; };
V>


V>do-нотации только для полного счастья не хватает


Во! Время от времени подумываю одну штуку свою перенести на C++. Там будут монады и стрелки через шаблоны. Прототип есть, и есть работающий аналогичный код на Rust.

Как думаете, плюсисты заклюют? Обещаю в документации никого не травмировать и ни слова не писать о страшных монадах и стрелках!

Я вон в C++20 увидел незаконченную монаду в future::then. Подозреваю, что она не закончена по той простой причине, что в C++ нет полноценных значений у типа void. Из-за чего возникли бы нестыковки при использовании, будь там полноценная монадическая связка, но это мое личное предположение.
Re[2]: Unity
От: Qbit86 Кипр
Дата: 06.02.19 22:14
Оценка:
Здравствуйте, Nikе, Вы писали:

N>Давайте лучше юнити покритикуем :))


Автор пишет:

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


Всё так. Я вхожу в те миллионы, которые пользуются этим «самым популярным в мире игровым движком». И да, я также вхожу в ту часть, которая «любит говорить... насколько он отвратительный».
Глаза у меня добрые, но рубашка — смирительная!
Re[3]: Unity
От: Nikе Россия  
Дата: 06.02.19 22:30
Оценка: +1
Здравствуйте, Qbit86, Вы писали:

Q>Всё так. Я вхожу в те миллионы, которые пользуются этим «самым популярным в мире игровым движком». И да, я также вхожу в ту часть, которая «любит говорить... насколько он отвратительный».


Соболезную.
Нужно разобрать угил.
Re[2]: Критика современного С++
От: AlexGin Беларусь  
Дата: 07.02.19 09:42
Оценка: +2
Здравствуйте, LaptevVV, Вы писали:

LVV>Ни один язык программирования не способен заставить меня чувствовать себя тупым...

+100500
Просто часто самовыражение разработчика в жизни воплощается в сложные языковые конструкции.

LVV>Потом вместо простого решения (которое написано на С) пишут какую-то хрень — НАФИГА.

ИМХО это желание как-то проявиться, желание показать себя.

LVV>Когда вполне можно написать на С++ так же как на С.

Зачастую, если правильно применять язык, код на С++ должен получаться проще, значительно проще (чем на С).
По крайней мере, именно это и способствовало внедрению и распространению языка С++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.