Архив сентября 2018

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

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” из первой же главы книжки Кормена я как-то наблюдал лично.

NEEDS MOAR PROSTITUTE COSPLAYERS

cosplay

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

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 секунд – что уже вполне терпимо.

Kinder, Kuche, Kirche

oven-facepalm

Нет, не надо кидать в комменты боянистые фотографии девочек, держащих паяльник. Это еще простительно, а вот такой позор у плиты – уже нет.