понедельник, 4 января 2021 г.

Вычисление хэшей

 И снова зима, и снова очередной интерпретатор.

Два года назад я решил написать простой интерпретатор Форт-подобного языка. 

За четыре месяца я его написал. Пришлось переписывать четыре раза, но с четвёртого раза я таки его написал.

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

Чтобы понять, насколько это плохой или хороший результат, представьте себе язык ассемблера, в котором можно определять собственные функции, классы и даже свойства с методами get и set. 

И всё это работает конечно на порядки медленнее, чем например Python, но 1 МГц у этого процессора есть по скорости.

В принципе я потом проводил эксперимент с Питоном. В подобном тесте он показал похожую производительность. Просто некоторые моменты в нём очень хорошо оптимизированы.

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

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

Программа вычисляет хэши


Но я вспомнил, что самая первая версия начиналась примерно с этого же. Это побудило меня написать этот пост.

Вот, снова зима, снова интерпретатор. Снова программа умеет считать хэши.

За годы разработки программ я сделал такой вывод: если хочешь написать большую программу, пиши её медленно. Условно говоря, по одной функции в день.

Тогда мозг не перегружается информацией, и нет стремления всё успеть.

Это стремление приводит к тому, что необходимость всё переписать с нуля, сильно демотивирует, когда начинаешь в очередной раз всё переписывать.

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

Вот, новый язык программирования, объектный Форт, но писать на нём что-либо нет никакого желания.

А тут он снова перестал работать, всё надо переписывать, и быстродействие всего 1 миллион операций в секунду. 

Я почувствовал тогда какую-то непередаваемую пустоту. Как будто сделал нечто никому ненужное, как будто записал альбом музыки, которую никто не услышит.

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

Дело в том, что на Форте программировать довольно увлекательно. Сравнимо с Питоном.

А вот писать что-то такое с объектами и классами почему-то не возникает желания совершенно.

Я стал анализировать причины, почему это происходит. Почему на C++ писать интересно и легко, а на производном - на интерпретаторе, писать нечего.

Но в какой-то момент я сказал себе: стоп, ты больше не можешь писать код так, как делал это раньше. Тело слишком быстро устаёт и слишком медленно восстанавливается. Пиши медленно, по чуть-чуть. Но если ты не будешь писать программу, ты так ничего и не напишешь, и тебе придётся заниматься этим в следующей жизни.

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

И вот, она умеет вычислять хэши для строк. Чем не повод повеселиться.


Комментариев нет: