- عنوان کتاب: Mastering JavaScript Functional Programming
- نویسنده: Federico Kereki
- حوزه: جاوا اسکریپت
- سال انتشار: 2023
- تعداد صفحه: 614
- زبان اصلی: انگلیسی
- نوع فایل: pdf
- حجم فایل: 4.74 مگابایت
در برنامه نویسی کامپیوتر، پارادایم ها فراوانند. برخی از نمونه ها عبارتند از برنامه نویسی ضروری، برنامه نویسی ساختاریافته (بدون رفتن)، برنامه نویسی شی گرا (OOP)، برنامه نویسی جنبه گرا و برنامه نویسی اعلانی. اخیراً، علاقه مجددی به پارادایم خاصی پیدا شده است که میتوان آن را قدیمیتر از اکثر (اگر نه همه) موارد ذکر شده در نظر گرفت – برنامهنویسی کاربردی (FP). FP بر نوشتن توابع و اتصال آنها به روش های ساده برای تولید کد قابل فهم تر و آزمایش راحت تر تأکید می کند. بنابراین، با توجه به افزایش پیچیدگی برنامه های کاربردی وب امروزی، منطقی است که روش ایمن تر و تمیزتر برنامه نویسی مورد توجه قرار گیرد. این علاقه به FP همراه با تکامل جاوا اسکریپت است. علیرغم ایجاد تا حدودی عجولانه آن (که طبق گزارش ها تنها در 10 روز، در سال 1995، توسط برندان ایچ در نت اسکیپ به دست آمد)، امروزه، جاوا اسکریپت یک زبان استاندارد شده و به سرعت در حال رشد است، با ویژگی های پیشرفته تر از سایر زبان های محبوب مشابه. فراگیر بودن این زبان که اکنون در مرورگرها، سرورها، تلفنهای همراه و غیره یافت میشود، علاقه به استراتژیهای توسعه بهتر را نیز برانگیخته است. همچنین، حتی اگر جاوا اسکریپت بهعنوان یک زبان کاربردی در نظر گرفته نشده باشد، واقعیت این است که تمام ویژگیهایی را که برای کار به این روش نیاز دارید، فراهم میکند، که یک مزیت دیگر است. گفتنی است، ما باید در مورد پیشرفت های زبان و ابزارهای مرتبط نیز اظهار نظر کنیم. مزایای تایپ داده به طور کلی تایید شده است، و در سال های اخیر، TypeScript مورد استقبال گسترده قرار گرفته است و برای هر دو برنامه نویسی frontend و backend استفاده شده است. پس منطقی است که کاربرد آن را نیز در این کتاب لحاظ کنیم. ما احساس می کنیم که این مثال ها را واضح تر می کند و همچنین پذیرش کد ارائه شده را برای مشاغل “زندگی واقعی” ساده می کند. همچنین باید گفت که FP به طور کلی در صنعت مورد استفاده قرار نگرفته است، احتمالاً به این دلیل که هاله ای از دشواری دارد، و تصور می شود که تئوری است تا عملی، حتی ریاضی، و احتمالاً از واژگان و مفاهیمی استفاده می کند که برای آنها بیگانه است. توسعه دهندگان – برای مثال، تابع ها، مونادها، فولدینگ و نظریه دسته. در حالی که یادگیری همه این تئوری مطمئنا کمک کننده خواهد بود، همچنین می توان استدلال کرد که حتی با دانش صفر از اصطلاحات قبلی، می توانید اصول FP را درک کنید و ببینید که چگونه آن را در برنامه نویسی خود اعمال کنید. FP کاری نیست که شما به تنهایی و بدون هیچ کمکی انجام دهید. کتابخانه ها و چارچوب های زیادی وجود دارند که مفاهیم FP را به درجات کم یا زیاد در خود جای داده اند. شروع با jQuery (که شامل برخی مفاهیم FP می شود)، عبور از Underscore و نزدیکان آن، Lodash، و کتابخانه های دیگر مانند Ramda، و رسیدن به ابزارهای توسعه وب کاملتر مانند React و Redux، Angular و Elm (100) % زبان تابعی که در جاوا اسکریپت کامپایل میشود، فهرست کمکهای کاربردی برای کدنویسی شما روز به روز در حال افزایش است. یادگیری نحوه استفاده از FP میتواند سرمایهگذاری ارزشمندی باشد، و حتی اگر ممکن است نتوانید از همه روشها و تکنیکهای آن استفاده کنید، فقط شروع به استفاده از برخی از آنها با کد بهتری سود خواهد برد. لازم نیست سعی کنید از ابتدا تمام مفاهیم FP را اعمال کنید، و همچنین لازم نیست سعی کنید همه ویژگی های غیر کاربردی در جاوا اسکریپت را رها کنید. جاوا اسکریپت مطمئنا دارای برخی ویژگی های بد است، اما چندین ویژگی بسیار خوب و قدرتمند نیز دارد. ایده این نیست که همه چیزهایی را که یاد گرفته اید دور بریزید و از آن استفاده کنید و یک روش 100٪ کاربردی را اتخاذ کنید. بلکه ایده راهنما تکامل است نه انقلاب. از این نظر، می توان گفت که کاری که ما انجام خواهیم داد FP نیست، بلکه برنامه نویسی تابعی Sorta (SFP) است که هدف آن تلفیقی از پارادایم ها است. نظر نهایی در مورد سبک کد در این کتاب – کاملاً درست است که چندین کتابخانه بسیار خوب وجود دارد که ابزارهای FP را در اختیار شما قرار می دهند: Underscore، Lodash و Ramda از جمله آنها هستند. با این حال، ترجیح دادم از استفاده از آنها اجتناب کنم زیرا می خواستم نشان دهم که کارها واقعا چگونه کار می کنند. اعمال یک تابع مشخص از یک بسته یا بسته دیگر آسان است، اما با کدنویسی همه چیز (در صورت تمایل FP وانیل)، اعتقاد من این است که میتوانید چیزها را عمیقتر درک کنید. همچنین، همانطور که در برخی جاها نظر خواهم داد، به دلیل قدرت و وضوح عملکردهای پیکان و سایر ویژگی ها، درک نسخه های جاوا اسکریپت خالص می تواند حتی ساده تر باشد!
In computer programming, paradigms abound. Some examples include imperative programming, structured (goto-less) programming, object-oriented programming (OOP), aspect-oriented programming, and declarative programming. Lately, there has been renewed interest in a particular paradigm that can arguably be considered to be older than most (if not all) of the cited ones—functional programming (FP). FP emphasizes writing functions and connecting them in simple ways to produce more understandable and more easily tested code. Thus, given the increased complexity of today’s web applications, it’s logical that a safer, cleaner way of programming would be of interest.
This interest in FP comes hand in hand with the evolution of JavaScript. Despite its somewhat hasty creation (reportedly achieved in only 10 days, in 1995, by Brendan Eich at Netscape), today, JavaScript is a standardized and quickly growing language, with features more advanced than most other similarly popular languages. The ubiquity of the language, which can now be found in browsers, servers, mobile phones, and whatnot, has also impelled interest in better development strategies. Also, even if JavaScript wasn’t conceived as a functional language, the fact is that it provides all the features you’d require to work in that fashion, which is another plus.
That said, we must also comment on advances in the language and related tools. The benefits of data typing are generally acknowledged, and in recent years, TypeScript has gained wide adoption and has been used for both frontend and backend coding. It makes sense, then, to also include its usage in this book. This, we feel, will make the examples clearer, and also simplify the adoption of the presented code for “real-life” jobs.
It must also be said that FP hasn’t been generally applied in industry, possibly because it has a certain aura of difficulty, and it is thought to be theoretical rather than practical, even mathematical, and possibly uses vocabulary and concepts that are foreign to developers—for example, functors, monads, folding, and category theory. While learning all this theory will certainly be of help, it can also be argued that even with zero knowledge of the previous terms, you can understand the tenets of FP, and see how to apply it to your own programming.
FP is not something that you have to do on your own, without any help. There are many libraries and frameworks that incorporate, to greater or lesser degrees, the concepts of FP. Starting with jQuery (which does include some FP concepts), passing through Underscore and its close relative, Lodash, and other libraries such as Ramda, and getting to more complete web development tools such as React and Redux, Angular, and Elm (a 100% functional language, which compiles into JavaScript), the list of functional aids for your coding is ever growing.
Learning how to use FP can be a worthwhile investment, and even though you may not get to use all of its methods and techniques, just starting to apply some of them will pay dividends in better code. You need not try to apply all the concepts of FP from the start, and you need not try to abandon every non-functional feature in JavaScript either. JavaScript assuredly has some bad features, but it also has several very good and powerful ones. The idea is not to throw away everything you’ve learned and use and adopt a 100% functional way; rather, the guiding idea is evolution, not revolution. In that sense, it can be said that what we’ll be doing is not FP, but rather Sorta Functional Programming (SFP), aiming for a fusion of paradigms.
A final comment about the style of the code in this book—it is quite true that there are several very good libraries that provide you with FP tools: Underscore, Lodash, and Ramda are counted among them. However, I preferred to eschew their usage because I wanted to show how things really work. It’s easy to apply a given function from some package or the other, but by coding everything out (vanilla FP, if you wish), it’s my belief that you get to understand things more deeply. Also, as I will comment in some places, because of the power and clarity of arrow functions and other features, the pure JavaScript versions can be even simpler to understand!
این کتاب را میتوانید از لینک زیر بصورت رایگان دانلود کنید:
نظرات کاربران