کتاب Algorithmic Thinking, 2nd Edition: Unlock Your Programming Potential (تفکر الگوریتمی، ویرایش دوم: پتانسیل برنامهنویسی خود را باز کنید) مفاهیم مربوط به برنامهنویسی را با دیدی الگوریتمی و ریاضی حل و تشریح میکند.
در ادامه مقدمهای از کتاب Algorithmic Thinking را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Algorithmic Thinking:
من فرض میکنم که شما یاد گرفتهاید که از یک زبان برنامهنویسی مانند C، C++، Java یا Python استفاده کنید… و منامیدوارم که شما گیر کرده باشید. توضیح اینکه چرا حل مشکلات از طریق برنامهنویسی اینقدر لذت بخش و سرگرمکننده است برای غیربرنامهنویسان سخت است.
من همچنینامیدوارم که شما آماده باشید تا مهارت برنامهنویسی خود را به سطح بعدی ببرید. من این افتخار را دارم که به شما در انجام این کار کمک کنم.
کاری که ما انجام خواهیم داد
میتوانم با آموزش چند تکنیک جدید فانتزی به شما شروع کنم، به شما بگویم که چرا آنها مفید هستند، و آنها را با سایر تکنیکهای فانتزی مقایسه کنم، اما این کار را نمیکنم. آن ماده بیاثر میماند، برای اندکی نگه میداشت و منتظر فرصتی بود تا به عمل بیاید – اگر در واقع فرصتی پیش بیاید.
درعوض، کاری که من در سراسر کتاب Algorithmic Thinking انجام میدهم، مشکلات مطرح است: مشکلات سخت. اینها مشکلاتی هستند کهامیدوارم نتوانید آنها را حل کنید، مشکلاتی کهامیدوارم رویکردهای فعلی شما را مختل کند. شما یک برنامهنویس هستید میخواهید مشکلات را حل کنید. اکنون زمان یادگیری آن تکنیکهای فانتزی است. این کتاب همه چیز در مورد طرح مشکلات سخت و سپس حل آنها با ایجاد پل بین آنچه میدانید و آنچه نیاز دارید است.
مشکلات کتاب درسی سنتی را در اینجا نخواهید دید. شما راه بهینهای برای ضرب زنجیرهای از ماتریسها یا محاسبه اعداد فیبوناچی پیدا نخواهید کرد. قول میدهم: معمای برج هانوی را حل نخواهید کرد. کتابهای درسی بسیار خوبی وجود دارد که این کارها را انجام میدهند، اما من گمان میکنم که بسیاری از مردم با این نوع پازلها انگیزه ندارند.
رویکرد من استفاده از مشکلات جدیدی است که قبلاً ندیدهاید. هر ساله هزاران نفر در مسابقات برنامهنویسی شرکت میکنند و این مسابقات به مشکلات جدیدی نیاز دارد تا اندازهگیری شود که شرکتکنندگان چه چیزی میتوانند خودشان به دست بیاورند نه اینکه چه کسی میتواند سریعتر در گوگل جستجو کند.
این مشکلات جذاب هستند، در عین حال که پیچ و تابها و زمینهها را برای به چالش کشیدن افراد برای یافتن راهحلهای جدید اضافه میکنند، از کلاسیکها استفاده میکنند. یک جریان به ظاهر بیپایان از دانش برنامهنویسی و محاسباتی وجود دارد که توسط این مشکلات احاطه شده است. با انتخاب درست مسائل میتوانیم هر چقدر که دوست داریم یاد بگیریم.
بیایید با برخی از اصول اولیه شروع کنیم. ساختار داده راهی برای سازماندهی دادهها به گونهای است که عملیات مطلوب سریع باشد. الگوریتم مجموعهای از مراحل است که یک مسأله را حل میکند. گاهی اوقات میتوانیم الگوریتمهای سریعی را بدون استفاده از ساختارهای داده پیچیده بسازیم. در موارد دیگر، ساختار داده مناسب میتواند سرعت قابل توجهی را افزایش دهد.
بیشتر بخوانید: کتاب Data Structures & Algorithms in Dart
موارد جدید در نسخه دوم کتاب Algorithmic Thinking
من کاملاً از این فرصت برای بحث در مورد چاپ اول این کتاب با خوانندگان لذت بردم. بازخورد آنها منجر به بسیاری از تغییرات و بهبودها در این نسخه جدید شده است.
من پیشرفتها و اضافات کوچکی در سرتاسر انجام دادهام، اما در اینجا مهمترین نکات جدید وجود دارد:
فصل ۱ کتاب Algorithmic Thinking، من مسأله Compound Words را حذف کردم، زیرا میتوان آن را به روشهایی حل کرد که نیازی به جدول هش ندارد. در عوض، اکنون ما در مورد رمزهای عبور در یک وب سایت شبکه اجتماعی مشکل داریم. من همچنین کد این فصل را برای کمک به کسانی که پسزمینه برنامهنویسی C/C++ ندارند ساده کردهام و اطلاعات بیشتری در مورد کارایی جدولهای هش اضافه کردم.
فصل ۳ کتاب Algorithmic Thinking، راهنمای بیشتری برای چگونگی کشف زیرمشکلات مورد نیاز هنگام حل یک مشکل با برنامهنویسی پویا اضافه کردم.
فصل ۴ کتاب Algorithmic Thinking، این فصل کاملاً جدید است و بر روی استفادههای پیشرفتهتر از حافظهسازی و برنامهنویسی پویا تمرکز دارد. این درخواست مکرر خوانندگان بود، و من هیجانزده هستم که توانستم این را اضافه کنم. شما یاد خواهید گرفت که چگونه به مشکلات برنامهنویسی پویا به صورت معکوس نگاه کنید (و چرا میخواهید)، چگونه با ابعاد بیشتری در آرایههای زیرمسأله خود کار کنید، و چگونه کد برنامهنویسی پویا خود را زمانی که به اندازه کافی سریع نیست بهینه کنید.
فصل ۵ کتاب Algorithmic Thinking، قبلاً فصل ۴ من راهنمایی در مورد نحوه انتخاب بین استفاده از برنامهنویسی پویا و استفاده از نمودار اضافه کردم.
فصل ۸ کتاب Algorithmic Thinking، قبلاً فصل ۷ من بحث بیشتری در مورد اینکه چرا پشتهها را بهعنوان آرایهها به جای درختان صریح پیادهسازی میکنیم، اضافه کردم.
فصل ۱۰ کتاب Algorithmic Thinking، این فصل کاملاً جدید است و نحوه استفاده از تصادفیسازی را به شما میآموزد، موضوعی که اغلب در کتابها به آن پرداخته نمیشود. تصادفیسازی تکنیکی است که میتواند به شما در طراحی الگوریتمهایی ساده و سریع کمک کند. شما از دو نوع الگوریتم تصادفیسازی برای حل مسائلی استفاده خواهید کرد که در غیر این صورت بسیار دشوار خواهند بود. شما همچنین خواهید آموخت که هنگام تصمیمگیری در مورد استفاده از تصادفیسازی در وهله اول به دنبال چه چیزی در یک مشکل باشید.
بیشتر بخوانید: کتاب Techniques for Designing and Analyzing Algorithms
کتاب Algorithmic Thinking برای چه کسی است؟
این کتاب برای هر برنامه نویسی است که می خواهد یاد بگیرد چگونه مسائل سخت را حل کند. بسیاری از ساختارها و الگوریتمهای داده، مزایای آنها، انواع مشکلاتی که میتوانند به شما در حل آنها کمک کنند و نحوه پیادهسازی آنها را خواهید آموخت. بعد از این برنامه نویس بهتری خواهید شد!
آیا در یک دوره آموزشی در مورد ساختارهای داده و الگوریتمها شرکت میکنید و دیواری از قضایا و برهانها به لبتان میخورد؟ لازم نیست اینطور باشد. این کتاب میتواند بهعنوان یک متن همراه برای شما باشد و به شما کمک کند تا به هسته اصلی آنچه در حال وقوع است برسید تا بتوانید کد بنویسید و مشکلات را حل کنید.
آیا در مصاحبه برنامه نویسی بعدی خود به دنبال یک مزیت هستید؟ شما باید بتوانید رویکردهای مختلف را برای حل یک مسئله مقایسه و مقایسه کنید، بهترین ساختار داده یا الگوریتم را انتخاب کنید و راه حل خود را توضیح و پیاده سازی کنید. شما با خواندن این کتاب بارها و بارها همه این مهارت ها را تمرین خواهید کرد. هرگز از جداول هش، بازگشت، برنامه نویسی پویا، درختان، نمودارها یا پشته ها نترسید!
آیا شما یک یادگیرنده مستقل هستید که به سمت تخصص در ساختار داده ها و الگوریتم ها کار می کنید؟ در صورت عدم یافتن منابع مناسب، گردآوری مطالب از سراسر اینترنت می تواند خسته کننده باشد و منجر به شکاف دانش شود. کتاب Algorithmic Thinking پایه محکم و ارائه ثابتی را برای شما فراهم می کند که برای متخصص شدن به آن نیاز دارید.
همانطور که در بخش بعدی بیشتر بررسی شد، تمام کدهای این کتاب به زبان برنامه نویسی C نوشته شده است. با این حال، این کتابی برای یادگیری زبان C نیست. اگر تجربه برنامه نویسی قبلی شما در C یا C++ است، بلافاصله وارد شوید. اگر در عوض به زبانی مانند جاوا یا پایتون برنامهنویسی کردهاید، گمان میکنم که انتخاب کنید بیشتر آنچه را که نیاز دارید را با خواندن بالا ببرید، اما ممکن است بخواهید برخی از مفاهیم C را اکنون یا در اولین برخورد مرور کنید.
به طور خاص، من از اشاره گرها و تخصیص حافظه پویا استفاده خواهم کرد، بنابراین، صرف نظر از تجربه قبلی شما، ممکن است بخواهید در مورد آن موضوعات صحبت کنید. بهترین کتاب C که می توانم توصیه کنم C Programming: A Modern Approach، ویرایش دوم، اثر K. N. King است. حتی اگر با C مشکلی ندارید، به هر حال آن را بخوانید. هر زمان که چیزهای C شما را درگیر کند، این یک همراه خوب و فوق العاده است.
سرفصلهای کتاب Algorithmic Thinking:
- Cover Page
- Title Page
- Copyright Page
- Dedication Page
- About the Author
- About the Technical Reviewer
- About the First Edition Technical Reviewer
- BRIEF CONTENTS
- CONTENTS IN DETAIL
- FOREWORD
- ACKNOWLEDGMENTS
- INTRODUCTION
- 1 HASH TABLES
- 2 TREES AND RECURSION
- 3 MEMOIZATION AND DYNAMIC PROGRAMMING
- 4 ADVANCED MEMOIZATION AND DYNAMIC PROGRAMMING
- 5 GRAPHS AND BREADTH-FIRST SEARCH
- 6 SHORTEST PATHS IN WEIGHTED GRAPHS
- 7 BINARY SEARCH
- 8 HEAPS AND SEGMENT TREES
- 9 UNION-FIND
- 10 RANDOMIZATION
- AFTERWORD
- A ALGORITHM RUNTIME
- B BECAUSE I CAN’T RESIST
- C PROBLEM CREDITS
- INDEX
جهت دانلود کتاب Algorithmic Thinking میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.