Category: фантастика

Category was added automatically. Read all entries about "фантастика".

photo25

Про историю

Вот почему историю (и, в частности, фактологию) так важно хранить.

Оригинал взят у sish в Очевидное не всем:
В ходе дискуссии оказалось, что об известной мне проблеме изменений знают не все.
Суть проблемы, грубо: если мы что-то меняем, то люди делятся на тех, кто помнит время до изменений и людей новых для которых "так было всегда".

Это вызывает много интересных эффектов. Попробую привести примеров несколько.

Берем игру. Ранее требовалось 100 рублей и 100 дней, чтоб стать эльфой 80-ого уровня. Сегодня мы решили, что такой эльфой можно стать даром и за один день.
Это породит группу недовольных, которые потратили время и деньги; довольных-которые готовились к трате 100 рублей и ста дней, а тут такой подарок; и группу "а как же иначе? Конечно, эльфа бесплатная и качать ее один день!"

Пример немного более сложный: мы делали автомобиль, который уверенно ездил 300 000 км. Выпустили модель Б, которая ездит всего 100 тысяч, а стоит дешевле на 50%. Будут недовольные, которые укатали старый авто, пришли за новым-а он ездит всего сто тыков! Будут довольные, которые увидят скидку в 50%, а ресурс-да кто его знает, этот ресурс? Я вот на прошлой модели А проездил тоже 100 тысяч и ничего. Будут новички, которые уверены, что автомобиль и ломается к 100 000 пробега. Так всегда было, и первый сломался и вот новый тоже сломался...

Про пример жизни при Темнейшем или Брежневе и так все знают)

Эффект первый: со временем изменения обязательно забываются, сглаживаются и становятся историей. Так здесь повелось, ага. Помнившие тупо умирают, уходят из игры, смиряются с положением вещей, забывают наконец.

Эффект второй: владельцы машины А при продаже внезапно узнают, что покупатели, ранее владевшие машинами В не понимают повышенной цены за машину с пробегом в целых 100 тысяч. По мнению покупателя-это чистые дрова и они не могут стоить как новая В. Хотя остаточный ресурс А 67%, а скидка от изначальной цены 50%. То есть по соотношению ресурс/цена автомобиль А выгоднее новенького автомобиля В за ту же цену.

Эффект третий:новые игроки убеждают старых, что все путем и так и было. А что эльфу качали 100 дней вместо одного, так это просто дураки были и теперь отмазки лепят про какую-то систему изменений. Я вот тоже сначала целую неделю сидел, а потом руки исправил и все-в момент эльфу получил!

Эффект четвертый-эффект измерителя и выбора аудитории: если некто решит узнать отношение к Брежневу, то ему стоит выбрать всех. И тех, кто жил при Хрущеве, а потом при Брежневе. И тех, кто жил только при Брежневе. И тех, кто жил при Брежневе и при Андропове. Иначе он серьезно сузит реальность.

2016-01

про ООП, модули и типизацию

Наконец-то я могу сказать словами то, что меня мучило все эти годы, бгггг :)

Собственно, правильно ли я понимаю, что поскольку для structurally-typed OO языков inheritance is not subtyping (Cook et al, 1990), то semantics-preserving gradual typing в structurally-typed ОО языках невозможен?

Точнее, добавление и убавление деклараций типов будет влиять на семантику программы, при наличии там проверок типов (pattern matching, method overloading, RTTI).

Ииии, в принципе, мне кажется что это справедливо не только для ОО-языков, а и любых языков с поддержкой functions as first-class values (какие-то функции высшего порядка при этом всё равно можно закодировать, но не произвольные), т.к. тайпчекинг становится data-dependent и вынужден ошибаться либо в одну, либо в другую сторону.

Собственно именно из-за этого я не люблю ООП в Java-смысле, а предпочитаю ООП в Smalltalk-смысле, только раньше формализовать не мог.

То есть, с номинальной системой типов мы не можем выразить (статически типизировать) open-world систему, т.к. номинальная система типов кодирует перечислимое множество типов данных, равномощное ω-порядку без higher-kinded types, и ωω (или ε0?) с ними, чего, очевидно, недостаточно.

Closed-world система при этом очевидным образом ограничивает модульность (типы создают частичный порядок на модулях, который, вообще говоря, не обязателен)

Возможно, это противоречие как-то решается, если делать не gradual typing, а gradual contracts (B. Pierce этого вскользь касается, 2008), т.к. контракты более, гммм, симметричны; но я пока не нашел каких-то адекватных пейперов по теме.

Success typing для Эрланга проблему, конечно, решает, но местами это упрощение до потери смысла :) т.к. оно unsound, хотя позволяет статически детектировать *некоторые* ошибки.

В SaferTypeScript (2014) соорудили франкенштейна, который с одной стороны type-safe, но с другой стороны таки не является semantics-preserving - т.к. сдвигания границы между tagged и untagged world меняют семантику программы. Хотя, может, это и выход. Но сцуко некрасиво.

Скальные path-dependent types выглядят способом обойти проблему с другой стороны; но я их что-то как-то не до конца понимаю и не уверен, поможет ли это вообще (в их случае проблема представляется как "построение type inference для ОО-языка с path-dependent типами какая-то сцуко сложная")

This entry was originally posted at http://wizzard.dreamwidth.org/408429.html. It has comment count unavailable comments. Please comment there using OpenID.
photo24

(репост) Предупреждение для владельцев HDD > 2.2TB (3TB, 4TB) и контроллеров Marvell 88SE91xx

Оригинал взят у sporaw в Предупреждение для владельцев HDD > 2.2TB (3TB, 4TB) и контроллеров Marvell 88SE91xx (например, на P
Доброй ночи!

Хочу предостеречь всех владельцев больших HDD. Больших - это больше 2.2TB, т.е. 3TB, 4TB и т.п. Сказанный ниже рецепт в целом годен на все случаи жизни (т.е. даже если у вас не такое железо, но в теории есть шанс встретиться с любым другим железом и подобными глюками с 32-битным ограничением расчета, в т.ч. даже в софте).

Контроллер Marvell 88SE91xx, по крайней мере, с BIOS <= 1.0.0.1031 не поддерживает полноценно диски объемом больше 2.2TB. Его BIOS при каждой перезагрузке по физическому смещению BAA1471E00h на каждый диск прописывает бэкап GPT-таблицы размером в 4060h байт (и тем самым портит ваши данные). Это смещение - граница 746.52Gb (достаточно известная константа) из-за переполнения адресации.

Collapse )