Facebook Pixel
Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Functional Programming in Java

Functional Programming in Java

Harnessing the Power Of Java 8 Lambda Expressions
توسط Venkat Subramaniam 2014 196 صفحات
4.16
100+ امتیازها
گوش دادن

نکات کلیدی

1. عبارات لامبدا برنامه‌نویسی جاوا را با کد مختصر و به سبک تابعی متحول می‌کنند

عبارات لامبدا به طرز فریبنده‌ای مختصر هستند و به راحتی می‌توان آن‌ها را به‌طور بی‌دقتی در کد تکرار کرد.

نحو مختصر: عبارات لامبدا به توسعه‌دهندگان اجازه می‌دهند کدی بیانگرتر و خواناتر در جاوا بنویسند. آن‌ها روشی برای ارسال رفتار به عنوان یک آرگومان به متدها فراهم می‌کنند و پارادایم‌های برنامه‌نویسی تابعی را ممکن می‌سازند.

خوانایی بهبود یافته: با کاهش کدهای تکراری، عبارات لامبدا فهمیدن نیت کد را در یک نگاه آسان‌تر می‌کنند. این به‌ویژه برای عملیات روی مجموعه‌ها، مدیریت رویدادها و پیاده‌سازی‌های بازگشتی مفید است.

برنامه‌نویسی تابعی در جاوا: عبارات لامبدا سبک برنامه‌نویسی تابعی‌تری را تسهیل می‌کنند و به عدم تغییرپذیری و توابع بدون اثر جانبی تشویق می‌کنند. این منجر به کدی می‌شود که فهمیدن، آزمایش و نگهداری آن آسان‌تر است.

2. رابط‌های تابعی یکپارچگی بی‌دردسر عبارات لامبدا را ممکن می‌سازند

یک رابط تابعی، رابطی با یک متد انتزاعی - پیاده‌سازی نشده - است.

متد انتزاعی واحد: رابط‌های تابعی پایه‌ای برای عبارات لامبدا در جاوا هستند. آن‌ها یک متد انتزاعی واحد تعریف می‌کنند که به آن‌ها اجازه می‌دهد با نحو لامبدا پیاده‌سازی شوند.

رابط‌های تابعی داخلی: جاوا 8 چندین رابط تابعی داخلی در بسته java.util.function معرفی می‌کند، مانند:

  • Predicate<T>: نمایانگر یک تابع با مقدار بولی از یک آرگومان
  • Function<T,R>: نمایانگر یک تابع که یک آرگومان می‌پذیرد و نتیجه‌ای تولید می‌کند
  • Consumer<T>: نمایانگر یک عملیات که یک آرگومان ورودی می‌پذیرد و نتیجه‌ای برنمی‌گرداند
  • Supplier<T>: نمایانگر یک تأمین‌کننده نتایج

رابط‌های تابعی سفارشی: توسعه‌دهندگان می‌توانند رابط‌های تابعی خود را برای نیازهای خاص ایجاد کنند و استفاده از عبارات لامبدا را در زمینه‌های خاص دامنه ممکن سازند.

3. جریان‌ها قابلیت‌های پردازش داده قدرتمندی با ارزیابی تنبل ارائه می‌دهند

جریان‌ها دو نوع متد دارند: میانی و نهایی که با هم کار می‌کنند.

پردازش داده اعلامی: جریان‌ها به توسعه‌دهندگان اجازه می‌دهند عملیات پردازش داده پیچیده را به صورت اعلامی بیان کنند. این منجر به کدی خواناتر و قابل نگهداری‌تر نسبت به رویکردهای دستوری می‌شود.

ارزیابی تنبل: عملیات جریان به صورت تنبل ارزیابی می‌شوند، به این معنی که محاسبه روی داده‌ها تنها زمانی انجام می‌شود که لازم باشد. این می‌تواند به بهبودهای عملکردی قابل توجهی منجر شود، به‌ویژه هنگام کار با مجموعه‌های داده بزرگ.

ترکیب عملیات: جریان‌ها از یک API روان برای ترکیب چندین عملیات پشتیبانی می‌کنند:

  • filter(): انتخاب عناصر بر اساس یک گزاره
  • map(): تبدیل عناصر
  • reduce(): ترکیب عناصر برای تولید یک نتیجه واحد
  • collect(): جمع‌آوری عناصر به یک مجموعه یا ساختار داده دیگر

4. ارجاعات متد یک نحو کوتاه برای عبارات لامبدا ارائه می‌دهند

ارجاعات متد می‌توانند به متدهای استاتیک و متدهایی که پارامتر می‌پذیرند نیز اشاره کنند.

جایگزین مختصر: ارجاعات متد راهی فشرده‌تر برای نوشتن عبارات لامبدا فراهم می‌کنند زمانی که لامبدا به سادگی یک متد موجود را فراخوانی می‌کند.

انواع ارجاعات متد:

  • ارجاع متد استاتیک: ClassName::staticMethodName
  • ارجاع متد نمونه از یک شیء خاص: objectReference::instanceMethodName
  • ارجاع متد نمونه از یک شیء دلخواه از یک نوع خاص: ClassName::instanceMethodName
  • ارجاع سازنده: ClassName::new

خوانایی بهبود یافته: در بسیاری از موارد، ارجاعات متد می‌توانند کد را خواناتر کنند با نشان دادن واضح نیت استفاده از یک متد موجود به جای تعریف رفتار جدید.

5. API مجموعه‌ها با عملیات به سبک تابعی بهبود یافته است

ما می‌توانیم به راحتی مسن‌ترین فرد را در لیست پیدا کنیم.

عملیات جریان روی مجموعه‌ها: API مجموعه‌ها اکنون شامل متدهایی برای به‌دست آوردن جریان‌ها است، که امکان عملیات پردازش داده قدرتمند را به‌طور مستقیم روی اشیاء مجموعه فراهم می‌کند.

عملیات به سبک تابعی: متدهای جدیدی به رابط‌های مجموعه اضافه شده‌اند تا از عملیات به سبک تابعی پشتیبانی کنند:

  • forEach(): انجام یک عمل برای هر عنصر
  • removeIf(): حذف تمام عناصری که با یک گزاره مطابقت دارند
  • replaceAll(): جایگزینی هر عنصر با نتیجه اعمال یک تابع

عملکرد بهبود یافته: بسیاری از این عملیات می‌توانند کارآمدتر از همتایان دستوری خود باشند، به‌ویژه هنگام کار با مجموعه‌های بزرگ یا زمانی که موازی‌سازی مطلوب است.

6. مفاهیم برنامه‌نویسی تابعی کیفیت و نگهداری کد را بهبود می‌بخشند

ما اکنون می‌توانیم همان را با کد بسیار کمتری به‌دست آوریم.

عدم تغییرپذیری: برنامه‌نویسی تابعی استفاده از ساختارهای داده غیرقابل تغییر را تشویق می‌کند، که خطر اثرات جانبی را کاهش می‌دهد و کد را آسان‌تر برای فهمیدن و اشکال‌زدایی می‌کند.

توابع مرتبه بالاتر: توانایی ارسال توابع به عنوان آرگومان و بازگرداندن آن‌ها به عنوان نتایج، انتزاعات قدرتمند و استفاده مجدد از کد را ممکن می‌سازد.

توابع خالص: تأکید بر توابع بدون اثرات جانبی منجر به کدی پیش‌بینی‌پذیرتر و قابل آزمایش‌تر می‌شود.

مزایا:

  • پردازش موازی آسان‌تر
  • سازماندهی کد بهبود یافته
  • کاهش پیچیدگی
  • قابلیت آزمایش بهبود یافته

7. الگوهای طراحی با عبارات لامبدا ساده‌تر و بیانگرتر می‌شوند

ما اکنون می‌توانیم این الگو را با تلاش کمتری در جاوا پیاده‌سازی کنیم.

پیاده‌سازی‌های ساده‌شده: بسیاری از الگوهای طراحی سنتی می‌توانند با استفاده از عبارات لامبدا و رابط‌های تابعی به‌طور مختصرتر پیاده‌سازی شوند.

نمونه‌هایی از الگوهای ساده‌شده:

  • الگوی استراتژی: ارسال رفتارهای مختلف به عنوان عبارات لامبدا
  • الگوی ناظر: استفاده از رابط‌های تابعی برای شنوندگان رویداد
  • الگوی دکوراتور: ترکیب رفتارها با استفاده از عبارات لامبدا
  • الگوی متد قالب: ارسال رفتار قابل تنظیم به عنوان آرگومان‌های متد

انعطاف‌پذیری بهبود یافته: رویکرد تابعی اغلب منجر به طراحی‌های انعطاف‌پذیرتر و قابل ترکیب‌تر نسبت به پیاده‌سازی‌های سنتی شیءگرا می‌شود.

8. مدیریت منابع با تکنیک‌های تابعی کارآمدتر می‌شود

ما اکنون می‌توانیم از یک نحو سبک در جاوا با عبارات لامبدا لذت ببریم.

تلاش با منابع: جاوا 7 بیانیه تلاش با منابع را برای مدیریت خودکار منابع معرفی کرد. جاوا 8 این را با عبارات لامبدا بهبود می‌بخشد.

مدیریت منابع تابعی: عبارات لامبدا الگوهای مدیریت منابع انعطاف‌پذیرتر و مختصرتر را ممکن می‌سازند:

  • مقداردهی اولیه تأخیری
  • ارزیابی تنبل منابع
  • استراتژی‌های مدیریت منابع سفارشی

مزایا:

  • کاهش کد تکراری
  • بهبود پاکسازی منابع
  • مدیریت خطا بیانگرتر

9. بازگشت و یادآوری با رویکردهای تابعی بهینه‌سازی می‌شوند

یادآوری یک تکنیک ساده اما هوشمندانه برای سریع‌تر کردن محاسبات بازگشتی همپوشان است.

بهینه‌سازی فراخوانی دنباله‌دار: در حالی که جاوا از بهینه‌سازی خودکار فراخوانی دنباله‌دار پشتیبانی نمی‌کند، تکنیک‌های تابعی می‌توانند برای پیاده‌سازی دستی آن استفاده شوند، که امکان الگوریتم‌های بازگشتی کارآمدتر را فراهم می‌کند.

یادآوری: برنامه‌نویسی تابعی پیاده‌سازی آسان یادآوری را تسهیل می‌کند، تکنیکی برای ذخیره نتایج فراخوانی‌های تابع پرهزینه و اجتناب از محاسبات تکراری.

مزایا:

  • بهبود عملکرد برای الگوریتم‌های بازگشتی
  • کاهش خطرات سرریز پشته
  • راه‌حل‌های زیبا برای مسائل برنامه‌ریزی پویا

10. پردازش موازی با ویژگی‌های جدید جاوا 8 به‌طور قابل توجهی ساده‌تر می‌شود

ما می‌توانیم به راحتی مثال قبلی را برای سرعت بخشیدن به اجرا موازی کنیم.

جریان‌های موازی: جاوا 8 جریان‌های موازی را معرفی می‌کند، که امکان موازی‌سازی آسان عملیات پردازش داده را بدون مدیریت صریح رشته‌ها فراهم می‌کند.

یکپارچگی چارچوب Fork/Join: جریان‌های موازی از چارچوب Fork/Join در پشت صحنه استفاده می‌کنند، که کار دزدی کارآمد برای وظایف موازی را فراهم می‌کند.

ملاحظات موازی‌سازی:

  • اندازه داده: موازی‌سازی برای مجموعه‌های داده بزرگ بیشترین سود را دارد
  • پیچیدگی عملیات: عملیات محاسباتی فشرده بیشتر از موازی‌سازی بهره می‌برند
  • ایمنی رشته: اطمینان حاصل کنید که عملیات هنگام استفاده از جریان‌های موازی ایمن برای رشته هستند.

آخرین به‌روزرسانی::

نقد و بررسی

4.16 از 5
میانگین از 100+ امتیازات از Goodreads و Amazon.

کتاب برنامه‌نویسی تابعی در جاوا عمدتاً نظرات مثبتی دریافت کرده و میانگین امتیاز آن ۴.۱۶ از ۵ است. خوانندگان از معرفی مختصر مفاهیم برنامه‌نویسی تابعی و ویژگی‌های جاوا ۸ قدردانی می‌کنند. بسیاری این کتاب را برای درک لامبداها و کاربردهای عملی آن‌ها مفید می‌دانند. سبک پرشور نویسنده مورد تحسین قرار گرفته، هرچند برخی آن را کمی طولانی می‌یابند. این کتاب به‌ویژه برای مبتدیانی که از برنامه‌نویسی دستوری به برنامه‌نویسی تابعی منتقل می‌شوند، بسیار مفید تلقی می‌شود. برخی خوانندگان اشاره می‌کنند که در حالی که این کتاب نمای کلی خوبی ارائه می‌دهد، ممکن است برای توسعه‌دهندگان با تجربه‌تر عمق کافی نداشته باشد.

درباره نویسنده

ونکات سوبرامانیام نویسنده و سخنران معتبری در حوزه‌ی علوم کامپیوتر است که به‌ویژه به خاطر کارهایش در زمینه‌ی جاوا و برنامه‌نویسی تابعی شناخته می‌شود. او کتاب‌های متعددی در موضوعات برنامه‌نویسی نوشته و به خاطر سبک ارائه‌ی جذابش مورد توجه قرار گرفته است. اشتیاق سوبرامانیام به موضوعات فنی همواره توسط خوانندگان و بینندگان محتوایش مورد توجه قرار می‌گیرد. او در توضیح مفاهیم پیچیده به شیوه‌ای قابل فهم مهارت دارد و به همین دلیل در میان مبتدیان و توسعه‌دهندگان با تجربه محبوب است. تخصص او تنها به جاوا محدود نمی‌شود و شامل زبان‌ها و پارادایم‌های برنامه‌نویسی دیگر نیز می‌گردد. سوبرامانیام به‌طور مکرر برای سخنرانی در کنفرانس‌ها و رویدادهای فنی دعوت می‌شود.

Other books by Venkat Subramaniam

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Nov 30,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance