В каком порядке читать? Таненбаум, Руссинович, лит-ра по Си++?

Тема в разделе "WASM.BEGINNERS", создана пользователем vova123, 18 фев 2008.

  1. vova123

    vova123 New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2008
    Сообщения:
    35
    Прочитал книгу Таненбаума "Современные ОС", в каком порядке по вашему мнению лучше читать дальнейшие книги?
    Имеющиеся знания: немного Паскаля (институтский курс) и указанная выше книга "Современные ОС",
    Целью является изучить С/C++, и устройство Windows.

    Также интересует какие нужны начальные знания, чтобы понять книгу Руссиновича. Например предполагает ли она знание ассемблера? Стоит ли Руссиновича читать до п. 2 и 3.

    Искал ответ в поисковике. В основном (по-моему) рекомендуют читать след. в порядке:

    1. Руссинович "Внутреннее устройство Windows".
    2. Либерти "Освой С++ за 21 день".
    3. Страуструп.
    4. Книгу по winapi32. Например Рихтер "windows для проффессионалов".
    5. Книги по asm.
    6. Книгу по алгоритмам.
    7. Книгу по еще какому нибудь языку (напр. perl).

    Сейчас читаю п.1. Руссинович "Внутреннее устройство Windows". Дошел до 140 стр. и не знаю стоит ли продолжать или лучше отложить ее на потом?
     
  2. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    если все понятно, читай дальше
     
  3. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    vova123
    А если непонятно - спрашивайте гугла, потом тут. И посмотри статьи на васме - раздел Секреты Win32 . Яб советовал начать с них.
    Основной вопрос - что нужно в итоге? Какой смысл читать эту книгу вам сейчас? Хотите узнать виндовс? Имхо почитайте вначале Рихтера, в купу с MSDN , если и он не понятен - тогда найдите причину. Возможно вы не достаточно еще знаете языки программирования.

    Не вижу связей между книгой Страуструпа и такой, сугубо теоретической книгой, как Руссинович "Внутреннее устройство Windows", где по сути нет ни строчки кода.
     
  4. loxodromic

    loxodromic New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2007
    Сообщения:
    65
    Зачем читать книжку, в которой всё понятно?
    Я вот щас начал читать арифметику Серра. Пока понял только одно слово - "Предисловие". Интеллигенты напридумывали... наверное сами уже ничего не понимают.
     
  5. vova123

    vova123 New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2008
    Сообщения:
    35
    Например стр. 108:
    ... для просмотра содержимого объекта, сопоставленного с прерыванием введите
    dt nt!_kinterrupt и адрес обекта ...
    Код (Text):
    1. kd> dt nt!_kinterrupt 866ec610
    2. nt!_KINTERRUPT
    3.    +0x000 Type             : 22
    4.    +0x002 Size             : 484
    5.    +0x004 InterruptListEntry : _LIST_ENTRY [ 0x866ec614 - 0x866ec614 ]
    6.    +0x00c ServiceRoutine   : 0xf74245e0     unsigned char  atapi!IdePortInterrupt+0
    7.    +0x010 ServiceContext   : 0x8674d030
    8.    +0x014 SpinLock         : 0
    9.    +0x018 TickCount        : 0xffffffff
    10.    +0x01c ActualLock       : 0x866ec874  -> 0
    11.    +0x020 DispatchAddress  : 0x805406e0     void  nt!KiInterruptDispatch+0
    12.    +0x024 Vector           : 0x162
    13.    +0x028 Irql             : 0x5 ''
    14.    +0x029 SynchronizeIrql  : 0x5 ''
    15.    +0x02a FloatingSave     : 0 ''
    16.    +0x02b Connected        : 0x1 ''
    17.    +0x02c Number           : 0 ''
    18.    +0x02d ShareVector      : 0 ''
    19.    +0x030 Mode             : 1 ( Latched )
    20.    +0x034 ServiceCount     : 0
    21.    +0x038 DispatchCount    : 0xffffffff
    22.    +0x03c DispatchCode     : [106] 0x56535554
    предполагается ли знание, например, что означает строка
    "+0x038 DispatchCount : 0xffffffff".
     
  6. vova123

    vova123 New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2008
    Сообщения:
    35
    Я имел ввиду в каком порядке лучше читать: начинать с СИ++ а затем браться за книгу по устройству windows?
    Например:
    1. Либерти "Освой С++ за 21 день".
    2. Страуструп.
    3. Книгу по winapi32. Например Рихтер "windows для проффессионалов".
    4. Руссинович "Внутреннее устройство Windows".
    и т.д
     
  7. vova123

    vova123 New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2008
    Сообщения:
    35
    Это вы о чем?
     
  8. EvilPhreak

    EvilPhreak New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    154
    vova123
    Вообще вопрос философский. Удивительно, что еще никто толком ничего не ответил. Вообще, читать книжку по С++ обязательно, т.к. С/C++ - обязательный язык, чтобы понимать чужие сорцы etc., асм тоже надо, т.к. его знание необходимо для реверсинга любого кода без сорцов. Без этой базы ты никуда. Далее, насчет того стоит или не стоит читать Руссиновича - я скажу однозначно - не стоит. Обычно, разумное его читание заканчивается несколькими начальными страницами (главами), Руссинович нужен лишь тогда, когда ты пишешь, что-то специфическое на уровне ядра (очень немного ring3), и тогда зная что именно тебе нужно (например устройство сетевого стека), ты читаешь конкретную тему из Руссиновича. Читать его подряд имхо не стоит вообще (исключением является случай, когда читающий имеет очень большой опыт программирования драйверов и свободно разбирается во всем устройстве ядра WinNT).
     
  9. EvilPhreak

    EvilPhreak New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    154
    Алгоритмы нужны, но не являются жизненно необходимыми. Рихтер должен быть первый после изучения ASM/C++.
     
  10. vova123

    vova123 New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2008
    Сообщения:
    35
    Спасибо всем за ответы
     
  11. vova123

    vova123 New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2008
    Сообщения:
    35
    EvilPhreak

    Я хотел прочитать Руссиновича для создания базы ( за тем же прочитал Таненбаума "Современные ОС") но
    Я правильно понял ваш ответ
    1. Книга по C++
    2. по ASM
    3. Рихтер.
    или лучше С++, Рихтер, ASM
     
  12. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    EvilPhreak
    Такому человеку Руссинович нафиг не нужен. Уж поверь.

    vova123
    В твоем случае вообще можно было это пропускать. Это всего лишь описание ядерной структуры KINTERRUPT. С ее полями. Структура недокументированная, но в отладочных символах она есть. Чтобы знать почему в это поле записано такое значение, для начала надо узнать - зачем служит это поле. Если в книге оно не описано - прийдется реверсить самому.

    О чем я хочу сказать - если вы хотите узнать внутренне устройство. Прочитайте Архитектуру системы. Остальные главы пока не лезьте. А вообще - освоите, как вам и посоветовали, асм и с\с++. А дальше узнайте побольше о системе с точки зрения WinAPI. В этом, как я уже говорил, вам поможет Рихтер и статьи на этом сайте.
     
  13. vova123

    vova123 New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2008
    Сообщения:
    35
    Еще раз спасибо, ответы позволят сэкономить по крайне мере месяц.
    Как вы относитесь к выбранным книгам по С++?
     
  14. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    vova123
    По С++ верно. Книги мастхзейв
    Вот если по Си, то лучше возьми Керниган, Ричи. "Язык C"
     
  15. EvilPhreak

    EvilPhreak New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    154
    TermoSINteZ
    Не будь таким самоуверенным. Это ошибка. Если человек его раньше не читал, то уж очень нужен. Ну конечно, если уже читал, то не нужен =)
     
  16. vova123

    vova123 New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2008
    Сообщения:
    35
    TermoSINteZ
    Керниган, Ричи. "Язык C" в эл. формаие у меня есть
    Книги я выбрал как наиболее часто рекомендуемые (читая форумы).
    А вот Си чаще не рекомендуют (по крайней мере начинать с него) т.к это может привить неправильные "привычки".
    Напр. приводят мнение тов. Страуструпа.
    Что вы об этом думаете.
     
  17. vova123

    vova123 New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2008
    Сообщения:
    35
    Например.
    Страуструп стр 60 п.1.6.1.
    "The better one knows C, the harder it seems to be to avoid writing C++ in C style, thereby losing"
    и т.д
    Код (Text):
    1. 1.6.1 Suggestions for C Programmers
    2. The better one knows C, the harder it seems to be to avoid writing C++ in C style, thereby losing
    3. some of the potential benefits of C++. Please take a look at Appendix B, which describes the differences
    4. between C and C++. Here are a few pointers to the areas in which C++ has better ways of
    5. doing something than C has:
    6. [1] Macros are almost never necessary in C++. . Use c o n s t (§5.4) or e n u m (§4.8) to define manifest
    7. constants, i n l i n e (§7.1.1) to avoid function-calling overhead, t e m p l a t e s (Chapter 13) to
    8. specify families of functions and types, and n a m e s p a c e s (§8.2) to avoid name clashes.
    9. [2] Don’t declare a variable before you need it so that you can initialize it immediately. A
    10. declaration can occur anywhere a statement can (§6.3.1), in for-statement initializers
    11. (§6.3.3), and in conditions (§6.3.2.1).
    12. [3] Don’t use m a l l o c (). The n e w operator (§6.2.6) does the same job better, and instead of
    13. r e a l l o c (), try a v e c t o r (§3.8).
    14. [4] Try to avoid v o i d *, pointer arithmetic, unions, and casts, except deep within the implementation
    15. of some function or class. In most cases, a cast is an indication of a design error. If
    16. you must use an explicit type conversion, try using one of the ‘‘new casts’’ (§6.2.7) for a
    17. more precise statement of what you are trying to do.
    18. [5] Minimize the use of arrays and C-style strings. The C++ standard library s t r i n g (§3.5) and
    19. v e c t o r (§3.7.1) classes can often be used to simplify programming compared to traditional C
    20. style. In general, try not to build yourself what has already been provided by the standard
    21. library.
    22. To obey C linkage conventions, a C++ function must be declared to have C linkage (§9.2.4).
    23. Most important, try thinking of a program as a set of interacting concepts represented as classes
    24. and objects, instead of as a bunch of data structures with functions twiddling their bits.
     
  18. EvilPhreak

    EvilPhreak New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    154
    TermoSINteZ
    Керниган и Ричи - гавно, не смотря на то, что они его придумали. Туда же относится Страуструп, Либерти и подобные книги "за 21 день" и Си Дейтелов. Кстати книг по Си, которые являются полным гавном очень много, скорее большинство. Лично я советую Р. Лафоре - "Объектно-ориентированное программирование на С++". И там далеко не объекты, а весь язык в изумительной форме, понятной любому человеку. Ярко, живо, исчерпывающе, красиво, оригинально, а порой изящно до такой степени, что сравнимо пожалуй с произведением искусства. Хотя я не так много книжек читал по Си помимо перечисленных =( Ну и конечно, у всех разным предпочтения =)

    vova123
    Именно так.
     
  19. vova123

    vova123 New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2008
    Сообщения:
    35
    Я так живо отвечаю т.к средняя скорость и-нета у меня сейчас 0.11-0.14 кB/sec
     
  20. EvilPhreak

    EvilPhreak New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    154
    Плюнь тому в лицо или насри на голову, кто такое говорит. Кароч пудрят мозги. Вообще у тебя есть своя голова, и думаю ты сам сделаешь самый правильный выбор. Дело все в том, что старички эти епанулись на своих языках, не зная как вообще пишется софт. Правильнее было бы сказать, что это так называемое "академическое" мнение, которое по большому счету стоит выслушать, но не стоит применять используя четкий прагматичный подход (который как я считаю является наиболее эффективным). Академики, по сути романтики, и бывает они несут бред(как в данном случае). Все изза того, что они оторваны от реальной жизни и реального процесса разработки ПО.