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
Programming Elixir

Programming Elixir

Functional |> Concurrent |> Pragmatic |> Fun
توسط Dave Thomas 2014 280 صفحات
4.29
500+ امتیازها
گوش دادن

نکات کلیدی

1. الکسیر: برنامه‌نویسی تابعی با تغییرناپذیری و هم‌زمانی

برنامه‌نویسی درباره‌ی تبدیل داده‌هاست و عملگر |> این تبدیل را به‌وضوح نشان می‌دهد.

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

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

عملگر لوله. عملگر |> (لوله) یکی از ویژگی‌های کلیدی در الکسیر است که به توسعه‌دهندگان اجازه می‌دهد تا فراخوانی‌های تابع را به‌صورت خوانا و از چپ به راست زنجیره کنند. این عملگر نتیجه‌ی عبارت سمت چپ را به‌عنوان اولین آرگومان به تابع سمت راست منتقل می‌کند و تبدیل داده‌ها را به‌وضوح و آسان برای دنبال کردن می‌سازد.

2. تطبیق الگو: پایه‌ی ظرافت الکسیر

در الکسیر، علامت = یک تخصیص نیست. بلکه مانند یک ادعاست.

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

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

  • لیست‌ها: [head | tail] = [1, 2, 3] سر را به 1 و دنباله را به [2, 3] متصل می‌کند
  • تاپل‌ها: {a, b, c} = {1, 2, 3} a را به 1، b را به 2 و c را به 3 متصل می‌کند
  • نقشه‌ها: %{key: value} = %{key: "example"} مقدار را به "example" متصل می‌کند

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

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

تکرار انسانی است، بازگشت الهی.

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

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

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

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

4. ماژول‌ها و توابع نام‌گذاری‌شده: سازمان‌دهی کد الکسیر

ماژول‌ها فضاهای نامی برای چیزهایی که تعریف می‌کنید فراهم می‌کنند.

سازمان‌دهی کد. ماژول‌ها در الکسیر به‌عنوان محفظه‌هایی برای توابع مرتبط عمل می‌کنند و راهی برای فضاهای نامی و سازمان‌دهی کد فراهم می‌کنند. آن‌ها با استفاده از ماکروی defmodule تعریف می‌شوند و می‌توانند شامل تعریف توابع، ماکروها و سایر ویژگی‌های ماژول باشند.

تعریف توابع. توابع نام‌گذاری‌شده درون ماژول‌ها با استفاده از ماکروی def تعریف می‌شوند. جملات متعدد یک تابع می‌توانند تعریف شوند، هرکدام با تطبیق الگوی خاص خود بر روی آرگومان‌ها. توابع خصوصی (فقط قابل فراخوانی درون ماژول) با استفاده از defp تعریف می‌شوند.

ویژگی‌های کلیدی ماژول‌های الکسیر:

  • مستندسازی: ویژگی‌های @moduledoc و @doc برای مستندسازی درون‌خطی
  • ویژگی‌ها: ویژگی‌های ماژول با @ برای پیکربندی و متاداده تعریف می‌شوند
  • واردات و مستعارها: آوردن توابع از ماژول‌های دیگر به حوزه
  • رفتارها: تعریف رابط‌هایی که ماژول‌ها می‌توانند پیاده‌سازی کنند

5. مدل هم‌زمانی: فرآیندهای سبک‌وزن و ارسال پیام

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

مدل بازیگر. الکسیر مدل بازیگر هم‌زمانی را اتخاذ می‌کند، جایی که هر بازیگر (فرآیند) یک موجودیت مستقل است که می‌تواند پیام‌ها را ارسال و دریافت کند. این فرآیندها بسیار سبک‌وزن هستند و اجازه می‌دهند هزاران یا حتی میلیون‌ها فرآیند به‌طور هم‌زمان بر روی یک ماشین اجرا شوند.

ایجاد و ارتباط فرآیند:

  • spawn: ایجاد یک فرآیند جدید
  • send: ارسال یک پیام به یک فرآیند
  • receive: دریافت و تطبیق الگو بر روی پیام‌های ورودی

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

  • link: اتصال دوطرفه؛ اگر یک فرآیند خراب شود، فرآیند پیوندی نیز خراب می‌شود
  • monitor: یک‌طرفه؛ فرآیند نظارت‌کننده در صورت خرابی فرآیند نظارت‌شده مطلع می‌شود

6. OTP: چارچوبی برای ساخت برنامه‌های مقیاس‌پذیر و تحمل‌پذیر در برابر خطا

ناظران قلب قابلیت اطمینان هستند.

رفتارهای OTP. OTP (پلتفرم باز مخابراتی) مجموعه‌ای از رفتارها را برای ساخت برنامه‌های مقیاس‌پذیر و تحمل‌پذیر در برابر خطا فراهم می‌کند:

  • GenServer: برای پیاده‌سازی روابط مشتری-سرور
  • Supervisor: برای مدیریت و راه‌اندازی مجدد فرآیندهای فرزند
  • Application: برای بسته‌بندی و مدیریت برنامه‌های OTP

درخت‌های نظارت. برنامه‌های OTP به‌صورت درخت‌های نظارت ساختار یافته‌اند، جایی که فرآیندهای ناظر فرآیندهای کارگر را نظارت و مدیریت می‌کنند. این ساختار سلسله‌مراتبی اجازه می‌دهد تا کنترل دقیق بر چرخه‌ی حیات فرآیند و مدیریت خطا داشته باشد.

تعویض کد داغ. OTP از تعویض کد داغ پشتیبانی می‌کند، که اجازه می‌دهد برنامه‌های در حال اجرا بدون توقف به‌روزرسانی شوند. این ویژگی، همراه با ساختار درخت نظارت، امکان ایجاد سیستم‌های بسیار در دسترس را فراهم می‌کند.

7. برنامه‌نویسی متا: گسترش الکسیر با ماکروها و پروتکل‌ها

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

ماکروها. سیستم ماکروی الکسیر امکان قابلیت‌های برنامه‌نویسی متا قدرتمند را فراهم می‌کند. ماکروها بر روی درخت نحو انتزاعی (AST) کد عمل می‌کنند و امکان تولید و تبدیل کد در زمان کامپایل را فراهم می‌کنند.

مفاهیم کلیدی در برنامه‌نویسی متای الکسیر:

  • quote: ضبط AST یک بلوک کد
  • unquote: تزریق مقادیر به عبارات نقل‌شده
  • using: تعریف رفتار زمانی که یک ماژول "استفاده" می‌شود

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

ویژگی‌های پروتکل:

  • defprotocol: تعریف یک پروتکل با امضای توابع
  • defimpl: پیاده‌سازی یک پروتکل برای انواع داده‌های خاص
  • پیاده‌سازی‌های پشتیبان: مدیریت انواعی که به‌طور صریح پیاده‌سازی نشده‌اند

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

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

نقد و بررسی

4.29 از 5
میانگین از 500+ امتیازات از Goodreads و Amazon.

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

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

دیو توماس نویسنده‌ای محترم در جامعه برنامه‌نویسی است که به خاطر مشارکت‌هایش در ادبیات روبی و الیکسیر شناخته می‌شود. او هم‌نویسنده‌ی کتاب «برنامه‌نویس عمل‌گرا» و نویسنده‌ی کتاب تأثیرگذار «برنامه‌نویسی روبی» (کتاب «تبر») است. توماس به خاطر نوشتاری شفاف و جذاب که به‌طور مؤثر مفاهیم پیچیده را به خوانندگان منتقل می‌کند، شهرت دارد. کار او در «برنامه‌نویسی الیکسیر» توانایی‌اش در معرفی زبان‌ها و پارادایم‌های جدید به توسعه‌دهندگان با تجربه را نشان می‌دهد. کتاب‌های توماس اغلب شامل مثال‌ها و تمرین‌های عملی هستند که رویکرد عمل‌گرایانه‌اش به آموزش برنامه‌نویسی را منعکس می‌کنند. تخصص او در زبان‌ها و پارادایم‌های متعدد گسترده است و او را به منبعی ارزشمند برای توسعه‌دهندگانی که به دنبال گسترش مهارت‌های خود هستند، تبدیل می‌کند.

Other books by Dave Thomas

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 Dec 4,
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