Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.87.200.112] |
|
Страницы: (56) « Первая ... 52 53 [54] 55 56 ( Перейти к последнему сообщению ) |
Сообщ.
#796
,
|
|
|
Трудно сказать. Что-то простое переносится просто:
template<typename A> void foo(A a){ ... } void foo(A)(A a){ ... } Что-то более сложное может потребовать переписывания с нуля, включая алгоритмы и даже философию. Думаю, метапрограмминг в D тебе бы очень понравился, но в дизайне других мест понакосячено серьезно. Так что D умудряется вызывать восторг и ненависть одновременно. Ну и я бы не стал писать на D код для авионики. |
Сообщ.
#797
,
|
|
|
Цитата applegame @ а вот gdc (который уже в gcc) и ldc оптимизируют не хуже соответственно g++ и clang. Ну круто, если так |
Сообщ.
#798
,
|
|
|
Цитата D_KEY @ D очень похож на плюсы, так что это не удивительно. Ну круто, если так |
Сообщ.
#799
,
|
|
|
Цитата applegame @ Полностью отвязать в принципе невозможно, так как встроенные массивы и замыкания могут задействовать GC. А этим можно как-то управлять? Добавлено Цитата applegame @ Цитата D_KEY @ D очень похож на плюсы, так что это не удивительно.Ну круто, если так Ну оптимизирующий компилятор - достаточно сложная штука, у C и C++ больше и ресурсов и наработок. |
Сообщ.
#800
,
|
|
|
Цитата D_KEY @ Можно заставить компилятор запретить операции с GC в нужном скоупе и не пользоваться этими операциями, заменяя их на RAII, RC (счетчики ссылок), а то и на старое доброе ручное управление памятью.А этим можно как-то управлять? Цитата D_KEY @ Во-первых, автор D - Уолтер Брайт, который сам является разработчиком хорошо известного в прошлом C++ компилятора. Во-вторых, вероятно, ты недооцениваешь оптимизации llvm и бекенда gcc. Все три компилятора D: dmd, gcc и ldc используюут один и тот же фронтенд. А вот бекенды у них разные. Результаты весьма отличаются. Ну оптимизирующий компилятор - достаточно сложная штука, у C и C++ больше и ресурсов и наработок. |
Сообщ.
#801
,
|
|
|
D на какую область ориентирован? У него просто синтаксис с какой то встроенной библиотекой? Многопоточность, кросплатформенность на каком уровне? Какие библиотеки под него есть? Игры писать там? Веб? Десктоп? Или это просто какой то красивый синтаксис?
|
Сообщ.
#802
,
|
|
|
Цитата Wound @ Область у D приблизительно совпадает с C/C++, но из-за достаточно удобного синтаксиса и быстрой компиляции он неплохо зашел в web и даже в скриптинг. С многопоточностью все отлично, с библиотеками не ахти, но к D можно прибиндить сишные и плюсовые либки. Так что игры писать можно. Без рантайма (а значит без GC и большой части стандартной либы) поддерживает, в принципе, все что поддерживают gcc и llvm. Полноценно поддерживаются x86/x86_64 Linux/Windows/MacOS/FreeBSD. Существуют неофициальные билды для Android и Raspberry PI.D на какую область ориентирован? У него просто синтаксис с какой то встроенной библиотекой? Многопоточность, кросплатформенность на каком уровне? Какие библиотеки под него есть? Игры писать там? Веб? Десктоп? Или это просто какой то красивый синтаксис? Короче, если отклонился от официально поддерживаемых платформ - готовся к танцам с бубном. Например: Как на D писать под ARM |
Сообщ.
#803
,
|
|
|
Заканчивалась вторая декада 21-го века. Люди всё ещё придумывали, чем бы им заменить С++. Варианты с Java, C#, D, Go и Rust уже пробовали... Надо придумывать новые!
|
Сообщ.
#804
,
|
|
|
Явошарпы и go разве претендовали на замену плюсам? По-моему максимум на что они претендовали это на какую-либо нишу.
|
Сообщ.
#805
,
|
|
|
Цитата Flex Ferrum @ Надо придумывать новые! Ну в нише мобильных устройств С++ таки подвинулся нехотя |
Сообщ.
#806
,
|
|
|
Цитата JoeUser @ Цитата Flex Ferrum @ Надо придумывать новые! Ну в нише мобильных устройств С++ таки подвинулся нехотя Да он много где подвинулся. Просто не все хотят это признавать. |
Сообщ.
#807
,
|
|
|
А вот можно ли в плюсах создать "типизированную" лямбду (std::function<void(int)> например) с замыканиями, но без аллокаций в куче?
|
Сообщ.
#808
,
|
|
|
Ну если тебя не устроит auto f = ... или передача в шаблон функции, то нет. Но мне кажется, что о чем-то таком уже был спор тут и даже тесты были, где кресты все равно выиграли по скорости.
|
Сообщ.
#809
,
|
|
|
Цитата D_KEY @ У кого выигрывали? Я что-то не помню такого спора. Речь именно о типизированной лямбде, для передачи в нешаблонную функцию:Ну если тебя не устроит auto f = ... или передача в шаблон функции, то нет. Но мне кажется, что о чем-то таком уже был спор тут и даже тесты были, где кресты все равно выиграли по скорости. pragma(inline, false) void foo(scope void delegate(int) fn) { fn(10); } int bar() { int i = 10; foo((int x){ i += x; }); return i; } Прямой плюсовой аналог однозначно просрет дешному во всем: #include <functional> __attribute((noinline)) void foo(std::function<void(int)> fn) { fn(10); } int bar() { int i = 10; foo([&i](int x){ i += x; }); return i; } В дешном аллокаций не будет, в плюсовом, насколько я понимаю, стопроцентно будет. |
Сообщ.
#810
,
|
|
|
Цитата applegame @ Прямой плюсовой аналог однозначно просрет дешному во всем Вот мне помнится, что по крайней мере в скорости вызовов не просирает, а чуть ли не выигрывает Если не лень, можешь померить. Добавлено Цитата __attribute((noinline)) Нахрена? |