[Moscow.pm] Динамические возможности Perl :: помощь коллективного разума

Alexander Lourier aml на rulezz.ru
Вс Май 2 06:35:45 PDT 2010


В сообщении от Воскресенье 02 мая 2010 17:22:02 автор Akzhan Abdulin написал:

> Вообще-то я тут вижу не сложность, а наоборот, простоту. Очень удобно
> определять, переопределять и использовать что-либо, когда удобно, и без
> всяких хаков.

О, понял. Действительно, интересная возможность. А если ещё какую-нибудь 
песочницу соорудить, в которой можно пользоваться ограниченным подмножеством 
объектов (наверняка, такое есть в Ruby), то вообще идеально для моей задачи 
подойдет.

> 
> Как верно заметил Егор, основной смысл - для создания языков любой
> предметной области на основе Ruby.
> 
> Синтаксис ActiveRecord (одна из ORM):
> 
> class Event < ActiveRecord::Base
>   validates_format_of :email, :regexp => /^\w+\@\w(?:\.\w+)*$/ # это пример
>   after_update :rework_self
>   after_update :notify_people
> 
>   def rework_self
>     # work
>   end
> 
>   def notify_people
>     # work
>   end
> end
> 
> Синтаксис Rake (замена make etc.):
> 
> task :compile => [:submodule_init, :configure] do
>   ...
> end
> 
> Синтаксис Chef (замена Puppet, CFusion):
> 
> package "libcurl" do
>   action :upgrade
>   notifies :restart, resources(:service => :our_uploader)
> end
> 
> directory "/etc/brix" do
>   mode 0770
>   owner "root"
> end
> 
> Синтаксис Bluepill:
> 
> Bluepill.application("app_name") do |app|
>   app.process("process_name") do |process|
>     process.start_command = "/usr/bin/some_start_command"
>     process.pid_file = "/tmp/some_pid_file.pid"
>     process.uid = "deploy"
>     process.gid = "deploy"
> 
>     process.checks :cpu_usage, :every => 10.seconds, :below => 5,
> 
> :times => 3
> 
>     process.checks :mem_usage, :every => 10.seconds, :below =>
> 100.megabytes, :times => [3,5]
>   end
> end
> 
> И так далее...
> 
> 2 мая 2010 г. 10:01 пользователь Alexander Lourier <aml на rulezz.ru> написал:
> > В сообщении от Пятница 30 апреля 2010 18:33:40 автор Akzhan Abdulin
> >
> > написал:
> > > К сожалению, сам постулат неверен. До возможностей метапрограммирования
> > > в Ruby далековато пока.
> > >
> > > Ведь само описание класса в Ruby является объектом и уже исполняется,
> > > со всеми вытекающими.
> >
> > А скажите, пожалуйста, не флейма ради, есть ли практическая выгода от
> > использования таких сложных возможностей языка? Зачем может потребоваться
> > наследование от объекта с переопределёнными методами? Сможет, скажем,
> > программист сопровождения найти ошибки в этом коде (и сколько у него
> > времени
> > на это уйдет), если разработчик к тому времени будет недоступен?
> >
> > В перле использование всякой экзотики обычно ограничивается хаками,
> > которые полностью скрываются интерфейсом модуля. Никого особо не
> > интересует, как внутри устроен профайлер, хотя там бывает страшно и
> > вообще write-only. --
> > Moscow.pm mailing list
> > moscow-pm на pm.org | http://moscow.pm.org
> 


Подробная информация о списке рассылки Moscow-pm