Вчера, читая дайджест одного дискуссионного листа,
предполагающего наличие некоторых технических
навыков, - поняла, что мое отношение к Элджеру
сродни к авторам следующего диалога:
[1]:
файлы размером более 200 кБайт начинают "нарезаться"
на куски, которые довольно трудно вручную объединять
(в командной строке сеанса MSDOS можно использовать прогу Ч
команду склейки файлов copy /b file1+file2+...+fileN result
[2]:
вовсе и не трудно их объединить если использовать...
Сохраняешь все куски в один файл.
Дабл кликаешь первый кусок (*.001)
Жмешь "объединить" - в правом нижнем углу.
Прога предлагает свое имя результирующего файла.
Соглашаемся или даем свое.
Жмем ОК. Всё!
Если хотите я кину в конфу (333кб)
Или возьмите здесь http://
Во-первых, спасибо Ktirf-у за одалживание книги.
Во-вторых, кому я советую прочитать сию книгу,
пожалуй, я скажу в конце - иначе не понять столь
странной рекомендации.
Общее впечатление от книги двоякое.
С одной стороны, я ЖУТКО РАЗОЧАРОВАНА. Читая
восторженные отклики дважды приплюснутых сишников,
я не сделала на них поправку :((
С другой стороны, я наконец смогла понять, что кроется
за обращенными ко мне словами "С++ очень мощный язык,
Вы, мое имя в реале, зря его не дооцениваете" от людей,
знающих не один язык программирования и не являющиеся
чайник-фанатами C++ "т.е. людьми, первый язык которых
VC++ или Builder C++".
Не надо предполагать, что такая преамбула - это начала
очередного джехада. Так получилось, что в последнее
время почти единственным языком программирования, на
котором мне приходится думать - это дельфийский
диалект паскаля. Более грамотно говоря, Object Pascal
от Borland версий 3-5. И хотя в прошлом я в одинаковой
степени владела дообъектными С и Pascal, а еще дальше
в глубь 20-го века некоторыми древними паскалеобразными
языками, почти без "словаря" читаю код на С++, но волей
не волей Дельфин откладывает свой отпечаток на ценности
языковых трюков.
А прочтя предисловие, где обещается поднятие на СЛЕДУЮЩИЙ
уровень мастерства, я для себя ожидала двух вещей - улучшить
свое понимание С++ и найти применИмые идеи для дельфина.
Большинство книг по С++, акромя уж очень элементарных
учебников, содержат описания множества вещей, не зависящих
от языка реализации. Почему этим страдают именно книги
якобы о С++, мне не известно, но это реальность.
Хватит обо мне, самой ворчливой из ворчливых ;-), наконец,
что же книга из себя представляет? Знаете, что такое вариации
на тему в музыке? Произведение, в которых талдычится одна и
та же мелодия с чуть разными реверансами. Короче говоря, так
же муторно как этюды, но технику при этом не развивают.
Так вот, в этой книге есть только одна тема - как бы так
похитрее и посложнее создать класс, объекты которого вели бы
себя как обычный сишный указатель, но при этом минимизировать
последствия вечной проблемы С ака утечка памяти. Напоминаю,
что эта книга - вариация на тему, а не этюды, т.е. здесь есть
только наброски идей - продумывать технику и аккуратно
реализовывать ее - Ваша забота.
Казалось бы, работа с памятью через объекты - должна
заинтересовать любого программиста вне зависимости от
языка программирования. Читаю одну главу про указатели,
другую. Как только автор свои классы, имитирующие указатели,
не называет - и умными, и ведущими, и невидимыми, и
гениальными. Чувствую, что что-то знакомое во всем этом есть!
Ба, так это обыкновенные классы в Дельфи и я это все знаю!
:-( Но даже самые элементарные вещи описаны так - что пока
не сообразишь, что это тривиально - чувствуешь себя
умственно отсталым :-((
Хотя аллегория с гранями для интерфейсов мне понравилась.
Также, как известный литературный герой обнаружила, что
говорю прозой, т.е. чаще всего уплотняю память либо по
методу Бейкера, либо "уплотнением на месте" ;-)
По мелочам знаний-то прибавилось, но не пропорционально
времени потраченному на понимание того, что же автор хотел
сказать - слишком гладкая речь.
К сожалению, чисто визуально в коде не выделены те нюансы,
которые автор считает важными. Местами приходится гадать -
автор так записал для краткости, или такая запись - это фича.
Особенно неприятно выискивать в листингах двух почти
одинаковых примеров - а в чем собственно разница?
После прочтения этой книги, я очень в больших "непонятках",
почему до второй ступени, т.е. этой книги, доходят не все
си-плюс-плюшники?
Ведь большинство описанных приемов, если не очевидны, то
легки для понимания любому дельфину, как только он перестает
быть чайником. И умудрится простые вещи записать таким
сложным образом - это надо уметь :!(
Теперь мы подошли к тому, что за "просветление" я получила
в ходе чтения сей книги. Как любой уважающий себя С++автор
Джефф Элджер предваряет основные вариации четырьмя главами
об используемых конструкциях С++, что вкупе с муторными
объяснениями "заморочек" с операторами выделения памяти,
вызываемыми конструкторами и деструкторамми, плюс
хитростями в перегрузке одноименных функций приведения
навело меня на мысль -
что я ни разу не видела НАСТОЯЩЕГО УЧЕБНИКА С++!
Не спешите возражать. Поясню свою мысль.
С++ может выглядит как С.
С++ может выглядеть как Object Pascal,
только ключевые слова другие.
Точнее сказать С++ может прикидываться аналогом
Object Pascal для С.
Ключ к пониманию - глагол ПРИКИДЫВАТЬСЯ.
Если Дельфин как представитель Object Pascal - это
расширение паскаля, то С++ соотносится с С, как
чайник у компа к чайнику на плите. Название одно и
то же, но внутренняя сущность разная. Отсюда ноги
если не всех, то весьма многих проблем С++ прогеров
- пытаются научить не самому языку, а тому, чем
С++ прикидывается, то бишь "Object C" :-(
Представьте, что одно и то же устройство позволяет
управлять домашним кинотеатром и рядом стоящей
атомной станцией. И юзера научили только управлению
своим телефизором, а про аэс может и не сказали,
или сказали "это следующий уровень - большинству
он не нужен". Пришел юзер вечером уставший, ну нажал
не на ту комбинацию - вот Вам и радиоактивное заражение.
Т.е. утечка памяти.
Подводя итоги,
если основной язык у Вас не С++, но Вы в состоянии
прочесть листинг и хотите удостовериться, что я тут
наболтала об языке - можете прочесть книгу;
если Вы недавно прочли "Паттерны проектирования", то
кое-что в третей - четвертой части наверно Вам пригодятся;
если единственный язык, которым Вы когда либо свободно
владели, - это С++, то не надо тратить время на эту книгу.
Лучше выучите до того же уровня второй язык. А потом третий;
если Вы кроме С++ свободно владеете или владели еще
парой-тройкой языков, включая объектные - черт с Вам -
пролистайте! И пришлите мне свое мнение ;)