C++ - Modern C++ Design. Generic Programming and Design Patterns Applied
معرفی کتاب «C++ - Modern C++ Design. Generic Programming and Design Patterns Applied» نوشتهٔ Sanderson، Brandon و Andrei Alexandrescu; Safari, an O'Reilly Media Company، منتشرشده توسط نشر Addison Wesley در سال 2001. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است.
کتاب «طراحی مدرن در سیپلاسپلاس» (Modern C++ Design: Generic Programming and Design Patterns Applied) نوشتهٔ آندری الکساندرسکو، یکی از تأثیرگذارترین کتابهای تاریخ برنامهنویسی بهشمار میرود که توسط اسکات مایرز، از مراجع بنام زبان سیپلاسپلاس، چنین توصیف شده است. این کتاب با رویکردی خلاقانه و پیشرو، مرزهای برنامهنویسی الگو (Template Programming) را جابهجا کرده و مفاهیمی چون «طراحی مبتنی بر سیاست» (Policy-Based Design) را برای اولینبار به جامعهٔ برنامهنویسان معرفی نمود. اگر به دنبال درکی عمیق از قابلیتهای پنهان زبان سیپلاسپلاس و خلق کدهایی منعطف و با قابلیت استفادهٔ مجدد بالا هستید، این کتاب مسیری تازه پیش روی شما میگشاید.
دربارهٔ کتاب «طراحی مدرن در سیپلاسپلاس» —
کتاب «طراحی مدرن در سیپلاسپلاس» در سال ۲۰۰۱ توسط انتشارات ادیسون-وزلی منتشر شد 2 5 و بهسرعت به یکی از منابع کلیدی و مرجع در حوزهٔ برنامهنویسی پیشرفته تبدیل گردید. این کتاب، فراتر از یک راهنمای ساده، دیدگاهی انقلابی برای ترکیب دو حوزهٔ «برنامهنویسی جنریک» (Generic Programming) و «الگوهای طراحی» (Design Patterns) ارائه میدهد. الکساندرسکو با تکیه بر قابلیت «برنامهنویسی فراترمپلیت» (Template Metaprogramming)، روشی نوین برای ایجاد «کامپوننتهای جنریک» (Generic Components) ابداع میکند که درواقع، الگوهای طراحی را به قطعات کد قابلاستفادهٔ مجدد تبدیل مینمایند. محتوا و سبک نگارش کتاب بهگونهای است که برای برنامهنویسان حرفهای که با کتابخانهٔ استاندارد الگوها (STL) آشنایی دارند، بسیار جذاب و کاربردی خواهد بود. ساختار کتاب به دو بخش اصلی تقسیم میشود: بخش نخست به تکنیکهای پایهای مانند طراحی مبتنی بر سیاست، لیستهای نوعی (Typelists) و تخصیص حافظه برای اشیای کوچک اختصاص دارد؛ بخش دوم نیز به پیادهسازی کامپوننتهای قدرتمندی چون مجریهای توابع، اشارهگرهای هوشمند، کارخانههای اشیا و الگوهای شناختهشدهای مانند سینگلتون و ویزیتور میپردازد. رویکرد گامبهگام و ارائهٔ مثالهای عینی، مفاهیم عمیق را برای مخاطب ملموس میسازد.دربارهٔ نویسنده
آندری الکساندرسکو، متولد ۱۹۶۹ در رومانی، یکی از چهرههای شاخص و تأثیرگذار در دنیای برنامهنویسی، بهویژه زبانهای سیپلاسپلاس و دی، است. او که مدرک دکترای خود را در رشتهٔ علوم کامپیوتر از دانشگاه واشینگتن دریافت کرده، فعالیت حرفهای خود را با نگارش مقالاتی برای مجلهٔ «سی/سیپلاسپلاس یوزرز ژورنال» آغاز نمود. الکساندرسکو علاوه بر خلق کتاب حاضر، بهعنوان یکی از طراحان اصلی زبان برنامهنویسی دی نیز فعالیت داشته و کتاب مرجع آن زبان را نیز تألیف کرده است. او سابقهٔ همکاری با شرکتهای بزرگی چون فیسبوک (بهعنوان دانشمند پژوهشی) و انویدیا را در کارنامه دارد و بهخاطر رویکرد خلاقانه و نوآورانهاش در حوزهٔ طراحی نرمافزار، شهرتی جهانی دارد.چرا باید «طراحی مدرن در سیپلاسپلاس» را بخوانید؟
- آشنایی با رویکرد «طراحی مبتنی بر سیاست»: با مطالعهٔ این کتاب، با مفهوم «سیاست» (Policy) آشنا میشوید و یاد میگیرید که چگونه با ترکیب چندین سیاست در قالب یک کلاس، رفتاری بسیار منعطف و قابلشخصیسازی خلق کنید که در زمان کامپایل تعیین میشود.
- درک عمیق برنامهنویسی فراترمپلیت: این کتاب، کاربردهای پیشرفتهی ترمپلیتها را فراتر از مفاهیم پایه به شما نشان میدهد و قدرت شگفتانگیز «برنامهنویسی متا» را برای تولید کدهای کارآمد و خودکار، آشکار میسازد.
- دسترسی به کتابخانهٔ قدرتمند لوکی: تمام کدهای ارائهشده در کتاب، در قالب کتابخانهای رایگان به نام «لوکی» (Loki) در دسترس است که میتوانید از آن در پروژههای واقعی خود استفاده کنید.
- ارتقای سطح طراحی نرمافزار: با الگوهای طراحی پیادهسازیشده به روشی نوین آشنا میشوید و میآموزید که چگونه الگوهای تکراری مانند Singleton یا Visitor را یکبار نوشته و بارها استفاده کنید.
- درک مفاهیم بنیادین در زبان سیپلاسپلاس مدرن: بسیاری از اصطلاحات رایج امروزی در جامعهٔ سیپلاسپلاس، ریشه در مفاهیم مطرحشده در این کتاب دارند که مطالعهٔ آن را برای درک بهتر زبان ضروری میسازد.
این کتاب برای چه کسانی مناسب است؟
«طراحی مدرن در سیپلاسپلاس» بهصراحت برای برنامهنویسان حرفهای و باتجربهای نوشته شده که با مبانی زبان سیپلاسپلاس، بهویژه کتابخانهٔ استاندارد الگوها (STL)، آشنایی کافی دارند. این کتاب برای کسانی که به دنبال درک ژرفتر از قابلیتهای پیشرفتهٔ زبان و خلق معماریهای نرمافزاری منعطف و مقاوم هستند، منبعی بینظیر محسوب میشود. بااینحال، به دلیل عمق مطالب، برای مبتدیان یا کسانی که تازه با مفاهیم ترمپلیت آشنا شدهاند، مناسب نیست و ممکن است درک آن دشوار باشد. مطالعهٔ این کتاب، سفری چالشبرانگیز اما بسیار ارزشمند در اعماق یکی از قدرتمندترین زبانهای برنامهنویسی دنیاست.سوالات متداول
آیا مطالب این کتاب با وجود گذشت زمان، همچنان برای برنامهنویسان امروزی مفید است؟
با اینکه کتاب در سال ۲۰۰۱ منتشر شده و برخی مباحث آن بر پایهٔ استاندارد قدیمیتر سیپلاسپلاس (C++98) است، اما مفاهیم بنیادین و رویکردهای معماری مطرحشده در آن، همچنان برای درک عمیق طراحی نرمافزار و قابلیتهای زبان سیپلاسپلاس ارزشمند بوده و بهعنوان یکی از مهمترین کتابهای این زبان شناخته میشود.
آیا برای استفاده از کدهای کتاب، حتماً باید کتابخانهٔ «لوکی» را نصب کنم؟
خیر، اما استفاده از کتابخانهٔ لوکی که بهصورت رایگان در دسترس است، بهشدت توصیه میشود، چراکه شامل پیادهسازی کامل و آمادهٔ تمام کامپوننتهای معرفیشده در کتاب است و میتواند بهعنوان یک ابزار قدرتمند در پروژههای واقعی به کار گرفته شود.
آیا مطالعهٔ این کتاب به تنهایی برای تبدیل شدن به یک برنامهنویس خبره کافی است؟
این کتاب شما را با یک رویکرد و تکنیک خاص آشنا میسازد، اما مسیر تبدیل شدن به یک برنامهنویس خبره نیازمند مطالعهٔ منابع متعدد، تمرین و تجربهٔ عملی گسترده است. با این وجود، «طراحی مدرن در سیپلاسپلاس» بهعنوان یکی از پلههای اساسی و مهم در این مسیر شناخته میشود.
Modern C++ Design is an important book. Fundamentally, it demonstrates ‘generic patterns’ or ‘pattern templates’ as a powerful new way of creating extensible designs in C++a new way to combine templates and patterns that you may never have dreamt was possible, but is. If your work involves C++ design and coding, you should read this book. Highly recommended.
Herb Sutter
What’s left to say about C++ that hasn’t already been said? Plenty, it turns out.
From the Foreword by John Vlissides
In Modern C++ Design, Andrei Alexandrescu opens new vistas for C++ programmers. Displaying extraordinary creativity and programming virtuosity, Alexandrescu offers a cutting-edge approach to design that unites design patterns, generic programming, and C++, enabling programmers to achieve expressive, flexible, and highly reusable code.
This book introduces the concept of generic componentsreusable design templates that produce boilerplate code for compiler consumptionall within C++. Generic components enable an easier and more seamless transition from design to application code, generate code that better expresses the original design intention, and support the reuse of design structures with minimal recoding.
The author describes the specific C++ techniques and features that are used in building generic components and goes on to implement industrial strength generic components for real-world applications. Recurring issues that C++ developers face in their day-to-day activity are discussed in depth and implemented in a generic way. These include:
- Policy-based design for flexibility
- Partial template specialization
- Typelistspowerful type manipulation structures
- Patterns such as Visitor, Singleton, Command, and Factories
- Multi-method engines
For each generic component, the book presents the fundamental problems and design options, and finally implements a generic solution.
In addition, an accompanying Web site, http://www.awl.com/cseng/titles/0-201-70431-5, makes the code implementations available for the generic components in the book and provides a free, downloadable C++ library, called Loki, created by the author. Loki provides out-of-the-box functionality for virtually any C++ project.
Get a value-added service! Try out all the examples from this book at www.codesaw.com. CodeSaw is a free online learning tool that allows you to experiment with live code from your book right in your browser.
0201704315B11102003
In Modern C++ Design, Andrei Alexandrescu opens new vistas for C++ programmers. Displaying extraordinary creativity and virtuosity, Alexandrescu offers a cutting-edge approach to software design that unites design patterns, generic programming, and C++, enabling programmers to achieve expressive, flexible, and highly reusable code. The book introduces the concept of generic components, reusable design templates that enable an easier and more seamless transition from design to application code, generate code that better expresses the original design intention, and support the reuse of design structures with minimal recoding. The author then shows how to apply this approach to recurring, real-world issues that C++ programmers face in their day-to-day activity. All code is available on the Web, along with Alexandrescu's downloadable Loki C++ library, which provides powerful out-of-the-box functionality for virtually any C++ project. For experienced C++ programmers who have at least some familiarity with the Standard Template Library (STL). Want to learn how to program in C++ immediately? Want to start writing better, more powerful C++ programs today? Accelerated C++'s uniquely modern approach will help you learn faster and more fluently than you ever believed possible. Based on the authors' intensive summer C++ courses at Stanford University, Accelerated C++ covers virtually every concept that most professional C++ programmers will ever use -- but it turns the "traditional" C++ curriculum upside down, starting with the high-level C++ data structures and algorithms that let you write robust programs immediately. Once you're getting results, Accelerated C++ takes you "under the hood", introducing complex language features such as memory management in context, and explaining exactly how and when to use them. From start to finish, the book concentrates on solving problems, rather than learning language and library features for their own sake. The result: You'll be writing real-world programs in no time -- and outstanding code faster than you ever imagined.