Pull to refresh
72
0
Я робот @San13

User

Send message

Так ты, значит, хотел быть программистом…

Reading time 5 min
Views 3.2K
BY SCOTT C. REYNOLDS

Сколько ты себя помнишь, компьютеры и электроника привлекали тебя. К моменту твоего совершеннолетия ты уже верно стоял на пути профессионального программиста. Первая интернетская золотая лихорадка была в самом разгаре, и вас, нердов, повсюду величали героями Новой Экономики на обложках журналов Fast Company и Wired, и нерды гребли деньги лопатой, делая то же, что любишь делать ты.
Читать дальше →
Total votes 139: ↑114 and ↓25 +89
Comments 79

Элементы стиля: UNIX как литература

Reading time 7 min
Views 2.4K
(by Thomas Scoville)

В начале 80-х я работал в исследовательском отделе местной телефонной компании Кремниевой долины. Мой отдел состоял в основном из кандидатов наук и одаренных хакеров. Как вы понимаете, контора была UNIX-ориентированной.

Менеджер группы был исключением: ни научного звания, ни технического образования. Он явно отдавал себе в этом отчет. Мы подозревали, что он (ошибочно, как мы думали) не очень уверен в уровне своего образования и ума. Однажды произошла история, которая подтвердила наши подозрения: он сообщил нам, что его пугает учёность нашего отдела, и что он будет предпринимать шаги, чтобы что-то сделать с этим. Выход он нашел неожиданный: “Мне надо повышать уровень интеллекта”, сказал он, “Я собираюсь выучить UNIX.”
Читать дальше →
Total votes 88: ↑75 and ↓13 +62
Comments 86

Наш мир, возможно, — одна огромная голограмма

Reading time 4 min
Views 3.6K
(Сокращенный перевод.)

Эксперимент GEO600, Ганновер. В чистом поле — две перпендикулярные траншеи, покрытые металлом. Внутри — детектор, длиной 600 метров. Последние 7 лет там искали (не нашли) гравитационные волны, испускаемые нейтронными звездами и черными телами. Ученые в лаборатории не знали, как объяснить странный шум в результатах измерений. Внезапно появился некий Хоган (Hogan, USA) с объяснением. По его словам, GEO600 наткнулась на фундаментальное ограничение пространства-времени — точку, где континуум уже не может быть представлен как сплошной (по Эйнштейну), а ведет себя как «зерна», типа зернистости фотографии в газете. «GEO600 замеряет квантовые колебания пространства-времени. Если там происходит именно это то, то мы все живем в большой космической голограмме», говори Хоган.
Читать дальше →
Total votes 184: ↑147 and ↓37 +110
Comments 209

Наш мир, возможно, — одна огромная голограмма

Reading time 4 min
Views 987
Источник: www.newscientist.com/article/mg20126911.300-our-world-may-be-a-giant-hologram.html?full=true
15 January 2009 by Marcus Chown

Сокращенный перевод.

Эксперимент GEO600, Ганновер. В чистом поле — две перпендикулярные траншеи, покрытые металлом. Внутри — детектор, длиной 600 метров. Последние 7 лет там искали (не нашли) гравитационные волны, испускаемые нейтронными звездами и черными телами. Ученые в лаборатории не знали, как объяснить странный шум в результатах измерений. Внезапно появился некий Хоган (Hogan, USA) с объяснением. По его словам, GEO600 наткнулась на фундаментальное ограничение пространства-времени — точку, где пространство-время уже не может быть представлено как сплошной континуум Эйнштейна, а ведет себя как «зерна», типа зернистости фотографии в газете. «GEO600 замеряет квантовые колебания пространства-времени. Если в лаборатории GEO600 происходит именно это то, то мы все живем в большой космической голограмме», говори Хоган.
Читать дальше →
Total votes 57: ↑31 and ↓26 +5
Comments 20

Часть 3/3. Компилятор идеальной VM для ICFPC 2009, на Haskell, с популяризаторскими комментариями

Reading time 3 min
Views 457
Окончание. Предыдущие части: 1 и 2

Что еще осталось? Мы пропустили место, в котором два смежных опкода превращаются в один. Что мы имели? По спецификации проходили следующие операции:

flag = m20 > 0
if (flag) m222 = m3 else m222 = m4


Исследуя бинарные файлы на предмет того, как эти конструкции используются, мы поняли, что они ходят парой Cmp, затем Phi. Наверняка, потому что так скомпилировались организаторами из каких-то их исходных формул ихним каким-то компилятором. Ну, раз так, то мы их немножко склеим в одну операцию:

-- convert 2-op conditional operator to 1-op<br>
removePhi [] = []<br>
removePhi ((Cmpz cond condr1):(Phi addr r1 r2):xs) = <br>
            Noop addr : If cond condr1 addr r1 r2 : removePhi xs<br>
removePhi (x:xs) = x:removePhi xs<br>
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 4

Часть 2/3. Компилятор идеальной VM для ICFPC 2009, на Haskell, с популяризаторскими комментариями

Reading time 17 min
Views 519
Начало здесь.

Теперь разбираемся как мы будем декодировать весь файл, а не только одну инструкцию.

readMyFile = withBinaryFile "bin4.obf" ReadMode $ \-> do<br>
        len <- hFileSize h<br>
        buf <- mallocBytes $ fromInteger len<br>
        hGetBuf h buf $ fromInteger len<br>
        return (len, buf)<br>
Это императивный кусок, потому что с файлами так в основном и работают. withBinaryFile открывает файл, выполняет указанную ей «пользовательскую» функцию, передав ей handle, и закрывает файл, и возвращает то, что вернула ей пользовательская функция. Вот, после знака $ мы описали «пользовательскую» функцию с одним параметром h (от handle). Эта функция получает размер файла, аллоцирует буфер, читает в буфер и возвращает сам буфер и его длину (в байтах). Заметим, что «пользовательская функция» здесь не имеет имени и начинается так:

Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 0

Часть 1/3. Компилятор идеальной VM для ICFPC 2009, на Haskell, с популяризаторскими комментариями

Reading time 17 min
Views 1.2K
Здесь мы будем разбирать по буквам некую программу (компилятор VM) на Хаскеле. На вход этому компилятору дается бинарный файл с инструкциями некоего процессора, где в этих инструкциях описываются некие вычисления. На выходе нашего компилятора получается текст программы, тоже на Хаскеле, которая производит те же самые вычисления, с большой скоростью. Возможно, это не компилятор, а декомпилятор, не знаю. Сравнение работы результирующих программ на Haskell/Java приводится в предыдущем посте.

Читать дальше →
Total votes 40: ↑34 and ↓6 +28
Comments 4

Haskell и Java — сравнение на реальной задаче (спутники, ICFP Contest)

Reading time 6 min
Views 2.4K
Сегодня на хабре проходила статья про Nemerle и ICFP 2009. Я хотел бы поделиться собственными изысканиями на эту тему, которые сделал недавно. Моей задачей было написать идеальный компилятор VM из задания, сделать это на Хаскеле, а главное, сравнить скорости результирующего кода на Java и на Haskell. Здесь не приводится полное решение задачи для ICFP, потому что задача эта переборная, и VM в ней — самое внутреннее место, от которого зависит производительность переборного решения, этим она и интересна.

Читать дальше →
Total votes 22: ↑17 and ↓5 +12
Comments 5

Information

Rating
Does not participate
Location
Харьковская обл., Украина
Date of birth
Registered
Activity