September 11th, 2015

moose, transparent

оценка политической предвзятости (англ.)

The Political Bias Test

Довольно любопытный тест - правда, он почти целиком об американской политике и экономике. Сначала вы выбираете свои политические предпочтения, а потом отвечаете на 18 довольно сложных вопросов (вопросы с политической подоплекой, но при этом такие, где есть согласие экспертов). Тест говорит вам количество правильных ответов, но кроме того стремится измерить вашу предвзятость: насколько ваши ошибочные ответы скошены в сторону ваших же политических убеждений.

У меня вышло всего 12 правильных ответов из 18, но тест при этом утверждает, что это хороший результат. Политической предвзятости в этих шести неправильных ответах тест не обнаружил.
moose, transparent

какие компьютерные курсы нужны (программистское)

Джеймс Хэг, отличный кстати блоггер на программистские темы, написал любопытную запись

Computer Science Courses that Don't Exist, But Should

Он предлагает (шутливо, но за шуткой скрывается серьезная мысль) ввести следующие полезные предметы на факультете компьютерных наук:

"CSCI 2100: Unlearning Object-Oriented Programming"
"CSCI 3300: Classical Software Studies"
"CSCI 4020: Writing Fast Code in Slow Languages"
"CSCI 2170: User Experience of Command Line Tools"
"PSYC 4410: Obsessions of the Programmer Mind"

Подробное описание см. по ссылке. Мне больше всех первый предмет понравился, конечно. Но и третий тоже хороший.

Хочу добавить свои предложения к этому списку (и вы тоже добавляйте, если есть идеи):

1. "Как быстро начать работать с незнакомым кодом". Изучение большого массива незнакомого кода, быстрое построение ментальной модели, проверка своего понимания на прочность. Вместо экзамена - практическое задание: выбрать и починить имеющийся баг - включая весь процесс до интеграции в главную ветку - в одном из трех проектов на выбор: OpenOffice, Mozilla Firefox, Linux kernel.

2. "Как разучиться оптимизировать". Как быстрее добиться цели с помощью более простого кода. Развитие интуитивной оценки "насколько это быстро". Культура benchmarks и microbenchmarks. Что такое overengineering, на конкретных примерах, и как его избегать.

3. "Как писать медленный код на быстрых языках". Как незаметно для себя написать квадратичный код. Чем может заниматься такое долгое время программа, написанная на C++ или Java. Как добиться, по сути дела, сериализации на первый взгляд многопоточного кода.

4. "Если есть сомнения, используй хэш-таблицу". Почему никакие структуры данных не нужны, нужно просто всегда использовать хэш-таблицу.
moose, transparent

четыре точки (математическое)

Можно ли поставить три точки на плоскости так, чтобы все расстояния между ними были нечетными целыми числами?

Да. Это тривиально, можно просто поставить их в вершины равностороннего треугольника с длиной стороны 1.

А как насчет четыре точки на плоскости, и все расстояния между ними нечетные числа?

А вот тут оказывается, что это невозможно. Есть красивое простое доказательство того, что это невозможно, причем оно пользуется довольно неожиданно аппаратом линейной алгебры. Я помещу его ниже под катом для всех, кому интересно.

Collapse )

Если вам понравилось это доказательство, возможно, стоит посмотреть на статью, где это впервые было доказано:

Are There n+2 Points in E^n with Odd Integral Distances? (Graham, Rothschild, Straus, 1974)

Там с помощью чуть более тщательного анализа доказывается следующий удивительный факт: не только 4 точки на плоскости, но и 5 точек в пространстве невозможно расположить с попарными нечетными расстояниями, и вообще в n-мерном эвклидовом пространстве можно расположить так n+2 точки тогда и только тогда, когда n при делении на 16 дает остаток 14. То есть наименьший пример такого - это 16 точек в 14-мерном пространстве, и в статье дается конкретное построение этих 16 точек!