Для конечного пользователя, конечно важнее, что бы работал флэш, а не дополнительные 0.7% прироста производительности системы. Линус, кстати, вовсе не защищал криворуких разработчиков (которых сам материл), а конечных пользователей, и в этом он совершенно прав, ИМХО.
Насколько я знаю, большинство кода для встраиваемых систем сегодня компилируется на gcc, который сам не вчера появился, хотя действительно не факт, что для всех архитектур поддерживаются все хитрые оптимизации с популярных платформ. А на ПК, оптимизирующие компиляторы существуют уже полтора десятка лет, если не больше, и уж никак не «последние пару лет».
Не думаю, что компилятор/линкер не имеет право инлайнить код из динамической библиотеке так как это сломает ABI и не позволит, например, предсказуемо заменить код для всех пользователей этой библиотеки.
Пожалуйста не воспринимайте моё негодование не свой счет, я понятное дело, понятия имею что и как вы пишите, а критика относилось не к вам, а к позиции, которую вы защитите, и применение которой, я считаю признаком плохого кода.
Насчет платформо-зависимого кода, естественно он всегда будет. Но стоит различать платформо-зависимый код в рамках языка, который достаточно обернуть в ifdef и/или выкинуть в отдельный модуль, и целенаправленная игра с огнём, в виде использования UB в своих целях. Можно конечно поместить такой код в отдельный файл, вырубить для него все оптимизации, написать крупным буквами «ОСТОРОЖНО, СТРЕЛЬБА В НОГУ!!! 11АДЫНАДЫН», проверять вручную сгенерированный компилятором код, но при этом надо помнить, что от любого чиха, апдейта компилятора/библиотек или настроек системы все может сломаться и вам нужно постоянно гонять regression tests на весь этот код. Если эти оптимизации того стоят, то флаг вам в руки, но что то мне подсказывает, что в большинстве случаев накладные расходы на поддержание такого кода перевесят все выгоды от него.
Не то ни другое естественно. Если мне важен физический размер переменной, то я воспользуюсь чем нибудь вроде uint32_t а не буду уповать на звезды и настройки компилятора, что int выйдет длиной именно в 32 бита.
Понятно, что все зависит от ситуации. Но ломать совместимость на уровне ОС, обрушивая кучу работающего софта, и все ради маленькой оптимизации — это по-моему уже религиозный фанатизм. Да, это ошибка криворукий програмистов, которые писали плохой софт несоотвествующий стандарту, но при этом Линус прав, что не надо за это наказывать конечных пользователей.
Я как раз очень уважаю Линуса за прагматический, а не религиозный подход к разработке ПО. По-моему он и люди придерживающиеся его подхода сделали для области в целом, и для свободного ПО в частности, больше чем Святой Столлман и его апостолы, которые готовы пожертвовать всем, ради идеологической чистоты и религиозных догм :)
Вы знаете, по-моему программистам, которые закладываются некие особенности платформы (endianess, поведение при переполнении, и т.д.), делают необоснованные предположения о размере базовых типов (например в хардкоде предполагают, что int — это 4 байта, а long — 8), используют без надобности платфро-зависимыми конструкциями и типами данных (не раз встречал програмистов-виндузятников, считающих BYTE и WORD — родными С-шными типами данных) — всем им надо отрывать руки по плечи в выгонять вон из профессии. И говорю я это не потому что я поборник религиозной чистоты (вовсе нет), а потому что я писал на практически всех возможных платформах, включая десктопы и embedded на кучу операционных систем, и делал сам и консультировал кучу проектов портирования платформы и/или ОС и/или компилятора. И потому что 80% процентов всех проблем в таких проектах — это вовсе не серьёзные различия в API и работе железа, а банальная нечистоплотнрсть и халтура программистов, любимая отмазка которых была «этот код никогда не надо будет портировать» и «вроде работает более или менее, и ладно, ХЗ почему».
По-моему это базовая часть профессионализма и аккуратности — писать платформо-независимый код везде где можно, даже если в данную минуту это не обязательно (но почти всегда окупается в дологосрочной перспективе), а платформо-зависимые куски заворачивать в ifdef-ы, выделять в отдельные модули, и вообще хорошо понимать, что в них происходит. Опять таки по-своему опыту могу сказать, что это никак не влияет на скорость выполнения, и почти не замедляет написание кода, не больше чем остальные принятые практики написания качественного и аккуратного (не write-only) кода.
ЗЫ: насчет «низкоуровнего» и «не портируемого в принципе» кода, в котором вы считаете, что допустимо можно закладываться на особенности железа — у меня один из больших последних проектов, это было портирование сложного embedded софта c эзотерической железки, в которой даже ОС не толком не было, на линукс/gcc. Там, правда, к счастью программисты были толковые и хотя лет 15 назад, когда это начинали писать, никто не думал про портирование — тем не менее код был по большей частью был написан качественно и портировался без проблем. Но если бы они забили и решили, что писать аккуратно/портируемо (а это таки почти синонимы, по-моему) не надо — то проект из сложного, превратился бы в кошмарный.
1) Статья о свойствах некого медицинского препарата не является пропагандой, если говорить про здравый смысл. Но так как речь не о здравом смысле а о современной российской правовой системе, то надо отметить, что «пропаганда» в ней это вообще некая неопределенная сущность, которые трактуется как попало, а точнее, как удобнее тем, кто трактует. Взять для примера, хотя бы, «пропаганду гомосексуализма», которая имеет не больше смысла, чем пропаганда сахорного диабета 1-ого типа, тем не менее этим понятием на полном серьезе оперируют в судебной системе.
2) Описанные препараты не являются наркотиками по УК. Но опять таки, к здравому смыслу это имеет очень посредственное отношение, так как куча запрещенных препаратов наркотиками не является, а многие тяжелые наркотики, напротив, совершенно легальными и их «пропаганда» и распространение никак не преследуется.
Где то в другом месте упоминали, что у них были статьи о влиянии каннабиноидов на аппетит и метаболизм. Оставив за скобками абсурдность обвинения в «пропаганде наркотиков» в случае когда пропаганды нет, а «наркотики» наркотиками не являются, владельцы сайта статьи послушно выпилили, но разблокировать их все равно не разблокировали.
Меня тоже эта фраза покоробила. Может в сфере мобильных телефонов дела обстоят лучше, но в целом Сони известна как производитель одних из самых закрытых, несовместимых и не соблюдающих стандарты железок. Одни многочисленные затеянные этой фирмой format wars чего стоят…
Я не думаю, что те, кто спрашивают, беспокоятся о том, что их заставят писать alert. Просто бывает, что есть технологии, к которым не хочешь приближаться по причине полной личной несовместимости. Я, например, человек очень не консервативный в выборе инструментов, с удовольствием учу новые языки, когда они подходят под задачу больше, чем то, что уже знаю, и без проблем разбираюсь в новых областях, даже если это не вписывается в формальное описание джоба. Но есть красные линии, которые я не согласен переходить не под каким видом. Например, если мне скажут, что вакансия связанна с разработкой на MFC то я не пойду туда работать, не важно сколько денег предложат. По этому если на собеседовании говорят, что придется работать со старым С++ кодом, я всегда интересуюсь не придется ли мне иметь дело с MFC. И я думаю что у многих найдется, какая-то библиотека/язык, грубо говоря, свой КОБОЛ с которой они не за какие коврижки работать не согласятся.
Без связи с конкретными рожами в думе (а все кто там сидит в большей или меньшей степени виноват в том, что происходит) все равно хочу выразить благодарность вам и с кем вы там работаете, что хоть как-то пытаетесь бороться с засилием маразма. Жаль, только, что толку от этого мало, так как даже «оппозиция» старательно следует генеральной линии партии.
Что-же хорошего в этом? Свобода информации, мать ее, вещь необходимая, а куда ведет то, что власти начинают решать какие книги какая информация годная а какая нет — мы все прекрасно знаем.
ЗЫ: Кроме претензий по фактической стороне статьи, коробит от расовых стереотипов которыми автор не стесняется клеймить все упомянутые в статье страны. Думаю не надо говорить, что такие обобщения далеки от реальной картины вещей чуть больше, чем полностью.
А нельзя ли поделиться источником, из которого автор почерпнул, что голливудские боевики финансируются из госбюджета? Поверхностное гугление по теме ничего не дало, и у меня закралось подозрение, что это голословная конспирология.
Насчет платформо-зависимого кода, естественно он всегда будет. Но стоит различать платформо-зависимый код в рамках языка, который достаточно обернуть в ifdef и/или выкинуть в отдельный модуль, и целенаправленная игра с огнём, в виде использования UB в своих целях. Можно конечно поместить такой код в отдельный файл, вырубить для него все оптимизации, написать крупным буквами «ОСТОРОЖНО, СТРЕЛЬБА В НОГУ!!! 11АДЫНАДЫН», проверять вручную сгенерированный компилятором код, но при этом надо помнить, что от любого чиха, апдейта компилятора/библиотек или настроек системы все может сломаться и вам нужно постоянно гонять regression tests на весь этот код. Если эти оптимизации того стоят, то флаг вам в руки, но что то мне подсказывает, что в большинстве случаев накладные расходы на поддержание такого кода перевесят все выгоды от него.
Вы опять возвращаетесь к предположению, что компилятор должен играть в телепата
По-моему это базовая часть профессионализма и аккуратности — писать платформо-независимый код везде где можно, даже если в данную минуту это не обязательно (но почти всегда окупается в дологосрочной перспективе), а платформо-зависимые куски заворачивать в ifdef-ы, выделять в отдельные модули, и вообще хорошо понимать, что в них происходит. Опять таки по-своему опыту могу сказать, что это никак не влияет на скорость выполнения, и почти не замедляет написание кода, не больше чем остальные принятые практики написания качественного и аккуратного (не write-only) кода.
ЗЫ: насчет «низкоуровнего» и «не портируемого в принципе» кода, в котором вы считаете, что допустимо можно закладываться на особенности железа — у меня один из больших последних проектов, это было портирование сложного embedded софта c эзотерической железки, в которой даже ОС не толком не было, на линукс/gcc. Там, правда, к счастью программисты были толковые и хотя лет 15 назад, когда это начинали писать, никто не думал про портирование — тем не менее код был по большей частью был написан качественно и портировался без проблем. Но если бы они забили и решили, что писать аккуратно/портируемо (а это таки почти синонимы, по-моему) не надо — то проект из сложного, превратился бы в кошмарный.
2) Описанные препараты не являются наркотиками по УК. Но опять таки, к здравому смыслу это имеет очень посредственное отношение, так как куча запрещенных препаратов наркотиками не является, а многие тяжелые наркотики, напротив, совершенно легальными и их «пропаганда» и распространение никак не преследуется.
Что-же хорошего в этом? Свобода информации, мать ее, вещь необходимая, а куда ведет то, что власти начинают решать
какие книгикакая информация годная а какая нет — мы все прекрасно знаем.ЗЫ: Кроме претензий по фактической стороне статьи, коробит от расовых стереотипов которыми автор не стесняется клеймить все упомянутые в статье страны. Думаю не надо говорить, что такие обобщения далеки от реальной картины вещей чуть больше, чем полностью.