Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
maytonDima Tпропущено... Если не путаю: видеокодеки вообще воплощают в железе. Я к тому что это не то пример чтобы сравнивать ОСы и ЯП. Ну а если завтра будет устаканен H266 то нам придется выкинуть на свалку наши Смарт-Телевизоры. И выкинем. Сомневаешься? У отца в саду приставка для приема цифрового ТВ. Буквально сегодня разбирался почему не показывает, олимпиада на носу, смотреть надо, отказалось стандарт DVB-T умер, DVB-T2 прошивками не лечится, надо железо менять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 22:42 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Ну дай бох. Главное чтоб мы не спутали в одну кучу дедлайн техподдержки и техническую возможность обновить firmware. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 22:47 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
д0kmaytonМне с самого начала не нравится что плавает сам предмет спора. Оба полюса мнений касаются С++ и С++. Хотя по сути спор идёт в разрезе С++ и Процессор шаблонов в С++. По сути все нарекания касаются не самого С++ а его ПРОЦЕССОРА ШАБЛОНОВ и ЮЗКЕЙСОВ которые были созданы на его базе за всю историю существования языка. Хочется спросить. Ну если не процессор шаблонов то ЧТО ? А мне кажется что коллеги Siemargl и Anatoly Moskovsky и тд по топику берут формулы вычисления площади абстрактной дыры абстракции из разных справочников и доказывают друг другу чья формула круче... Скорее вопрос в другом - чем каждый из нас готов пожертвовать во имя абстракции. С Джоелем я согласен. Anatoly Moskovskyд0k, Все в рамках темы )) Но вообще конечно реальных альтернатив С++ не существует. Иначе бы при таком количестве ворчунов все они на эти альтернативы уже бы перешли. Но вместо этого они ходят по С++ форумам и плачутся, как им трудно с С++ А они и перешли. Объемы софта выросли, требуется более высокий уровень абстракции. Сервер-сайд теперь Ява, клиент - дНет (или Ява или Веб), вебсервисы на всяком скриптовом говне. Но в определенной области С++ можно заменить только на С++ без STL, или просто С или на С--. Alibek B.Siemarglполминуты на запуск апплета "yuotube" и еще секунд 15 до этого на загрузку панельки апплетов Андроид тут не причем. У тебя просто слабая аппаратная начинка для используемого апплета YouTube. У меня на телефоне когда-то давно YT запускался почти мгновенно. А теперь запускается секунд 10, а потом еще минуту видео идет с лагами. Телефон один и тот же, просто сам YouTube обновился и для комфортной работы требует более мощное железо. Так что проблема с долгим запуском YouTube решается (на пару лет) заменой телевизора на современный. Просто я не куплю себе ни телевизор этого же производителя ни андроид-телефон (еще и с огромной дырой в безопасности). Не собираюсь платить за некачественный (тормозной) код. Андроид у меня в ТВ скорее всего 4.х, т.к модель 2014г ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 00:16 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Dima Tотказалось стандарт DVB-T умер а мужики то и не знают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 01:24 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
SiemarglА они и перешли. Объемы софта выросли, требуется более высокий уровень абстракции. Сервер-сайд теперь Ява, клиент - дНет (или Ява или Веб), вебсервисы на всяком скриптовом говне. Это все изначально на этом ширпотребе было )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 01:41 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
CEMbSiemargltypedef'у нужно выучить написать те же самые требуемые типы. непонимание. Там ты один раз тип определяешь как шаблон, потом ты забываешь про тип, который в шаблоне использовал. Хотя я что-то не догоняю точно, у меня не было проблем с "запоминанием" типа шаблона, так как он получается из головы по контексту. о__о Смартпойнтеры приходится использовать из-за неконтролируемого процесса копирования внутрях. Без них будет копироваться по значению - еще "лучше". Вместе с move() это как раз костыли, подпирающие абстракцию, просто не чугунные а алюминиевые. можно же определить конструктор копирования и оператор присваивания. Ок, давай попробуем засунуть более-менее сложный класс с запрещенными конструктором и деструктором куда нибудь, например в set и пробежаться меняющим алгоритмом.ну если не присваивать прям экземпляры класса, то всё ок должно быть? Собрал простенький примерчик, да - move помогает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. вывод Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 02:29 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
пока из недовольных новыми фичами, а так понимаю, только те, кто не до конца разобрался в них. std::move не костыль, а нормальное решение. я так понимаю, если точно знаешь, что есть такой конструктор, то можно написать вместо std::move(some) static_cast<some_type&&>(some). с помощью этой фукции ты обозначаешь место ,в котором ты хочешь переместить объект, что дальне ты его не будешь использовать, только уничтожишь. без этого по умолнчанию ты копируешь (и это логично). то есть это место все равно как-то нужно обозначить. конечно, компилятор может и сам догадаться иногда, но лучше если ты имеешь способ явно это обозначить. можно пример когда применение шаблона замедляет рантайм. на счет примера с return 42, то всегда, и без шаблонов, можно нагородить кучу кода, чтобы сделать что-нибудь простое. это как бы... шаблоны тут не причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 09:38 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
ого, пока писал перевалило на следующюю страницу:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 10:08 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
alexy_blackпока из недовольных новыми фичами, а так понимаю, только те, кто не до конца разобрался в них. std::move не костыль, а нормальное решение. я так понимаю, если точно знаешь, что есть такой конструктор, то можно написать вместо std::move(some) static_cast<some_type&&>(some). с помощью этой фукции ты обозначаешь место , в котором ты хочешь переместить объект , Зачем ? alexy_blackчто дальне ты его не будешь использовать, только уничтожишь. без этого по умолнчанию ты копируешь (и это логично). Тем более зачем кудато перемещать обьект перед удалением? alexy_black то есть это место все равно как-то нужно обозначить. конечно, компилятор может и сам догадаться иногда, но лучше если ты имеешь способ явно это обозначить. Я вобще не понимаю, вы говорите о менеджере витуальной памяти и перетягиваете на себя одеяло у расработчиков ОС, или о жонглировании сылками и указателями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 10:21 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
д0kЗачем ? Тем более зачем кудато перемещать обьект перед удалением? Затем, что если ты не хочешь копировать, а переместить объект. И не удалять его после копирования переноса. Т.о. не перед удалением, а вместо удаления. Но можешь этого и не делать, а копировать, как и раньше, никто не запрещает. Просто если хочется сделать move, теперь это возможно. д0kЯ вобще не понимаю, вы говорите о менеджере витуальной памяти и перетягиваете на себя одеяло у расработчиков ОС, или о жонглировании сылками и указателями... Мы говорим о более широких возможностях работы с объектами, виртуальная память тут ни при чём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 14:22 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
CEMbд0kЗачем ? Тем более зачем кудато перемещать обьект перед удалением? Затем, что если ты не хочешь копировать, а переместить объект. И не удалять его после копирования переноса. Т.о. не перед удалением, а вместо удаления. Но можешь этого и не делать, а копировать, как и раньше, никто не запрещает. Просто если хочется сделать move, теперь это возможно. д0kЯ вобще не понимаю, вы говорите о менеджере витуальной памяти и перетягиваете на себя одеяло у расработчиков ОС, или о жонглировании сылками и указателями... Мы говорим о более широких возможностях работы с объектами, виртуальная память тут ни при чём. Я не понимаю вашей парадигмы написания кода на С++. В моей парадигме мувить обьекты значит дефрагментировать память, это системная операция по оптимизации использваония ресурсов. вот что в моей парадигме значит мувить..... Парадигма std::move еще больше повышает планку на старт вхождения в ЯП, что снижает количество его носителей и ареал комерческого применения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 14:59 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
д0kВ моей парадигме мувить обьекты значит дефрагментировать память, это системная операция по оптимизации использваония ресурсов. Я также понял как CEMb: CEMbЗатем, что если ты не хочешь копировать, а переместить объект. И не удалять его после копирования переноса. Т.о. не перед удалением, а вместо удаления. Суть в том чтобы оптимизировать код когда создается объект, тут же копируется (например при помещении его в STL контейнер) и оригинал более не используется, т.е. объект сразу создается в контейнере и мы избавляемся от этого лишнего копирования. Я тут прочитал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 15:33 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Dima Tд0kВ моей парадигме мувить обьекты значит дефрагментировать память, это системная операция по оптимизации использваония ресурсов. Я также понял как CEMb: CEMbЗатем, что если ты не хочешь копировать, а переместить объект. И не удалять его после копирования переноса. Т.о. не перед удалением, а вместо удаления. Суть в том чтобы оптимизировать код когда создается объект, тут же копируется (например при помещении его в STL контейнер) и оригинал более не используется, т.е. объект сразу создается в контейнере и мы избавляемся от этого лишнего копирования. Я тут прочитал Вариантов то всего 2.100500 1. передача через стек в алокатор контейнера . (Описанный вами случай) 2. Хранение в контейнере сслыки обьекта находящегося на куче. 2.100500. Велосипеды с меморимапед файлами и разделяемой памятью. Какой % случаев гарантированно покрывает std::move ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 15:44 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
19396698 Джоэл СполскиВсе нетривиальные абстракции дырявы поведения std::move нельзя назвать тривильаным... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 15:51 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
д0kКакой % случаев гарантированно покрывает std::move ? "перемещение" не очень удачный термин, вводит в заблуждение, память ведь не ящики на складе, где можно ящик на другую полку переместить. http://www.ozon.ru/context/detail/id/34747131/ 5.1. Азы std::move и std::forward Полезно подойти к std::move и std::forward с точки зрения того, чего они не делают. std::move ничего не перемещает. std::forward ничего не передает. Во время выполнения они не делают вообще ничего. Они не генерируют выполнимый код - ни одного байта. std::move и std::forward являются всего лишь функциями (на самом деле - шаблонами функций), которые выполняют приведения. std::move выполняет безусловное приведение своего аргумента к rvalue, в то время как std::forward выполняет приведение только при соблюдении определенных условий. Это все. Пояснения приводят к новому множеству вопросов, но, по сути, история на этом завершена. ... Т.е. суть в том что по возможности объект сразу создается там где будет жить, по невозможности - создание на стэке и копирование. Почитай книжку, хорошо написано, я не настолько силен в плюсах чтобы связно повторить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 15:54 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
д0kКакой % случаев гарантированно покрывает std::move ? std::move разрешает компилятору считать явно объявленную переменную временной (чье значение программисту не интересно больше). Это компайл-тайм директива, позволяющая компилятору проводить более глубокую оптимизацию, за счет замены копирования на перемещение, там где это копирование было бы без этой директивы, потому что компилятор не всегда может отследить что переменная больше не используется в коде. Что тут не понятно-то? Причем тут эти ваши аллокаторы и прочая виртуальная память? Если такие элементарные вещи по-вашему поднимают порог вхождения в С++, то может не мучаться и заняться чем-то другим, ну там на бейсике что-ли писать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 16:14 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Dima T, всё Димыч. Пора нам с тобой на пенсию. Или в дев-опсы. А? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 16:34 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyд0kКакой % случаев гарантированно покрывает std::move ? std::move разрешает компилятору считать явно объявленную переменную временной (чье значение программисту не интересно больше). Это компайл-тайм директива, позволяющая компилятору проводить более глубокую оптимизацию, за счет замены копирования на перемещение, там где это копирование было бы без этой директивы, потому что компилятор не всегда может отследить что переменная больше не используется в коде. Что тут не понятно-то? Причем тут эти ваши аллокаторы и прочая виртуальная память? Если такие элементарные вещи по-вашему поднимают порог вхождения в С++, то может не мучаться и заняться чем-то другим, ну там на бейсике что-ли писать? Для меня элементарными вещами есть чистоплотность работы и областями видимости. Основопологающий принципы языка С++ обьявление - есть инициализация, выход из области видимости - деинициализация. При соблюдиии этого фундаментального правила я не вижу надобности std::move и прочих абстрактных фильтраторах мусора. Чисто не там где убирают , а там где не сорят. Сваливание в кучу всего с перекладыванием отвественности на компилятор , типа пусть от области видимости отслеживает ничем хорошим для проекта на С++ не закончится , инфа сотка... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 17:19 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
д0kПри соблюдиии этого фундаментального правила я не вижу надобности std::move и прочих Если нет надобности в оптимизациях, то зачем вам вообще С++? д0kЧисто не там где убирают , а там где не сорят. Нет. Чисто там где убирают. Но к std::move мусор не имеет отношения. Когда вы вводите переменную - это не бросание мусора, а наоборот повышение читаемости кода. В хорошем коде очень часто промежуточные значения записываются в переменные, вместо того чтобы нагромождать все в одно гигантское выражение. А часто алгоритм явно предусматривает цепочку действий над переменной, тогда отказаться от переменной нельзя без усложнения алгоритма. Для тех кто не хочет жертвовать производительностью ради читаемости и простоты алгоритма, и предназначен std::move. Но вы судя по всему пока так и не поняли что он делает, так что думаю обсуждать нужен ли он пока нет смысла )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 17:48 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНо вы судя по всему пока так и не поняли что он делает, так что думаю обсуждать нужен ли он пока нет смысла )) Я не понял или пропустил , когда в С++ было введено использованное Вами выше понятие временной переменной... Это шо за термин такой, кто определяет время ее жизни ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 18:16 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
д0kЯ не понял или пропустил , когда в С++ было введено использованное Вами выше понятие временной переменной... Это шо за термин такой, кто определяет время ее жизни ? Этот термин я использовал чтобы не повышать порог вхождения в этот топик ))) Впрочем сам термин "temporary object" естественно описан в стандарте С++ с незапамятных времен. См. п.12.2 стандарта С++ (любого). А вы если действительно хотите разобраться, то читайте про rvalue (с практической точки зрения это почти аналог temporary) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 18:29 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
maytonDima T, всё Димыч. Пора нам с тобой на пенсию. Не, мне не пора. Хотя денег больше чем достаточно и был жизненный план в 40 уйти на пенсию, уже почти 40, но пока морально не готов. Дети вырастут (это еще 10-15 лет) и тогда брошу все нах и займусь садоводством где-нибудь в южной части страны (КавМинВоды очень нравятся). Жена уже занялась садоводством, не успеваем съедать урожаи гороха Так что пока изучаю всякую хрень неизученную ранее от C# до генерации primes такая вот развлекуха ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 21:00 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyд0kКакой % случаев гарантированно покрывает std::move ? std::move разрешает компилятору считать явно объявленную переменную временной (чье значение программисту не интересно больше). Это компайл-тайм директива, позволяющая компилятору проводить более глубокую оптимизацию, за счет замены копирования на перемещение, там где это копирование было бы без этой директивы, потому что компилятор не всегда может отследить что переменная больше не используется в коде. Что тут не понятно-то? ...Ну не совсем так просто. Заглянем в душу Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Результат Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. Что показывает, что конструктор копирования и конструктор перемещения не особо то отличаются. И в целом, шаблонная математика suxx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 22:53 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Не желая пугать неокрепшие умы, я не буду выкладывать оптимизированный код. Поверьте мне на слово, на чистом С этот пример в десяток раз будет короче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 22:56 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Dima TТак что пока изучаю всякую хрень неизученную ранее от C# до генерации primes такая вот развлекуха Давай курить архитектуры HighLoad MMORPG игрух в вебе. Там есть весь спектр задач. Мне вот щас нужен мультиплексированный I/O. Без него сервер невзлетит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2016, 23:06 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39272509&tid=2018472]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 186ms |

| 0 / 0 |
