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

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

مدل محاسبات بدون ماشین

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

این دو چارچوب به‌طور شگفت‌آوری با هم هم‌نوا هستند. نوار ماشین تورینگ با ساختار درختی عبارت‌ها در حساب لمبدا جایگزین می‌شود. حالت ماشین تبدیل به جملهٔ جاری یا term می‌شود. قواعد انتقال با قواعد تقلیل (reduction) هم‌خوانی کامل دارند و توقف ماشین معادل رسیدن به فرم نرمال (normal form) است. هر دو مسیر، تعریف دقیق محاسبهٔ مؤثر را شکل دادند و ثابت کردند که محاسبه صرفاً حرکت مکانیکی نیست، بلکه تبدیل نمادین تحت قوانین از پیش تعیین‌شده است. برای مطالعهٔ تاریخی دقیق‌تر این مفاهیم می‌توانید به نظریهٔ محاسبات مراجعه کنید.

تصویر نمادین از ساختار ریاضی محاسبات و توابع

سه سازه، یک سیستم بی‌نهایت قدرتمند

ساختمان حساب لمبدا عمدتاً بر پایهٔ سه مفهوم ساده بنا شده است:

  • متغیرها — نشانگرهای نمادینی مانند x که ورودی‌های تابع را نمایندگی می‌کنند.
  • انتزاع — به‌شکل λx. M نوشته می‌شود و تابعی با پارامتر x و بدنهٔ M می‌سازد. عبارت λx. x ساده‌ترین تابع است که ورودی را بدون تغییر بازمی‌گرداند.
  • اعمال — به‌شکل M N نمایش داده می‌شود و تابع M را بر آرگومان N اجرا می‌کند. بنابراین (λx. x) y تابع همانی را بر متغیر y اعمال می‌کند.

پرانتزها برای اولویت‌بندی استفاده می‌شوند و طبق قرارداد استاندارد، اعمال از چپ به راست گروه‌بندی شده و انتزاع تا حد امکان به سمت راست گسترش می‌یابد. این تمام زبان است. اما همین حداقل‌گرایی، حساب لمبدا را در دستهٔ Turing-complete قرار می‌دهد. با وجود تنها سه سازه، این سیستم توانایی رمزگذاری کامل محاسبات، پیاده‌سازی ساختارهای داده و شبیه‌سازی بازگشت را داراست.

محاسبه به‌صورت تقلیل نمادین

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

  • تبدیل آلفا — تغییر نام متغیرهای بسته‌شده برای جلوگیری از تداخل. λx. x و λy. y از نظر معنایی کاملاً یکسان هستند.
  • تقلیل بتا — موتور محرک محاسبات. اعمال تابع به آرگومان مستلزم جایگزینی آرگومان در بدنهٔ تابع است: (λx. M) N → M[x := N].
  • تبدیل اتا — بیانگر برابری گسترده‌ای (extensional). عبارت λx. (f x) در صورتی که x آزاد نباشد، معادل f تقلیل می‌یابد.

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

رمزگذاری منطق و ساختارها از صفر

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

  • اعداد چرچ — هر عدد صحیح n به‌شکل تابعی نمایش داده می‌شود که یک تابع دیگر را n بار اجرا می‌کند. 0 معادل λf. λx. x و 1 معادل λf. λx. f x است. عملگرهای جانشین، جمع، ضرب و توان همگی بر همین پایه تعریف می‌شوند.
  • مقادیر بولینTRUE به‌شکل λx. λy. x و FALSE به‌شکل λx. λy. y تعریف می‌شوند. این توابع صرفاً یکی از دو آرگومان ورودی را انتخاب و بازمی‌گردانند.
  • کامبیناتور Y — عبارت Y = λf. (λx. f (x x)) (λx. f (x x)) نقطهٔ ثابتی است که بازگشت را در سیستم‌های بدون تابع نام‌دار ممکن می‌سازد. این ترکیب به تابع اجازه می‌دهد خود را فراخوانی کند بدون اینکه مستقیماً به نام خودش ارجاع دهد.
نمادین سازی بازگشت و کامبیناتور Y در محاسبات

گسترش مرزهای محاسبات‌پذیر

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

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