Это - копия документа, находившегося на 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, что, в частности, можно трактовать как "детки-денежки". :-)
Ценителям афоризма - домашняя страница Дениса Озерова с подборкой, пожалуй, уникальной. Зайдешь - и хочется цитировать, цитировать и цитировать. Но удержу себя. :-) Читайте сами. :-)