vak: (Default)
[personal profile] vak


Последнее интервью Андрея, 2014 год: «Жизнь сводится к набору микростимулов-похлопываний».

Предыдущее интервью, 2010 год: «Сущности контроля».

Я его больше вот таким помню.

vak: (Default)
[personal profile] vak
Вчера произошло знаменательное событие: заработал восстановленный Паскаль-компилятор для БЭСМ-6. Вот сообщение от Леонида Брухиса [personal profile] spamsink в списке рассылки:

"Дорогие товарищи! Многоуважаемые гости!

Сегодня, ровно через 35 с половиной лет после даты имеющейся версии
(и, что знаменательно, в День археолога), достигнуто оживление Паскаль-компилятора
на уровне исходного текста:

РАSСАL СОМРILЕR 15.0 (15.02.82)
8435 LINЕS SТRUСТURЕ 1 305 0 0 11 10349 0 576 185 86
*САLL *РАSСОМ
РАSСАL ВАСК ТО LIFЕ (15.08.2017)
00001 1 0 РRОGRАМ МАIN(ОUТРUТ);
00007 2 2 ВЕGIN
00010 3 2 WRIТЕLN(’ С ДНЕМ АРХЕОЛОГА!’)
00025 4 0 ЕND.
*NО LО
*ЕХЕСUТЕ
С ДНЕМ АРХЕОЛОГА!
КОНЕЦ ЗАДАЧИ
Leo"

Несколько лет назад Лёня высказал "сумасшедшую" идею попробовать воспроизвести исходный текст компилятора, исходя из сохранившегося объектного файла. Сначала детранслируем бинарник в ассемблерный текст, и дальше полуручным методом восстанавливаем элементы языковых конструкций. Процесс небыстрый и крайне трудоёмкий, но вчера он завершился успехом: полученный паскалевский код был откомпилирован (старой версией компилятора от 15.02.82), и полученный компилятор версии 15.08.2017 смог странслировать и выполнить простую программу.

Подробные комментарии от Лёни:

"Технология следующая:

1. Детранслируем объектный модуль почти как это делал DTRAN, но превращая все обращения по регистру 8 в представления литеральных констант (с некоторыми догадками, где числа, а где текст) и рассылки данных - в присваивания.

2. С помощью скрипта на Перле итеративно улучшаем полученный код:
- превращаем обращения по регистру 1 в имена глобальных переменных и переводим их в мнемонические по списку
- переводим метки в мнемонические по списку
- находим границы процедур, их уровень вложенности, количество их параметров и локальных переменных по образцу вызова библиотечной функции сохранения фрейма,
восстанавливаем последовательность заголовков.
- превращаем обращения к памяти, индексированные по регистрам 1-6, в имена локальных переменных и псевдопеременных для результата функции.
- превращаем последовательности команд вида "сравнение/переход" в псевдокоманды выработки условного результата и перехода
(условно, НТЖ+ПО = "равно", ВЧ+ПЕ = "меньше", и т.п.).
- превращаем косвенную адресацию в индексный вид (например, МОД А+СЧ Б = СЧ Б[А])
- превращаем последовательности команд "стековой машины", работающих с сумматором, (т.е. начиная со СЧ и пока виртуальный стек не опустошится командами записи, перехода или вызова процедуры) в инфиксную форму; операции, использующие вызов служебных процедур (например, целочисленное деление или работа с битовыми множествами) тоже распознаются.
- еще много всяких мелочей в процессе, например деоптимизация "УИА куда(13)+ПБ проц" в "ПВ проц(13)+ПБ куда", и пр.
- распознаем границы операторов case

Выражения восстанавливаются практически полностью; например, в результате выполнения скрипта было [minel(l4var5z-intZero)+1..47];

В результате получается последовательность процедур, состоящая из линейных участков, состоящих из операторов присваивания и вызовов процедур, перемежаемая адресными метками и конструкциями вида
if (выражение) goto адрес

Операторы присваивания, вызовы процедур и выражения в условных операторах выглядели в результате скрипта примерно так же, как в окончательном тексте, разве что без признаков типов данных.

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

Еще пригодны для декомпиляции программа PASHELP (она тривиальна, но полезна для понимания работы с объектными модулями) и программа PASDD1 - интерактивный отладчик."

Есть ощущение, что бэсмовский Паскаль-компилятор некоторым образом происходит от версии 1974 года для CDC-6000. Сравните:





Исходные тексты восстановленного Паскаль-компилятора можно посмотреть здесь: https://github.com/besm6/pascal-re/blob/master/pascompl.b6

Описание языка Паскаль-Монитор для БЭСМ-6: https://github.com/besm6/besm6.github.io/blob/master/wiki/pascal-monitor.txt
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
https://www.schneier.com/blog/archives/2017/08/hacking_a_gene_.html

Тут пишут, что удалось внедрить malware в компьютер, управляющий генным сиквенсером при помощи специально подсунутой туда последовательности ДНК.

Это [livejournal.com profile] lenka_iz_hij на заметку. По-моему такого Сергей Островски еще не расследовал.

Манифест киборгов

Aug. 15th, 2017 12:10 am
vak: (Default)
[personal profile] vak
"Манифест киборгов" Донны Харауэй на русском языке.
https://psv4.userapi.com/c538206/u12791205/docs/aedb92fb4261/Donna_Kharauey_Manifest_Kiborgov.pdf

Охота на шлейке

Aug. 14th, 2017 09:39 am
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Можно ли охотиться, если тебя не отпускают с поводка?

Если очень хочется, то можно. У Лизы вот получилось.

Вот она сидит с добычей в зубах.




Добыча, правда, не слишком съедобная оказалась:

Best AI proverb I've ever read

Aug. 14th, 2017 09:06 am
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
This quote I've found on Slashdot today.

"The problem is not that artificial intelligence will get too smart and take over the world," computer scientist Pedro Domingos writes, "the problem is that it's too stupid and already has."

Про печку - 3

Aug. 12th, 2017 02:18 pm
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Прикрутил трубы для водогрейного бака:



А это дрова )
vak: (Default)
[personal profile] vak
Кто сказал, что программа должна выглядеть, как смесь прозы с математикой? Вовсе необязательно! Вот вам язык программирования, на котором программу можно просто рисовать буковками и циферками. На видео показана программа, увеличивающая и печатающая целочисленный счётчик. Вот здесь можно посмотреть больше примеров и скачать исходные тексты: https://github.com/aaronduino/asciidots

Sapiens

Aug. 11th, 2017 09:26 am
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Книга Юваля Ноя Харари "Sapiens. Краткая история человечества" - великая книга.
Всем рекомендую. Там объясняется, почему в истории главное не объективное и не субъективное, а интерсубъективное. Что история на самом деле состоит из жизни вымышленных штуковин, в которые верят сразу много людей. К этой категории относятся деньги, империи, религии, права человека и многое многое другое.

Firefox sync

Aug. 10th, 2017 03:18 pm
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Вот интересно, а кто-нибудь из моих френдов свой собственный сервер Firefox sync уже поднимал?

Оно вроде как под это заточено. Более того, судя по тому что по умолчанию использует sqlite, оно очень заточено под инсталляции с небольшим числом юзеров.

Upd: На Firefox Sync собственно, свет клином не сошелся. Устроит любой способ синхронизации букмарок и паролей, который обладает следющими двумя свойствами:

1. Поддерживается в десктопном firefox (для Linux) и Firefox for Android
2. Позволяет хранить эту информацию на своем собственном сервере.

Попробовал addon Xmarks-sync - все замечательно, можно на обычном WebDav-е все хранить. Но облом, в андроиде не работает.
vak: (Default)
[personal profile] vak
Если у вас не открывается ссылка типа http://foo.bar.net/ по причине блокировки провайдером, попробуйте http://anonymouse.org/cgi-bin/anon-www.cgi/http://foo.bar.net/
vak: (Default)
[personal profile] vak
В Прилуках на лавочке у родного подъезда, с полным комплектом детей и племянниц. Сейчас уже всех и не соберёшь в кучу.

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
В процессе работы команды vacuum в базе возникают виртуальные пары тупл-антитупл.
(это у нас народ за чашкой кофе флеймит)
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
https://www.reuters.com/article/us-shipping-gps-cyber-idUSKBN1AN0HT

Из-за распорстранившейся практики глушения и подделки сигнала GPS разные страны рассматривают идею возвращения к наземным радионавигационным системам. Потому что передатчик Лорана находится на порядки блихе к судну, чем спутник GPS, ну и излучает куда более мощный сигнал. Имея антенну 100x100 метров и питание от электрической распределительной сети, это можно себе позволить. Такое карманной глушилкой уже не заглушишь.

Эпиграф

Aug. 9th, 2017 12:25 pm
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Попалась замечательная цитата:

Мы, тролли, получше своих репутаций
И тем отличаемся от людей. © Г.Ибсен

Поставить что ли ее эпиграфом или подзаголовком к журналу...

Электричество дали

Aug. 9th, 2017 12:06 pm
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Все-таки в неделю электрики уложились и в среду утром электричество в Плоском дали.
Правда, при этом кроме ремонта проводов пришлось еще поменять трансформатор, снабжающий две деревни.

Достанные непрерывными звонками они вчера еще и генератор в деревню привезли. Здоровенный какой-то. (впрочем сам я его не видел).
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Звонила мама, и сказала что электрики таки доехали и провода починили. Но электричества в них все равно нет.
Делайте ваши ставки - уложатся они в неделю даунтайма или нет.

О погоде

Aug. 6th, 2017 10:06 am
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
В среду в Плоском был ураган



Повалило кучу деревьев, я даже не стал все фотогшрафировать, оборовало провода.
Провода, что характерно, до сих пор не починили. Звоним сегодня электрикам, а они "У нас тут записано, что напряжение вам еще позавчера дали". НУ может напряжение и дали, и на том столбе, за которым провода оборваны оно есть, но нам-то от этого не легче.

Генератор круглые сутки гонять не будешь, жрет собака около литра бензина в час. И проблема даже не в том, что бензин дорогой, а в том, что за ним ездить надо. Прям хоть покупай сразу 200-литровую бочку.

Поэтому генератор работает примерно 8 часов в сутки - 2 часа утром, 2 часа в обед и три часа вечером.

В свое время я сделал в доме две ветки проводки, завдеенные на разные автоматы - одну силовую для электроплиток, водонагревателей и т.д, и вторую для всего остального. Естественно, когда включен генератор "черные" розетки не работают (черные они условно - на них наклеен кусочек черной изоленты. Поскольку искать нормальные розетки двух разных цветов мне было лень).

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

Вот вовремя я бензопилу поточил. Теперь я разбираю нападавшие деревья потихоньку.

А с зарядкой телефона я приспособился так - к сетевому зарядному устройству подключается повербанк, а к нему - телефон. В результате, когда генератор включен, повербанк набирает энергию, не важно чем в этот момент занимаюсь я, а потом телефон заряжается. Вот была бы точка доступа с пятивольтовым питанием, ее бы так же включил. Но она у меня старинная, на 7.5V.
vak: (Default)
[personal profile] vak
Сегодня на фестивале древних компьютеров выступал Пол Лафтон, автор первой операционной системы для компьютеров Apple. Его пригласил Брюс Дэймер, хранитель частного компьютерного музея Digibarn, по инициативе которого некоторое время назад удалось восстановить и выложить в свободный доступ исходный код Apple DOS. Скачать можно здесь: ZIP 264 кбайт.

Стартовый экран Apple DOS 3.1:



Пол Лафтон:



Прикольно выглядит контракт на разработку:

Програмируем Micro:Bit

Aug. 4th, 2017 08:34 pm
vak: (Default)
[personal profile] vak
Два года назад Би-Би-Си объявила амбициозный проект: одноплатный компьютер для обучения младших школьников программированию и электронике. Конечно, я тут же подписался на новинку. Три дня назад я наконец получил долгожданную платку.



На видео есть неплохой подробный обзор для начинающих:



Все эти навороты с Джаваскриптом, Питоном и Blocks забавные, конечно, но для для старпёров типа меня есть традиционный способ программировать на классическом C++, под обычным Линуксом. Установка на Ubuntu делается следующим образом.
$ sudo apt-get install python-setuptools cmake build-essential ninja-build python-dev libffi-dev libssl-dev srecord
$ sudo easy_install pip
$ pip install yotta
$ sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi
$ sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
$ sudo apt-get update
$ sudo apt-get install gcc-arm-embedded
Скачиваем с Гитхаба примеры:
$ git clone https://github.com/lancaster-university/microbit-samples
$ cd microbit-samples
$ yt target bbc-microbit-classic-gcc
Компилируем пример "Hello world":
$ yt build
Загружаем прошивку в плату, подключенную через USB:
$ cp ./build/bbc-microbit-classic-gcc/source/microbit-samples-combined.hex /media/$USER/MICROBIT/
Исходный код примера "Hello world" выглядит так:
#include "MicroBit.h"

MicroBit uBit;

int main()
{
    // Initialise the micro:bit runtime.
    uBit.init();

    // Insert your code here!
    uBit.display.scroll("HELLO WORLD! :)");

    // If main exits, there may still be other fibers running or registered event handlers etc.
    // Simply release this fiber, which will mean we enter the scheduler. Worse case, we then
    // sit in the idle task forever, in a power efficient sleep.
    release_fiber();
}
vak: (Default)
[personal profile] vak
Шикарный учебник по программированию от Александра Шеня.

https://www.mccme.ru/free-books/shen/shen-progbook.pdf

Profile

netch80: (Default)
netch80

August 2017

S M T W T F S
  12345
67 89101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 18th, 2017 06:19 pm
Powered by Dreamwidth Studios