[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Функционал и интерфейс



Покотиленко Костик -> debian-russian@lists.debian.org  @ Mon, 16 Mar 2009 19:04:24 +0200:

 >>  >>  >> >> Демоны почему-то чаще всего пишут не на скриптовых языках. 
 >>  >>  >> > 
 >>  >>  >> > Ошибаетесь. Большинство написанных в последние несколько лет демонов как раз 
 >>  >>  >> > скриптовые. Вот лет 10 назад да, писали на С в основном, сейчас же очень много 
 >>  >>  >> > написано на скриптовых языках. 
 >>  >>  >> > 
 >>  >>  >> 
 >>  >>  >> 
 >>  >>  >> Проверил список демонов на одной из машин
 >>  >>  >> snmpd, courier-imap, courier-pop3, portmap, acpid, dbus, syslog, klog,
 >>  >>  >> mysql, apache, cupsd, exim4, freeradius, smartmon, samba, winbind и еще
 >>  >>  >> несколько других - все не скриптовые.
 >>  >>  >> Единственный найденный скриптовый - xen
 >>  >> 
 >>  >>  ПК> spamassassin тоже скриптовый, но это его минус, причём большой.
 >>  >> 
 >>  >> Минус его не в этом.  Сделать ту же обработку на C у тебя, может, и
 >>  >> получится, но шансы, что она окажется быстрее, близки к нулю.  Потому
 >>  >> что perl заточен ровно под задачи этого класса, и производительность
 >>  >> _этих_ операций в нем вылизана гораздо лучше, чем это сможешь сделать ты
 >>  >> за ограниченное время.
 >> 
 >>  ПК> Ты прав, не по тому пути они пошли, но их уже не догнать.
 >> 
 >> Кто "они"?  Админы?

 ПК> Разработчики SA.

А куды им бечь?  Не анализировать письмо от слова "совсем"?

 >>  ПК> Пойми в чём тут дело? С perl и python всегда так.
 >> 
 >>  ПК> downloading servers from http://pyzor.sourceforge.net/cgi-bin/inform-servers-0-3-x
 >>  ПК> Traceback (most recent call last):
 >>  ПК>   File "/usr/bin/pyzor", line 8, in ?
 >>  ПК>     pyzor.client.run()
 >>  ПК>   File "/var/lib/python-support/python2.4/pyzor/client.py", line 1003,
 >>  ПК> in run
 >>  ПК>     ExecCall().run()
 >>  ПК>   File "/var/lib/python-support/python2.4/pyzor/client.py", line 184, in
 >>  ПК> run
 >>  ПК>     self.servers  = self.get_servers(servers_fn)
 >>  ПК>   File "/var/lib/python-support/python2.4/pyzor/client.py", line 409, in
 >>  ПК> get_servers
 >>  ПК>     servers.read(open(servers_fn))
 >>  ПК>   File "/var/lib/python-support/python2.4/pyzor/client.py", line 117, in
 >>  ПК> read
 >>  ПК>     self.append(pyzor.Address.from_str(line))
 >>  ПК>   File "/var/lib/python-support/python2.4/pyzor/__init__.py", line 458,
 >>  ПК> in from_str
 >>  ПК>     fields[1] = int(fields[1])
 >>  ПК> IndexError: list index out of range
 >> 
 >> Вот с python - да, сам регулярно вслух удивляюсь.  Вроде бы язык не
 >> способствует неаккуратности, а поди ж ты...  А с perl - нет.

 ПК> Всё дело в том, что сильно высокие языки много от программиста
 ПК> скрывают, упрощают ему жизнь так сказать. Он по этому и не знает,
 ПК> что мир реально сложнее устроен.

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

 ПК> По этому - чуть шо, получаем какую-то ругань, никому, кроме
 ПК> потенциального хакера не полезную. По ней же ничё не скажешь, кроме
 ПК> версии python.

Ну почему "ничё"?  Хотя у перла, как мне кажется, обычно с руганью
лучше, но и тут, в общем, можно сказать, что именно слетело.  Нету в
fields второго элемента.  На C ты в этом месте, вероятно, получил бы
сегфолт.  Ну или (если бы сегфолт вылетел в твоих тестах и ты бы
закрылся от него проверкой) невнятное сообщение "мама, тут чего-то не
хватает".

Перл бы еще рассказал, с какими аргументами была вызвана функция, что
позволило бы найти ошибку гораздо быстрее.

-- 
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru

Юзер упорствует в хождении по граблям. Образовавшиеся шишки он считает
трудовыми мозолями. (С)энта


Reply to: