pphantom: (Default)
F704backus


20 сентября 1954 года, 60 лет назад, коллектив под руководством Джона Бэкуса в корпорации IBM впервые запустил формульный транслятор, получивший название FORTRAN.

ibm100__fortran__25_reunion__620x350

Коллектив создателей на 25 летнем юбилее
pphantom: (Default)
Интереса ради попробовал соорудить параллелизацию на Прологе (точнее, на SWI Prolog), и в результате обнаружил забавное явление.

В эту реализацию "от рождения" встроена длинная арифметика, поэтому один из механизмов (мьютексы) я попробовал потестировать на программе вычисления факториала (простой, насколько это возможно). В итоге обнаружилось, что получившаяся поделка работает, мягко говоря, существенно быстрее, чем другие реализации того же, оказавшиеся под руками (Maxima и C/C++ с GMP). А именно:
1)  SWI Prolog систематически обгоняет GMP (неважно, C или C++) в два раза. При включении распараллеливания (и там, и там) коэффициент растет и доходит примерно до 3.
2) Maxima проигрывает SWI в несколько десятков раз (но уже факториал миллиона считать попросту отказывается).

Теперь сижу и думаю - с чего бы это...

Fortress

Nov. 28th, 2010 03:23 am
pphantom: (Default)
Дошли руки почитать многочисленные описания языка Fortress, который, как предполагается, должен стать новым базовым вычислительным языком. Впечатление оказались двоякими - с одной стороны, местами интересно, с другой - четкое впечатление, что язык разрабатывали не прикладники-вычислители, а специалисты в CS (надо сказать, что впечатление соответствует действительности). Неплохие идеи перемежаются с "розочками на торте", которые в реальной жизни будут только помехой - например, использование unicode в синтаксисе и аппарат для работы с физическими размерностями.

Кроме этого, есть и очевидные глупости. Например, динамическая типизация - трудно представить себе, во-первых, зачем она нужна в "числодробительном" языке, и, во-вторых, как написать для такого языка компилятор, выдающий более-менее производительный код. Синтаксис излишне заумен - лично мне в этом отношении он больше всего напомнил Haskell, который народ именно по этой причине периодически сравнивает с Brainfuck. Ну и традиционная уже "мультипарадигменность", ради которой в язык запихали что-то функциональное, что-то от ООП... также традиционно сделав некую кашу, ненужную на практике, но позволяющую гордо заявлять, что "и это [лямбда, инкапсуляция и т.д. - подставлять по вкусу] в нем тоже есть".

Но самое забавное, это общее впечатление. Fortress чем-то очень похож... на Алгол-60. Не конструкциями, а общим стилем языка - достаточно красивого, удобного, пожалуй, для "книжного" описания алгоритмов, но малопригодного для реальных задач.
pphantom: (Default)
Обнаружил, что есть как минимум одна языковая деталь, при работе с которой интеловский компилятор проигрывает GNU'тому. Собственно, подозрения возникали и раньше, но сейчас они окончательно подтвердились.

Интеловский компилятор не умеет нормально обрабатывать рекурсию. Хвостовую - еще более-менее нормально, а вот в общем случае код получается весьма неэффективным. Правда, в вычислительных задачах рекурсия не особо нужна (и при необходимости ее обычно можно легко убрать), но все-таки печально.
pphantom: (Default)
Заглянул в классическую книгу Роуча "Вычислительная гидродинамика" и наткнулся на замечательное примечание:

====
Ричардсон занимался (применительно к вычислениям вручную) и тем, что теперь называют анализом экономической эффективности метода расчета. Он писал: "Пока что я платил за расчет одного координатного узла лапласиана по расценке n/18 пенсов, где n - число цифр, с которыми проводятся вычисления. Основная ошибка вычислителей состояла в том, что они путали знаки "плюс" и "минус". Что касается скорости расчетов, то один из самых быстрых работников рассчитывал за неделю в среднем 2000 узлов лапласиана с трехзначными числами; ошибочные расчеты не оплачивались".

Мы должны благодарить судьбу за то, что с 1910 г. социальные условия изменились. Многие из современных вычислителей-гидродинамиков окончили бы свои дни в богадельне, если бы они получали определенную плату за один расчет и при этом "ошибочные расчеты не оплачивались".
====
pphantom: (Default)
М-да, поработал. Долго и упорно улучшал алгоритм, в итоге улучшил. Раньше, по оценке, на имеющихся в наличии вычислительных мощностях он должен был бы работать несколько веков :), теперь - всего 10-15 лет. И что самое противное - похоже, что в процессе улучшения почти оформилось доказательство, что последний вариант - оптимальный. Где бы теперь раскопать сотню-другую суперкомпьютеров?..
Page generated Sep. 25th, 2017 01:20 pm
Powered by Dreamwidth Studios