Укрощение @Интернет@


Часть вторая. Техническая: недостатки Perl - часть 2


Или вот другой случай – рассказывают (врут, конечно): некогда известный микробиолог Роберт Кох что-то кипятил в стеклянной колбе, плотно окутанной изрыгаемым ею паром. Вошедший в лабораторию ассистент поинтересовался: что тут за дела творятся? "Угадай", – предложил Кох, - "что находится в колбе?". Ассистент битый час а, может быть, и целый день перечислял все известные ему микробы, но тщетно. "Это же сосиски!" – наконец воскликнул Кох. Теоретически варить сосиски в колбе вполне возможно, но практически ее используют совсем в иных целях, и у ассистента сложилась прочная ассоциация "колба" – "бактерии", мешающая сделать очевидное логическое умозаключение.

Человеку свойственно ошибаться, а программисту – особенно. Идеалом разработчика серверных приложений был бы такой язык, который делает только то, что ему прикажут, и никогда не позволяет себе самодеятельности. Причем, если приказ программиста не очень хорошо понят, язык не должен пытаться угадать, что же от него хотят, – ведь он может угадать неправильно! Попутно, не мешало бы ужесточить контроль над самим программистом, исключив возможность большинства ошибок на уровне архитектуры языка. Эх,.. мечты, мечты…

В этом смысле Perl – какой-то мазохистский выбор, честное слово! Неукрощенный зверь с хитрыми повадками и очень своенравным поведением, - скажешь ему "купи картошки", а он ее не только купит, но и почистит, и даже суп сварит! Конкретный пример – функция открытия файла может не только открывать, но и запускать его, клонировать дескрипторы, создавать псевдонимы – стоит только указать в имени файла специально на то предназначенные символы.

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




Начало  Назад  Вперед



Книжный магазин