May. 14th, 2024

avva: (Default)
Потрясающая - длинная, но очень интересная - статья в Нью-Йоркере об истории Люси Летби, медсестры в Англии, которую присудили к пожизненному заключению прошлым летом за убийство недоношенных младенцев.

Читается как длинный j'accuse британской полиции и судебной системе (и прессе заодно). Потрясает, насколько слабый уровень доказательств вины Летби - если вообще можно говорить о доказательствах - и насколько односторонним было освещение процесса.

В принципе возможно, конечно, что эта статья в свою очередь тенденциозна и односторонна, и я видел несколько утверждений такого рода от британских читателей в соцсетях, но на конкретные неверные факты или важные неуказанные обстоятельства никто пока не указал.

Напоминает случай Люсии де Берк, голландской медсестры, тоже приговоренной к пожизненному заключению за убийство младенцев. Только это было в 2003-м году, а через пять лет ее выпустили, когда стало ясно, что статистический аргумент был неграмотным, а никаких других прямых свидетельств изначально не было. Кстати, Ричард Гилл, британский математик который сыграл ключевую роль в пересмотре дела де Берк, высказал сомнение и в виновности Люси Летби, как я только что прочитал на его вики-странице.
avva: (Default)


Я читаю сейчас старую статью Дональда Кнута про GO TO, и неожиданно наткнулся в ней на... загадку для читателей. Кнут обсуждает разные способы писать код, не используя go to, на примере следующей простой задачи: считать количество появлений каждого числа с помощью линейного поиска.

Предполагается, что у нас уже есть массивы A и B, которые проиндексированы от 1 до M. Все числа, что мы видели до сих пор, записаны в A, а в B - число раз, что мы видели каждое число. Теперь нам дают новое число X, и мы должны либо найти, где оно уже есть в A - простым проходом по всему массиву - и увеличить счетчик в B, или добавить его в конец A.

Самый привычный для Кнута код делает это с помощью goto, но Кнут обсуждает несколько способов сделать это с помощью тогда нового и модного структурного программирования без goto, и разные достоинства и недостатки этих способов. В частности, он приводит две версии на PL/1, см. картинку, и говорит следующее: "вариант (a) лучше, но он содержит пустой цикл - в теле цикла ничего не происходит; более естественным кажется вариант (b), и обычно люди находят именно его. Однако в (b) есть серьезный баг, который не сразу заметили. Можете ли вы найти его? Ответ на странице такой-то."

Попробуйте и вы найти баг в варианте (b). Он связан чисто с логикой кода, не с ошибками переполнения памяти, выходом за пределы массива, или чего-то такого. В качестве подсказки в комментариях я приведу эквивалентный этому коду отрывок на C (в котором будет тот же баг). Но тогда найти его намного легче, предупреждаю сразу.

June 2025

S M T W T F S
123 4 5 6 7
8 910 11 12 13 14
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 15th, 2025 09:16 am
Powered by Dreamwidth Studios
OSZAR »