реактор образовательный
Подписчиков: 543 Сообщений: 927 Рейтинг постов: 10,979.1программирование it c++ C# реактор образовательный geek
Реактор образовательный: поиск ошибок в коде на раннем этапе
Каждый программист знает об отладчике, системе контроля версий или, например, юнит-тестах. Но далеко не все программисты знакомы с методологией статического анализа кода. А тем временем, эта технология становится неотъемлемой частью цикла разработки программ. Предлагаю небольшой ликбез для всех, кто интересуется современными тенденциями разработки.
Чем раньше ошибка выявлена, тем дешевле её исправление. Именно поэтому, например, появилась методология TDD (разработка через тестирование), в которой тесты пишутся до реализации очередной функции.
Ещё одна методология, позволяющая выявить ошибку на раннем этапе, это обзор кода. Грубо говоря, после написания кода программист показывает его коллеге, и тот его проверяет. Это, конечно, "деревенский подход". Полноценный обзор кода — это целый процесс, который хорошо описан, например, в книге С. Макконнелла "Совершенный код". Кстати, каждый, кто называет себя хорошим программистом, просто обязан почитать эту книгу.
И вот методология обзора кода стала подводить. Вернее, методология работает по-прежнему хорошо, но становится всё более дорогой. Собственно, вспомните, когда последний раз ваши свежие функции честно прочитала группа из четырёх программистов, выдала рекомендации, а потом собралась ещё раз, чтобы посмотреть измененный код? А было ли вообще хоть раз такое?
Причина дороговизны в росте размера программного кода и экспоненциальном росте сложности его анализа человеком. Дело в том, что с ростом проекта сложность и количество ошибок растёт нелинейно.
20-30 лет назад можно было взять и проверять весь код на обзорах, а сейчас это неприемлемо сложно и дорого. Просто, для пояснения, приведу два числа:
Количество строк кода в первом компиляторе C++ (Cfront 1.0): 85 KLOC. Количество строк кода в современном компиляторе Clang (без учёта LLVM): 1700 KLOC.И вот здесь на помощь пришел статический анализ кода. Идея в том, что обзор кода выполняет не человек, а программа. Да, программа проверит код хуже, чем 4 пары внимательных глаз. Только вот нет этих глаз. Код некому и некогда читать. Поэтому использование статических анализаторов - очень хорошая альтернатива.
Да, многие ошибки статические анализаторы не находят. Это сложные экспертные системы, но не искусственный интеллект. Зато они не устают, у них всегда есть время проверить ваш код. Более того, в них закладывается огромное количество знаний об ошибочных паттернах, и они способны выявить ошибку, о существовании которой программист может не знать. Так что иногда статический анализ даже превосходит разработчика.
Приведу пример для С++ программистов. Пусть мы имеем цикл, организованный с помощью итераторов. Если в нём изменить контейнер, то итераторы станут невалидными. Это является ошибкой: возникает неопределённое поведение программы. Про это написано в книгах по программированию. Новый стандарт языка C++ подарил программистам range-based for loop. Это менее знакомая конструкция, и, как результат, велик шанс, что будет написан вот такой код:
Так делать нельзя. Для реализации range-based for loop компилятор использует всё те же итераторы. Только они скрыты от нашего взгляда. И после удаления элементов из контейнера итераторы становятся невалидными.
Статический анализатор кода знает о таком паттерне ошибки и выявляет его. Приведенный выше фрагмент кода был выявлен с помощью анализатора PVS-Studio в коде СУБД ClickHouse, которую разрабатывает компания Яндекс для решения задач Яндекс.Метрики. Подробности можно почитать в статье: https://habrahabr.ru/company/pvs-studio/blog/337182/
Существует множество статических анализаторов кода для различных языков программирования. Google поможет найти и познакомиться с ними. Я предлагаю обратить внимание на популярный на Хабре инструмент — PVS-Studio. Это мощный статический анализатор для поиска ошибок и потенциальных уязвимостей в коде на языке C, C++, C#. Работает в Windows и Linux. Платный, но есть варианты бесплатного лицензирования.
Инструмент хорошо ищет разыменования нулевого указателя, неопределённое поведение, 64-битные ошибки и так далее. Но особенно он хорош при поиске различных опечаток и неудачного copy-paste. Про такие ошибки обычно говорят, что их можно найти за 5 секунд. Поэтому авторы анализатора даже создали ресурс для троллинга таких товарищей.
Критикам предлагается найти ошибки (которые находит PVS-Studio) не за 5, а аж за целых 60 секунд. Попробовать себя можно: https://habrahabr.ru/company/pvs-studio/blog/237219/. Предупреждаю сразу, что тест на телефонах работает плохо и рассчитан на наличие компьютерной мышки.
Статический анализ не конкурирует с другими методами борьбы с ошибками, а дополняет их. Отчёт инструментов статического анализа напоминает предупреждения компилятора, но реализован на более качественном уровне. И именно за эту мощь они берут деньги. Аналогия: есть Paint и Gimp, но Photoshop и CorelDRAW очень востребованы. Специализированные утилиты не только более глубоко анализируют код, но и предоставляют массу вспомогательных механизмов для работы с предупреждениями.
Желающим узнать больше, запрос "статический анализ кода" в Google путь покажет.
философия Софизмы Д/з универ люблю учиться реактор образовательный песочница
Нам тут учитель по философии кинул список софизмов, и задал найти и привести примеры их использования в повседневной жизни.Так понравились примеры, что не смог не выложить сюда)
P.S. Если кто может придумать классные примеры, то буду очень благодарен.
P.P.S. Если напортачил с тегами или баян, прошу не бить слишком сильно.
фотошоп мастер гмо TrashSmash реактор образовательный
Печалит, что его стиль подачи почему-то не нравится моим друзьям, и они такие: ой, он мне не нравится, так что я не буду просвещаться полезной инфой, и идут смотреть тупые видосики. Но надеюсь, что на Реакторе таких будет не много. Видео действительно интересное.
geek Роскомнадзор реактор образовательный
(и наебал нужных и не очень запятых, так что вот: ",,,,,,,,," - поставьте сами)
папуасы племя фестиваль длиннопост Новая Гвинея реактор образовательный боевая раскраска
Фестиваль племен Синг-Синг.
Папуа - Новая Гвинея - государство в Океании, занимающее восточную часть острова Новая Гвинея, архипелаг Бисмарка и различные мелкие острова. Население страны - 7 миллионов человек. Название "Папуа" происходит от малайского слова "папува", что в переводе на русский язык означает "курчавый". Такое название острову дал его европейский первооткрыватель португалец Жоржи ди Менезеш в 1526 году, отметив форму волос местных жителей. В 1545 году остров посетил испанец Иньиго Ортис де Ретес и дал ему название "Новая Гвинея", так как, по его мнению, местные жители были похожи на туземцев Гвинеи в Африке.
Люди впервые заселили территорию Папуа - Новой Гвинеи 60-45 тысяч лет назад с территории юго-восточной Азии, преодолев несколько морских проливов. В то время уровень моря был ниже, и остров составлял одно целое с Австралией. Потомки первого населения острова, ныне составляющие большинство населения Папуа - Новой Гвинеи, называются папуасами.
Около трех тысяч лет назад на остров переселилась вторая волна выходцев из Азии, относящиеся, как и папуасы, к австралоидной расе (к ней же относятся австралийские аборигены), но говорящие на австронезийских языках. Часто австронезийское население острова также называют папуасами из-за внешнего сходства. При этом не ясна грань, которая отделает австронезийцев от папуасов. Возможно, что прибывшие на остров австронезийцы растворились в местном папуасском населении, передав им свои языки и культуру. Сейчас в Папуа - Новой Гвинее насчитывается около 7 тысяч племен и народностей, говорящих на более чем 800 языках (из которых 650 папуасские, а остальные - австронезийские). На долю Папуа - Новой Гвинеи приходится 12 процентов языков мира, это самый разнообразный в языковом отношении регион нашей планеты.
В затерянных племенах, расположенных вдали от цивилизации, у людей бывает слишком мало праздничных дней или интересных событий, поэтому они придумывают красочные мероприятия в виде различных фестивалей. Некоторые из них бывают очень жестокими, с обилием драк и крови.
А вот в такой затерянной стране как Папуа-Новая Гвинея различные племена развлекаются более весело, с песнями и зажигательными танцами, демонстрацией уникальных нарядов и древнейших ритуалов, тем самым ярко выражая всю свою самобытность.
Среди самих папуасов подобные этнические шоу, которые имеют вид фестивалей, именуется довольно интересным выражением «Синг-Синг». Этот ритуал не новый, уходит он своими корнями в очень глубокую древность.
Еще известный русский ученый и путешественник Николай Миклухо-Маклай столкнулся с этим праздником, когда прибыл в эту страну в XIX веке. Этот ученый жил в данной стране 15 месяцев, поэтому воочию увидел и описал этот фестиваль, который с тех времен совершенно не изменился. Изменился только повод, благодаря которому устраиваются подобные празднества.
Раньше Синг-Синг устраивали в двух случаях: либо в честь победы над противником (обычно это было соседнее племя), либо в честь перемирия (и это опять же было племя, расположенное рядом).
Сегодня ситуация во многом изменилась, поэтому фестиваль Синг-Синг стал традиционным и его приурочили к самому главному празднику этого государства — ко Дню Независимости, которую Папуа-Новая Гвинея получила в 1975 году.
Это самое большое мероприятие, которое проходит в данной стране 16 сентября; на этот фестиваль ежегодно собираются многочисленные представители племен, причем со всех даже дальних уголков страны.
Самое основное действо, которое происходит на этом фестивале – это хоровые песни и необузданные танцы. И папуасы не просто поют и танцуют, но и устраивают межплеменные конкурсы на лучшее исполнение песни во время танца. При этом проходит конкурс на самый красивый наряд и прическу.
Хотя подобные фестивали на День Независимости проходят по разным уголкам страны, но самое основное событие, и причем самое масштабное, проходит в районе города Горока и называется Goroka Show.
Обычно на такой фестиваль съезжаются представители порядка 100 племен со всех уголков страны, чтобы с гордостью продемонстрировать свою самобытную культуру.
При этом они облачаются в удивительные наряды, которые создаются из подручных средств: глины, веревочек, цветов, пальмовых листьев, перьев, костей животных и клыков кабанов, шкуры кус-куса и древесного кенгуру, разноцветных красок. Все наряды уникальные, так как каждое племя папуасов стремится оказаться в центре внимания.
Особый интерес вызывают представители племени Сули Мули и Рапако, выигрышно выделяющиеся среди собравшихся своими причудливыми прическами.
А представители племени Омо Масалай, которые приезжают на фестиваль с местечка под названием Симбу, выделяются тем, что разрисовывают своих воинов на манер скелетов. Таким образом они внушают страх своим конкурентам.
Племя Асаро мудмен всю жизнь занимается разведением свиней, поэтому в их костюмах обязательно присутствует образ этих животных. Представители племени выступают на фестивале в масках духов, которые изготавливаются из белой глины. Все танцы на этом шоу делятся на боевые и традиционные.
Хотя на лицах и телах большинства папуасов имеется боевая раскраска, фестиваль проходит мирно. Он привлекает к себе внимание и множества туристов, которые стараются взять тур в эту страну на сентябрь месяц, чтобы побывать на фестивале Синг-Синг. Но если планы меняются, то можно приехать сюда и на месяц раньше, так как в третий уикенд августа в провинции Маунт-Хаген проходит с не менее грандиозным размахом праздник Mount Hagen Cultural Show.
Этнические фестивали и межплеменные съезды Синг-Синг были учреждены правительством Папуа-Новой Гвинеи, чтобы наконец-то примирить враждующие племена между собой и сплотить их в единую нацию. И это удалось сделать, причем при помощи такого оригинального способа. В течение года подобные племенные сходы проводятся в разных частях страны, так что туристы могут побывать на одном из них в разные месяцы.
Я уже делал пост о Грязевых людях Асаро мудмен ( http://joyreactor.cc/post/3123203 ) и если тема папуасов будет интересна, то я сделаю посты и по другим племенам.