
۴۴٬۰۰۰تومان
نوع فایل دانلود: EPUB
پس از خرید، یک فایل EPUB دریافت میکنید.
این فایل با Calibre، Apple Books و سایر کتابخوانهای دیجیتال مناسب است.
ویژگیهای زبانهای برنامهنویسیِ کارکردی و همزمان که زبانهای امروزی پشتیبانی میکنند، حتی برای برنامهنویسان باتجربه هم میتواند چالشبرانگیز باشد. این ویژگیها ممکن است برای برنامهنویسانِ شیءگرا ترسناک به نظر برسند، چون برداشت نادرستی از نحوه کار آنها وجود دارد. برنامهنویسها در ابتدا باید با مفاهیم انتزاعیای که پشت این ویژگیهای قدرتمند قرار دارند آشنا شوند.
در کتاب «برنامهنویسی کارکردی، شیءگرا و همزمان»، میشل شارتنتیه مجموعهای بنیادی از سازههای زبان برنامهنویسی را معرفی میکند که به شما کمک میکند در بسیاری از زبانهای برنامهنویسی، هماکنون و هم در آینده، بهرهور باشید. شارتنتیه با ارائه مثالهای کوتاه، کوچک و متمرکزِ فراوان—که با زبان اسکالا نوشته شدهاند—و همچنین مطالعهموردهایی که پایهای عمیق از مهارتهای برنامهنویسی کارکردی و همزمان به شما میدهند، مفاهیم کلیدی را روشن میکند. این مهارتها از یک زبان به زبان دیگر منتقل میشوند؛ از جمله جدیدترین نسلهای زبان جاوا. استفاده از این ویژگیها به توسعهدهندگان و برنامهنویسان کمک میکند کدی باکیفیت بنویسند که فهمیدن، اشکالزدایی، بهینهسازی و توسعهدادن آن آسانتر است.
در این کتاب، موضوعاتی از این دست پوشش داده میشود: بازگشت (Recursion) و بازگشتِ انتهایی (tail recursion)، تطبیق الگو و انواع داده جبری (algebraic datatypes)، ساختارهای ماندگار و تغییرناپذیری (immutability)، توابعِ مرتبهبالا و عبارتهای لامبدا (lambda expressions)، ارزیابیِ تنبل و جریانها (Lazy evaluation و streams)، نخها (Threads) و صفهای نخ (thread pools)، اتمیّت (Atomicity) و قفلگذاری، همگامسازی و اشیای امن در برابر نخ، الگوهای بدون قفل و غیرِبنبست (Lock-free و non-blocking)، فراتروندها (Futures)، وعدهها (promises) و برنامهنویسی کارکردی-همزمان.
بهعنوان بخش تکمیلی، کتاب درباره راهبردهای رایجِ تایپکردن در زبانهای برنامهنویسی مدرن هم بحث میکند؛ از جمله استنتاج نوع (type inference)، زیرنوعی (subtyping)، چندریختی (polymorphism)، کلاسهای نوع (type classes)، کرانهای نوع (type bounds) و واریانسِ نوع (type variance).
بیشترِ مثالهای کد در اسکالا است؛ زبانی که بسیاری از قابلیتهای استاندارد برنامهنویسی کارکردی و همزمان را در خود دارد. با این حال، هیچ دانشی قبلی از اسکالا فرض نشده است. شما باید با مفاهیمی مثل کلاسها، متدها، اشیا، انواع (types)، متغیرها، حلقهها و شرطها آشنا باشید و تجربه برنامهنویسیتان به اندازهای باشد که از مسائل ساده مربوط به نحو (syntax) حواستان پرت نشود.
The functional and concurrent programming language features supported by modern languages can be challenging, even for experienced developers. These features may appear intimidating to OOP programmers because of a misunderstanding of how they work. Programmers first need to become familiar with the abstract concepts that underlie these powerful features.In Functional and Concurrent Programming, Michel Charpentier introduces a core set of programming language constructs that will help you be productive in a variety of programming languagesnow and in the future. Charpentier illustrates key concepts with numerous small, focused code examples, written in Scala, and with case studies that provide a thorough grounding in functional and concurrent programming skills. These skills will carry from language to languageincluding the most recent incarnations of Java. Using these features will enable developers and programmers to write high-quality code that is easier to understand, debug, optimize, and evolve.Key topics covered includeRecursion and tail recursionPattern matching and algebraic datatypesPersistent structures and immutabilityHigher-order functions and lambda expressionsLazy evaluation and streamsThreads and thread poolsAtomicity and lockingSynchronization and thread-safe objectsLock-free, non-blocking patternsFutures, promises, and functional-concurrent programmingAs a bonus, the book includes a discussion of common typing strategies used in modern programming languages, including type inference, subtyping, polymorphism, type classes, type bounds, and type variance.Most of the code examples are in Scala, which includes many of the standard features of functional and concurrent programming; however, no prior knowledge of Scala is assumed. You should be familiar with concepts such as classes, methods, objects, types, variables, loops, and conditionals and have enough programming experience to not be distracted by simple matters of syntax.