C#

C#

Подписчиков: 3     Сообщений: 37     Рейтинг постов: 396.3

it-юмор geek C# python c++ C 

it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,C#,python,c++,C
Развернуть

Отличный комментарий!

И в сторонке ждёт он!
anarh6 anarh601.12.201821:39ссылка
+30.0

it-юмор geek java C# 

it's the most HIDEOUS THING I've EVER SEEN MUM, THERE'S A MONSTER UNDER m BED!,it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,java,C#
Развернуть

C# программирование До диез 

Может кто-нибудь помочь с С#?,интернет,C#,программирование,До диез
Развернуть

программирование it c++ C# реактор образовательный geek 

Реактор образовательный: поиск ошибок в коде на раннем этапе

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


$16,000
Процент
ошибок
% Дефектов, найденных на этом этапе
% Дефектов, найденных на этом этапе
$ Стоимость исправления дефекта на этом этапе
Написание ЦпК-тест Функциональный Системный После релиза
кода
тест
тест,программирование,it,c++,C#,реактор образовательный,geek,Прикольные гаджеты.


Чем раньше ошибка выявлена, тем дешевле её исправление. Именно поэтому, например, появилась методология TDD (разработка через тестирование), в которой тесты пишутся до реализации очередной функции.


Ещё одна методология, позволяющая выявить ошибку на раннем этапе, это обзор кода. Грубо говоря, после написания кода программист показывает его коллеге, и тот его проверяет. Это, конечно, "деревенский подход". Полноценный обзор кода — это целый процесс, который хорошо описан, например, в книге С. Макконнелла "Совершенный код". Кстати, каждый, кто называет себя хорошим программистом, просто обязан почитать эту книгу.


И вот методология обзора кода стала подводить. Вернее, методология работает по-прежнему хорошо, но становится всё более дорогой. Собственно, вспомните, когда последний раз ваши свежие функции честно прочитала группа из четырёх программистов, выдала рекомендации, а потом собралась ещё раз, чтобы посмотреть измененный код? А было ли вообще хоть раз такое?


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


Размер проекта (число строк кода)
менее 2К 2К-16К 16К-64К 64К-512К
512К и более
Типичная плотность ошибок
0-25 ошибок на 1000 строк кода 0-40 ошибок на 1000 строк кода 0.5 - 50 ошибок на 1000 строк кода 2-70 ошибок на 1000 строк кода 4 - 100 ошибок на 1000 строк


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

Количество строк кода в первом компиляторе C++ (Cfront 1.0): 85 KLOC. Количество строк кода в современном компиляторе Clang (без учёта LLVM): 1700 KLOC.

И вот здесь на помощь пришел статический анализ кода. Идея в том, что обзор кода выполняет не человек, а программа. Да, программа проверит код хуже, чем 4 пары внимательных глаз. Только вот нет этих глаз. Код некому и некогда читать. Поэтому использование статических анализаторов - очень хорошая альтернатива.


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


Приведу пример для С++ программистов. Пусть мы имеем цикл, организованный с помощью итераторов. Если в нём изменить контейнер, то итераторы станут невалидными. Это является ошибкой: возникает неопределённое поведение программы. Про это написано в книгах по программированию. Новый стандарт языка C++ подарил программистам range-based for loop. Это менее знакомая конструкция, и, как результат, велик шанс, что будет написан вот такой код:


using Strings = std::vector<std::string>;
int mainEntryClickhousePerformanceTest(int argc, char ** argv)
{
Strings input_files;
for (const String filename : input_files)
{
FS::path file(filename);
if (!FS::exists(file))
throw DB: : Exception(....);
if (FS::is_directory(file) )
{


Так делать нельзя. Для реализации 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 секунд. Поэтому авторы анализатора даже создали ресурс для троллинга таких товарищей.


This error was found in the Qt project by PVS-Studio C/C++ static code analyzer.
5 of 15 questions
QQuickJSContext2DPrototype::method_getImageData(....)
{
qreal x = ctx->callData->args[0].toNumber(); qreal y = ctx->callData->args[1].toNumber(); qreal w = ctx->callData->args[2].toNumber();


Критикам предлагается найти ошибки (которые находит PVS-Studio) не за 5, а аж за целых 60 секунд. Попробовать себя можно: https://habrahabr.ru/company/pvs-studio/blog/237219/. Предупреждаю сразу, что тест на телефонах работает плохо и рассчитан на наличие компьютерной мышки.


Статический анализ не конкурирует с другими методами борьбы с ошибками, а дополняет их. Отчёт инструментов статического анализа напоминает предупреждения компилятора, но реализован на более качественном уровне. И именно за эту мощь они берут деньги. Аналогия: есть Paint и Gimp, но Photoshop и CorelDRAW очень востребованы. Специализированные утилиты не только более глубоко анализируют код, но и предоставляют массу вспомогательных механизмов для работы с предупреждениями.


программирование,it,c++,C#,реактор образовательный,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор


Желающим узнать больше, запрос "статический анализ кода" в Google путь покажет.

Развернуть

it программирование C# c++ holywar 

C# is way better than C++ Tiy cross-platform development,it,программирование,C#,c++,holywar
Развернуть

C# unity программирование javascript 

Мне нравится 24	4
Михаил ш^шт
Когда спрашивают как в ипйуЗР вызвать функцию из иБ при помощи С#
55 минут назад Ответить	V 13,C#,unity,программирование,javascript
Развернуть

Отличный комментарий!

какой то
ПРОФЕССИОНАЛЬНЫЙ
■ЙНЁннй!
longwinter longwinter 15.03.201717:57 ссылка
+30.3

python java javascript много картинок c++ C Rust (game) Go php хуманизация ...программирование языки программирования Fortran erlang haskell lisp assembly Elixir lua matlab brainfuck ruby R C# 

языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization
^i|| \o\al,языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization
\_^\s'? $\лС\ 3,языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization
Pyrt-ioiO (A'y £ос<ЛсшМ Ik ^ I,языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

"Зач/А,языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

 \' VYk 1’Сь\г>Л»Са\\'у f'jrvcTiOOft I •,языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

ßüAWfock leHc^trscxWi. C 0<v\,языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization


языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization


"Rubчу er Сомрапюп "R <*.» W ),языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

E-äUVNG»,языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

6ш|й ^ 'г Точзь'Р» Ряо«л All ^У •р çlo Le^ -СИ рк) s,языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization

^ 11х?е J _OMier -f0>n a L,4 / ------- ~£>л»Ч Ык «A; It Ы-i^ you cou'J cL«6,языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization
языки программирования,программирование,python,R,java,javascript,brainfuck,haskell,много картинок,ruby,c++,C,C#,lua,lisp,matlab,Fortran,Rust (game),Go,erlang,Elixir,assembly,php,хуманизация,humanization


Развернуть

C# книга программирование разработка it песочница Россия 

Программирование может нанести вред здоровью ребенка!

Открываем книгу по программированию
MICROSOFT. NET FRAMEWORK 4.5
НА ЯЗЫКЕ С #
Чиатем аннотацию
Рихтер Дж.
P.5.5 CLR via С#. 11|и>г|)амми|мшл1111с на плат(|юр.мс Microsoft .NKT Framework 4.5 на я лыке С'#. 1-е н:1Д. — СПб.: Питер. 2013. — 896 е.: ил. — (Серия « Мастер-класс»).
ISBN' 47l»
Развернуть

Комиксы javascritp C C# java lisp Go pascal php песочница ...как спасти принцессу сори перевода нет Git The Princess 

THEl
How TO SAVE THE PRINCESS USINQ 8 PROGRAMMING LANGUAGES
by 0 toggl
Goon ScjUAD
YOU SPEND HOURS PICKING LIBRARIES, SETTING UP NODE R BUILDING A FRAMEWORK FOR THE CASTLE.
BY THE TIME You're finished with THE FRAMEWORK, THE FORT HAS been abandoned and the PRINCESS HAS MOVED TO another castle

С английским не очень, так что сори что без перевода.

Развернуть

ASM Комиксы C# программист программирование язык программирования 

Программист это
V
л
It’s the Deadline, I will survive! C
L
... тот кто знает C# так же как и пианист знает эту ноту.,ASM,ASM Comics,ASM Комиксы,Смешные комиксы,веб-комиксы с юмором и их переводы,C#,программист,программирование,язык программирования
Развернуть
В этом разделе мы собираем самые смешные приколы (комиксы и картинки) по теме C# (+37 картинок, рейтинг 396.3 - C#)