|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Bulat Ziganshin 2:5093/4.126 05 Apr 2005 23:04:29 To : Dmitry Grebeniuk Subject : perl syntax -------------------------------------------------------------------------------- Tuesday April 05 2005, Dmitry Grebeniuk writes to Bulat Ziganshin: DG>>> В принципе, при желании можно было бы это же изобразить в DG>>> чисто функциональном стиле (разве что ловить End_of_file надо, DG>>> что не совсем функци- анально), и было бы всего лишь чуть-чуть DG>>> менее быстро. BZ>> насколько именно? :) у тебя есть какие-то цифры на руках? DG> У меня есть обоснованные прогнозы. Я видел, как окамл оптимизирует DG> (в частности, хвостовую рекурсию), оптимизация tail calls - это мелочь. главная проблема неэффективности функционального стиля программирования - равбота со значениями вместо работы с ячейками памяти и использование списков вместо массивов DG> поэтому расходы времени будут DG> только на выделение памяти и на GC: по сравнению с несколькими ассемблерными командами это будет работать куда дольше :))) думаешь, зря они вместо прямолинейного кода использовали такой неестественный подход? :) DG> выделение 4 байт на одну строку DG> (в DG> случае "wc -l"), а если учесть, что эти 4 байта будут в области памяти DG> "молодых" и будут нужны только очень короткое время, то становится DG> ясно, что эти расходы весьма не велики. Хотя, конечно, на досуге DG> поиграюсь -- самому интересны цифры. Только подскажите урл примера, DG> где на массивах реализуется wc. пока не могу вспомнить. погугли что0нибудь вроде "programming languages shootout" BZ>>>> а что в нём сделано с передачей параметров!!! DG>>> Кстати вот не надо :) Изврат, конечно, но можно вполне DG>>> красивые вещи выписывать, для скриптов и веб-приложений -- самое DG>>> то. BZ>> да, я и говорю, что перл3 был отличным языком. всё, что свыше BZ>> простых списков/хешей - мама, не горюй DG> Вам не нравятся ссылки? проблема в том, что стандартные функции принимают списки/хеши в развёрнутом виде. соответственно, на программисте лежит удовольствие по созданию/разыменовыванию всех этих ссылок. в ruby сделано лучше - там все объекты представлены ссылками и использование ссылок совершенно прозрачно. ты можешь написать что-то вроде: x = { "a" => [1, 2, {"b"=>nil}] } затем передать эту переменную в процедуру или наоборот - возвратить её. доступ ко всем элементам и их изменение прозводится напрямую: x["c"] = x["a"][2]["b"] x["a"][3] = x["a"][2].keys а в перле существует даже специальное руководство по тому, как делать массивы массивов, массивы хешей и т.д. с образцами кода - потому, что этот код даже для столь простых случаев оказывается не совсем очевиден Bulat, mailto:bulatz-AT-fort.tatarstan.ru, ICQ: work 15872722, home 11849833 ... Иногда для того, чтобы изменить свое восприятие мира, ... люди пытаются изменить сам мир --- GoldED+/W32 1.1.2 * Origin: Чубайс Бессмертный - повелитель Тьмы (2:5093/4.126) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/33404253255f.html, оценка из 5, голосов 10
|