Быдлоэлектронщики

make-me-unsee-it

Истратив законный выходной на борьбу с «творчеством» (на картинке — если что, я не прикасался к этой плате, ко мне она уже попала в таком виде) одного такого товарища — задумался, а какие признаки просто кричат о том, что связываться не стоит? Навскидку родил такой вот список:

— использование модулей типа Arduino, Blue Pill и им подобных в качестве составных частей изделия;
— закупка компонентов на Aliexpress;
— нежелание пользоваться системами «сквозного» проектирования схемы и печатной платы;
— кустарно изготовленные печатные платы;
— монтаж с применением припоя ПОС-61 и флюса ЛТИ-120.

Что еще добавить?

Что имели в виду китайцы?

more-than-one-partner

Как перевести с chinglish фразу «You’ll be in love with more than one partner»? «»Любая телка даст» или «Выебем, по кругу пустим»?

Еще кого-нибудь обосру — на очереди TU Darmstadt

Вот я, например, ругаю отечественных доцентов, пытающихся преподавать «информатику» и одновременно хвалю всяких там иностранных Керниганов. Впору заподозрить меня в «низкопоклонстве перед Западом» — но нет, обгадить надо всех ровным слоем. Сегодня под раздачу попадет Технический университет Дармштадта — так получилось, что я добрался до тамошних лекций по Allgemeine Informatik (на русский переводится примерно как «общая информатика»), почитал конспект гуглотранслейтом и ужаснулся.

http://www.ke.tu-darmstadt.de/lehre/archiv/ws0607/ai1/material/

Технический университет Дармштадта — это вам не кот чихнул, а, как подсказывает нам Педивикия, «один из наиболее известных технических университетов, является членом TU 9». Вводный курс по «общей информатике» читает профессор Йоханн Фурнкранц — может, он действительно большой специалист по «искусственному интеллекту», но преподавать не умеет от слова совсем.

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

Вопрос первый стоимостью 10 баллов — про память компьютера Commodore C64. Мгновенно отсекает студентов, не слышавших слова типа «шина адреса» и «шина данных» — ну или привыкших думать над вопросом, а не мгновенно переводить все встреченные числа в двоичный вид. Теоретически, ответ на этот вопрос можно найти в лекциях — на 6 слайде лекции про фон-Неймановскую архитектуру немножечко рассказывается о разрядности данных и адреса, но многие ли студенты будут в состоянии это запомнить, понять и применить на экзамене?

Второе задание на 12 баллов проверяет склонность к зубрежке и начетничеству, которую многие преподаватели путают с освоением предмета. Вопрос — «что такое дигитализация и почему это важно для современных компьютеров?» Прилежный студент-отличник должен встать по стойке «смирно» и бодро оттарабанить заученное: «Современные компьютеры — это цифровые компьютеры и вся информация, как то: символы, тексты, изображения, музыка, видео и так далее должна быть преобразована в цифровую форму, то есть представлена последовательностью из нулей и единиц!» Просто прекрасен вопрос о том, является ли Java интерпретируемым или компилируемым языком. Интересно, можно ли на экзамене сказать про JIT-компиляцию, или профессор выпадет в осадок?

Задание третье, 8 баллов — таблицы истинности. Ну тут сложно придумать что-то совсем нехорошее. Единственная претензия с моей стороны — вот такие обозначения для всяких там дизъюнкций и конъюнкций только запутывают. Одна и та же операция может обозначаться аж тремя способами («как в математике», буковками — OR, AND, NOT, и «как в Java» — &&, ||, !) — не многовато ли?

Задание четвертое аж на 15 баллов. Тут начинается «программирование». О том, как оно изучается — надо сказать отдельно. Быть может, и неплохо вводный курс программирования начинать с «робота» типа того, который был в учебнике Кушниренко (вообще, «гонять робота по клетчатой доске» — прекрасный способ продемонстрировать «содержательное» программирование, не прибегая к математике типа метода Ньютона или даже квадратных уравнений), но «немецкий» Karel J. Robot — это что-то чудовищное.

Во-первых — может быть, многие уже забыли, но Си-подобный синтаксис — это полная дикость для человека, видящего его в первый раз. Хуже может быть только какой-нибудь APL (и то не факт). Немецкий «робот» — это довольно тонкая «обертка» над языком Java, соединенная с редкостно уебищной IDE. Вы удивитесь, но у живого человека возникают проблемы с тем, надо или не надо ставить точку с запятой после for(…) или if(…), где ставить и где не ставить какие скобки (их, напомню, в Си и других языках с похожим синтаксисом аж три сорта), ну и так далее. В любом редакторе кода для «кушниренковского» (в широком смысле — отношу сюда и разработанного в 57 школе «Робота«) эта проблема решалась тем, что все конструкции языка программирования вводились через контекстное меню (что-то типа Code Snippets во «взрослых» IDE) — здесь же не умеющих программировать студентов оставляют наедине с ущербным текстовым редактором (кажется, даже без подсветки синтаксиса). Зато полдесятка слайдов в лекции по работе с Karel J. Robot и задание в одной из контрольных посвящены всевозможным «орфографическим» ошибкам — что как бы намекает на основные сложности.

Впрочем — и это будет второй и главной претензией к содержанию курса — он вовсе не рассчитан на «не умеющих программировать». Первый же пример кода в этом курсе появляется во второй лекции (слайд 21). Вы уже знаете, что такое переменная, массив, цикл? Тогда вам остается только покивать головой «Ja, Ja» в ответ на объяснения со следующего слайда. Не знаете? Это ваши проблемы. Я почти не шучу — «программирование» начнется в лекциях по Karel J. Robot и новые понятия будет появляться в бешеном темпе. Прекрасно, если вы что-то слышали про условный оператор и циклы в любом языке программирования. Не слышали? У вас есть три слайда, чтобы разобраться.

Заодно — и это, как я слышал, нередко в немецком «программистском» образовании — в этом курсе очень большое внимание уделяется построению безумных иерархий классов. Я видел выпускника немецкого ВУЗа, считавшего, что он умеет программировать на Java — но все это «программирование» сводилось к написанию кучки классов и интерфейсов. Примером тому может служить и эта задачка.

Столько же баллов «стоит» и задание номер 5 — элементарная задача по работе с массивами. Единственная сложность, видимо — «программирование на бумаге».

Следующие два задания по программированию — снова «робот» (25 баллов) и Java (15 баллов), надо реализовать довольно подробно расписанное «техническое задание». Казалось бы, в оцененной в 25 баллов задаче надо как-то проявить смекалку и креативность? Но нет, там тупейший кодинг, сопряженный с борьбой против убогости «робота».

Что же видим по итогам двух семестров (в техническом университете, хочу заметить)? Проверяемый уровень знаний соответствует примерно российскому ЕГЭ по «информатике», да еще и отягощен бездумным изучением Java. В курсе не разбирается ни одного хоть сколько-то нетривиального алгоритма (видимо, из-за нехватки времени). Да что там говорить, когда в лекции «Что такое методы» примерно половина слайдов уделена вопросу, чем метод класса (то есть с ключевым словом static) отличается от метода объекта!

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

UPD Первая лекция третьего семестра у компьютерных лингвистов начинается со сравнения Java и Python в духе «в Java ужас-ужас и непонятно, а в Python все очень легко и просто»:

java-vs-python

Вопрос о целесообразности изучения Java в течение двух первых семестров остается открытым.

Заодно — начинать с Java, говорят, вредно и для будущих программистов. Во всяком случае, мучения джависта, пытающегося осознать «модель RAM» из первой же главы книжки Кормена я как-то наблюдал лично.

Быдлохабр, часть очередная

https://habr.com/post/423889/

В комментариях перепись говнокодеров.

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

http://tonsky.me/blog/disenchantment/

Про медицину

Сегодня я узнал, что у американских индейцев зубровка (Hierochloe odorata) считалась одним из четырех «священных лекарств». Пойду полечусь, что ли.

Онлайн-IDE с чятиком

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

Первый — https://codeinterview.io, он же https://www.remoteinterview.io. Платный, но для моих задач вроде как подходит и демо-версия. Довольно большой выбор языков программирования, есть unix shell и видеочат. Текстовый чат отсутствует. Платная версия дорогая — 500-1000 $ в год, или 5 $ за каждое «собеседование». Мне кажется, что «для двоих» можно завести одно такое «собеседование», заплатив 5 $ один раз, или же пользоваться бесконечно оформляемым на разные левые email-ы free trial.

Второй — https://codebunk.com, в отличие от предыдущего варианта, для интерпретируемых языков прикручено окошко с REPL, есть текстовый и видеочат. По-моему, демо-режим поддерживает только одного работающего пользователя. Заметно дешевле предыдущего варианта — 9 $ в месяц.

Гугл выдает еще https://coderpad.io/ — опять же, позиционируется, как инструмент для проведения программистских собеседований, есть компилятор и видеочат, стоит от 50 $ в месяц, free trial на 7 дней — но у меня заработало не во всех браузерах.

Что нибудь еще подобное есть?

Утро начинается не с кофе…

…а с легкого троллинга.

Может, стоит напомнить «Коучу Марии Колесниковой», что книжки в pdf — это замечательно, но есть еще и глава 4 ГК РФ?

https://m.facebook.com/coach.maria.kolesnikoff/posts/476324389444162

Чтобы глупость каждого видна была

Вот, например, некий Михаил Плаксин, доцент из пермского филиала ВШЭ кидает понты в фейсбуке:

plaksin

Ну в целом никто его за язык не тянул — так что «уважаемые оппоненты» пошли на сайт ВШЭ в раздел «Преподаватели и сотрудники» и откопали там страничку доцента с его многочисленными работами, частью даже выложенными для скачивания:

https://www.hse.ru/org/persons/4200771#sci

Продираться через всякий ТРИЗ и прочую «ТРИЗформатику» малоинтересно — а вот получить представление, как большие специалисты по преподаванию информатики что-то рассказывают детям, удалось:

https://yadi.sk/i/gWwvY-h3HDKA0Q

Докопаться, конечно, тут можно буквально до всего — от странных представлений автора о точности вычислений до использования в примерах древнего Turbo Pascal — но тут же есть еще один глобальнейший «косяк». Приведена куча примеров «неточных» вычислений — и никоим образом не объясняется, что же происходит «на самом деле» (и вообще — написать обширный текст о машинной арифметике и ни разу не намекнуть на IEEE 754 — нужен талант). Что вынесет из этой статьи читатель? «Компьютер считает не всегда точно, что с этим делать и кто виноват — неизвестно». Неужели именно этого и добивался всеми силами автор?

Лицей НИУ ВШЭ, или со дна постучали

hse-lyceum

Да, если кто провел последние несколько дней в алкогольном коматозе и еще не знает, что это за Тони Роббинс такой — вот две ссылки:

https://medialeaks.ru/0209dalex-robbins/
https://esquire.ru/articles/63152-tony-robbins-moscow/

Understanding the Digital World: What You Need to Know about Computers, the Internet, Privacy, and Security

Оказывается, Брайан Керниган (один из авторов языка программирования C и операционной системы Unix) еще не впал в маразм и недавно (в 2017 году) написал книжку с подзаголовком «что нужно знать о компьютерах, Интернете, приватности и безопасности».

understanding-the-digital-world

Основное содержание книги — что-то вроде конспекта курса лекций по «Введению в Computer Science», или CS 109 в университете Принстона (кстати, очень полезно посмотреть задания и лабораторные по этой ссылке). Примерно 3/4 книги повторяют более раннюю «D is for Digital: What a well-informed person should know about computers and communications», но здесь добавлен новый материал по криптографии, безопасности и тому подобным вопросам.

Если вам интересно, что действительно должно быть в нормальном современном учебнике по «Основам информатики и вычислительной техники» — посмотрите эту книгу и упражнения к ней.

Hadoop против Unix shell

Прикольно как — обработка одного и того же набора данных модными современными инструментами (Amazon EMR и mrjob) занимает 26 минут, а простыми средствами Unix shell — 12 секунд.

https://adamdrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html

«Наивное» решение средствами все той же командной строки обрабатывает те же данные за 70 секунд — что уже вполне терпимо.