Кстати, еще про магическое мышление

Три с половиной совершенно несвязанных между собой эпизода — от которых будет смеяться любой юрист.

Для начала — все про те же персональные данные. «Околооборонное» предприятие решило сделать современную проходную, разогнать бабок из ВОХРы и поставить турникеты с электронными карточками и проверкой отпечатков пальцев. Перед запуском системы решили собрать необходимую для этого макулатуру — в частности, каждый из сотрудников предприятия подписал «согласие на обработку биометрических персональных данных», которое включало в себя вагон разрешений, вплоть до «трансграничной передачи». Напомню, что предприятие околооборонное, со всей полагающейся паранойей.

Схожую историю наблюдал с одним сколковским стартапом, которому при найме сотрудников захотелось подписать с ними NDA. Текст бумажки о «неразглашении конфиденциальных данных», больше подходящий ликероводочному заводу, нашли то ли в каком-то «справочнике бухгалтера», то ли вообще на каком-то левом интернетовском сайте. Про ликероводочный завод — не шутка, к конфиденциальной информации были отнесены «купажные листы». Надо ли говорить, что, допустим, исходного кода программ в этом NDA не было? Да, специально для [info]sish — остальных телодвижений, предусмотренных 98-ФЗ, тоже не предприняли.

Из более приземленного — вы когда-нибудь покупали автомобиль «с рук», без участия в этом автосалонов? Видели у регистрационного подразделений ГИБДД ряд ларьков с вывеской «оформление ДКП»? Почему-то сограждане верят, что оформленный ИП Ивановым П. С. за 500 рублей «договор» (с проставлением печати этого самого ИП Иванова П. С. в ПТСе) имеет какую-то большую юридическую силу, чем составленный продавцом и покупателем самостоятельно. Для большего счастья граждане вписывают в эту бумажку волшебную сумму 250 000 рублей — чтобы налоги не платить.

В общем, любые правовые отношения у нас сводятся к маханию руками с криками «Ахалай-махалай».

Какой качественный наброс

Довольно забавную ситуацию можно было наблюдать в этот понедельник — Партия прямой демократии опубликовала на хабре почти безобидный текст:

https://habr.com/ru/company/analogbytes/blog/503552/

Ну казалось бы — никаких «наездов», просто процитирован текст некоего документа, с которым предлагается согласиться на одном из официальных сайтов г. Москвы, и приведена инструкция, как с этим жить, исходя из требований 152-ФЗ. Но нет, почему-то материал получил внезапный всплеск интереса (не скрою, под соусом «мэрия Москвы будет 10 лет слать вам рекламу» можно и не такое устроить), был пропиарен даже Навальным (что особенно смешно), и где-то ближе к вечеру по разного рода телеграм-каналам начали распространяться «опровержения». «Гениальный» шаг со стороны связанных с ДИТом пиарщиков, увеличивший посещаемость, пожалуй, в разы.

В понедельник, в 9:00 свой комментарий дал глава ДИПРа Фурсин, разумеется, в духе «все в соответствии с законом»:

https://tass.ru/moskva/8553717

Собственно, с этим никто и не спорит — да, все в соответствии с законом, пользователь сам предоставляет свои персональные данные и осознанно ставит галочку. Чуть позже, вероятно, проснулись более осознающие ситуацию пиарщики и посоветовали не разгонять тему, сама вскоре потухнет (ситуация «глава московского департамента комментирует наброс анонимусов на хабре» — это вообще что-то невообразимое) — но «выстрелили» еще пара телеграм-каналов в духе «а мне нечего скрывать, мой телефон и так в открытом доступе».

Что показывает вся эта история? Ни чиновники, ни граждане, ни авторы телеграм-каналов (впрочем, последним простительно) так и не осознали принятый 14 лет назад 152-ФЗ. Точнее, осознали — но на уровне того, что в лесу живет бабайка, и если перед походом в лес не сказать волшебное заклинание — бабайка подскочит и больно укусит за жопу. В роли бабайки выступает Роскомнадзор (да, он следит в том числе и за соблюдением 152-ФЗ), в роли «укусит за жопу» — статья 13.11 КоАП. Волшебное заклинание же — текст «согласия на обработку персональных данных», которое можно найти в интернете (а уж там-то в «типовом документе» чего только не понаписали). Что ж, развитием магического сознания удовлетворен. Скоро начнут мазать лоб кровью черного петуха и ритуально приносить Роскомнадзору в жертву девственниц, это вполне логичный следующий шаг.

Второе поколение

Вот еще — хочу сознаться, что зря я гнобил TU D-stadt, и даже там на факультете информатики можно научиться чему-то полезному, если вам повезет, конечно. Дело в том, что вводный курс по информатике, с программированием на Java, читают два разных преподавателя — раньше в четные годы это был Prof. Dr. Johannes Furnkranz (ссылки на его курс можно найти у меня), сейчас курс на основе сделанного Furnkranz’ем читает более молодой преподаватель, Prof. Dr. Christian Reuter. А если повезет, и вы поступите на факультет информатики в нечетный год — то курс с формально тем же содержанием читает Prof. Dr. Karsten Weihe (в отличие от предыдущих, заслуживший страничку в немецкой википедии) — и это совершенно другое дело!

Нет, формально оба преподавателя читают примерно одно и то же — но возьмем тот же пример с определением, является ли строка палиндромом. Самостоятельная ценность у этой задачи близка к нулю — но она прекрасно демонстрирует, как писать нетривиальные циклы и обращаться к элементам массива по индексу (да еще и с возможностью «попасть» на off-by-one error). В лекциях и домашних заданиях курса господина Weihe прослеживается какое-то понимание того, зачем нужны все эти задания, и что за ними стоит на самом деле; если же посмотреть на «альтернативный» курс — то иногда возникает впечатление, что автор заданий, типа того же палиндрома, держал перед глазами список «типовых задач», да так и не понял его.

Что же такое происходит, и чего нам ждать в будущем? У меня есть на этот счет довольно злобная теория — дело в том, что со сменой поколений в преподавании computer science исчезает и понимание сути материала. Вот возьмем какую-нибудь не менее «популярную» учебную задачку — не надоевшие всем палиндромы, а, скажем, структуры данных. Реализовывали ли вы стек на базе массива? А на базе списка? Пожалуй, если дочитали до этого места — для вас это не пустые слова. Предположим, реализацию стека на базе массива вы увидите и так (собственно, «стек вызовов» так и делается в большинстве более-менее адекватных систем) — но зачем делать это на базе списка? Да и вообще, откуда такая любовь к связным спискам, это же совершенно бестолковая и никому не нужная структура данных? Если вы засомневались — почему же списки никому не нужны? — постарайтесь вспомнить, когда они вам последний раз пригодились за исключением изучения информатики и программистских «технических» собеседований.

А ведь если подумать — то связные списки — это «естественный» для Lisp-подобных языков способ организации данных, да и аппаратная их поддержка — не так уж и сложна (примером чему служат всевозможные «Lisp-машины»). Ничто не мешает рассматривать их, как вполне равноправные с массивами (которые имитируют обычную память с линейной адресацией) «элементарные» структуры данных — и строить на их основе что-то более сложное. Но многие ли в «нашем поколении», полностью захваченном обычными фон-неймановскими компьютерами, могут себе представить «альтернативные» варианты? Многие ли могут понять теоретическую важность других способов организации памяти, чем очевидный «массив из int8_t»? Да и рассуждать о способах построения алгоритмов — скажем, об «индуктивных функциях» или доказательстве правильности рекурсивных функций, имея под рукой такую структуру данных, как список, очень удобно (хотя никто не мешает делать это в «императивном» духе).

И возвращаясь к «смене поколений» — если «старики» еще понимают, чему соответствуют все эти нетривиальные штуки в курсе «информатики», то новое поколение действует «по инерции», понимая свою задачу скорее в «начетническом» ключе — если те же списки или палиндромы встречаются в курсе, то достаточно предъявить некоторое количество задач, где как-то фигурируют эти понятия (при этом совершенно теряя суть происходящего). Худший же вариант — рассказать о списках на примере встроенного в Java интерфейса List — встречается, на мой взгляд, пугающе часто.

PS Интересно, а бывают ли учебные курсы Java, где в качестве примеров разбираются реальные классы из JDK? Тот же java.lang.String — прекрасное наглядное пособие для изучения массивов, например :)