|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Bulat Ziganshin 2:5093/4.126 17 Mar 2002 13:00:26 To : Victor Wagner Subject : Perl Ruby Tcl Piton -------------------------------------------------------------------------------- Sunday March 17 2002, Victor Wagner writes to Anton Kozyr: AK>> Вот в сабже я перечислил 4 языка - имхо самые VW> Scheme забыл. Да в общем-то и php тоже по распространенности где-то VW> рядом стояла. а что, scheme действительно популярен? да и ruby.. а вот у php есть вполне реальная ниша - в него встроены средства, нацеленные на web-программирование. dbi не из него в другие языки был перенят? VW> Tcl хорош VW> 1. Для событийно управляемого программирования, в том числе GUI. наскока я понимаю, речь о передаче блоков кода в процедуры и сохранении их в переменных # это на ruby f = TForm.new { title = 'Жми OK' ok_button = TButton.new { title = 'OK' on_click { f.close } } } VW> Tk для него роднее чем для perl, а уж возможность двунаправленных VW> пайпов и копирования данных в фоновом режиме... что роднее - никуда не денешься, а второе и третье я не понял. pipe(), fork() и даже треды есть и в перле VW> 2. Для встраивания в свои приложения. У perl С API посложнее будет. VW> Впрочем, в последних версиях Tcl с этим хуже стало. До такой VW> степени VW> что в comp.lang.tcl рекламируют LUA. одна из сильных сторон Ruby - его реализация в виде ОО библиотеки на Си. после чего сишные расширения языка пишутся как на самом раби, только с неудобным синтаксисом === Cut === VALUE rb_obj_as_string(obj) // это функция, возвращающая строковое VALUE obj; // представление любого объекта { VALUE str; // VALUE - это ссылка на (любой) объект раби if (TYPE(obj) == T_STRING) { // если и так тип объекта - строка return obj; } str = rb_funcall(obj, id_to_s, 0); // послать объекту вызов метода to_s if (TYPE(str) != T_STRING) // если он не возвратил строку return rb_any_to_s(obj); // использовать универсальную ф-ию if (OBJ_TAINTED(obj)) OBJ_TAINT(str); return str; } === Cut === def obj_as_string(obj) return obj if obj.instance_of?(String) str = obj.to_s return any_to_s(obj) unless str.instance_of? String str.taint if obj.tainted? return str } VW> 3. Для создания проблемно-ориентированных язычков. В нем можно легко VW> определять свои собственные управляющие конструкции, типа VW> for_each_file_in_directory_tree опять же, такое можно в любом языке, где есть closures с параметрами. но в некоторых языках ;) (см. код для gui) это делать проще, чем в других Bulat, mailto:bulatz-AT-fort.tatarstan.ru, ICQ: work 15872722, home 11849833 ... Иногда для того, чтобы изменить свое восприятие мира, ... люди пытаются изменить сам мир --- GoldED+/W32 1.1.2 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/33403c949230.html, оценка из 5, голосов 10
|