LINUX.ORG.RU

don’t pay for what you don’t use

 


0

3

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

Кто-нибудь знает языки, где ты платишь за то, что не используешь и как конкретно это проявляется?

Ответ на: комментарий от ovk48

То есть ты имеешь в виду, что «используешь» означает «явно обозначаешь в коде программы»

Не обязательно. Использование может быть и неявным.

А можно, например, понимать «используешь» как «принимаешь как данность всегда доступные механизмы языка или рантайма»

Нельзя так понимать, это нелогично. У любого языка есть набор фич. Фичу можно спроектировать так, чтобы она жрала ресурсы даже тогда, когда в ней нет необходимости(неотключаемый GC, например, всегда динамическая диспетчеризация методов и пр.). А можно спроектировать так, чтобы она тратила ресурсы только тогда, когда фича нужна и используется(явно или неявно, как gc - неважно). Например, если сборку мусора сделать рациональной, если завести для неё отдельную кучу, если несвязывать со сборкой мусора остальные фундаментальные фичи языка, то тогда принцип будет соблюдаться. Для C/C++ есть библиотечные GC. Не очень хорошие из-за особенностей этих языков, но вполне пригодные.

anonymous
()
Ответ на: комментарий от anonymous

Там не «рациональной», а опциональной.

anonymous
()
Ответ на: комментарий от anonymous

И каким образом это относится к теме?

Это относится к камментам. Тема ваще ни о чём.

Себя защищаешь?

Конечно. Все так делают.

rechnick ★★★
()
Ответ на: комментарий от anonymous

И ещё «не связывать». Сорри, гребанный планшет.

anonymous
()
Ответ на: комментарий от rechnick

Конечно. Все так делают.

Т.е. ты пишешь о том, что все себя защищают лишь потому, что ты себя защищаешь? Тогда в чем смысл? Ты же сам себя опроверг.

anonymous
()
Ответ на: комментарий от Iron_Bug

Можно ваще ничего не знать про низкоуровневое программирование и при этом писать полезный, безглючный и безопасный софт.

rechnick ★★★
()
Ответ на: комментарий от anonymous

Чего? Ты камменты почитай. Сидит какой-нибудь математик и считает что он пуп Земли. А юзер при этом годами ждёт когда ему напишут что-нибудь полезное. 15 лет назад в графике в рунете были полтора десятка скриптеров на всю неисчислимую туеву хучу софта. Их знали по именам. Чуть ли не молились. Я, гуманитарий, кое-как разобравшись с основами VB написал свои первые скрипты для графики, которые были сразу скачаны тысячи раз. Вот такой был софтовый голод. Сейчас программистов как грязи, реально. Напишут за спасибо, за лайк на форуме. Поэтому в среде профессионалов такое ожесточение. Их теснят. Пусть в нижних областях, но теснят.

rechnick ★★★
()
Ответ на: комментарий от mv

Они тратят такты при каждом использовании. GC тратит такты только при сборке.

Вопрос в том, где тактов тратится больше. К тому же заню о случаях неиллюзорных проблем с производительностью как раз из-за того, что GC работает только «в какие-то странные моменты времени». Дело было в Яндексе и там ребята хорошо в теме разбирались. Но профилировали очень долго, чтобы понять, что это за скачки возникают несколько раз в сутки. В случае smart_ptr профилируется это на раз-два-три.

На hello world смарт-пойнтеры будут быстрее, но если их в системе миллионы, то GC реально быстрее.

Если ест возможность - предоставьте, пожалуйста, пруфлинки на исследования, которые это подтвердили.

P.S.

Кроме того, аллокация памяти под объект в случае с GC - это просто прибавление длины объекта к текущему указателю в пуле.

В С++ аллокацией занимаются аллокаторы и GC они вообще не компланарны.

trex6 ★★★★★
()
Ответ на: комментарий от rechnick

Да кто теснит кого? Программистов хрен найдешь. По полгода иногда ищут специалистов. «Как грязи» программистов низкой квалификации. Они физически не способны потеснить программистов с высокой.

anonymous
()
Ответ на: комментарий от eao197

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

trex6 ★★★★★
()
Ответ на: комментарий от mv

Плюсы через поколение вымрут

Ну 20 лет - довольно много, сложно прогнозировать. Но если ничего сильно не изменится, то нативные языки без сборки мусора всё равно нужны, даже если это будут не плюсы.

их в западных универах толком уже и не преподают.

Много чего живого не преподают.

DarkEld3r ★★★★★
()
Ответ на: комментарий от trex6

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

так то фича, а не баг. в таком говне проще пропихнуть троянц

/paranoid mode off

MyTrooName ★★★★★
()
Ответ на: комментарий от trex6

Код в чужой разработке — это всегда полное беспросветное говно без намека на нормальную архитектуру. Так что нет, не удивили. Типичный образчик LOR-экспертизы на марше.

eao197 ★★★★★
()
Ответ на: комментарий от MyTrooName

Нет, там действительно просто ужасные решения.

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

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

И такого там тонны.

trex6 ★★★★★
()
Ответ на: комментарий от anonymous

Во-во. Даже в моём небольшом городке висит две объявы уже год, от разных контор. Нужны монстры шарпа, которые знают все 10000 классов нета ну и прочие (готовые) технологии. Наплюсники и прочие системщики нафиг не нужны. Ни разу не видел ни одной объявы.

rechnick ★★★
()
Ответ на: комментарий от eao197

Ну я слышал такие же негативные оценки и от тех, кто коммитит периодически в хромиум.

anonymous
()
Ответ на: комментарий от anonymous

как и нормальных работодателей нормальных для нормальных наплюсников.

зы. на рынке два дурака.

qulinxao ★★☆
()
Ответ на: комментарий от trex6

нормальная архитектура

что бы это ни было , пока(хорошо ли плохо ли ) не есть критерий первостепенный успешности софта

qulinxao ★★☆
()
Ответ на: комментарий от rechnick

Напишут за спасибо, за лайк на форуме.

Студенты разве что. И то только до экватора.

ovk48 ★★★
()
Ответ на: комментарий от TrueTsar1C77

Ну если ты так серьёзен, то тут что-то крайне мощное и полезное, боюсь

ОК, понятно, школьник. Разговор прекращаю.

unanimous ★★★★★
()
Ответ на: комментарий от anonymous

Мало. 1c-ников нужно почти в два раза больше, phpшников тоже в два раза, java аналогично и т.д. Получается что наплюсники это такой очень небольшой сегмент. И только в крупных городах.

rechnick ★★★
()
Ответ на: комментарий от Iron_Bug

у меня опыт работы в хардваре с 90-х годов. мы делали очень крупные и сложные проекты. начиная от медицинского оборудования и заканчивая автоматизацией Гознака.

Okay

кто привык, что за ними всё будет убирать сборщик мусора, а опимизацией будет заниматься компилятор, неспособны на написание нормального кода

Что такое «нормальный код»? Вот я занимаюсь ЧМА-ми, для меня «нормальный код» — это код, который *корректен* и *понятен*, поэтому я предпочту матлаб с автоматической сборкой мусора и прочими плюшками фортрану, потому что он помогает написать правильно нетривиальный алгоритм. А любителей оптимизаций я видел на студентах — накодят «оптимально», потом нет вообще никакой возможности понять, где они накосячили.

Более того, оптимизация — это опять-таки рутина, ничуть не менее, чем ручное управление памятью. Лишь после того, как отлажен, выверен и понят алгоритм, надо садиться и что-то оптимизовывать, но никак не раньше. А еще лучше, если язык помогает тебе в этом, как тот же матлаб: вместо вложенных циклов ты видишь матричное умножение или свёртку тензора. Это куда полезнее для человеков, да и для качества алгоритма тоже.

unanimous ★★★★★
()
Ответ на: комментарий от unanimous

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от rechnick

в два раза больше
очень небольшой сегмент

Ok.

DarkEld3r ★★★★★
()
Ответ на: комментарий от TrueTsar1C77

И да, что ты за неё платишь?

Скудоумный, а в таблицы страниц Господь Бог лазит?

anonymous
()
Ответ на: комментарий от Iron_Bug

как код написан - так и работает

А что, есть языки, где код работает не так, как написан и это не считается багом компилятора?

В C++ другая проблема. Ты думаешь, что код должен работать так, а он работает по-другому. И без удержания в голове полутора тысяч страниц стандарта этого никто ещё не избежал.

anonymous
()
Ответ на: комментарий от anonymous

А что, есть языки, где код работает не так, как написан и это не считается багом компилятора?

В C++ ... код должен работать так, а он работает по-другому

клован detected

anonymous
()
Ответ на: комментарий от anonymous

попугай детектед - раз

примат, не понимающий свой инструмент и какие инструкции пишет, - два

anonymous
()
Ответ на: комментарий от TrueTsar1C77

Особенно в районе фундаментальных вещей - тут рулят только возможности сознания, а с моими на лоре и в жабистах не сидят.

Лол, царь уже совсем в астрал выпал.

Царь, ты просто тупой птушник, живешь в говне и от этого ноешь.

anonymous
()
Ответ на: комментарий от anonymous

нет, ты. ты же анонимус, болван

anonymous
()
Ответ на: комментарий от anonymous

Сколько же лет этим разговорам...

Ну это понятно, просто реально видно, что плюсовиков становится меньше.

mv ★★★★★
()
Ответ на: комментарий от mv

как и фортранутых - однако и последий и плюсы на века ужо с человечеством

qulinxao ★★☆
()
Ответ на: комментарий от trex6

Вопрос в том, где тактов тратится больше. К тому же заню о случаях неиллюзорных проблем с производительностью как раз из-за того, что GC работает только «в какие-то странные моменты времени». Дело было в Яндексе и там ребята хорошо в теме разбирались. Но профилировали очень долго, чтобы понять, что это за скачки возникают несколько раз в сутки.

В жаве разве нельзя запретить запуск gc в критических секциях?

В случае smart_ptr профилируется это на раз-два-три.

Это да, в случае со множеством короткоживущих объектов в нагруженной многоядерной системе аллокатор в топе и шквал RFO сразу видно.

Если ест возможность - предоставьте, пожалуйста, пруфлинки на исследования, которые это подтвердили.

Не сочтите за голословное утверждение или лень, но в каком-то из многочисленных прочитанных white papers по сборке мусора видел.

В С++ аллокацией занимаются аллокаторы и GC они вообще не компланарны.

В managed-языках GC является частью аллокатора.

mv ★★★★★
()
Ответ на: комментарий от trex6

Вопрос в том, где тактов тратится больше. К тому же заню о случаях неиллюзорных проблем с производительностью как раз из-за того, что GC работает только «в какие-то странные моменты времени».

Зато в крестах эти проблемы перманентные, причем усугубляются с фрагментацией памяти. Ну вот как на крестах сделать абсолютно необходимый перемещающий сборщик мусора? Двоечник страуструп ниасилил включение в исполняемый файл метаданных и информации о регистрах с указателями на объекты?

anonymous
()
Ответ на: комментарий от anonymous

перемещающий сборщик мусора

Ты говноед, что ли?

anonymous
()
Ответ на: комментарий от mv

Даже в нише тяжёлых бэкендов, где C и C++ не в почете, пока все ок. Даже был некоторый локальный рост в последние года(может из-за нового стандарта - хз), хотя на качестве специалистов он не сказался.

Но заметно то, что начинающие крестовики почти не нужны. И вот это тревожный знак.

anonymous
()
Ответ на: комментарий от anonymous

Ну вот как на крестах сделать абсолютно необходимый перемещающий сборщик мусора?

Он не необходимый. Если ты согласен на специальный тип указателей, то можно сделать. С обычными указателями нельзя.

Двоечник страуструп ниасилил включение в исполняемый файл метаданных и информации о регистрах с указателями на объекты?

При чем тут Страуструп? Можешь включать в своей реализации крестов. В llvm есть, кстати, поддержка этого дела.

anonymous
()
Ответ на: комментарий от anonymous

не путайте средства языка и алгоритмы. какие такие проблемы с фрагментацией? написал пул - и спи спокойно. да даже писать уже не надо, полно реализаций готовых. проблема с плюсами только одна: для программирования на плюсах нужен мозг и других вариантов нет. без мозга плюсы не просто бесполезны, но даже могут быть опасны. без мозгов на плюсах можно острелить себе яйца и вынести последние остатки межушного ганглия. однако, множество людей пишет на плюсах и ничего страшного с ними не случается. так что это не проблема языка, ага.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

Справедливости ради замечу что софт 90х не отличался стабильностью.

orkshaman
()
Ответ на: комментарий от Iron_Bug

не надо путать дураков и нормальных программистов. если человек сам не проверяет, что и куда он пишет в память - это его проблемы. его лучше гнать ссаными тряпками из серьёзного программирования в песочницу, где ему будет нянька сопли утирать, а GC подбирать за ним мусор.

После того, как разработчик *ssl не проверит, куда и что он пишет в память, его проблемы могут резко стать твоими, такие дела.

anonymous
()
Ответ на: комментарий от anonymous

что не мешает гнать таких ссаными тряпками и только подтверждает моё утверждение, что если хочешь писать на С/C++, то надо чётко понимать, что ты делаешь. я обычно не занимаюсь проблемами верхнего уровня, но если найду таракана в библиотеке - сообщу разработчикам или буду копать, пока не исправлю.

Iron_Bug ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.