А то что он назвал себя ублюдком не дает повода называть так других. Из того что он ублюдок не следует что со всеми надо так обращаться.
Ну как бе мы всем умрем, ога, молодец. Тока к чему это? Типа очевидно? Ан нет — всем пох как он обращается с людьми. Желаю тебе и им такого начальника или заказчика — эй, идиот, оно не работает. Удачи.
А то что он назвал себя ублюдком не дает повода называть так других. Из того что он ублюдок не следует что со всеми надо так обращаться.
Ну как бе мы всем умрем, ога, молодец. Тока к чему это? Типа очевидно? Ан нет — всем пох как он обращается с людьми. Желаю тебе и им такого начальника или заказчика — эй, идиот, оно не работает. Удачи.
Чисто по человечески Торвальдс после такого низкопробен. Называть человека идиотом за его ошибку и придавать огласке — говнюк он и точка. Не впервый раз его «экспрессионизм» обсасывается, слишком часто он себе такое позволяет. С++ — отстой, OpenSUSE тоже идиоты делали. Нимб ему там не мешает? ПМС да и только.
А лично мне очень не нравиться формат когда я должен думать и говорить одновременно как они хотят. У меня так не получается. Либо думать, либо говорить. Я молча подумаю, потом все расскажу.
Как фану функциональщины и OCaml в частости, хотелось бы подробнее про что-то! Хотя бы хеллоу ворлд и простейшее заполненение/отправка формы, обращение к БД.
Неверная аналогия. В корне. ОРФОГРАФИЮ проверяет компилятор. А вот статический анализатор пытается проверить СМЫСЛ (семантику текста). То есть как бы все по правилам написано, но смысла нет или предложение не верно. Ведь предложение «Я вижу летучего зайца» безупречно орфографически и построено по правилам, но лишено смысла.
Проверить орфографию — не проблема. А проверить осмысленность кода (верифицировать) что вы пытаетесь делать в своей PVS — невыполнимая задача. Нужно сначала иметь язык, верификация которого будет проще на порядки чем в C++.
Я вам могу привести осмысленный код, который PVS считает неверным.
Я вижу смысл делать тул, который по функции, анализируя ее, будет пытаться выдавать набор Unit Test-ов и тестовых данных для него, пытаясь скажем, сделать максимальным покрытие ветвлений и проверять то что ей кажется странным набором тестов.
Более сложный вариант — как препроцессор, который бы как-то модифицировал код, объектник или что-то еще, вставляя проверки в разные подозрительные места. Это как автоматические ассерты.
Я считаю, что все статические анализаторы для C++ просто бесполезная трата времени и иллюзия качества кода. Было есть и будет, что качество C++ кода определяется образованием, опытом, талантом разработчика. Эти примеры — ни о чем не говорят, они надуманы. Более того реальные C++ проблемы вообще даже человеку отследить трудно статически. И прежде всего, виновато в этом ручное управление временем жизни объектов — кто-то использует указатель на объект, его грохают в другом месте, в первом обращаются и привет. Overflow неплохо отлавливают сейчас — buffer security check, проверка при free (это про Visual С++), а еще инструменты как Microsoft Application Verifier. Проблема в том, что для статического определения корректности надо знать СЕМАНИТКУ метода, а определение этого в общем случае в C++ невозможно.
Вообще, неблагодарное это дело на такие темы писать:) Тут мне кажется надо лио об одной из типов коллекций на одной платформе говорить, либо книгу писать.
Из добрых обуждений, а не критики ради (чтоб статья была точнее).
Про вектор (vector): insert_after: O(N), если вставляется последний элемент, то время может быть O(1) — потому обычно пишут Amort. O(1).
Совершенная неправда! Amort. O(N). Амортизированное время добавления в конец — действительно, O(1). Отсылаю к видеолекциям MIT:)
Если на пальцах, то при insert_after вам каждый раз(!) необходимо копировать часть массива до элемента, после которого вставляете. А при добавлении в конец — только когда нет свободного места.
Ну автор… Ну нет в C++ пространста имен stl, а есть std! std::vector, std::map. Помарка, а впечатление смазалось.
А вообще, на есть лекции MIT по теории алгоритмов (курс 6.046J), первая лекция к примеру — на youtube. Сам Лезерсон читает и Эрик Демейн (Erik Demaine). Там весь курс.
Ну как бе мы всем умрем, ога, молодец. Тока к чему это? Типа очевидно? Ан нет — всем пох как он обращается с людьми. Желаю тебе и им такого начальника или заказчика — эй, идиот, оно не работает. Удачи.
Ну как бе мы всем умрем, ога, молодец. Тока к чему это? Типа очевидно? Ан нет — всем пох как он обращается с людьми. Желаю тебе и им такого начальника или заказчика — эй, идиот, оно не работает. Удачи.
Проверить орфографию — не проблема. А проверить осмысленность кода (верифицировать) что вы пытаетесь делать в своей PVS — невыполнимая задача. Нужно сначала иметь язык, верификация которого будет проще на порядки чем в C++.
Я вам могу привести осмысленный код, который PVS считает неверным.
Более сложный вариант — как препроцессор, который бы как-то модифицировал код, объектник или что-то еще, вставляя проверки в разные подозрительные места. Это как автоматические ассерты.
Про вектор (vector): insert_after: O(N), если вставляется последний элемент, то время может быть O(1) — потому обычно пишут Amort. O(1).
Совершенная неправда! Amort. O(N). Амортизированное время добавления в конец — действительно, O(1). Отсылаю к видеолекциям MIT:)
Если на пальцах, то при insert_after вам каждый раз(!) необходимо копировать часть массива до элемента, после которого вставляете. А при добавлении в конец — только когда нет свободного места.
А вообще, на есть лекции MIT по теории алгоритмов (курс 6.046J), первая лекция к примеру — на youtube. Сам Лезерсон читает и Эрик Демейн (Erik Demaine). Там весь курс.