15 сентября 2010 г.

Write in C!

Пробило меня послушать битловскую “Let it be”. Ну, покопался ютубе, нашел, проперся (собстна, прусь до сих пор :)). Однако, прикол не в этом -- полез я дальше перебирать ссылки. На удивление много попадалось хороших годных каверов и перепевок, но один просто убил:

Текст:
When I find my code in tons of trouble
friends and colleagues come to me,
speaking words of wisdom
“write in C”

And as the deadline fast approaches,
and bugs are all that I can see
Somewhere someone whispers:
“write in C”

Write in C, Write in C,
Write in C, oh, Write in C,
LOGO’s dead and burried,
Write in C

I used to write a lot of FORTRAN
For science it worked flawlessly
Try using it for Graphics!
Write in C!

And if you’ve just spent nearly 30 hours
debugging some assembly
Soon you will be glad to
write in C

Write in C, Write in C,
Write in C, oh, Write in C,
BASIC’s not the answer,
Write in C

Write in C, Write in C,
Write in C, oh, Write in C,
PASCAL won’t quite cut it,
Write in C
Мой вариант перевода:
В моем коде тонны лажи
слов я мудрых не постиг
мне же говорили
Пиши на Си!

Вот стоит там на пороге
полярный толстый белый лис
кто-то тихо шепчет
Пиши на Си!

Пиши на Си, Пиши на Си,
Пиши на Си, Пиши на Си,
ЛОГО мертв и похоронен
Пиши на Си!

Сотни нефти за ФОРТРАНы
мне давал один НИИ
где теперь ЕС’ки
Пиши на Си!

Бывает так, что в коде багов
больше, чем в том коде байт
АСМ это слишком
Пиши на Си!

Пиши на Си, Пиши на Си,
Пиши на Си, Пиши на Си,
БЕЙСИК не решает
Пиши на Си!

Пиши на Си, Пиши на Си,
Пиши на Си, Пиши на Си,
ПАСКАЛЬ слишком длинно
Пиши на Си!

5 сентября 2010 г.

Черная магия сортировки

Вступительное слово: поскольку сам я занимаюсь прогаммизмом не часто, регистрироваться на спец. форумах, дабы постить подобную хрень в отведенных для того местах, мне лениво. Но, тем не менее, иногда случаются разные находки, которыми не грех было бы и поделиться, во-первых, и которые стоит зафиксировать, чтобы самому не забыть, во-вторых. Перед теми, кому данный пост, а также любой другой помеченный тегами “прокомпьютерное” или “perl”, покажется неведомой херней, заранее извиняюсь.
Итак, как известно, сортировка это упорядочивание списка по какому-либо критерию. В perl’е этим благородным делом занимается встроенная функция с говорящим названием “sort” — штука архимощная тем, что позволяет повесить сравнение элементов упорядочиваемого массива на функцию заданную программистом. При желании, вы можете сами реализовать любой критерий сортировки. Т.е. “sort” перебирает элементы по парам и каждый раз спрашивает назначенную функцию в верном ли порядке они стоят, функция получает элементы для сравнения и возвращает три возможных результата: -1 (порядок неверный), 1 (порядок верный) и 0 (элементы равны друг-другу). Все это базовые истины, изложенные в любом учебнике или руководстве по perl’у.
А теперь представьте, что мы не будем никак сравнивать два элемента, а просто возьмем и внезапно возвратим случайную целую величину в диапазоне от -1 до 1 включительно. В результате этого черного колдунства несчастный “sort” вместо упорядочивания займется действом прямо противоположным. Например, простое тасование массива:
@unsorted = sort {int (rand(3)) - 1} @sorted