Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer. |
Я получил письмо от разработчиков http://mp3.zodchiy.ru/, в котором авторы сообщают о доработке поисковой системы - теперь можно искать и по названиям песен, в частности.
Ссылку на еще одну российского производства искалку MP3 прислал мне Evgeny Arsenyev - http://195.46.97.10/. С поиском у нее все еще менее тривиально, чем у Зодчего до доработки. То есть более одного слова в строке запроса лучше не набирать. :-) Или же ставить перед каждым словом плюс.
О языках.
Уважаемый Дмитрий, Позволь прокомментировать весьма удивившее меня высказывание в обзоре от 26 февраля. "чем быстрее этот язык помрет, тем лучше. Он давно и сильно тормозит программирование и компьютерный мир. Я имею в виду Си, а не ++. Второй тоже тормозит (развитие, а не машину), но его еще можно терпеть, [.. отрезано ..] сегодня говорить о том, что такая-то программа создала брешь в защите компьютера из-за возможного переполнения буфера - это примерно как опубликовать статью о том, что вчера в ресторане был неудачный шашлык потому, что повар в него описался. [:отрезано:]" Странно слышать эти слова от компьютерного гуру. Язык не может тормозить
программирование, его тормозят непрофессионалы. Проблема языка Си как
раз и есть в том, что он был не совсем верно подан и как следствие, неверно
подхвачен большой массой "компьютерного люда". Керниган и Ричи
писали свою знаменитую книгу для таких же "профи" и сделали
это на мой взгляд неверно, (хотя и предупреждали в книге не раз): книга
стала рассматриваться как учебник, каковым ни в коем случае не является.
Самое плохое, что этот "стиль" подобрали другие, меня до сих
пор воротит от доброго большинства учебников по С/С++, начинающихся с
cout << (printf) "Hello, world!"; Уже даже поколение преподавателей
выросло, так что пришлось сталкиваться со знакомыми, вопрошающими после
успешно пройденного и сданного университетского курса по С++: Так что
же все таки такое cout?? На самом деле Си - это макроассемблер с "наворотами"
в самом прямом смысле этого слова. Кто писал на ДЕКовском ассемблере со
структурным макросами или на Майкрософтоском MASM с версии 6 найдет очень
мало различий, как это ни странно. Кто и когда придумал делать из С язык
"высокого" уровня и писать на нем приложения? А потом еще и
ругать сам язык.. Интересно за что? За слишком свободный синтаксис? Так,
не для дураков ведь, для системных программистов (давай ругать ассемблер
за свободный доступ к регистрам!), а дураку только дубину дай - даже строгий
язык не справится. Си, по-видимому, не должен быть первым языком для обучения,
хотя и на нем можно и должно(!) писать корректные программы. Так что существующие
и известные недостатки (впрочем, имеющиеся практически во всех языках)
не могут привести к такому категоричному заключению. Ну а уж примешивать
сюда buffer overflow совсем не к месту. По твоей же аналогии это все равно,
что предъявлять русскому языку обвинения в соучастии во всех судебных
делах, связанных с оскорблениями. Повторюсь еще раз: язык не виноват,
виноват непрофессионализм и невладение языком и его окружением. Тут уж
не поможет никто, даже многоуважаемый мной г-н Вирт с его классическими
строгими языками. Отсюда и уровень раздолбайства. И, кстати, один из первых
признаков непрофессионализма - непомерное "возвеличивание" языков.
У самого неумелого подмастерья и то есть несколько инструментов для работы.
"Писание" же СУБД на Перле, а операционных систем на Бейсике
(я ни на что не намекаю! :-) и приводят к кривым тягам. Несмотря на то,
что теоретически ты прав: написать что угодно можно на чем угодно. Вопрос
в том, как будет смотреться, работать и поддерживаться в дальнейшем диспетчер
процессов на бейсике или диалоговый high-end с большим количеством форм
и полей на Си. Кесарю - кесарево, что за простая истина! Ну и постоянные
кидания и "моды", которые я на дух не переношу. А ведь ни Java,
ни Перл и рядом не стоят по красоте и продуманности (ладно, не буду про
Си) хотя бы с Модулой 2. Ведь если убрать моду и стучание в грудь, то
Java - урезанный C++ со старой, еще паскалевской концепцией виртуальных
машин, непродуманный в плане безопасного применения и с утопической идеей
о переносимости с кофеварок на пентиумы (это при Майкрософте-то, умудрившемся
из мобильнейшего Си сделать непереносимое даже на другие компайлеры чудовище
своими _far-ами и даже __far-ами). Ну а об ублюдочном Перле и говорить
нечего, интересно, он догнал Аду по грамматической навороченности? Это
чудо природы работает вполне сносно для анализа моих логов, но претензии
на большее - извините. Ладно, ладно, не буду углубляться, дабы не задеть
нежных чувств редактора :-) С уважением, Igor Royzis
|
Спасибо на добром слове. :-)
Да, ты совершенно прав, конечно, язык тормозить прогресса не может. Я плохо выразился. Повсеместное использование Си тормозит, не язык. Даже точнее скажем - беда в отсутствии хорошей замены.
Увы, замена же не может появиться по той дурацкой причине, что на языке дело не кончается. На практике стиль программирования определяется программистом, языком и ОС, и только при условии, что три эти кита опираются на одни и те же идеи, можно получить качественный результат.
Сегодня мы находимся внутри фазового перехода от процедурщины к ОО. Программеры, которые понимают ОО, есть, языки, которые пригодны для писания ОО программ внутри "плоских" ОС, есть, а третьей части нет. Она должна появиться или сразу с новым языком программирования, или поначалу придется обходиться ++-м и Явой. Собственно именно ее отсутствие вылилось в моих словах в наезд на бедный Си, который, конечно, никак не виноват в происходящем.
Конечно, я соглашусь и с тем, что вина за переполнение буфера лежит не на языке, а на программисте, это так. Но, право, популярность Си служит программисту плохую службу. Нельзя таскать тяжести, ходя от грузовика до склада по канату. Ответственность за падение с каната лежит на упавшем (в виде мешка, который он нес:-), но неправота его не в том, что упал, а в том, что поперся столь неудачной дорогой.
Кстати сказать, я в последнее время смотрю на это всё более оптимистично - концепция persistent OS, которую я нежно лелею уж несколько лет, является, как мне представляется, ключевой для развития ОО-систем, и она начала пробиваться в мир. Я имею в виду не Микрософтовский hybernate, примочку к Windows, а ОС, которая строится с нуля от принципа "бессмертия" :-). Это - мощный шаг к чистому ОО и к высокой степени защиты одновременно.
Я имею в виду защиту как в смысле security, так и в смысле переполнения буферов. (Впрочем, в некотором смысле это - одно и то же) С моей точки зрения есть только один принцип, который позволяет не дать ошибке переполнения буфера стать дырой в системе - повальное разграничение прав. Любой кусок кода должен располагать только теми возможностями, которые ему нужны для работы. Загруженный же в систему через дырку с переполнением буфера (или какую еще) код должен оказаться полным и безоговорочным импотентом, как это случилось бы, если бы мы жили на 432-х процессорах, где код не может из себя даже константы выродить, не то, что адрес сгенерировать.
Уф, замечтался. :-) Спасибо за интересное письмо. :-)
Реклама | ||
ПРОГРАММНЫМ ПРОДУКТАМ ПОСВЯЩАЕТСЯ!
|
Эх, люблю лихую рекламу. :-)
Хочется себя похвалить. Похвалю, раз хочется. :-) Я недавно писал, что война вокруг интеловских идентификаторов процессора глупа ужасно, и бороться нужно не с местом, где идентификаторы родятся, а с местом, которое их в мир отдает.
Причина проста - есть тысяча способов родить достаточно уникальный идентификатор системы, причем даже более удобный, чем ID процессора - все эти способы невозможно переловить и перезакрывать. В частности, существуют MAC-адреса сетевых карт, уникальнее некуда, которые просто сам Бог велел использовать для трассировки людей.
Пример не замедлил появиться. По сообщениям в прессе, Win 98 Registration Wizard генерировал, как выясняется, таковой идентификатор (и именно из сетевого адреса машины, кстати). Более того, этот номер был доступен извне. Утверждается также, что он распространялся с документами Word и Excel, хотя меня тут берет сомнение - похоже, у ворда с экселем были свои принципы нумерации пользователей. Впрочем, это неважно. Важно, что существует способ соотнести документы и выяснить, один человек их создал, или разные. Без ведома этих людей.
Еще раз повторю - отсутствие идентификатора процессора НИКОГО НЕ ОСТАНОВИТ. Точнее, не остановиЛО. Бороться с ним - пустая трата денег. Хотя, конечно, политический капиталец на этом деле сколотить можно, факт.
По аналогии с Baby Bells (детки-колокольчики?:) потенциальные осколки Микрософта уже получили в западной прессе смешное имя Baby Billls, что, в частности, можно трактовать как "детки-денежки". :-)
Ценителям афоризма - домашняя страница Дениса Озерова с подборкой, пожалуй, уникальной. Зайдешь - и хочется цитировать, цитировать и цитировать. Но удержу себя. :-) Читайте сами. :-)