Category: компьютеры

Category was added automatically. Read all entries about "компьютеры".

2017

Pour le science № 522 — аналоговые компьютеры

Статья о том, что в 2006 году музей Arts et Métiers приобрёл в свою коллекцию компьютер EAI 8800. В коллекции музея уже была куча всего разного, от Паскалины до Крея, и они явно не собирались коллекционировать все компьютеры истории, но тем не менее, эту 3-тонную махину взяли. Потому что это целый пласт вычислительной техники, о котором лично я даже не подозревал — аналоговые компьютеры. Конкретнее — электрические аналоговые компьютеры, в отличие от той же логарифмической линейки, которую можно считать механической аналоговой вычислительной машиной.



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

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

Во-первых, не нужно переводить свои вычисления в формализм информатики (что такое «переменная» или «цикл»?), вычисления на бумаге прямо переводятся (если переводятся) в схему для механического конструктора. То есть вот ты пишешь дифур, и непосредственно для него собираешь калькулятор — вместо того, чтобы кодить и плодить перфокарты. Это не быстрее, но это понятнее для инженера.

Во-вторых, скорость вычисления: включил ток — смотришь на результат. Опять таки, вместо того, чтобы несколько часов ждать, пока твои перфокарты переварит и обработает цифровая машина. Ты можешь изменить параметры и немедленно увидеть реакцию на них системы. Моделируя какой-то эффект, ты можешь играть со временем модели, ускоряя слишком медленные процессы и наоборот, замедляя взрыв, например.

В этом месте меня озарило, откуда растут ноги у SimuLink. Я на каждой презентации MathWorks тщетно пытался понять, кто этим вообще может пользоваться, такая экзотика! Теперь понятно, кто.

Пишут про точность расчётов — каждый элемент можно было довести до точности 10-4 (золотые разъёмы на проводах — это из той эпохи), таким образом общая точность получалась порядка 10-2 — 10-3. Что выглядит смешно по сравнению с «абсолютной точностью» цифровых компьютеров, но совсем неплохо по сравнению с точностью математических моделей — а если мы занимаемся не абстрактными расчётами, то нас ведь интересует соответствие результата не решению уравнения, а поведению реального предмета в реальных условиях.

Ещё забавный пассаж про отрыв инженеров от математиков. Очевидно, что аналоговыми компьютерами пользовались скорее инженеры-практики, которые могли не быть в курсе каких-то базовых понятий математики. В этом месте вспоминается анекдот (кажется, от avva, но не могу найти) про медицинский журнал, в котором недавно на полном серьёзе опубликовали статью, описывающую чуть ли не принцип интегрирования — революционная техника, призванная упростить множество расчётов! Так и тут — пишут об инженерах, своим умом дошедших до методов решения дифуров, которые сводились к известным с начала века методам. В этом месте я порадовался, вспомнив институтский курс программирования, на котором мы проходили методы Рунге-Кутта — тогда мне это казалось совершенно ненужным (по этому предмету у меня была одна из двух троек, из-за которых не получался красный диплом), и только теперь понятно, что это вообще было и зачем.

Возвращаясь к переданному в музей компьютеру. В начале 1970-х он успел поработать на CEA и EDF, на нём считали французские ядерные реакторы. С середины 1970-х по середину 1980-х никто не знает, где он был (напоминаю, речь идёт о 3-тонной машине, занимающей большую комнату). А с середины 1980-х на нём в Matra считали баллистические ракеты. Пишут о том, как в 1960-х годах для разработки одной ракеты делали порядка 200 запусков, и как использование компьютеров привело к снижению этого числа до 15 в 1990-х (сейчас довели до единиц реальных запусков). Понятно, что им давно уже не пользуются, собирались выбросить при очередной реорганизации пространства, но перед этим догадались позвонить в музей, спросить, не нужно ли им такое счастье?

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

Новинки опечаток

Я очень люблю рассматривать опечатки и пытаться понять, откуда они взялись — где-то кнопки рядом на клавиатуре, где-то транслит заглючил, где-то левая рука с правой перепутались. Вчера в моей коллекции появился новый тип опечатки, типично французский.

У нас на работе телефон технический поддержки 77100. Я наткнулся на ошибку программы, где мы можем запрашивать себе курсы повышения квалификации (хочу подучить бухгалтерию страхования жизни, там много неочевидного, а мне это моделировать), написал мейлом свой запрос, уточнил, почему не могу сделать запрос через приложение. Мне ответили просьбой сообщить об ошибке в службу поддержки, телефон 70700.

Оба номера по-французски читаются примерно одинаково: soixante-dix-sept-cent. Вопрос лишь в интонации, в длине пробела.
Если soixante-dix-sept----cent, то выходит 77100. А если soixante-dix---sept-cent, то 70700.
2017

Шутка про баян

Отличная шутка на bash.org, я давно так не хохотал, но только для программистов:

V: А ещё мне тут пришла в голову правильная аналогия про Vim
V: Это короче так: садишься ты в машину, а там вместо руля и педалей стоит БАЯН
V: И каждая кнопка что-то означает, типа: — вперёд 100 м — вперёд 1 км — вперёд до ближайшего светофора — вперёд до отделения полиции — обогнать впереди едущую машину
V: И ещё когда ты садишься, двери блокируются и надо тоже нажать последовательность кнопок на баяне, чтобы выйти
V: А если в движении случайно нажмёшь esc и выйдешь из режима движения, то вместо движения вперёд машина бибикает
V: И соответственно есть прокачанные баянисты, которые ездят по дорогам, играя мелодии. Быстро, эффективно ездят


Чтобы хотя бы что-то было понятно и остальным. Есть такой текстовый редактор, в котором работаешь не только без мышки, то и без комбинаций кнопок на клавиатуре. То есть, ты не можешь нажать Ctrl-C или Ctrl-V — редактор писали на случай ядерной войны так, чтобы он работал всегда, даже по сети, даже когда связь настолько плохая, что информация о нажатии одной кнопки может дойти, а про вторую — нет. И вам не нужно, чтобы вместо Ctrl-C у нас напечаталось C.

Соответственно, у редактора есть три режима:
1. Режим ввода. Когда каждая кнопка с буквой (символом) обозначает просто букву, и та печатается в редактируемом документе.
2. Режим навигации. Поскольку кнопки со стрелочками — это «сложные» кнопки, то они ведь тоже не работают. Вместо них в режиме навигации используются кнопки j / k / l / m — это влево / вниз / вверх / вправо соответственно. Помимо этих кнопок задействована вся остальная клавиатура, и в этом настоящее богатство vi — есть вариант «перепрыгнуть на одно слово» (аналог «Ctrl-стрелочки»), но есть и вариант «перепрыгнуть на 5 слов». Можно перейти в конец строки (аналог «Ctrl-End»), а можно перейти на третье с конца слово в пятом параграфе, начиная от текущего. Там же поиск — можно перейти на второе слово, в котором не менее четырёх гласных. И начала программирования для замены — найди слова из 4 букв, если первая из них «f», то замени вторую на «*». Вы не поверите, но это часто крайне удобно, экономит часы времени. Красивая иллюстрация того, как наложенные снаружи ограничения заставляют нам создавать шедевры.
3. Режим работы с системой. Здесь те же самые кнопки выполняют команды вроде «сохрани файл», «выйди меня отсюда».
Ну и отдельные кнопки в каждом из режимов, чтобы перейти в другой режим (упомянутый в анекдоте Esc).

Понятно, что первые несколько месяцев работаешь крайне медленно, причём обложившись документацией. Потом либо плюёшь и ставишь себе нормальный редактор, либо становишься вот таким вот, описанным в анекдоте баянистом.
2017

Менеджер паролей

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

Как я вижу менеджер паролей? Это некая база с моими парами логин-пароль для самых разных сервисов. Эта база однозначно должна быть в сети — я видел менеджеры, которые объясняют свой принципиальный отказ синхронизировать базу в облаке, потому что это подрывает безопасность всего процесса, но в этом пункте я однозначно готов пожертвовать частью безопасности (и так это будет огромный прогресс по сравнению с нынешним состоянием) в пользу удобства. Мне нужно иметь доступ к моей базе не только на всех моих компьютерах и телефонах (ручками синхронизировать базу я очень быстро утомлюсь), но и, потенциально, на разных гостевых / публичных компьютерах.

У менеджера должен быть достаточно простой интерфейс, в частности интегрированный в мои браузеры. Чтобы туда менеджер мог генерить мне новые пароли, когда я регистрируюсь на очередном ресурсе, забирать новые пароли, когда я их меняю, ну и подставлять пароли, когда я хочу куда-то зайти. На гостевых компьютерах я готов, конечно же, вбивать пароль руками, читая его с экрана своего телефона, например. На чёрный день — с веб-версии этого же менеджера.

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

Я вчера посмотрел какое-то количество обучающих видео, поставил себе 3 разных менеджера, ко всем были свои претензии — то ли я не смог разобраться, то ли моим требованиям они не удовлетворяли. Кто чем пользуется?
2017

Michel Gondry

Посмотрели с Анютой «Пену дней» — отличный фильм! Даже слишком — такое ощущение (уверенность!), что ты не успеваешь увидеть даже десятую часть того, что они впихивали в кадр.

Сумасшедший режиссёр, конечно. Мы когда-то посмотрели его «Науку сна» и настолько впечатлились, что купили коробку DVD. Там были «Вечное сияние чистого разума» (тоже шикарный фильм, да ещё и с Джимом Керри) и «Перемотка» — там сюжет вообще фантастика. Пацаны портят какую-то старую кассету в прокате, и «чтобы никто не заметил» они решают переснять затёртый фильм. Быстренько. В двух словах. И процесс им настолько нравится, что они переснимают половину всего видеопроката.

Потом мы попытались посмотреть его же «Мы и я», но не смогли въехать. Сюжет: в последний день школы автобус развозит детей. Показывают, как они едут, как они тролят друг друга, заигрывают друг с другом, прощаются, выходят. Видимо, там есть какой-то смысл — всё-таки, Мишель Гондри, — но нам с Анютой смотреть это было невозможно.

А на днях я узнал, что Гондри ещё и клипы снимал. Википедия цитирует несколько десятков снятых им клипов. Я прочитал про два — и вот оно, современное искусство во всей его красе. Когда смотришь просто так клип, кажется полной ерундой, Когда прочитаешь описание — шалеешь от красоты.



[Spoiler (click to open)]Гондри снял вид из окна поезда, а затем смонтировал его так, чтобы визуальные элементы рифмовались с музыкой. Достаточно заметить это в самом начале — столбы повторяют пульсирование вступления, — и весь остальной клип смотрится как что-то идеально подходящее под музыку. А если не заметишь — видишь просто вид из окна. В этом клипе нет компьютерной графики, есть тонна фанатизма и куча убитого времени.



[Spoiler (click to open)]Здесь тоже нет компьютерной графики, все кадры-картинки реално складывались из Lego. То есть, сначала сняли настоящее движение на настоящую камеру, затем видео пикселизировали (здесь, надо надеяться, использовали компьютер), а потом по картинкам начали собирать и переснимать. Фанаты!

Как без объяснения смотреть все остальные его клипы — совершенно непонятно.

Зато однозначно хочу посмотреть его совсем недавний сериал «Шучу» с Джимом Керри.
2017

Ретроактивность мысли

Слушал передачу по радио, там гость передачи — писатель и кинематографист — внезапно рассказал про невероятный эксперимент.

Предположим, говорит, у нас есть компьютер, который случайно «загадывает» числа 0 или 1, вероятность каждого 50%. А перед нами стоит задача угадать, что за число загадал компьютер. Очевидно, что вероятность угадать — всё те же 50%. Но нет, говорит Ван Ковелер. Так будет, если перед экраном сидит оператор и сразу видит, какое число загадал компьютер. А если это число никак не реагирует с внешним миром — не выводится на экран, не проговаривается вслух, никак, — то вероятность может быть и больше.
В этом месте, когда я пересказывал эксперимент Анюте, она, брезгливо поморщившись, посмотрела на меня и сказала «что за бред?!» У меня, очевидно, в начале была такая же реакция. А потом я попытался подумать, чему этот эксперимент — который, по словам героя передачи, проводился неоднократно, результаты подтверждаются независимыми исследованиями, вероятность угадывания доходит до 62% — мог бы противоречить. Идея у авторов эксперимента в мультивселенной: наш мир состоит из суперпозиции разных вариантов — в данном случае вариант мира, где компьютер загадал 0, и вариант с 1. И суть эксперимента в проверке возможности нашего разума влиять на реализацию того или иного сценария. Все вот эти эксперименты квантовой физики с измерением, влияющим на измеряемое — это немного в ту же степь.

Соответственно, я задумался, насколько этот бред — бред. В передаче, конечно же, никакой библиографии (вот, кстати, минус радио перед журналом), но я нашёл книгу этого автора. Он там цитирует описанный эксперимент под названием «influencer le passé», по названию можно найти автора — некоего терапевта из Нанта, имя которого в интернете в первую очередь связывается с какой-то парапсихологией.
Рядом в книге описывается ещё один, несколько отличный эксперимент — якобы, по энцефалограмме человека можно понять, угадал он или нет, ещё до того, как человеку скажут правильный ответ. То есть, мозг каким-то образом знает объективно правильный ответ. Тут есть и авторы — нейробиологи McDonough, Don и Warren откуда-то из Иллинойса. Проблема в том, что автор цитирует не научную публикацию, а — вы будете смеяться! — журнал «Le Monde des réligions», и по содержанию журнала совершенно невозможно понять, в какой статье он это прочитал. А поиск по именам нейробиологов выдаёт только нашего героя и других лозоискателей (я не шучу).

Аж обидно. И что чуда сегодня не будет. И что на приличную, казалось бы, радиостанцию пускают таких фриков без предупреждения для публики.
green_fr

Плохой дизайн



Прежде чем набрать PIN-код, сначала руками повторяешь знакомое движение, пытаешься понять, какие ты бы при этом нажимал цифры на «нормальной» клавиатуре, и только потом набираешь его здесь.

Кстати, никто не знает, как получилось, что цифровые клавиатуры у компьютера и у телефона разные? Связано ли это с тем, что исторически «0» у телефона — это «10»?
green_fr

Первая игрушка?

Натанкину подарили навороченный «Морской бой» — со звуками, с клавиатурой для ввода координат и т.п. А тут выяснилось, что там можно играть против компьютера — и мальчик сидит сейчас, сам режется :-)
green_fr

MatLab: RAM access time

Продолжаю копать недавний вопрос, довёл ситуацию до минимализма, и всё равно ничего не понимаю.

Есть некий скрипт, который выглядит примерно* так:
a = random(...);
b = random(...);
for i = 1 : 1000
    a = a + b;
end

1. Запускаю его на своём компе — память загружена на некотором уровне X, процессор загружен на 25% (у меня 4 ядра, MatLab крутится на одном из них), время работы цикла 19 секунд.
2. Запускаю два MatLab, на каждом из них запускаю ручками копию этого скрипта. Память загружена вдвое больше (логично), процессор загружен на 50% (логично), время работы цикла 34 секунды (я ждал, очевидно, 19 секунд).

В чём фишка? Единственное разумное объяснение — меня ограничивает скорость чтения / записи RAM. В это не хочется верить, и как минимум хочется поверить.

Откуда следующие вопросы:
1. Как получить максимальную скорость чтения / записи RAM? Измерить / посчитать по техническим характеристикам / запустить утилиту.
2. Как посмотреть реальную скорость работы с RAM? В идеале иметь такой монитор, как Task Manager, который рисовал бы график в реальном времени, чтобы на нём глазами увидеть потолок, об который стучится мой процесс. Наш IT выслушал, попробовал две какие-то стандартные у них утилиты и развёл руками. Hotline MatLab вообще вопроса не понял (провёл с ними час по телефону, зол неописуемо).
3. (в голову как-то не лезет, что программу тормозит RAM, с детства привыкли, что у него скорость, конечно, ограниченная, но это только в теории) Какие ещё есть варианты объяснения этого эффекта?


*Скрипт выглядит «примерно» так, т.к. MatLab в принципе иногда работает с несколькими ядрами процессора. Например, простую операцию a + b он легко раскидывает на несколько ядер. А вот bsxfun(@plus, a, b), позволяющую складывать матрицы разного размера, уже не раскидывает. Поэтому для простоты я написал +, но на самом деле там bsxfun.
green_fr

MatLab: Parallel Computing Toolbox

Пытаюсь закрутить нашу программу чуть побыстрее. Взяли потестировать PCT, который, теоретически, с минимальными исправлениями кода позволяет раскидывать расчёты на разные процессоры, а то и компы. Например, говорят, если у вас есть цикл for, все итерации которого совершено независимы, то вы можете просто заменить ключевое слово for на parfor, и PCT сам разберётся, какую итерацию на какой процессор посылать, как собрать потом результаты и т.п.

Начал тестировать. Вот есть у меня некая процедура doSomeWork(), которая читает какой-то файл с диска, что-то там считает и пишет результат на диск же. Время её работы засёк — 664 секунды. Написал цикл из одной итерации:
for i = 1 : 1
doSomeWork();
end
Проверил, всё ещё 664 секунды.
Запустил PCT, поменял for на parfor — 734 секунды.

Ненормально. Попытался понять, что происходит. MatLab при запуске PCT создаёт дополнительные процессы MatLab, то есть в моём случае крутилось два процесса: один — тот, что исполнял скрипт до parfor, а потом работал диспетчером, и второй — который отрабатывал единственную итерацию моего цикла. Теоретически, есть какая-то потеря времени для передачи данных от одного потока к другому. Но у меня нарочно сделано так, чтобы не было видно вообще ни одной лишней переменной. Теоретически, нужно скопировать код (я не знаю, могут ли разные процессы делить один код, не думаю), но всё равно ведь не на 70 секунд работы!

Поменял цикл до 2, запустил снова. Вижу, как у меня крутится 3 MatLab'а — 2 сожрали по куче памяти (каждый процесс кушает где-то 3GB) и по одному ядру процессора, а третий почти ничего памяти и на нуле процессор, он ждёт.

Время работы — 931 секунда. Оппаньки! Опять же, я понимаю, что у меня есть какой-то код, который не параллелится (чтение данных с диска, запись результатов), но его там с гулькин нос, на пару секунд работы (я проверял). А кроме чтения диска я не вижу ничего — ни сеть не используется, ни ещё какие другие внешние устройства. Куда время потерялось?

С тремя итерациями время ускакало вообще до 1223 секунд, смысл распараллеливать постепенно пропадает.

Проверил, что у меня хватает памяти (не начало ещё свопить) — только сегодня поставили 16GB, а даже с тремя считающими MatLab’ами используется до 11GB. Проверил, что параллельно на этом компе ничего ресурсоёмкого нет (только ЖЖ).

Какие ещё есть варианты? Куда смотреть? А то официальный support откровенно косит под тупых (проблемы только у вас, а у нас вот только что один крупный клиент заказал ферму на 700 ядер, и всё работает!), не сложились у меня как-то с ними отношения...