<<<предыдущий список следующий>>>

Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer.


09 Марта 1999

Я получил письмо от разработчиков http://mp3.zodchiy.ru/, в котором авторы сообщают о доработке поисковой системы - теперь можно искать и по названиям песен, в частности.

Ссылку на еще одну российского производства искалку MP3 прислал мне Evgeny Arsenyev - http://195.46.97.10/. С поиском у нее все еще менее тривиально, чем у Зодчего до доработки. То есть более одного слова в строке запроса лучше не набирать. :-) Или же ставить перед каждым словом плюс.

О языках.

   
From: Igor Royzis
Subject: A comment

Уважаемый Дмитрий,

Позволь прокомментировать весьма удивившее меня высказывание в обзоре от 26 февраля.

"чем быстрее этот язык помрет, тем лучше. Он давно и сильно тормозит программирование и компьютерный мир. Я имею в виду Си, а не ++. Второй тоже тормозит (развитие, а не машину), но его еще можно терпеть, [.. отрезано ..] сегодня говорить о том, что такая-то программа создала брешь в защите компьютера из-за возможного переполнения буфера - это примерно как опубликовать статью о том, что вчера в ресторане был неудачный шашлык потому, что повар в него описался. [:отрезано:]"

Странно слышать эти слова от компьютерного гуру. Язык не может тормозить программирование, его тормозят непрофессионалы. Проблема языка Си как раз и есть в том, что он был не совсем верно подан и как следствие, неверно подхвачен большой массой "компьютерного люда". Керниган и Ричи писали свою знаменитую книгу для таких же "профи" и сделали это на мой взгляд неверно, (хотя и предупреждали в книге не раз): книга стала рассматриваться как учебник, каковым ни в коем случае не является. Самое плохое, что этот "стиль" подобрали другие, меня до сих пор воротит от доброго большинства учебников по С/С++, начинающихся с cout << (printf) "Hello, world!"; Уже даже поколение преподавателей выросло, так что пришлось сталкиваться со знакомыми, вопрошающими после успешно пройденного и сданного университетского курса по С++: Так что же все таки такое cout?? На самом деле Си - это макроассемблер с "наворотами" в самом прямом смысле этого слова. Кто писал на ДЕКовском ассемблере со структурным макросами или на Майкрософтоском MASM с версии 6 найдет очень мало различий, как это ни странно. Кто и когда придумал делать из С язык "высокого" уровня и писать на нем приложения? А потом еще и ругать сам язык.. Интересно за что? За слишком свободный синтаксис? Так, не для дураков ведь, для системных программистов (давай ругать ассемблер за свободный доступ к регистрам!), а дураку только дубину дай - даже строгий язык не справится. Си, по-видимому, не должен быть первым языком для обучения, хотя и на нем можно и должно(!) писать корректные программы. Так что существующие и известные недостатки (впрочем, имеющиеся практически во всех языках) не могут привести к такому категоричному заключению. Ну а уж примешивать сюда buffer overflow совсем не к месту. По твоей же аналогии это все равно, что предъявлять русскому языку обвинения в соучастии во всех судебных делах, связанных с оскорблениями. Повторюсь еще раз: язык не виноват, виноват непрофессионализм и невладение языком и его окружением. Тут уж не поможет никто, даже многоуважаемый мной г-н Вирт с его классическими строгими языками. Отсюда и уровень раздолбайства. И, кстати, один из первых признаков непрофессионализма - непомерное "возвеличивание" языков. У самого неумелого подмастерья и то есть несколько инструментов для работы. "Писание" же СУБД на Перле, а операционных систем на Бейсике (я ни на что не намекаю! :-) и приводят к кривым тягам. Несмотря на то, что теоретически ты прав: написать что угодно можно на чем угодно. Вопрос в том, как будет смотреться, работать и поддерживаться в дальнейшем диспетчер процессов на бейсике или диалоговый high-end с большим количеством форм и полей на Си. Кесарю - кесарево, что за простая истина! Ну и постоянные кидания и "моды", которые я на дух не переношу. А ведь ни Java, ни Перл и рядом не стоят по красоте и продуманности (ладно, не буду про Си) хотя бы с Модулой 2. Ведь если убрать моду и стучание в грудь, то Java - урезанный C++ со старой, еще паскалевской концепцией виртуальных машин, непродуманный в плане безопасного применения и с утопической идеей о переносимости с кофеварок на пентиумы (это при Майкрософте-то, умудрившемся из мобильнейшего Си сделать непереносимое даже на другие компайлеры чудовище своими _far-ами и даже __far-ами). Ну а об ублюдочном Перле и говорить нечего, интересно, он догнал Аду по грамматической навороченности? Это чудо природы работает вполне сносно для анализа моих логов, но претензии на большее - извините. Ладно, ладно, не буду углубляться, дабы не задеть нежных чувств редактора :-)
P.S. Пользуясь случаем, хотел бы поблагодарить за интересные обзоры и выразить восхищение уровнем и обширностью познаний в нашей раздолбайской :-) профессии.

С уважением,

Igor Royzis
rigor@iname.com

 

Спасибо на добром слове. :-)

Да, ты совершенно прав, конечно, язык тормозить прогресса не может. Я плохо выразился. Повсеместное использование Си тормозит, не язык. Даже точнее скажем - беда в отсутствии хорошей замены.

Увы, замена же не может появиться по той дурацкой причине, что на языке дело не кончается. На практике стиль программирования определяется программистом, языком и ОС, и только при условии, что три эти кита опираются на одни и те же идеи, можно получить качественный результат.

Сегодня мы находимся внутри фазового перехода от процедурщины к ОО. Программеры, которые понимают ОО, есть, языки, которые пригодны для писания ОО программ внутри "плоских" ОС, есть, а третьей части нет. Она должна появиться или сразу с новым языком программирования, или поначалу придется обходиться ++-м и Явой. Собственно именно ее отсутствие вылилось в моих словах в наезд на бедный Си, который, конечно, никак не виноват в происходящем.

Конечно, я соглашусь и с тем, что вина за переполнение буфера лежит не на языке, а на программисте, это так. Но, право, популярность Си служит программисту плохую службу. Нельзя таскать тяжести, ходя от грузовика до склада по канату. Ответственность за падение с каната лежит на упавшем (в виде мешка, который он нес:-), но неправота его не в том, что упал, а в том, что поперся столь неудачной дорогой.

Кстати сказать, я в последнее время смотрю на это всё более оптимистично - концепция persistent OS, которую я нежно лелею уж несколько лет, является, как мне представляется, ключевой для развития ОО-систем, и она начала пробиваться в мир. Я имею в виду не Микрософтовский hybernate, примочку к Windows, а ОС, которая строится с нуля от принципа "бессмертия" :-). Это - мощный шаг к чистому ОО и к высокой степени защиты одновременно.

Я имею в виду защиту как в смысле security, так и в смысле переполнения буферов. (Впрочем, в некотором смысле это - одно и то же) С моей точки зрения есть только один принцип, который позволяет не дать ошибке переполнения буфера стать дырой в системе - повальное разграничение прав. Любой кусок кода должен располагать только теми возможностями, которые ему нужны для работы. Загруженный же в систему через дырку с переполнением буфера (или какую еще) код должен оказаться полным и безоговорочным импотентом, как это случилось бы, если бы мы жили на 432-х процессорах, где код не может из себя даже константы выродить, не то, что адрес сгенерировать.

Уф, замечтался. :-) Спасибо за интересное письмо. :-)

Реклама
   


Форум CPS Порой, осваивая какой-нибудь новый программный продукт, ты бессильно смотришь в экран и просто ничего не можешь понять. В такие моменты хочется покрыть чуть ли не матом всех этих кровопийц-разработчиков до седьмого колена включительно, невзирая на личности, звучные имена и регалии. Однако теперь есть в русском Интернете место, где многие технические (и не только технические) проблемы, связанные с программным обеспечением, реально могут обрести долгожданное решение. Это место - WEB-конференции на сайте компании CPS.

ПРОГРАММНЫМ ПРОДУКТАМ ПОСВЯЩАЕТСЯ!

 

   

Эх, люблю лихую рекламу. :-)

Хочется себя похвалить. Похвалю, раз хочется. :-) Я недавно писал, что война вокруг интеловских идентификаторов процессора глупа ужасно, и бороться нужно не с местом, где идентификаторы родятся, а с местом, которое их в мир отдает.

Причина проста - есть тысяча способов родить достаточно уникальный идентификатор системы, причем даже более удобный, чем ID процессора - все эти способы невозможно переловить и перезакрывать. В частности, существуют MAC-адреса сетевых карт, уникальнее некуда, которые просто сам Бог велел использовать для трассировки людей.

Пример не замедлил появиться. По сообщениям в прессе, Win 98 Registration Wizard генерировал, как выясняется, таковой идентификатор (и именно из сетевого адреса машины, кстати). Более того, этот номер был доступен извне. Утверждается также, что он распространялся с документами Word и Excel, хотя меня тут берет сомнение - похоже, у ворда с экселем были свои принципы нумерации пользователей. Впрочем, это неважно. Важно, что существует способ соотнести документы и выяснить, один человек их создал, или разные. Без ведома этих людей.

Еще раз повторю - отсутствие идентификатора процессора НИКОГО НЕ ОСТАНОВИТ. Точнее, не остановиЛО. Бороться с ним - пустая трата денег. Хотя, конечно, политический капиталец на этом деле сколотить можно, факт.

По аналогии с Baby Bells (детки-колокольчики?:) потенциальные осколки Микрософта уже получили в западной прессе смешное имя Baby Billls, что, в частности, можно трактовать как "детки-денежки". :-)

Ценителям афоризма - домашняя страница Дениса Озерова с подборкой, пожалуй, уникальной. Зайдешь - и хочется цитировать, цитировать и цитировать. Но удержу себя. :-) Читайте сами. :-)