[ the same page in English ]
Слесарь начинался с программного этюда на Бейсике "генетический код". В результате были написаны процедуры обработки биологических последовательностей: ДНК, РНК[4], полипептидов[5]. Эти процедуры стали ядром интерактивного редактора биологических последовательностей[6]. Но работа с готовым редактором оказалась гораздо скушнее его программирования: гены нуждались в графическом воплощении.
Тут я узнал о биоморфах. Биоморфов придумал и поселил в своей программе "Слепой часовщик"[7] известный английский эволюционист Ричард Доукинз[8]. Биоморфы не всегда похожи на животных и растения внешне, но так же как животные и растения могут размножаться и мутировать.
Теперь конструктор состоял из трех частей: редактора биологических последовательностей, интерпретатора этих последовательностей в графические образы (биоморфы) и эволюционной части, заимствованной из программы "Слепой часовщик". Работа с генам приобрела смысл. Можно было задаться целью спроектировать выдающийся биоморф, а ради этого изучить генный код и функции ферментов, реализующих этот код в живой клетке. Или наоборот: сравнивая геномы родственных биоморфов, можно было догадаться, как устроен генный код. Осталась и возможность заниматься "искусственным отбором" биоморфов, ничего не зная ни о генетическом коде, ни о самих генах.
С 1989 г. Слесарь работал в летних компьютерных и биологических школах. Для него придумывались специальные этюды: "переоткрытие генного кода", "локализация мутации". За несколько лет выведены и сконструированы разнообразные биоморфы. Это буквы: ; геометрические фигуры: , ; животные: птица , циклоп, лягушка , игуана , таракан , волк ; растения: орхидея ; узоры: ; духи: ангел демон .
Если и вы захотели поработать со Слесарем, то берите его здесь (~100 KB, версия для MSDOS).
to GenCode.Init make "Phe [UUU UUC] make "Leu [UUA UUG CUU CUC CUA CUG] make "Ile [AUU AUC AUA] make "Met [AUG] make "Val [GUU GUC GUA GUG] make "Ser [UCU UCC UCA UCG AGU AGC] make "Pro [CCU CCC CCA CCG] make "Thr [ACU ACC ACA ACG] make "Ala [GCU GCC GCA GCG] make "Tyr [UAU UAC] make "Trm [UAA UAG UGA] make "His [CAU CAC] make "Gln [CAA CAG] make "Asn [AAU AAC] make "Lys [AAA AAG] make "Asp [GAU GAC] make "Glu [GAA GAG] make "Cys [UGU UGC] make "Trp [UGG] make "Arg [CGU CGC CGA CGG AGA AGG] make "Gly [GGU GGC GGA GGG] make "acids [Phe Tyr His Cys Gln Lys Asp Glu Trp Val Ala ~ Thr Gly Pro Ser Ile Leu Arg Asn Met Trm] end to gencode :x :dir if not (3 = count :x) [op "] ifelse :dir [ op first filter [memberp :x thing ?] :acids ~ ] [ ~ ifelse memberp :x :acids [ ~ op item 1 + random count thing :x thing :x ~ ] [ op " ] ~ ] op " end to ribosoma :seq :dir op map [gencode ? :dir] :seq end