Pull to refresh
11
0
Мальцев Владислав @shedward

User

Send message
А чем QtCreator/CLion/NetBeens/KDevelop/… не полноценны?
Повторяюсь, дело не в «крутости» и «открытости», как раз эти два слова это просто шелуха, более важными являются стабильность и инструменты. Открытость сама по себе не позволит вам работать быстрее, а какой ни будь sourcetree например может помочь. MacOS это не Windows + cygwin, macos это самый настоящий unix с самым настоящим bash и самой настоящей linux-like фс, но и на нее можно без проблем и открытую ноду поставить в одну команду и закрытый фотошоп.
Ну так дело не в закрытости/открытости или трушности, когда уже начинаешь серьезно работать нет времени ковыряться в системе, от нее требуется только стабильность, чтобы все работало и чтобы все нужные инструменты были, а в этом плане MacOS в большинстве случаев идеально подходит, потому что 80% инструментов за которые любят Linux системы доступны и на MacOS, плюс есть некоторые свои эксклюзивы. Т. е. как бы и консоль есть и не надо сломавшиеся зависимости в apt после обновления чинить.
Они все используют огороженный webkit внутри. Использовать какой то другой движок в iOS не получится.
Да и браки были в том же Египте и вообще существовало и существует множество различных взаимоотношений. Даже если сравнивать по продолжительности, то табу на любые негетеросексуальные отношения существует значительно меньшее количество времени чем все эти виды отношений.
delete из одного алгоритма будет некорректно работать с объектом, полученным new другого алгоритма.

Это вообще пушка, new и delete определяются для класса и если уж их переопределяют так обычно оба, если у вас есть объект то он будет использовать эти new и delete, хоть в какой функции.

Если вам так хочется использовать пакующий сборщик мусора, ради бога, вы можете спуститься вплоть до malloc'ов и alloc'ов и реализовать хоть какое угодно чудное управление памятью, можете даже переписать алокаторы для классов стандартной библиотеки, другое дело что это практически никому не нужно. В С++ используются умные указатели и RAII как самые быстрые. Гибкость С++ в этом плане именно в том что вы можете спускаться хоть до ассемблерных вставок и выбирать то что вам нужно и реализовывать это как хотите, но за это заплатите сложностью. Идеального сборщика мусора тоже не существует и при этом у вас нет альтернативы.
О, спасибо, теперь понял.
Вы считаете что аллокация (реализация new) не обязана знать, как реализуется освобождение?

Зачем ему это знать?
Сборщик мусора может не только удалить объект, но и переместить его в более подходящее место. При этом он должен скорректировать все ссылки на этот объект.

Это ваш сборщик мусора перемещает объекты, в С++ под сборщиком мусора подразумевается всего лишь автоматическое удаление, объект переместится если только ты сам ему скажешь это сделать.
Накладные расходы счетчика ссылок не надо недооценивать. Инкремент-декримент надо делать при каждом присваивании, в том числе при передачи ссылки в качестве параметра. Кроме того, при изменении счетчика велика вероятность промаха в кеше или странице виртуальной памяти.

Про накладные расходы инкремента/декремента вообще смешно, компилятор успешно превращает их в ничто по сравнению со всякими маркировками да перемещениями применимыми в сборщиках встроенных в языки, то же самое и про промахи.
Не понял вашего комментария.
В С++ сборка мусора поддерживается исключительно библиотеками а не языком, причем каждая библиотека использует свою подходящую ей методику управления временем жизни объекта. И при чем здесь вообще аллокация если сборка мусора отвечает только за удаление не используемых объектов а не их создание? Какой еще пакующий сборщик мусора? Сформулирую немного по другому в С++ сборка мусора это не отдельная сущность со своими эвристиками, решающая кому жить а кому умереть, в С++ это просто способ реализовать автоматическое удаление объектов, причем обычно эту задачу перекладывают на сами объекты. Например тот же подсчет ссылок на котором реализовано большинство shared-указателей, сам объект хранит число указателей указывающих на него, при удалении одного указателя этот счетчик уменьшается на единицу, при создании увеличивается на единицу. Как только счетчик обнулится объект уничтожает сам себя. Очень простая идея с минимальными накладными расходами а решает львиную долю проблем слежения за разделяемыми ресурсами. Примерно так выглядит сборка мусора в С++.

P.S. К слову с новым стандартом семантику перемещения (&&) поддерживают все объекты.
Вы видимо воспринимайте сборщик мусора как некую мистическую штуку предоставляемую языком, но на самом деле и подсчет ссылок и RAII и пулы объектов это все способы сборки мусора. Грубо говоря С++ предоставляет множество способов сборки мусора в отличии от Java или C#, но программист сам должен выбрать будет ли он заворачивать все в умные указатели, либо лично выделять и удалять память либо придумает какой то свой способ. Вообще С++ дает слишком много свободы, и для программиста очень важно не мотаться от одного способа к другому а выбрать какую-то одну идеологию либо принять ту которой следует фреймворк в котором он работает и стараться следовать ей, да это требует дисциплины, но мне кажется это не такая высокая цена за высочайшую скорость и гибкость.
Вообще да, большинство фич с++11 не для общего пользования а для конкретных задач, самые распространенные (лямбды, авто) стабильно работают, даже regex уже запилен, осталась только минимальная поддержка сборщика мусора, а вот с msvc особенно обидно за constexpr но основная часть (по впечатлением от тех кто с ним работал) уже работает.
Ну если насчет меня то я сейчас активно тыкаю Racket для себя (точнее благодаря sicp)
В ответ могу сказать что «Мсье недоучил старое».
Про С++11 правильнее говорить не о стабильности а о поддержке его фич компиляторами. В этом плане gcc и clang поддерживают практически все, а вот msvc похуже.
Даже просто писать код на хаскеле не так уж и проще в виду его функциональной парадигмы, к которой нужно еще привыкнуть. Какой вообще меркой можно сравнить сложность написания высокопроизводительного кода на хаскеле и сложность писать безопасно и высокоуровнево на С++.
Я имел ввиду что хоронят С++ как раз те кто «не захотели», и ведь особо то сложностей нет, используй коллекции да умные указатели, либо готовые фреймворки со своим сборщиком мусора. Что проще, прочитать наконец Страуструпа или учить совершенно другую парадигму а потом еще и заморочки хаскеля которые надо учитывать для высокой производительности?
Вот это вот ваше «если захотеть». На С++ вон тоже можно вполне писать высокоуровнево и безопасно без заморочек с памятью «если захотеть» (Qt тот же).
Видимо это из разряда «У нас самый большой архив ДП в стране, эта коллекция постоянно пополняется» у ЛБИ.
Если кто то вас априори не интересует, то почему бы вам не сказать об этом сразу после собеседывания? Хотя бы написать письмо на email дело 2-3 минут, это же сущие проценты от того времени которое потрачено на организацию и проведение собеседования, даже какое нибуть «Простите но вы нам не подходите» отосланное автоматом по списку сэкономит время и нервы человеку.
В соответствии со ст. 25 Закона РФ «Об авторском праве и смежных правах», лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без получения разрешения автора или иного обладателя исключительных прав на использование произведения и без выплаты дополнительного вознаграждения внести в программу для ЭВМ или базу данных изменения, осуществляемые исключительно в целях ее функционирования на технических средствах пользователя, осуществлять любые действия, связанные с функционированием программы для ЭВМ или базы данных в соответствии с ее назначением, а также исправление явных ошибок, если иное не предусмотрено договором с автором.

В eula есть пункт:
4. LIMITATIONS ON REVERSE ENGINEERING, DECOMPILATION, AND
DISASSEMBLY. You may not reverse engineer, decompile, or disassemble
the Software, except and only to the extent that such activity is
expressly permitted by applicable law notwithstanding this limitation.

Можно ли посчитать то что зделал автор реверс инжинирингом, декомпиляцией или дизасемблированием?

Ну и тут с одной стороны «such activity is
expressly permitted by applicable law notwithstanding this limitation» с другой «если иное не предусмотрено договором с автором.» кто кому уступает в этом случае?
В хроме 31.0.1650.48 beta из под убунты тоже.

Information

Rating
Does not participate
Location
Томск, Томская обл., Россия
Date of birth
Registered
Activity