?

Log in

Журналисты срывают!

Слова "журналист" и "политическая проститутка" для меня уже давно являются синонимами. Тем приятнее видеть редкие исключения. В данном случае речь идет о журналистике не политической, а научной.

Александр Соколов уже первой своей книгой Мифы об эволюции человека" показал, что остались еще в профессии порядочные люди. О то, что он написал вторую - "Ученые скрывают? Мифы XXI века" узнал случайно из ленты Александа Панчина в Мордокниге, теперь уже не найти, где именно она там упоминалась. А сегодня зашел в "Читай-город" и купил. Блистательный разбор

а) дерьма, которое на нас валится,
б) способов его опознания,
в) способов борьбы с ним.

Рекомендуется к безусловному прочтению.



Оригинал этого сообщения находится здесь.

Tags:

Endianness

Александр Семенович Кронрод был математиком. А еще он был программистом. В начале 60-х годов он написан книжку "Беседы о программировании". Она так не понравилась другим математикам, что они запретили ее издание.

Книга была издана только в 2001 году.

Мне она тоже не понравилась.

В XXI веке человеку трудно понять, что такое "трехадресная машина", у которой есть "4096 ячеек памяти". К счастью, история вычислительной техники интересовала меня давно, и такие названия, как М-2, Наири, М-20 и Минск-32 мне прекрасно известны, равно как и архитектура и система команд этих машин. Поэтому я понял, о чем пишет Александр Семенович Кронрод.

Не понравилось мне то, что Александр Семенович был противником стандартизации. Это хорошо, если речь идет о стандартизации мыслей. Но плохо, если о стандартизации вычислительных машин. Кронрод справедливо отмечает, что в системе команд М-20 имеется слишком много команд останова, и что вместо лишних можно было бы создать другие полезные команды. Он с гордостью пишет, что в его институте инженеры не были ленивыми, и они переделали машину.

С того момента, как неленивые инженеры это сделали, все программы Александра Семеновича Кронрода перестали быть интересны кому-либо, кроме самого Александра Семеновича. Потому что они стали непереносимыми. Машина, для которой они написаны, существует в единственном экземпляре, в то время как машин с системой команд типа М-20 - более тысячи. Представьте, что неленивые инженеры, вдохновленные кронродами, переделали на свой лад все эти машины. Теперь любую задачу нужно решать не один раз, а тысячу раз. "Э" - эффективность.

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

Я только что закончил ковырять очень эффективную программу для ЕС ЭВМ. В той программе очень много данных заведено операторами DATA. Так вот, для большей эффективности все целые и вещественные числа были вбиты в виде шестнадцатеричных констант. Ну, транслятору же проще транслировать именно шестнадцатеричные константы, правда?!

Как вы догадываетесь, в моем распоряжении нет ЕС ЭВМ. Есть писюк с процессором AMD. В отличие от EС ЭВМ у этого процессора архитектура little-endian: байты в многобайтных числах идут в другом порядке. Запиши авторы той программы целые числа обычным образом (десятичные), забота о размещении их в памяти легла бы на плечи компилятора. Страшно неэффективно! Поэтому выворачивать шестнадцатеричные константы пришлось мне.

В процессоре ЕС ЭВМ вещественные числа представляются не так, как в процессоре AMD. Запиши авторы той программы вещественные числа обычным образом, забота о преобразовании их в машинный формат легла бы на плечи компилятора. Но как пострадала бы эффективность! Поэтому конвертировать форматы пришлось мне, а это несколько сложнее, чем просто переставить байты.

В общем, книжку Александра Семеновича Кронрода многие не смогли своевременно прочесть. Но мир это не спасло.

Оригинал этого сообщения находится здесь.

Порт пяти морей

Когда-то я ездил в речной круиз от маленького города Сарапула1 на Каме до Москвы, потом до Уфы и обратно в Сарапул. Экскурсоводы с гордостью рассказывали о том, что после строительства канала имени Москвы, соединившего Москву на Москве с Волгой, Москва стала столицей пяти морей.

А слышали ли вы что-нибудь о советских пассажирских судах класса река-море, позволяющих в реальности дойти из Москвы до Нью-Йорка хотя бы до Корсики?


1 Ближайший к Ижевску речной пассажирский порт.

Оригинал этого сообщения находится здесь.
Всякий, кому приходилось заниматься астрономическими расчетами, наверняка сталкивался с необходимостью переводить календарную дату в юлианскую и обратно. Для этого можной найти множество формул и алгоритмов, но все они имеют один существенный недостаток: ограниченную область дат. Как правило, они неприменимы для далекого прошлого - отрицательных юлианских дней. А необходимость забираться так далеко имеется. Например, численная эфемерида DE431 простирается в прошлое аж до 13200 г. до н.э.

Почему же имеющиеся алгоритмя врут в таких случаях? Исследование показывает, что главная причина связана с понятиями целочисленного частного и остатка. Дональд Кнут в своем фундаментальном труде "Искусство программирования" определял целочисленное частное чисел x и y как наибольшее целое, не превосходящее x/y. Иными словами, частное чисел 10 и 3 ожидаемо равно 3, но вот для чисел -10 и 3 результат должен быть -4, а вовсе не -3, потому что -4 - как раз наибольшее целое, не превосходящее -10/3=-3.333... Сообразно с этим, остаток определяется как неотрицательное число r, такое, что x=q·y+r, где q - определенное выше целочисленное частное.

Проблема в том, что популярные языки программирования этим определениям не следуют. Как правило, при вычислении частного дробная часть просто отбрасывается, и получается -10÷3=-3. Остаток тоже сплошь и рядом получается отрицательным. Из известных мне языков только Модула-2 реализует эти операции в том же смысле, как их понимает Кнут. Но стоит только корректно выразить эти операции, как отыскание календарных формул, годных для любых дат, становится простым.

Ниже приводится алгоритм вычисления юлианской даты по календарной и обратно, пригодный для любых дат. Формулы и их вывод можно найти здесь. Алгоритм написан на ныне мертвом, но очень популярном в прошлом языке Алгол-60. Для любителей живых даю две реализации: на языках Паскаль (ISO 7185) и Фортран. Для языка Паскаль нужно обратить внимание, что стандарт ISO 7185 определяет операцию mod точно в смысле Кнута, чего не скажешь про операцию div. Если ваш компилятор не следует стандарту и реализует mod иначе - выкручивайтесь самостоятельно. Любители всяких Сей и Яв, тоже пишите сами!

Вывод для тестового примера такой:
 2415020.000  1899 12 31   12  0  0.000000
 2451545.000  2000  1  1   12  0  0.000000
 -104998.829 -5000  7 12   16  6 32.870000
 3547465.171  5000  7 12   16  6 32.869994
АлгоритмCollapse )

Оригинал этого сообщения находится здесь.
Многие пишут программы и упускают из виду некоторые тонкости используемого языка программирования. А потом долго ломают голову, не понимая, что не работает. (Впрочем, есть люди, которые что-то пишут, вообще не используя голову, но такие именуются не программистами, а говнокодерами). Вот пример. Допустим, вы пишете на языке Паскаль такой код:

while (a[i]>0) and (x mod a[i] <> 4) do
    { что-то делать}

Вы наивно думаете, что условие в заголовке цикла будет вычисляться по краткой схеме, т.е., если a[i]=0, то, очевидно, условие ложно, и вторая часть (x mod a[i] <> 4) вычисляться не будет. Ваша уверенность основана на том, что ваш любимый компилятор именно так и делает. Но ВДРУГ выясняется, что, будучи откомпилированной в другой среде, программа подрывается как раз при вычислении второй части (я однажды встретился с таким явлением сам). Почему?

Потому что надо читать стандарт языка, а не только инструкцию к данному конкретному компилятору. Скажем, Модифицированное сообщение о популярном в прошлом языке Алгол-60 недвусмысленно требует, чтобы в любом выражении вычислялись все его составляющие, поэтому приведенный выше трюк не должен работать ни в каком случае. Стандарт языка Паскаль ISO 7185 более лоялен к разработчикам компиляторов, но совершенно нелоялен к их пользователям, т.е. к прикладным программистам. Этот документ оставляет порядок вычисления выражений целиком на усмотрение реализаторов. И если в одном случае фрагмент будет работать, а в другом - нет, то программа оказывает непереносимой. Я полагаю, что это недостаток стандарта. Но изменить его я не в силах, как не в силах заставить разработчиков компиляторов следовать какому-то одному пути. Но я в силах изменить свою программу и сделать её, хотя и ценой потери красоты и эффективности, независимой от деталей реализации.

В приведенном примере, вроде бы, напрашивается очевидное решение

while a[i] > 0 do
    if x mod a[i] <> 4 then
        { что-то делать}

но оно неправильное, поскольку нарушение второго условия должно закончить цикл, а в таком варианте не закончит. Надо извращаться так:

cont := true;
while (a[i] > 0) and cont do
    if x mod a[i] <> 4 then
        { что-то делать}
    else
        cont := false;

Получается грубо, некрасиво, но правильно при любом поведении компилятора.

Вообще, стандартный Паскаль содержит много неудачных решений. Видел это и его создатель Никлаус Вирт. В стандарте Модулы-2 - наследницы языка Паскаль - четко сказано, что не нужно вычислять второй операнд, если значение выражения понятно из первого. Именно, там написано:

If the left operand to a logical conjunction operator has the value false , the value of the Boolean infix operation shall be the value false , and the right operand shall not be evaluated. If the left operand to a logical conjunction operator has the value true , the value of the Boolean infix operation shall be the value of the right operand.

If the left operand to a logical disjunction operator has the value true , the value of the Boolean infix operation shall be the value true , and the right operand shall not be evaluated. If the left operand to a logical disjunction operator has the value false , the value of the Boolean infix operation shall be the value of the right operand.

(Если левый операнд логической операции конъюнкции имеет значение ложь, то значение всего выражения должно быть ложь, а правый операнд вычислять не следует.
Если левый операнд логической операции конъюнкции имеет значение истина, то значением всего выражения должно быть значение правого операнда.

Если левый операнд логической оперции дизъюнкции имеет значение истина,
то значение всего выражения должно быть истина, а правый операнд вычислять не следует. Если левый операнд логической операции конъюнкции имеет значение ложь, то значением всего выражения должно быть значение правого операнда.)

Поклонники Фортрана тоже не должны обольщаться. В стандарте Фортрана-2008, например, сказано (эта фраза без изменений перешла еще из Фортрана-95):

It is not necessary for a processor to evaluate all of the operands of an expression, or to evaluate entirely each operand, if the value of the expression can be determined otherwise.

(Необязательно, чтобы процессор вычислял все операнды выражения или вычислял полностью каждый операнд, если значение выражения может быть определено иным способом)
.

Иными словами, реализаторы не обязаны вычислять все компоненты выражения, но имеют полное право делать это.

Так что, предохраняйтесь, и будет вам программистское счастье!

Оригинал этого сообщения находится здесь.

"Науку" в массы!

Издательство "Наука" стремительно ворвалось в XXI век. Теперь некоторые его журналы, в частности "Земля и Вселенная", доступны в электронном виде. Думаете, теперь можно зайти на некий сайт, заплатить картой online и наслаждаться чтением? Авотхуй! Чтобы воспользоваться сим благом нашего века, вы должны лично посетить офис (барабанная дробь...) "Почты России". Там вам следует в установленный срок оформить подписку, заполнив бумажный бланк, отстояв очередь и вручив бланк операционисту. Затем вы должны написать e-mail в издательство и получить от них инструкции по скачиванию. Единственная разница с подпиской на бумажную версию - другой индекс издания. Кстати, подписка на II полугодие заканчивается 10 июня. Сфотографировал сегодня страницу из "Объединенного каталога "Пресса России" на второе полугодие 2017":


Оригинал этого сообщения находится здесь.
Если пойдете смотреть "Пиратов Карибского моря", не уходите из зала едва начнутся финальные титры. Дождитесь их конца. После них еще кое-что произойдет.

Оригинал этого сообщения находится здесь.

Tags:

Инспектор Морс. Музыка

Недавно, просматривая сайт композитора Баррингтона Фелонга, узнал, что музыка из сериала "Инспектор Морс" была издана отдельными дисками. Захотел купить. Но если диски 23 и 4  доступны в iTunes, то первый существует только в пластике (краденым я не интересовался). Пришлось заказывать на Амазоне. Всего месяц ожидания - и Voila! Сразу же оцифровал и в телефон.



Оригинал этого сообщения находится здесь.

По заветам Чужого

Посмотрел фильм "Чужой: Завет". Вот краткое содержание:

Read more...Collapse )
Говорят, это первая часть трилогии.

Перед фильмом крутили рекламу. Из неё я понял, что кино делать легко. Так и представляю себе беседу топ-боссов кинокомпании:

- Слышь, бро, я тут охрененный сюжетик придумал. Смотри, есть баба, она - суперагент и всех убьет.
- Обалдеть! Срочно в производство. Об этом еще никто не снимал! Бабла наварим - миллиарды!

Или так.

- Бро, а давай кинцо замутим. Классная идея есть. Пусть группа долбоебов едет в Заморию поплавать с рыбами. Ну, там пивко попьют, потрахаются и к рыбам. А там акулы. И пусть два часа девки орут, акулы едят, кровищи побольше. Пипл ломанется смотреть по пять раз. Бабла срубим!
- Обалдеть! Срочно в производство. Об этом еще никто не снимал! И давай стразу три таких кинца замутит. В одно лето премьеру сделаем. У нас не только очко, у нас бумага туалетная из золота будет.


Оригинал этого сообщения находится здесь.
Друзья мои, что же такое творится у нас в школьном образовании? Вот очень популярный ныне комплект учебников по физике для 10-11 классов, авторами которого числятся Г.Я. Мякишев, Б.Б. Буховцев и В.М.Чаругин. В учебнике для 11 класса на с.8 сказано, что линии магнитной индукции - это такие линии на бумаге, с помощью которых удобно изображать магнитное поле. То же самое сказано про силовые линии электрического поля на с. 260-261 учебника за 10 класс. С этим я не спорю.

Но в том же учебнике (11 кл.) на с. 28 объявлено, что электрический ток в контуре возникает, если "число линий магнитной индукции, пронизывающих контур, меняется". Выходит, причиной явления природы (электромагнитной индукции) служит удобный способ изображения поля на бумаге (линии магнитной индукции)!

Но это еще не всё. Далее на с. 30 заявлено, что магнитный поток нужен лишь для того, чтобы описать явлении индукции количественно. 

Еще раз: причиной явления служат рисунки на бумаге; понятие магнитного потока нужно лишь для того, чтобы циферки в формулу подставить.

Когда-то давно я уже писал о том, как в том же учебнике объясняется эквипотенциальность поверхности проводника. Не будь эта поверхность эквипотенциальна, по ней тек бы ток и выделялось тепло, а это противоречит закону сохранения энергии. Так и представляю себе электрон, кричащий другому электрону: "Ты туда не ходи, сюда ходи, закон сохранения энергии нарушим - большой кирдык будет".

Раньше, когда студенты спрашивали у меня, как вели себя фермионы до того, как Паули запретил им пребывать в одном состоянии, я был уверен, что они шутят. Теперь начал сомневаться... Оригинал этого сообщения находится здесь.

Profile

инспектор
waspagv
Инспектор Барнаби

Latest Month

July 2017
S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

Syndicate

RSS Atom
Powered by LiveJournal.com
Designed by Tiffany Chow