Классика Computer Science
От: Сергей Тепляков США http://sergeyteplyakov.blogspot.com/
Дата: 14.03.10 09:14
Оценка: 212 (16) +2 -1
Статья:
Классика Computer Science
Автор(ы): Сергей Тепляков
Дата: 14.03.2010
В статье приведен перечень книг, по праву считающихся классикой компьютерной литературы в самых различных областях разработки программного обеспечения


Авторы:
Сергей Тепляков

Аннотация:
В статье приведен перечень книг, по праву считающихся классикой компьютерной литературы в самых различных областях разработки программного обеспечения
Re: Классика Computer Science
От: skeptic  
Дата: 14.03.10 09:51
Оценка:
Здравствуйте, Сергей Тепляков, Вы писали:

СТ>Статья:

СТ>Классика Computer Science
Автор(ы): Сергей Тепляков
Дата: 14.03.2010
В статье приведен перечень книг, по праву считающихся классикой компьютерной литературы в самых различных областях разработки программного обеспечения


СТ>Авторы:

СТ> Сергей Тепляков

СТ>Аннотация:

СТ>В статье приведен перечень книг, по праву считающихся классикой компьютерной литературы в самых различных областях разработки программного обеспечения

У меня у одного все ссылки на Саттера ведут?
Re[2]: Классика Computer Science
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 14.03.10 09:57
Оценка:
Здравствуйте, skeptic, Вы писали:

S>У меня у одного все ссылки на Саттера ведут?


нда, действительно, copy/paste во всей своей красе исправим
Re: Фаулер
От: SergeCpp Россия http://zoozahita.ru
Дата: 14.03.10 10:23
Оценка:
Здравствуйте, Сергей Тепляков!

Про Фаулера вы пишете:

"Книга стала родоначальником столь популярного ныне принципа постепенного улучшения кода без изменения функциональности".

Родоначальником?

Или дал название тому, чем занимались программисты и ранее?

Когда несколько лет назад я впервые увидел аннотацию этой книги, сразу подумал — вот и название для того "улучшения программ", которым я и занимался частенько, называя это занятие "улучшением [текста] программы".

Думаю, многие программисты занимались этим тоже. А Фаулер — дал название.

Вот только я привык уже к своему "улучшению [текста] программы".

Понимаю, конечно же, что термин Фаулера удобен — все (многие) знают.

Но называть его родоначальником принципа?..

Павел Дворкин, Валерий Лаптев (как известные мне программисты "тех времён"), ведь так и было? Улучшали же (по этому принципу) и до Фаулера?
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re: Классика Computer Science
От: Vadimmer Франция https://github.com/vadimkantorov
Дата: 14.03.10 10:42
Оценка: 1 (1) :)
По поводу алгоритмов:
где Кормен? Классика + более гуманная книжка, чем Кнут.

Общался с Майкрософт по поводу стажировки. Прислали список книг, которые они уважают. Может, кому интересно.

Software Development Recommendations:
Box, Don. Essential .Net, Volume I: The Common Language Runtime. Addison-Wesley Professional, 2003.
Brooks, Fredrick. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley Professional, 1995.
Cormen, T.H., Leiserson, C.E., Reivert, R.L., Stein, Cliff, eds. Introduction to Algorithms. McGraw-Hill, 1990.
Howard, Michael, LeBlanc, David, eds. Writing Secure Code. Microsoft Press, 2001.
McConnell, Steve. Code Complete: A Practical Handbook of Software Construction. Microsoft Press, 1993.
Maguire, Steve. Writing Solid Code: Microsoft’s Techniques for Developing Bug-Free C Programs. Microsoft Press, 1993.
McConnell, Steve. Rapid Development: Taming Wild Software Schedules. Microsoft Press, 1996.
Tanenbaum, Andrew. Modern Operating Systems. 2nd ed. Prentice Hall, 2001.


Program Management Recommendations:
Bentley, Jon. Programming Pearls: Second Edition. Addison-Wesley, Inc., 2000.
Gamma, E., Helm, R., Johnson, R., Vlissides, J., eds. Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
Kernighan, Brian, Pike, Rob, eds. The Practice of Programming. Addison-Wesley, 1999

Testing Recommendations:
Kaner, Cem, Bach, James, and Pettichor, Bret, eds. Lessons Learned in Software Testing. John Wiley & Sons, 2002.
Kaner, Cem, Falk, Jack, & Nguyen, Hung Quoc, eds. Testing Computer Software (2nd Ed.). International Thomson Computer Press, 1993.
Myers, Glenford. The Art of Software Testing. John Wiley and Sons, 1979.
Patton, Ron. Software Testing. SAMS Publishing, 2000.
Sistowicz, Jon, Arell, Ray, eds. Change-Based Test Management: Improving the Software Validation Process. Intel Press, 2003.
Viega, John, McGraw, Gary, eds. Building Secure Software: How to Avoid Security Problems the Right Way. Addison-Wesley, 2001.
Учусь, учусь и ещё раз учусь
Re[2]: Классика Computer Science
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 14.03.10 10:47
Оценка:
Здравствуйте, skeptic, Вы писали:

S>У меня у одного все ссылки на Саттера ведут?


fixed
Re: Методы и алгоритмы вычислений на строках
От: SergeCpp Россия http://zoozahita.ru
Дата: 14.03.10 11:46
Оценка:
Здравствуйте, Сергей Тепляков!

Вот эту книгу ещё надо бы добавить:
Методы и алгоритмы вычислений на строках
http://www.rsdn.ru/res/book/prog/stringalgs.xml
Автор(ы): Билл Смит

Книга "Методы и алгоритмы вычислений на строках" описывает фундаментальные алгоритмы лежащие в основе построения эффективных вычислительных паттернов(шаблонов) над строковыми последовательностями. Это общие алгоритмы и методы, которые находят применение во многих областях науки и информационных технологий: сжатие данных, криптография, распознавание речи и компьютерное зрение, вычислительная геометрия и молекулярная биология. Рассмотренные в книге алгоритмы предназначены для нахождения в строковых последовательностях определенных типов паттернов — частных, характеристических и внутренних. Каждому типу паттернов посвящена соответствующая часть книги. Книга отличается последовательным изложением материала, большим количеством иллюстративных примеров, свободным обсуждением текущих исследований в этой области, содержит более 500 упражнений, поясняющих и расширяющих материал, изложенный в тексте книги "Методы и алгоритмы вычислений на строках". Книга предназначена для тех, кто имеет достаточную подготовку в математике и компьютерных науках и хочет познакомиться с этой интересной и важной областью. Материал книги "Методы и алгоритмы вычислений на строках" доступный для студентов старших курсов и аспирантов соответствующих специальностей.


Кнут планирует нечто подобное в одном из будущих томов.

P.S. Поправьте:

Страуструп, Дизайн — дважды "относиться" ("ь" нужен);

Энтони Джонс — "если вдруг понадобится поработать" ("ь" там лишний).
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re: Классика Computer Science
От: Anton V. Kolotaev  
Дата: 14.03.10 12:41
Оценка: 9 (2)
Странно, что в секции С++ нет книги David Abrahams, Aleksey Gurtovoy: C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond. По-крайней мере, она более внятная и систематическая нежели чем работа Александреску. имхо
Re: Классика Computer Science
От: FractalizeR  
Дата: 14.03.10 13:11
Оценка:
У Фридла уже третье издание вышло.
Re[2]: Фаулер
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 14.03.10 16:19
Оценка: 2 (1)
Здравствуйте, SergeCpp, Вы писали:


SC>"Книга стала родоначальником столь популярного ныне принципа постепенного улучшения кода без изменения функциональности".

SC>Родоначальником?
SC>Или дал название тому, чем занимались программисты и ранее?

Конечно же вы правы, и очень маловероятно, что какая-либо книга может быть родоначальником чего-то. Вначале проводятся исследования, пишутся статьи, проводятся выступления на конференциях и многое другое. Потом, бывает, появляется книга, которая служит мощным катализатором для развития чего-то нового.
Обо всем этом я знаю и готов с вами поделиться, только в две три строки это не втиснуть

Конечно же, подобные тенденции (течения, новшества) как рефакторинг, обычно строятся на практическом опыте и уже долгие годы многие опытные разработчики пользовались подобными методами для борьбы с проблемами в коде.
Если говорить более формально, то первые специалисты, которые попытались формализовать подход улучшения кода без внесения функциональности (a.k.a рефакторинг), были Кент Бек и Вард Каннингем.
Кроме них, исследованиями в вопросах рефакторинга занимались Ральф Джонсон, Уильям Апдайк, Джон Брант и Дон Робертс.
Опять же, никто низ них не придумал сам подход, но работа каждого из них имела колоссальное влияние на развитие этого направления.
Из всех перечисленных выше только Вард Каннингем не является одним из соавторов этой книги. Сам же Фаулер (как он сам признался) не оказал существенного влияние на развитие понятия рефакторинга (до публикации книги), но он оказался тем человеком, который структурировал эти знания и собрал группу профессионалов в этом вопросе.
Все это я веду к тому, что хотя книга Фаулера и не является родоначальником самого принципа рефакторинга, то именно она стала "катализатором" развития этого понятия. Я думаю нужно отдать должное всем автором, поскольку они сделали многое для популяризации этого принципа среди простых разработчиков. И очень может быть, что именно благодаря этим ребятам, сегодня практически в каждой IDE находится куча функций, упрощающих проведение рефакторинга. Но даже несмотря на подобную автоматизацию я нисколько не умаляю пользу этой книги для простого разработчика.

SC>Когда несколько лет назад я впервые увидел аннотацию этой книги, сразу подумал — вот и название для того "улучшения программ", которым я и занимался частенько, называя это занятие "улучшением [текста] программы".

SC>Думаю, многие программисты занимались этим тоже. А Фаулер — дал название.
SC>Вот только я привык уже к своему "улучшению [текста] программы".

Я к калькам с английского языка отношусь не слишком хорошо, но термин "рефакторинг" уже стал устойчивым. Если вы скажете на форуме: "Вам нужно улучшение [текста] программы", вас никто не поймет, т.к. что именно вы будете подразумевать под термином "улучшение" — не понятно.
Я за использование устойчивой терминологии, даже если это противоречим моему (или вашему) личному вкусу и предпочтениям.

SC>Понимаю, конечно же, что термин Фаулера удобен — все (многие) знают.

SC>Но называть его родоначальником принципа?..
SC>Павел Дворкин, Валерий Лаптев (как известные мне программисты "тех времён"), ведь так и было? Улучшали же (по этому принципу) и до Фаулера?

Здесь можно провести аналогию с шаблонами проектирования. Многие опытные разработчики уже в течении многих лет использовали повторное использование типовых решений. И, конечно же, использовали за долго до того, как эта же мысль возникла в светлых головах некоторых специалистов.
Насколько я знаю, первые опубликованные труды по шаблонам проектирования датированы 87 годом и принадлежат уже знакомым Кенту Беку и Варду Каннингему.
До публикации знаменитой книги банды четырех вопросами шаблонов проектирования занимались множество специалистов, причем занимались уже в течении длительного времени. Но именно GoF Book стала тем катализатором, которая привлекла внимание широкой общественности к этому понятию и именно благодаря им сейчас об этом знает большинство разработчиков.
Я думаю, что можно провести параллель между двумя этими книгами и их влиянием на развитие рефакторинга и шаблонов проектирования, соответственно.

Лично я не считаю подобные аллегории слишком уж существенными (я по поводу "родоначальников")... Я действительно считаю, что это не слишком принципиально, но если это действительно так, то я подумаю над тем, как перефразировать это описание, чтобы подобных негативных эмоций у читателей не возникало.
Re[2]: Классика Computer Science
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 14.03.10 16:21
Оценка:
Здравствуйте, FractalizeR, Вы писали:

FR>У Фридла уже третье издание вышло.


Там именно на третье издание и идет ссылка на (посмотрите на ссылку на озон).
Спасибо, поправим описание.
Re: Классика Computer Science
От: 67108864 http://ajtkulov.blogspot.com
Дата: 15.03.10 06:13
Оценка: 8 (2) +3
Здравствуйте, Сергей Тепляков, Вы писали:

СТ>Аннотация:

СТ>В статье приведен перечень книг, по праву считающихся классикой компьютерной литературы в самых различных областях разработки программного обеспечения

Что-то у меня в голове есть четкое разделение на "программирование" и "разработку ПО".

Языки/технологии/платформы — это все к разработке. К CS относится "лексический и синтаксический анализ", классика Ахо "Красный дракон".
ООП и управление проектами — это все методологии и относятся только к разработке.

Тот кто рекомендует только Кнута по алгоритмам, уж извините, его точно не читал. Не упомянуть Кормена есть смертельный грех.

Единственное, что хоть как-то соответствует — БД. Только нетривиальный вопрос: относятся ли БД к CS? Реляционная алгебра, логика в том же Дейте рассматривается в пару сотен страниц.
Хотя смотря на предыдущую структуру, почему бы не поделить на всякие oracle/*sql?

Почему-то нет SICP, никакой теории сложности, графов, выч. геометрии, вообще никакой теории (Кнут тут явно в список случайно попал). Но есть winapi&&com.

http://en.wikipedia.org/wiki/Computer_science
Чувствуется явный контраст.

"Что такое CS?" — это довольно сложный вопрос. Лично я не знаю точного ответа. Но то что приведено к нему явно не относится.
Re[2]: Классика Computer Science
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 15.03.10 07:28
Оценка:
Здравствуйте, 67108864, Вы писали:

6>Что-то у меня в голове есть четкое разделение на "программирование" и "разработку ПО".


Эти два термина соответствуют англоязычным терминам programming и software development. Которые означают одно и то же:
Описание понятия Software Development:

The term software development is often used to refer to the activity of computer programming.


Я думаю вы имели ввиду разделение на Computer Science (как науку информатика) и прикладное применение этой науки, которая выливается в программирование (или разработку ПО). Вот с этим я совершенно согласен, такое разделение действительно присутствует.

6>Языки/технологии/платформы — это все к разработке. К CS относится "лексический и синтаксический анализ", классика Ахо "Красный дракон".

6>ООП и управление проектами — это все методологии и относятся только к разработке.

Вы все правильно поняли, конечно же это перечень книг, которые относятся не столько к CS, сколько к прикладному искусству (a.k.a programming). Скорее просто не нашлось нормального названия. Назвать, статью "Классика книжек по программированию", как-то не звучит, вот и остановились на таком названии.

Цель была собрать книги, которые являются проверенными, "классическими" книгами в различных областях ... скажем, разработки ПО. Книги, которые будут полезны не в академических кругах, а для профессиональных разработчиков, желающих пополнить свой багаж в той или иной области. Изначально не было никаких намерений давать книги, область применений которых ограничивается университетскими курсами и которые имеют небольшую практическую применимость. Я нисколько не умаляю глубину всех глубин, которые излагаются в таких книгах (и возможно, что некоторые из таких книг, действительно стоит сюда добавить), но цель, все же, была немного другой.

З.Ы. Я очень жду от всех участников форума конструктивных предложений, а не претензий к деталям. Я не отказываюсь от слов, которые написаны во вступлении: этот перечень будет изменяться и развиваться. Главное, чтобы все поняли наши намерения, и что же мы хотим в итоге получить.
Re[3]: Классика Computer Science
От: 67108864 http://ajtkulov.blogspot.com
Дата: 15.03.10 11:42
Оценка: +2
Здравствуйте, SergeyT., Вы писали:

ST>Эти два термина соответствуют англоязычным терминам programming и software development. Которые означают одно и то же:

ST>Описание понятия Software Development:
ST>

ST>The term software development is often used to refer to the activity of computer programming.


ST>Я думаю вы имели ввиду разделение на Computer Science (как науку информатика) и прикладное применение этой науки, которая выливается в программирование (или разработку ПО). Вот с этим я совершенно согласен, такое разделение действительно присутствует.


В нагло-американском все довольно четко "CS && EE" (теория и практика). В русском же под понятием информатика и "компьютерные науки", увы, скрывается все что угодно.
В словосочетании "computer science" второе слово в любом переводе будет означать науку/теорию.

То что Вы приводите, это скорее всего к http://en.wikipedia.org/wiki/Software_engineering. Называйте вещи своими именами.
Re: Классика Computer Science
От: coddy  
Дата: 17.03.10 17:45
Оценка:
Извините за, возможно, оффтоп:

Существуют книги посвященные паттернам и проектированию информационных систем, с примерами на C# ?
Re[2]: Классика Computer Science
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 19.03.10 16:06
Оценка: 3 (1)
Здравствуйте, coddy, Вы писали:

C>Существуют книги посвященные паттернам и проектированию информационных систем, с примерами на C# ?


На русском языке наиболее близка к этой теме следующая книга: Применение DDD и шаблонов проектирования. Проблемно-ориентированное проектирование приложений с примерами на C# и .NET
Автор(ы): Джимми Нильссон

Эта книга о разработке корпоративных программных приложений в среде .NET с применением шаблонов проектирования. В ней описаны: проблемно-ориентированные методы проектирования (DDD, или Domain Driven Design), разработка посредством тестирования (TDD, или Test-Driven Development), объектно-реляционное преобразование, т.е. методы, которые многие относят к ключевым технологиям разработки программного обеспечения. По мере развития и усложнения технологии все большее значение приобретают вопросы правильного применения методов проектирования. Ценность этой книги в том и состоит, что она помогает разобраться в этих вопросах. Хотя большинство примеров кода представлено на языке C#, материал книги может оказаться полезным и для тех, кто работает на платформе Java. Книга адресована опытным разработчикам архитектуры и прикладного программного обеспечения уровня предприятий, в том числе и в среде .NET.


На английском языке выбор поболее.
Отличный перечень идиом языка (это не совсем одно и тоже, что и паттерны) C# есть в книгеFramework Design Guidelines
Автор(ы): Krzysztof Cwalina, Brad Abrams

Framework Design Guidelines, Second Edition, teaches developers the best practices for designing reusable libraries for the Microsoft .NET Framework. Expanded and updated for .NET 3.5, this book new edition focuses on the design issues that directly affect the programmability of a class library, specifically its publicly accessible APIs.
.

Многие (в частности на stackoverflow) хвалят книгу Роберта Мартина Agile Principles, Patterns, and Practices in C#, единственная проблема, что она вышла еще в 20006-м, поэтому там ничего не будет о лямбдах и LINQ.

C# 3.0 Design Patterns, но мнение о ней достаточно противоречивое.

Foundations of Object-Oriented Programming Using .NET 2.0 Patterns

.NET Patterns: Architecture, Design, and Process

Patterns and Practices group on MSDN

Ну и еще вот эта: Head First Design Patterns, все примеры в ней на Java, поэтому для C# программиста читать ее также должно быть просто (кроме того для этой книги доступны примеры на C#).
Re[3]: Классика Computer Science
От: Fantasist  
Дата: 22.03.10 08:59
Оценка: 18 (1) +1
Здравствуйте, SergeyT., Вы писали:

ST>З.Ы. Я очень жду от всех участников форума конструктивных предложений, а не претензий к деталям. Я не отказываюсь от слов, которые написаны во вступлении: этот перечень будет изменяться и развиваться. Главное, чтобы все поняли наши намерения, и что же мы хотим в итоге получить.


А по компиляторам что-нибудь у вас есть? Я только одну знаю (книга красного дракона). Несмотря на то, что написанием типа компиляторов С++ мало кто занимается, мне кажется что многие прикладные вещи по разбору текста и создания простейших скриптов не такая уж редкая задача.
Re[4]: Классика Computer Science
От: v2kochetov Россия  
Дата: 23.03.10 12:47
Оценка: 18 (1) +1
Здравствуйте, Fantasist, Вы писали:

F>Здравствуйте, SergeyT., Вы писали:


ST>>З.Ы. Я очень жду от всех участников форума конструктивных предложений, а не претензий к деталям. Я не отказываюсь от слов, которые написаны во вступлении: этот перечень будет изменяться и развиваться. Главное, чтобы все поняли наши намерения, и что же мы хотим в итоге получить.


F>А по компиляторам что-нибудь у вас есть? Я только одну знаю (книга красного дракона). Несмотря на то, что написанием типа компиляторов С++ мало кто занимается, мне кажется что многие прикладные вещи по разбору текста и создания простейших скриптов не такая уж редкая задача.

Сам не читал, как и книгу "красного дракона" к сожалению, но слышал много хороших отзывов — Т.Пратт — Языки программирования. Разработка и реализация.
Вот еще интересный пост на этому тему нашел — http://rsdn.ru/forum/alg/932661.aspx
Автор: LaptevVV
Дата: 06.12.04
... << RSDN@Home 1.2.0 alpha 4 rev. 1464>>
Re[3]: Классика Computer Science
От: Smal Россия  
Дата: 26.03.10 13:19
Оценка:
Здравствуйте, SergeyT., Вы писали:

Упс, сегодня заметил, что не к тому посту откомментил.
Прошу прощения.
С уважением, Александр
Re: Классика Computer Science
От: Smal Россия  
Дата: 26.03.10 13:24
Оценка: +1
Здравствуйте, Сергей Тепляков, Вы писали:

СТ>Аннотация:

СТ>В статье приведен перечень книг, по праву считающихся классикой компьютерной литературы в самых различных областях разработки программного обеспечения

Я бы постеснялся называть эту статью "классика Computer Science".
Лучше назвать "классика Software Engineering".
Computer Science — это уж очень широкое понятие.
Гляньте в Википедию.

Извините за сравнение, но это так же,
как назвать учебник по черчению "Классикой математики".

PS. И добавьте Кормена в алгоритмы. Это не меньшая классика, чем Кнут.
PPS. Ещё будет полезно добавить SICP в "общие вопросы".
С уважением, Александр
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.