- عنوان کتاب: C++ PROGRAMMERS MINDSET
- نویسنده: Sam Morley
- حوزه: برنامهنویسی CPP
- تعداد صفحه: 534
- زبان اصلی: انگلیسی
- نوع فایل: pdf
- حجم فایل: 7.55 مگابایت
حل مسائل بخش بزرگی از کدنویسی است. گاهی اوقات این مسائل، مسائل کوچکی هستند که به سختی آنها را تشخیص میدهیم و گاهی اوقات چالشهای بزرگی هستند که در ابتدا غیرقابل عبور به نظر میرسند. در هر حوزهای که کار میکنید و هر مسئلهای که باشد، حل مسائل یک فرآیند تکراری با شروعهای نادرست و بنبستها است تا زمانی که در نهایت مسیر «درست» را پیدا کنید – این طبیعی است. پس از حل چند مسئله بزرگ، شروع به تشخیص برخی از ویژگیهای مشترک در این فرآیند خواهید کرد: تجزیه مسئله به قطعات کوچکتر، فرموله کردن یا یافتن انتزاعهای خوب، تشخیص الگوهایی که در انواع دیگر مسائل ظاهر میشوند و فرموله کردن لیستی از مراحلی که باید برای ساختن راهحلهای مسئله دنبال کنید. در علم کامپیوتر، این چارچوب برای حل مسائل، تفکر محاسباتی نامیده میشود. البته، فرموله کردن راهحلها و الگوریتمهای انتزاعی تنها بخشی از حل واقعی مسئله است. بخش دیگر، در واقع تحقق راهحل به عنوان نرمافزار و ارائه آن، به هر شکلی که باشد، است. این بدان معناست که ابتدا باید ابزار مناسب برای ساخت این نرمافزار را انتخاب کنید، که شامل انتخاب زبان برنامهنویسی مورد استفاده نیز میشود. گاهی اوقات این انتخاب برای شما انجام میشود، اما در موارد دیگر، انتخاب به عوامل زیادی بستگی دارد. وقتی عملکرد از اهمیت بالایی برخوردار است، ++C یک انتخاب بدیهی است. ++C مدرن بسیار قدرتمند است و با اکوسیستم بزرگی از کتابخانههای با کارایی بالا ارائه میشود. بهروزرسانیهای اساسی بسیاری در دهه گذشته، ++C را به دوران مدرن زبانهای برنامهنویسی وارد کرده است. بیش از هر چیز، آنچه ++C ارائه میدهد، کنترل است. زبانهای دیگر میتوانند در برخی موارد به عملکرد دست یابند، اما اغلب در زمینههای دیگر شکست میخورند. تعداد کمی از زبانها عملکرد مشابه ++C را بدون قربانی کردن کنترل، انعطافپذیری یا سهولت استفاده ارائه میدهند. البته مهارت در حل مسائل در ++C مستلزم داشتن دانش خوب از ++C و تکنیکهای استاندارد است. ارائه تعادل مناسب بین عملکرد و انعطافپذیری اغلب نیاز به درک زمینه وسیعتری دارد که کد در آن اجرا خواهد شد: سیستم عامل، سختافزار، ویژگیهای پردازنده و سختافزار شتابدهنده خاص. در نظر داشتن همه این موارد هنگام انتخاب ساختارهای داده و طراحی الگوریتمها میتواند به شما برتری دهد. اما موضوع فراتر از این است. درک این مفاهیم همچنین به شما کمک میکند تا انتزاعهای خوب را انتخاب کنید و والدین مفید را راحتتر شناسایی کنید. ارتباط بین ++C و حل مسئله دو طرفه است و این موضوع این کتاب است. این کتاب برای افرادی است که از قبل با اصول اولیه برنامهنویسی ++C آشنا هستند و میخواهند در حل مسائل پیچیده مهارت پیدا کنند. هیچ پیشزمینهای در علوم کامپیوتر نظری فرض نشده است؛ در مواردی که چنین پیشزمینهای وجود دارد، ما به جزئیات پرداخته و به کتابهای درسی که آن را بیشتر توضیح میدهند، ارجاع میدهیم. این یک راهنمای گام به گام برای حل مسائل نیست. در عوض، بحثی در مورد تعامل بین زبان، ویژگیها و امکانات ++C و چارچوب تفکر محاسباتی است. ما زمینهای را که باید در مورد کار با ++C در نظر داشته باشید و چگونگی ارتباط آن با فرآیند حل مسئله را توضیح میدهیم.
Solving problems is a large part of writing code. Sometimes these are small problems that we barely acknowledge and sometimes they are grand challenges that seem insurmountable at first. Whatever domain you work in, and whatever the problem, solving problems is an iterative process with false starts and dead ends until you eventually find the “right” path – this is normal. After solving a few big problems, you’ll start to recognize some common features in this process: breaking the problem down into smaller pieces, formulating or finding good abstractions, recognizing paerns that appear in other kinds of problems, and formulating a list of steps to follow to construct solutions to the problem. In computer science, this framework for solving problems is called computational thinking . Of course, formulating abstract solutions and algorithms is only part of actually solving the problem. The other part is actually realizing the solution as software and delivering it, whatever form that might take. This means you must first select the right tool to build this software, which includes selecting the programming language to use. Sometimes this choice is made for you, but other times, the choice depends on many factors. When performance is paramount, C++ is an obvious choice. Modern C++ is very powerful and comes with a large ecosystem of high-performance libraries. Many substantial updates in the past decade have brought C++ into the modern era of programming languages. More than anything, what C++ provides is control. Other languages can achieve performance in some places, but they often fall down in other areas. Few languages deliver the same performance as C++ without sacrificing control, flexibility, or ease of use. Being proficient at solving problems in C++, of course, requires you to have a good knowledge of C++ and standard techniques. Delivering the right balance of performance and flexibility often also requires an understanding of the broader context in which the code will run: the operating system, hardware, processor features, and specific accelerator hardware. Having all this in mind when choosing data structures and designing algorithms can give you the edge. But it’s more than that. Understanding these concepts will also help you select good abstractions and identify useful paerns more easily. The connection between C++ and problem-solving is two-way, and that is the topic of this book. This book is for people who are already familiar with the basics of C++ programming who are looking to become beer at solving complex problems. No background in theoretical computer science is assumed; where this does appear, we keep it light on detail and give references to textbooks that explain it more. This is not a step-by-step guide for solving problems. Instead, it is a discussion about the interplay between the C++ language, features, and facilities, and the computational thinking framework. We explain the context surrounding working in C++ that you should keep in mind and how this relates to the problem-solving process.
این کتاب را میتوانید از لینک زیر بصورت رایگان دانلود کنید:
Download: C++ PROGRAMMERS MINDSET

نظرات کاربران