
۴۴٬۰۰۰تومان
نوع فایل دانلود: PDF
پس از خرید، یک فایل PDF دریافت میکنید.
این فایل با Adobe Reader، مرورگر و اپهای PDF روی کامپیوتر و موبایل باز میشود.
به کتاب خوش آمدید! برنامهنویسی تابعی یک الگو یا پارادایم قدرتمند و زیبا در برنامهنویسی است. این روش که در ابتدا فقط میان پژوهشگران دانشگاهی محبوب بود، در سالهای اخیر طرفداران زیادی در صنعت نرمافزار پیدا کرده است. از شرکتهای بزرگ گرفته تا استارتآپها، مهندسان و مدیران متوجه شدهاند که برنامهنویسی تابعی در انتزاع و ترکیببندی عملکرد فوقالعادهای دارد. این سبک از برنامهنویسی راهحلهایی بسیار مختصر و با ایمنی بیشتر ارائه میدهد. به همین دلیل، تقاضا برای استخدام مهندسان نرمافزاری که مهارت برنامهنویسی تابعی دارند افزایش یافته است. این کتاب به شما کمک میکند تا مهارتهای برنامهنویسی خود را به سطح بالاتری ببرید.
زبانها، چارچوبها و ابزارهای برنامهنویسی بیشماری وجود دارند و در آینده هم بیشتر خواهند شد. تنها راه برای عقب نماندن در این صنعت وسیع و به سرعت در حال تغییر، تسلط بر اصول و پایههایی است که در میان تمام زبانها، چارچوبها و ابزارها مشترک هستند. در مورد برنامهنویسی تابعی، یادگیری نحوه تفکر تابعی برای حل مسائل بسیار مفیدتر از حفظ کردن نحوه نوشتن کد تابعی در یک زبان خاص است. این کتاب همین شیوه تفکر تابعی را به شما میآموزد. همچنین با تکنیکهای بنیادی بسیاری از زبانهای برنامهنویسی، مانند تجزیه (parsing)، کامپایل و بررسی نوع دادهها آشنا خواهیم شد.
علاوه بر این، به بررسی مثالها و تمرینهایی میپردازیم که معمولاً یک برنامهنویس در کارهای روزمره خود با آنها روبهرو میشود. یک فصل کامل نیز به کاربرد آموختههایمان در سناریوهای دنیای واقعی اختصاص یافته است. بهطور مشخص، از برنامهنویسی تابعی برای پردازش مجموعهای از دادهها در یک برنامه تجارت الکترونیک و مدیریت دادههای JSON استفاده خواهیم کرد.
در ادامه، خلاصه فصلهای این کتاب آمده است:
* در فصل ۱: مقدمه، کتاب را با معرفی برنامهنویسی تابعی آغاز میکنیم. بهویژه خواهیم دید که چگونه این روش میتواند بر برخی از ضعفهای ذاتی برنامهنویسی دستوری غلبه کند. همچنین در مورد اینکه چرا برنامهنویسی تابعی برای هر مهندس نرمافزاری اهمیت دارد، گفتگو خواهیم کرد.
* در فصل ۲: عبارتها -- اجزای سازنده برنامههای تابعی، عبارتها و نحوه ساخت عبارتهای پیچیده از عبارتهای سادهتر را بررسی میکنیم. سه جنبه از عبارتها یعنی نحو (syntax)، انواع دادهها و معناشناسی پوشش داده خواهند شد. در این مسیر، درک بسیار عمیقتری از نحوه کارکرد زبانهای برنامهنویسی، از جمله تجزیه، بررسی نوع، تفسیر و کامپایل به دست خواهیم آورد.
* در فصل ۳: ساخت انتزاعها با توابع، با حساب لامبدا آشنا میشویم؛ یک مدل ریاضی که به عنوان پایه و اساس تمام زبانهای برنامهنویسی تابعی عمل میکند. یاد میگیریم که چگونه الگوهای محاسباتی را در قالب توابع پیادهسازی کنیم. در نهایت، تکنیکهای مختلف کار با توابع مانند کریسازی (currying)، بازگشت (recursion) و توابع مرتبه بالاتر را بررسی خواهیم کرد.
* در فصل ۴: انواع دادههای پیچیده، بر روی انواع دادههای پیچیدهای که معمولاً در زبانهای برنامهنویسی تابعی یافت میشوند، مانند تاپلها (tuples) و لیستها تمرکز میکنیم. علاوه بر این، از انواع دادههای جبری برای نمایش دادههای ساختاریافته و از تطبیق الگو (pattern matching) برای استخراج دادهها از انواع دادههای پیچیده استفاده خواهیم کرد.
* در فصل ۵: الگوهای محاسباتی رایج، به سراغ برخی از رایجترین الگوهای محاسباتی مانند map، filter، fold و zip میرویم. این توابع، الگوهای محاسباتی بسیار عمومی را روی لیستها و سایر ساختارهای داده پیادهسازی میکنند که میتوان از آنها برای ساخت بسیاری از توابع دیگر استفاده مجدد کرد.
* در فصل ۶: برنامهنویسی جریان داده با توابع، به سراغ برنامهنویسی جریان داده میرویم؛ الگویی که بر ساخت برنامهها از مؤلفههای موجود تأکید دارد. یاد میگیریم که چگونه برنامهنویسی تابعی به ما اجازه میدهد برنامهنویسی جریان داده را به شکلی زیبا انجام دهیم و از تمام مزایای آن بهرهمند شویم.
* در فصل ۷: کاربرد برنامهنویسی تابعی در حوزههای مختلف، آموختههای خود را برای پردازش مجموعههای دادهای که معمولاً در برنامههای موبایل، وب و سرویسهای بکاند یافت میشوند، به کار میگیریم. همچنین از برنامهنویسی تابعی برای نمایش و مدیریت دادههای JSON استفاده خواهیم کرد.
Welcome to book!\\Functional programming is a powerful and elegant programming paradigm. Initially only popular among university researchers, it’s gained much traction in the software industry in the last few years. From big companies to start-ups, engineers and managers have realized that functional programming excels at abstraction and composition. Functional programming allows for highly concise solutions with increased safety. This has led to rising demand for software engineers with functional programming skills. This book will help you move your programming skills to the next level.\\There are tons of programming languages, frameworks, and tools out there - with many more coming in the future. The only way to stay ahead of the game in this vast and quickly changing software industry is to master the fundamentals and principles that cut across programming languages, frameworks, and tools. In the case of functional programming, learning to adopt the functional way of solving problems is much more productive than memorizing how to write functional code in a particular language. This book teaches this functional way of thinking. We’ll also learn many fundamental techniques from programming languages, such as parsing, compilation, and type checking.\\We’ll also look at examples and exercises that are typically encountered in a programmer’s day-to-day job. Furthermore, an entire chapter is dedicated to applying what we’ve learned to real-world scenarios. In particular, we’ll use functional programming to process collections of data for an e-commerce application and handle the JSON datatype.\\Here is the summary of the chapters in this book:\\\* In Chapter 1: Introduction, we’ll start the book with an introduction to functional programming. In particular, we’ll see how it can overcome some of the inherent weaknesses of the imperative programming paradigm. We’ll also discuss why functional programming matters to any software engineer.\\\* In Chapter 2: Expressions -- The Building Blocks of Functional Programs, we examine expressions and how to build complex expressions from simpler ones. Three aspects of expressions - syntax, types, and semantics- will be covered. Along the way, we’ll gain a much deeper understanding of how programming languages work, including parsing, type checking, interpretation, and compilation.\\\* In Chapter 3: Building Abstractions with Functions, we’ll get to know lambda calculus—a mathematical model serving as the foundation of all functional programming languages. We’ll learn how to capture computation patterns as functions. Finally, we’ll discuss various techniques for working with functions such as currying, recursion, and higher-order functions.\\\* In Chapter 4: Complex Data Types, we’ll focus on the complex data types typically found in functional programming languages, such as tuples and lists. Furthermore, we’ll use algebraic data types to represent hierarchical data, and pattern matching to extract data from complex data types.\\\* In Chapter 5: Common Computation Patterns, we’ll dive into some of the most common computation patterns, such as map, filter, fold, and zip. These functions capture highly general computation patterns on lists and other data structures that can be reused to formulate many other functions.\\\* In Chapter 6: Dataflow Programming with Functions, we’ll go over dataflow programming, a programming paradigm that emphasizes composing programs from existing components. We’ll learn how functional programming allows us to do dataflow programming elegantly and reap all its benefits.\\\* In Chapter 7: Applying Functional Programming to Various Domains, we’ll apply what we've learned to process collections of data commonly found in mobile and web applications and backend services. Furthermore, we’ll use functional programming to represent and handle JSON.