Я сознательно не упомянул в обзоре о переводе, т.к. совершенно не хотелось портить обзор. Ведь книга-то хорошая, авторы книги не виноваты в том, что издатели так отнесутся к переводу.
Сразу хочу отметить, что некоторые из моих замечаний носят субъективный характер и могут быть спорными, но абсолютное большинство из них — это либо явные ляпы, либо опечатки.
Уважаемые издатели, вы откровенно испортили впечатление от книги, т.к. я не мог читать свою любимую книгу сидя в кресле или на диване, т.к. приходилось постоянно бегать к компьютеру и сверяться с оригиналом.
К тому же расстроило то, что я вам отправлял сообщение с небольшим перечнем проблем (десятка полтора
, но вы никак не отриагировали...
Еще хочу отметить, что я не искал ошибки перевода или опечатки специально, я просто читал книгу и все. Поэтому думаю, что другие читатели нашли и другие проблемы.
Теперь к фактам:
1. стр.33: Более того,
он считают, что для программиста эта задача не представляет никаких трудностей
Должно быть: они считают
2. стр.33: К сожалению, этот кризис уже привел
в расточительному расходованию трудовых ресурсов – самого дорогого товара, — и многие возможности оказались упущенными
Должно быть: к расточительному
3. стр.38: Слово «существенная» означает, что со сложностью промышленных программ можно справиться, но игнорировать ее нельзя
В оригинале: By essential we mean that we may master this complexity, but we can never make it go away
Во втором издании: Говоря «присуща», мы имеем в виду, что эта сложность здесь неизбежна: с ней можно справиться, но избавиться от нее нельзя.
Дело в том, что от сложности мы не можем избавиться, она есть, она является неотъемлемой части программной системы. В меньшей степени важно, будем ли мы ее игнорировать или нет. Во втором издании перевод более точный.
4. стр.51 Сравнение алгоритмической и объектно-ориентированной
композиции
Должно быть «декомпозиции».
5. стр. 53: … а также не обеспечивает средств для
организации взаимной совместимости объектов (concurrency)
Термин «concurrency» нельзя перевести, как «взаимная совместимость объектов», опять же во втором издании это переведено, как «параллелизм». Если бы вы в скобках не привели оригинальный термин, смысл был бы полностью искажен.
6. стр.60: Языки программирования
первого поколения (1962-1970)
Первого уже были, должно быть «третьего поколения»
7. стр.61: Smalltack
90
Должно быть: Smalltack 80
8. стр. 62: Большинство
объектно-новых языков этой категории
В оригинале: The number of these languages
Никаких «объектно-новых языков»!
9. стр.66: Рис.2.4.
Топология малых и средних языков программирования объектных и объектно-ориентированных языков программирования
В оригинале: The Topology of Small to Moderate-Sized Applications Using Object-Based and Object-Oriented Programming Languages
Очевидно, должно быть: «Топология малых и средних приложений, созданных с помощью объектных и объектно-ориентированных языков программирования»
10. стр. 72: … позднее в язык Ada95 были
добавлены объектно-ориентированные языки
В оригинале: support for object orientation was later added to Ada95
Гы-гы
11. стр. 85: Поскольку в начале работы над проектом решение может быть неясным, декомпозиция на более мелкие
модели может вызвать затруднения
В оригинале: …decomposition into smaller modules may be quite difficult
Т.е. …декомпозиция на более мелкие модули…
12. стр.85: НЕ-И (NAND), НЕ-ИЛИ (NOR),
НЕ (NOR)
Должно быть «НЕ (NOT)»
13. стр.89: В разделе «Иерархия» пропущен рисунок, расположенный на странице 59 оригинала!
14. стр. 98: термин
race conditions переведен конкуренция между процессами
Это устойчивый термин, который переводится как «состояние гонок». Кстати, Лингво знает об этом…
15. стр.101: Сочетание параллелизма и объектов привело к созданию
параллельных объектно-ориентированных языков программирования
В оригинале стр.70: Unifying the concepts of concurrency and objects gives rise to concurrent object-oriented programming languages.
Все же, термина «параллельный язык программирования» не существует!
16. стр.101: но наряду с этим программисты могут использовать абстракцию объектно-ориентированного интерфейса, позволяющего выполнять запросы к базе данных и другие операции над
объектами объектов…
Что такое «над объектами объектов»?
17. стр.112: Средства доступа к компонентам абстракции (т.е. открытые, защищенные, закрытые и
упакованные разделы и пакет) рассматриваются далее.
В оригинале: i.e. public, protected, private and package.
Должно быть: т.е. открытые, защищенные, закрытые и уровня пакета
18. стр.131: Рис.3.8. В оригинале другой рисунок!!! Здесь рисунки 3.8 и 3.9 одинаковые!! Посмотрите рисунок на странице 100 оригинала!!!
19. стр.141: К медленно
изменяющиеся факторам относится строительство новых…
Должно быть: к медленно изменяющимся факторам…
20. стр.144: В разделе «Выбор операций» нет рисунка из оригинала.
В оригинале этот рисунок находится на стр.114.
21. стр.146: Раздел «The Law Of Demeter» переведен «Сотрудничество». Чем не понравилось название раздела у авторов?
22. стр.146: Фраза: «client relationship» переведена как «отношение клиента». Дык, нет такого термина…
23. стр. 147.
С другой стороны, если объект является чем-то большим, чем простая сумма его частей, то следует предпочесть отношение наследования.
В оригинале: From another perspective, if the behavior of an object is more than the sum of its individual parts, creating an aggregation relationship rather than an inheritance relationship between the appropriate classes is probably superior.
Уважаемые издатели! НЕ НУЖНО ПЕРЕВОРАЧИВАТЬ С НОГ НА ГОЛОВУ, авторы пишут, что нужно применять АГРЕГАЦИЮ в этом случае!!! Вы же изменили смысл на противоположный!!
24. стр.152: в разделе «Трудности классификации» не хватает рисунка. В оригинале он расположен на стр. 123.
25. стр. Рисунок 4.1. На рисунке подписи нумерация рисунков сделана русскими буквами (А, Б, …, К), а во врезке на стр.122 английскими (A, E, F, H и I). Это чтобы читатели не забыли алфавиты?
26. стр.161: На более высоком уровне абстракции Коад ввел понятие предметной области, состоящей
их логически связанных групп классов…
Должно быть «из логически связанных групп…»
27. стр.172: термин «framework» переведен как «среда разработки».
В русскоязычной литературе под термином «среда разработки» понимается англоязычный термин «Integrated Development Environment (IDE)». Не нужно путать термины!!
28. стр.173: термин «broadcasting» переведен как «широкая рассылка сообщений». Все же не «широкая», а «широковещательная».
29. стр.210: Рис.5.22 несогласованность рисунка. На рисунке перечислены следующие прецеденты: «управление садом», «просмотр отчетов» и «
обслуживает резервуары».
Должно быть: «обслуживание резервуаров»
30. стр.216: Рис.5.25 не переведено название прецедента использования «View Reports».
31. стр.220: на рис.5.29: «
все уровни в пределах нормы», в тексте: «
все уровни в норме».
Должно быть одинаково!
32. стр.232:
Ненаправленные ассоциации между классами GrainCrop и GrainYieldPredictor означают…
Должно быть «однонаправленные», т.к. в оригинале – «unidirectional association»
33. стр.233: Рис.5.39. одно отношение подписано: «
Ведет каталог», а другое: «
CalloboratesWith». Не понятно, названия отношений должны быть на каком языке? На русском или на английском?
34. стр.241: Рис.5.43.
Диаграмма последовательности (сверху) и связанная с ней диаграмма взаимодействий (снизу)
Должно быть: Рис.5.43. Типы сообщений.
Ваша подпись взята от предыдущего рисунка!!
35. стр.242: Этот факт изображается символом Х, расположенным
к конце «линии жизни»
Должно быть: «в конце линии жизни»
36. стр.255. на рис.5.54 событие называется «
остановить», но в тексте используется событие «
пауза».
Так как? «Пауза» или «остановить»? В оригинале в двух местах одно и тоже слово: «pause»
37. стр.257. на рис.5.56 в оригинале есть состояние «Sounding Alarm», которое в тексте встречается как «
Сигнал тревоги», но на рисунке это состояние названо «
Сигнал».
38. стр.258-259. на рис.5.57 есть одно безымянное состояние (в оригинале оно называется «paused»). В тексте: то «остановлен», то «пауза». Надо бы определиться
39. стр.259. на рис.5.57 не подписано составное состояние, в оригинале оно называется «Operating».
40. стр.259. на рис.5.58 есть состояние «
Отчет времени», но должно быть «Функционирование», в оригинале «Operating».
41. стр.261. рис.5.60 Диаграмма деятельности с разделами
В оригинале: Figure 5-60 The Composite Maintenance Overdue State with Concurrent Sub-Regions
42. стр.265: (например, точки входа и выхода,
короткие или длинные легенды, протоколы и т.д.)
Термин: «shallow and deep history» — это не «короткая или длинная легенда».
43. стр.265: Название раздела:
Диаграмма синхронизации
Timing Diagram – это временная диаграмма, а не диаграмма синхронизации
44. стр.269: рис.5.72.
2 раза Valve, должно быть Valve и Heater.
45. стр.270: рис.5.74 «
открыт» поменять на «
зыкрыт», а «
закрыт» на «
открыт».
Состояния садовника переведены как «
включен» и «
выключен». Гы-гы. Интересно, а когда садовник включен, а когда выключен? В оригинале: online и offline.
46. стр.277: Она является примером
несинхронного сообщения и изображается незакрашенной стрелкой.
Нужно: «асинхронного сообщения».
47. стр.277:
В данном случае клиент посылает сообщение серверу для обработки, сервер ставит сообщение в очередь, а затем клиент обрабатывает его, не ожидая ответа от сервера.
Ну, это полный бред!!
В оригинале: Here the client sends the event to the supplier for processing, the supplier queues the message, and the client then proceeds without waiting for the supplier.
Нужно что-то вроде этого: Клиент посылает сообщение серверу для обработки, сервер ставит сообщение в очередь, и клиент продолжает работать без ожидания, пока сервер обработает сообщение.
КЛИЕНТ НЕ ОБРАБАТЫВАЕТ СООБЩЕНИЕ!!! Видимо, перепутано слово «
proceed» и «
process»!
48. стр.278: Рис.5.80. Итерационные выражения и
предохранители на диаграмме коммуникации
В тексте guard и guard adornments переведено как «дополнительные условия», а в подписи рисунка «предохранители»
49. стр.289: Акцент делается на
высококачественном выполнении объекта
В оригинале: Focus in on strong, quantitative process improvement.
50. стр.292: Поддержка
операционной системы без нарушения ее целостности всегда представляет собой сложную задачу
В оригинале: The issue of maintaining an operational system without breaking what is already there is a real concern.
Имеется ввиду не «операционная система», а «работающая система».
51. стр.304: Раздел: Планирование выпусков. 1-й абзац: разделение
выпуском на внутренние и внешние…
Нужно: выпусков
52. стр.308: В микропроцессе традиционные этапы анализа и проектирования преднамеренно сделаны расплывчатыми и непрерывно выполняются на
равных уровнях абстракции.
В оригинале: In the micro process, the traditional phases of analysis and design are intentionally blurred and instead are performed at different levels of abstraction along a continuum.
Нужно: на разных.
Изменена одна буква, а смысл поменялся на противоположный!
53. стр.309: Архитектура описывает структуру и
существо системы.
В оригинале: The architecture describes the structural decisions and essence of the system
Более подходящим будет перевод: структуру и сущность системы.
54. стр.353: Лорд Уильям Кельвин высказал эту мысль в журнале Popular Lectures and Addresses, издававшемся в
1981-1984гг.
В оригинале: 1891-1894гг.
Может быть, лорд Кельвин еще жив?
55. стр.361: Действительно, во многих сложных системах наибольший риск состоит в том, что система не будет завершена вообще, а не в том, что она окажется
эффективной.
В оригинале: Indeed, for many complex systems, the greater risk is whether or not the system can be completed, not whether it will perform within its performance requirements.
Тогда уже «не эффективной».
56. стр.361: К счастью,
копирование унаследованных систем напоминает
копирование баз данных:…
В оригинале: Fortunately, coping with legacy systems is much like coping with databases
Кажется, переводчики перепутали слова
cope (справляться) и
copy (копировать)!
57. стр.366:
Объектно-ориентированный анализ проектирования требует использования…
В оригинале: Object-oriented development requires…
Что же такое «объектно-ориентированный анализ проектирования»? Может быть «объектно-ориентированная разработка»?
58. стр.368: Применение методов объектно-ориентированного анализа и проектирования описывается путем последовательного прохода по этапам
микропроцесса …
Нужно: макропроцесса
59. стр.375: Может возникнуть вопрос: почему действующие лица Operator и Maintainer размещены за пределами пакета SatelliteNavigationSystem (
Система навигации спутника)?
Нужно: «Система спутниковой навигации», причем именно этот термин в остальной части книги и фигурирует.
60. стр.418: на рис.9.1 один из прецедентов использования называется: Monitor Traffic/extension points:
Potential Collisions
Должно быть: Potential Collision
61. стр.418: Функциональные возможности прецедента использования Monitor Traffic (Мониторинг Трафика) также расширяются с помощью использования
Collision (Столкновение).
В оригинале: Avoid Collision
62. стр.418-419: В рамках этого прецедента действующее лицо,
отслуживающее трафик поездов…
Должно быть: обслуживающее
63. стр.422: … в настоящее время стало доступным для использования на персональных компьютерах, а процессоры с тактовой частотой в несколько
мегагерц и …
Должно быть: гигагерц
64. стр.424: на рис.9.2 одно из действий сценария не подписано!
65. стр.427: на рис.9.4 в одном месте условие записано [else] в другом месте рисунка [иначе].
66. стр.431: Блочная диаграмма, представленная на
рис.9.6, …
Должно быть: на рис.9.5
67. стр.437: К частью, такая реорганизация иерархии классов имеет очень слабое семантическое
влияние клиентов, использующих базовые классы.
Должно быть: влияние на клиентов
68. стр.440: Итак, каждый план движения поезда
состоит одной бригады и может включать в себя…
Должно быть: состоит из одной бригады
69. стр.449: Подсистема TrainPlan
Batabase
Должно быть: Подсистема TrainPlanDatabase
70. стр.456-458. Слово «
opportunistic» переведено – «
оппортунистический».
Вот примеры предложений:
«В приведенном выше списке перечислены несколько источников знания, центральное место регистрации предложений и гипотез, а также компонент управления, позволяющий осуществлять оппортунистическое решение задачи».
«Анализ показывает, что этот процесс носит последовательный (к изображению добавляется один фрагмент за проход) и оппортунистический характер (фрагмент прикрепляется к доске, только если существует такая возможность)».
«Вот почему управление информационной доской является оппортунистическим: в зависимости то обстоятельств, источники знаний могут активизировать либо прямые, либо обратные последовательности рассуждений».
Мне не понятен термин «оппортунистический», и он точно также не понятен всем моим знакомым программистам, которым я задавал этот вопрос.
Нужно отметить, что во втором издании этой книги, это слово было переведено, как «произвольный».
Кроме того, я поискал значение этого слова в толковых словарях, вот результат.
Толковый словарь Ушакова:
ОППОРТУНИСТИЧЕСКИЙ, оппортунистическая, оппортунистическое; в качестве кратк. форм употр. оппортунистичен, оппортунистична, оппортунистично (см. оппортунизм) (полит.).
1. Беспринципный, свойственный оппортунизму (см. оппортунизм во 2 знач.; книжн. пренебр.).
2. Предающий интересы рабочего класса в пользу буржуазии. ...Невозможно преодолеть правый, оппортунистический уклон, не ведя систематической борьбы с примиренчеством, укрывающим
под свое крылышко оппортунистов. Сталин ("О правой опасности в ВКП(б)", 1928 г.).
Толковый словарь Ожегова:
ОППОРТУНИЗМ, Ца, м. В политической борьбе: противопоставление своих взглядов позиции большинства, утверждение необходимости согласия сторон, соглашательства.
В плане перевода слова opportunistic, даже в лингво есть более предпочтительные варианты: приспособленческий, гибкий, случайный.
71. стр.468:
issolved и далее
retriaveSolution
Должно быть: isSolved и retrieveSolution
72. стр.471: Pattern
matchKnowledgeSource
Должно быть PatternMatchKnowledgeSource
73. стр.476:
StartKnowledgeSource
Должно быть: startKnowledgeSource
74. стр.477:
UnableToProceed
Должно быть: unableToProceed
75. стр.480: Рассмотрим две основные операции,
определенные в классе decipher,…
Должно быть: …, которые используются в методе decipher,…
76. стр.495: Класс Humidity Sensor, как и класс Trend Sensor, являющийся промежуточным абстрактным классом, соединяющим абстрактный класс Historical Sensor и конкретные классы Temperature Sensor и Pressure Sensor, — это прямой потомок класса Historical Sensor.
В оригинале: Humidity Sensor is a direct subclass of Historical Sensor, as is Trend Sensor, which serves as an intermediate abstract class, bridging our abstractions of Historical Sensor and the concrete classes Temperature Sensor and Pressure Sensor.
Здесь даже комментировать не хочется. Никто из моих знакомых программистов не смог понять этот абзац и нарисовать, кто же от кого наследует. Хотя в английском варианте все абсолютно понятно.
77. стр.500: на рис.11.6 текст комментария:
Класс Timer перехватывает программные прерывания каждые 1/60 с и передает клиенту функцию обратного вызова.
В оригинале: Every 1/60th of a second, a hardware interrupt is intercepted by the Timer class, with in turn dispatches the client-supplied callback
Вранья здесь предостаточно: во-первых, перехватывается не программное прерывание, а аппаратное, во-вторых, таймер не передает клиенту функцию обратного вызова, эта функция передается от клиента к таймеру, а таймер передает данные через эту функцию
78. стр.500: Мониторинг производных показателей: коэффициента комфортности,
точки образования росы, трендов температуры и атмосферного давления
Должно быть: точки росы
79. стр.513: Класс
SensorNames содержит литеральные перечисления всех датчиков системы.
Его интерфейс показан на рис. 11.16.
Должно быть: Класс SensorName
«Его интерфейс показан на рис. 11.16», означает, что на рис. 11.16 показан интерфейс класса SensorName, на самом же деле, на рис. 11.16 показан интерфейс класса Sampler.
80. стр.513: Рис. 11.16. Интерфейс класса
SamplerClass
Должно быть: Рис. 11.16. Интерфейс класса Sampler
81. стр.518: По существу, эта процедура представляет собой разновидность
динамической идентификации типов динамического определения типа
В оригинале: runtime type identification
Думали, как же перевести термин: «динамическая идентификация типа» или «динамическое определение типа» и решили оставить оба варианта!
82. стр.518: Остальные аргументы можно игнорировать,
поскольку объект класса Display Manager может запросить свое имя и идентификационный номер у класса Sensor.
В оригинале: We can eliminate the other arguments to this function because the Display Manager can now ask the Sensor object its name and ID.
В данном случае «его имя» это имя объекта Sensor, поэтому должно быть: может запросить имя и идентификационный номер у объекта класса Sensor.
83. стр.522: Рис. 11.28. Структура интерфейса класса Input
manager
Должно быть: InputManager
84. стр.522: Рис. 11.29. Структура интерфейса класса
InputManager
Должно быть: класса Sampler
85. стр.555: «
Клиентский ярус», «
Ярус презентации», «
Деловой ярус».
Ну, во-первых, tier, все-таки, «слой, уровень». «Ярус» не используется в компьютерной литературе. Во-вторых, Business tier – это слой бизнес логики, а не деловой.
86. стр.556:
Основная цель проекта на ярусах клиентов и презентации – реализовать интуитивно понятный пользовательский интерфейс, обеспечивающий быструю реализацию системы и легкую навигацию
В оригинале: In the client and presentation tiers, the primary design goals are to implement an intuitive user interface that has a quick response and is easy to navigate.
Без комментариев! Устал уже…
87. стр.558: Компоненты SDO являются результатом сотрудничества компаний BEA и IBM,
двух крупных J2EE-контейнеров и воплощают наилучшие методы обработки данных в EJB-приложениях.
Получается, что IBM уже стала J2EE-контейнером, поздравляем!
Должно быть: двух крупных производителей J2EE-контейнеров
88. стр.559: Для того чтобы определить локальные методы, которые можно вызывать и применить к экземпляру компонентов, а также домашнему и фабричному объектам, ответственным за создание и поиск экземпляров, в классе Category потребуется два интерфейса – CategoryLocal и CategoryLocalHome.
В оригинале: In the Category class, we need two interfaces, CategoryLocal and CategoryLocalHome, to define the local methods that can be invoked on instances of the bean and on the home or factory object responsible for creating or finding instances.
Во-первых, построения предложения задом наперед, его тяжело понять. Во-вторых, термина
домашний или фабричный объект нет в русскоязычной литературе. В целом предложение очень тяжело понять, оригинальное предложение значительно проще.
89. стр.563: Контроллер бизнес-логики может легко удалять категорию с помощью ссылки на компонент SDO или
первичное ключевое значение.
Primary key value – это «значение первичного ключа».
90. стр.563: Все
реляционные объектные базы данных сталкиваются с проблемами…
Object-relational database – это «объектно-реляционная база данных»
91. стр.563: В традиционных базах данных ключи можно создавать из нескольких компонентов и
внешних ключевых значений.
Foreign-key value – «значение внешнего ключа»
92. стр.569: Его основная задача – обеспечивать связь с объектами EmployeeFacade и создавать
резюме запросов объектов Employee.
В оригинале: Its primary job is to connect to the EmployeeFacade and create a summary of an Employee object’s requests.
Термина «резюме запросов» не существует!
93. стр.573:
Это может привести к запуску другого узла системы
В оригинале: which could potentially be running on a different node in the system.
Т.е. речь идет не о запуске другого узла, а о запуске на другом узле системы
94. стр.574: термин «bandwidth» переведен «широта пропускания»
Должно быть: «ширина полосы пропускания»
95. стр.577: на рис.А.1. неправильная временная шкала, везде 1960.
96. стр.577: Приведенные фрагменты программ предназначены для решения простой задачи:
описания формы окна
В оригинале: Examples of code are based on a simple windowing shape problem
В данном контексте «shape» — это не «форма», а «фигура». Здесь имеется ввиду классическая задача оконного приложения и геометрических фигур.
97. стр.588: Наиболее популярным источником информации по языку С++ является справочник
Эллиса (Ellis) и Страуструпа …
Эллис – это женщина, поэтому нужно: «является справочник Эллис (Ellis) и Страуструпа»
Вот, в принципе, и все
Мне бы очень хотелось увидеть ответ на мое сообщение от издательства. Ведь так относиться к своей работе нельзя!!