An Introduction to Creative Problem Solving
V. Anton Spraul

#Programmer
#data_structure
#Function
#C++
#Pointer
#Recursion
🧠 سینتکس را یاد گرفتی؛ حالا مثل یک برنامهنویس فکر کن!
💡 چالش واقعی برنامهنویسی فقط یادگیری قواعد یک زبان نیست؛ باید یاد بگیری چطور خلاقانه مسئله حل کنی تا بتونی چیزی ارزشمند بسازی. کتاب Think Like a Programmer نوشته وی. آنتون اسپرول دقیقاً سراغ همین مهارت میره؛ چیزی که بسیاری از کتابهای مقدماتی کمتر به اون میپردازن: چطور مثل یک برنامهنویس فکر کنیم؟
✨ ویژگیهای کلیدی
🧩 یادگیری روشهای شکستن مسائل پیچیده به بخشهای کوچکتر و قابلحل.
♻️ استفاده مؤثر از Functionها، Classها و Libraryها برای استفاده مجدد از کد.
📊 انتخاب ساختار داده مناسب با توجه به نیاز هر مسئله.
🔄 درک و استفاده از ابزارهای پیشرفتهتر مثل Recursion، Pointerها و Dynamic Memory.
🎯 پرورش تفکر مستقل با تمرینهایی که مسیر حل ازپیشتعیینشده ندارن و به خلاقیت نیاز دارن.
📘 توضیح کتاب
👨💻 خیلیها قواعد یک زبان برنامهنویسی را یاد میگیرن، اما وقتی با یک مسئله تازه روبهرو میشن، نمیدونن از کجا شروع کنن. Think Like a Programmer به همین فاصله میان «شناخت زبان» و «توانایی حل مسئله» میپردازه و روش فکر کردن برنامهنویسها هنگام مواجهه با مشکلات را توضیح میده.
🛠️ وی. آنتون اسپرول شیوههای حل مسئله را به مراحل قابلفهم تقسیم میکنه و نشان میده چطور میشه برای رسیدن به یک راهحل، فکرها را مرتب کرد، مسئله را تجزیه کرد و از امکانات زبان بهشکل هدفمند استفاده کرد.
📚 هر فصل روی یک مفهوم مشخص تمرکز داره؛ از Arrayها و Classها گرفته تا Pointerها و Recursion. این مفاهیم در قالب حل مسئله بررسی میشن تا ارتباط میان ابزارهای برنامهنویسی و کاربرد عملی اونها روشن بشه.
✍️ تمرینهای باز کتاب، خواننده را به استفاده مستقل از دانستهها دعوت میکنن. برای حل اونها باید فکر کنی، راههای مختلف را بررسی کنی و استراتژی خودت را بسازی؛ فرصتی برای تقویت مهارتی که با مطالعه صرفِ کدهای آماده شکل نمیگیره.
⚙️ مثالهای کتاب با C++ نوشته شدن، اما اصول حل مسئله خلاقانه به زبان خاصی محدود نیستن. بسیاری از این ایدهها حتی خارج از علوم کامپیوتر هم کاربرد دارن و به سازماندهی فکر و مواجهه بهتر با مسائل کمک میکنن.
🎨 نوشتن کد خوب، به خلاقیت هم نیاز داره. این کتاب کمک میکنه ابزارهای برنامهنویسی را بهتر بشناسی و یاد بگیری چطور با ترکیب اونها، برای مسائل مختلف راهحل طراحی کنی.
🎯 چیزهایی که یاد میگیری
🧩 مسائل را به اجزای مستقل و کوچکتر تقسیم کنی تا حل کردن اونها سادهتر بشه.
♻️ از Functionها، Classها و Libraryها برای استفاده مجدد از کد بیشترین بهره را ببری.
📊 برای هر کار، ساختار داده مناسب انتخاب کنی.
🔄 از Recursion و Dynamic Memory برای حل مسائل پیشرفتهتر استفاده کنی.
🧭 فکرهات را سازمان بدی و برای انواع مشخصی از مسائل، استراتژی حل توسعه بدی.
👤 این کتاب برای چه کسانیه؟
🌱 برای کسانی که در حال یادگیری برنامهنویسی هستن و میخوان در کنار قواعد زبان، مهارت تحلیل و حل مسئله را هم تقویت کنن.
👨💻 همچنین برای افرادی مناسبه که کدنویسی را یاد گرفتن، اما هنگام تبدیل یک مسئله به راهحل و کد، هنوز به تمرین و روش مشخصی نیاز دارن. مثالهای C++ کتاب، بستری برای آموزش مهارتهایی هستن که در زبانهای دیگه هم کاربرد دارن.
📖 فهرست مطالب
فصل ۱. استراتژیهای حل مسئله
فصل ۲. معماهای محض
فصل ۳. حل مسئله با آرایهها
فصل ۴. حل مسئله با اشارهگرها و حافظه پویا
فصل ۵. حل مسئله با کلاسها
فصل ۶. حل مسئله با بازگشت
فصل ۷. حل مسئله با استفاده مجدد از کد
فصل ۸. فکر کردن مثل یک برنامهنویس
📝 نقد و بررسی
💭 «نویسنده بهوضوح دانش و تجربه زیادی در آموزش مفاهیم دشوار به تازهکارها داره؛ چیزی که در سبک نوشتاری بیحاشیه، ملموس و درعینحال لذتبخش او کاملاً دیده میشه.»
— آدریان وودهد، Slashdot
💭 «اسپرول بیش از پانزده سال درسهای مقدماتی علوم کامپیوتر تدریس کرده و این تجربه کاملاً مشخصه. او نظریه را با مثالهای عینی بهخوبی توضیح میده و بهدرستی روی تمرینهای برنامهنویسی برای تثبیت مفاهیم تأکید زیادی داره.»
— آریان کافین، بخش GeekMom وبسایت Wired
💭 «ترکیب مرور مفاهیم با روشهای رایج حل مسئله که در کاربردهای متنوع قابلاستفاده هستن، این کتاب را به گزینهای کاربردی برای تکمیل یا مرور مهارتهای برنامهنویسی تبدیل کرده؛ درحالیکه رویکردی نظاممند به حل مسئله را هم آموزش میده.»
— مجله Choice
💭 «این یکی از مفیدترین کتابهایی است که خوندهام، چون کمک میکنه روش و چارچوب خودت را طراحی کنی، بهجای اینکه این ذهنیت را تقویت کنه که فقط یک روش درست وجود داره.»
— لوکاس وسترمن، مجله Full Circle
💭 «کتاب خوشخوانه و پر از توصیههای عالی و مثالهای محکم و حسابشده است. اگر برای مطالعه مطالب وقت بذاری، خیلی زود مجموعه چشمگیری از استراتژیهای حل مسئله به دست میاری و شاید نگاه تازهای هم به برنامهنویسی پیدا کنی.»
— فیل بول، نویسنده مستندات رسمی Ubuntu
💭 «تضمین میکنم اگر تمام کتاب را همراه با تمرینها پیش ببری، ذهنت را حسابی به چالش میکشی.»
— دیوید بولتون، بخش C/C++/C# وبسایت About.com
💭 «قطعاً این کتاب را بهعنوان مکمل هر منبعی که برای آشنا کردن دانشجویان تازهکار با برنامهنویسی یا منطق برنامهنویسی استفاده میشه، پیشنهاد میکنم.»
— جو سار، نشریه Software Engineering Notes انجمن ACM
💭 «توصیههای وی. آنتون اسپرول ساده، روشن و کاربردی هستن. کتابی راحتخوان و ارزشمنده.»
— جیمز پاول، Enterprise Systems
💭 «کتاب Think Like a Programmer را به هرکسی که میخواد مهارت حل مسئله خلاقانه خودش را تقویت کنه، یا برنامهنویسی یاد گرفته اما احساس میکنه هنوز مفاهیم را کاملاً درک نکرده، قویاً توصیه میکنم.»
— رابرت پرکینز، Game Vortex
💭 «این قطعاً کتابیه که برای آموزش برنامهنویسی به دیگران ازش استفاده میکنم.»
— استیون چپمن، Ask Felgall
👤 درباره نویسنده
👨🏫 وی. آنتون اسپرول بیش از ۱۵ سال سابقه تدریس برنامهنویسی مقدماتی و علوم کامپیوتر داره. او نویسنده کتابهای Computer Science Made Simple از انتشارات Broadway و How Software Works از انتشارات No Starch Press است.
🌐 او در مجموعه مطالب Learning to Program: A Guide در وبسایت شخصی خودش، vantonspraul.com، توصیههایی برای برنامهنویسهای تازهکار ارائه میده.
The real challenge of programming isn't learning a language's syntax—it's learning to creatively solve problems so you can build something great. In this one-of-a-kind text, author V. Anton Spraul breaks down the ways that programmers solve problems and teaches you what other introductory books often ignore: how to Think Like a Programmer. Each chapter tackles a single programming concept, like classes, pointers, and recursion, and open-ended exercises throughout challenge you to apply your knowledge.
You'll also learn how to:
Although the book's examples are written in C++, the creative problem-solving concepts they illustrate go beyond any particular language; in fact, they often reach outside the realm of computer science. As the most skillful programmers know, writing great code is a creative art—and the first step in creating your masterpiece is learning to Think Like a Programmer.
Table of Contents
Chapter 1. Strategies for Problem Solving
Chapter 2. Pure Puzzles
Chapter 3. Solving Problems with Arrays
Chapter 4. Solving Problems with Pointers and Dynamic Memory
Chapter 5. Solving Problems with Classes
Chapter 6. Solving Problems with Recursion
Chapter 7. Solving Problems with Code Reuse
Chapter 8. Thinking Like a Programmer
Review
"The author is obviously very knowledgeable and experienced with teaching hard concepts to new learners and this shows in his no-nonsense, down-to-earth but enjoyable writing style."
—Adrian Woodhead, Slashdot
"Spraul has taught intro computer science classes for over fifteen years and it shows. He does a great job showing the theory using concrete examples, and rightfully puts a great deal of emphasis on programming exercises to strengthen the concepts."
—Ariane Coffin, Wired.com's GeekMom
"The combination of conceptual overview and common problem-solving techniques that are applicable to many applications make this a particularly feasible way to supplement or review programming skills while learning a systematic approach to problem solving."
—Choice Magazine
"This is one of the most helpful books I've read, due to the fact that it guides you towards designing a system for yourself, as opposed to encouraging a mindset where there can be only one correct method."
—Lucas Westermann, Full Circle Magazine
"The book is well-written, with tons of excellent advice and solid, well-thought-out examples. If you’re willing to devote some time to studying the material, you’ll soon find yourself equipped with an impressive array of problem-solving strategies and, maybe, a new outlook on programming."
—Phil Bull, author of the official Ubuntu documentation
"I guarantee if you work through the entire book you will stretch your brain."
—David Bolton, About.com C/C++/C#
"I would definitely recommend this book as a companion to whatever text is used to introduce [new students] to programming and/or program logic."
—Joe Saur, The ACM's Software Engineering Notes Magazine
"[V. Anton Spraul's] advice is simple, straightforward, and practical. It's an easy—and valuable—read."
—James Powell, Enterprise Systems
"I highly recommend Think Like a Programmer to anyone who wants to hone their creative problem-solving skills or to anyone who has learned to program, but doesn't feel that they fully understand the concepts."
—Robert Perkins, Game Vortex
"This is definitely a book that I would use in teaching programming to others."
—Stephen Chapman, Ask Felgall
About the Author
V. Anton Spraul has taught introductory programming and computer science for more than 15 years. He is the author of Computer Science Made Simple (Broadway) and How Software Works (No Starch Press). He offers advice for beginning programmers in his series "Learning to Program: A Guide" on his website (http://www.vantonspraul.com).
محمد طاها ذوقیخیلی دنبال همچین کتابی میگشتم. قبل از یادگیری الگوریتم باید اینو خوند چون به شما طرز تفکر یک برنامه نویس رو میده. الگوریتم واسه وقتیه که فهمیدید برنامه تون چیکار میکنه و میخواید پیاده سازیش بکنید.









