پرونده:EOPL 3rd edition cover.jpg | |
نویسنده(ها) | Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes |
---|---|
موضوع(ها) | Programming languages |
گونه(های) ادبی | Textbook |
ناشر | MIT Press |
تاریخ نشر | April 2008 (3rd ed.) |
شمار صفحات | 416 |
شابک | شابک ۰−۲۶۲−۰۶۲۷۹−۸ (3rd ed.) |
کتابخانه کنگره | QA76.7 .F73 2008 |
این مقاله در حال ترجمه از ویکی انگلیسی است لطفا حذف نشود.
Essentials of Programming Languages (EOPL) یک کتاب در حوزه زبانهای برنامهنویسی است که توسط دانیل پی فریدمن ، میچل وند و کریستوفر تی هاینز نوشته شده است.
EOPL اصول زبانهای برنامهنویسی را از نظر عملیاتی بررسی میکند. این کتاب با نوشتن یک مفسر به زبان Scheme که یک زبان کوچک و ساده با هستهای تابعی شبیه به حساب لامبدا است، شروع میشود و سپس، مرحله به مرحله و به شکلی منظم، ساختارهای جدیدی را به آن اضافه می کند. برای هر ویژگی جدیدی که اضافه میشود، مثلا، تخصیص مقدار به متغیر یا کنترل شبیه به نخها (Thread)، این کتاب نشان میدهد که چگونه قدرت بیان زبان افزایش مییابد و در نتیجه نیاز به ساختارهای جدید برای پیادهسازی یک مفسر مستقیم نیز افزایش پیدا میکند. این کتاب همچنین نشان میدهد که با استفاده از تبدیلهای سیستماتیک و اصولی، مثلاً سبک انتقال ذخیرهگاه یا سبک ادامه دهی با انتقال پارامتر، میتوانند باعث شوند که بعضی از ساختارها و ویژگیهای خاص زبان، از زبان مفسر حذف شوند و دیگر نیازی به آنها نباشد.
بخش دوم کتاب به ترجمهای سیستماتیک مفسر(ها) به ماشین های ثباتی اختصاص دارد. تبدیلها نشان میدهند که چگونه میتوان بستههای مرتبه بالاتر (higher-order closures)، اشیاء ادامه (continuation objects)، فراخوانی بازگشتی توابع و موارد دیگر را حذف کرد. در پایان، خواننده با یک "مفسر" باقی میماند که فقط از فراخوانیهای دنبالهرو بازگشتی توابع و دستورهای انتساب به اضافه دستورهای شرطی استفاده میکند. ترجمه این کد به یک برنامه به زبان C یا حتی یک برنامه به زبان اسمبلی، امری ساده و سرراست خواهد بود. به عنوان یک مزیت اضافه، این کتاب نشان می دهد که چگونه میتوان برخی از اجزای معنای برنامه را پیشمحاسبه کرد و چگونه می توان نمایشی از این پیشمحاسبات تولید کرد. از آنجایی که این فرآیند در واقع جوهری کامپایل کردن است، کتاب همچنین خواننده را برای دورهای در زمینه اصول کامپایلکردن و ترجمه زبان، موضوعی مرتبط اما متفاوت به بحث اصلی کتاب، آماده می کند. علاوه بر متنی که مفاهیم کلیدی را توضیح می دهد، این کتاب همچنین شامل مجموعه ای از تمرینات است که خوانندگان را قادر می سازد طرح های جایگزین و موضوعات دیگر را بررسی کنند. [۱]
مانند کتاب SCIP، کتاب EOPL یک تغییر اساسی نسبت به روشهای رایج آموزش در دهه 1980 به حساب میآمد. در آن زمان، کتابی در مورد اصول زبان های برنامهنویسی نوشته میشدند، معمولا بین چهار تا شش (یا حتی بیشتر) زبان برنامهنویسی را بررسی میکردند و اصطلاحات برنامهنویسی و نحوه پیادهسازی آنها را مورد بررسی قرار میدادند. موفق ترین کتاب ها معمولاً ALGOL 60 (و به اصطلاح خانواده زبان های برنامه نویسی Algol)، SNOBOL وLisp و Prolog را پوشش می دادند. حتی امروزه، تعداد زیادی از کتابهای درسی درباره زبانهای برنامهنویسی همچنان رویکردی مشابه دارند؛ اگرچه دامنه آنها محدود شده است.
EOPL در سال 1983 شروع به نوشته شدن شد، زمانی که دانشگاه ایندیانا یکی از پیشروترین دپارتمانها در تحقیقات در حوزه زبانهای برنامهنویسی بود. یوجین کولبکر، یکی از دانشجویان دکترای فریدمن، سخنرانیهای درس 311 او را نوشت و گردآوری کرد. سایر اعضای هیئت علمی، از جمله میچ وند و کریستوفر هاینز، شروع به مشارکت کردند و این مجموعه که کولبکر آن را «راهنمای هیچیکر به فراجهان» نامیده بود، به مرور تبدیل به اثری منظم و جامع در زمینه تفسیر و تبدیل برنامهها شد. در طول 25 سال از عمر خود، این کتاب تبدیل به یک کتاب تقریبا کلاسیک شده است. اکنون در نسخه سوم خود است که شامل موضوعات اضافی مانند انواع و ماژولها است. بخش اول آن اکنون شامل ایده هایی در مورد برنامهنویسی از کتاب HtDP (How to Design Programs) است، کتاب درسی غیرمتعارف دیگری که از زبان Scheme برای آموزش اصول طراحی و دیزاین برنامه استفاده می کند. نویسندگان، و همچنین متیو فلت ، اخیراً افزونههای DrRacket و سطوح زبان را برای آموزش با EOPL ارائه کردهاند.
EOPL حداقل باعث ایجاد دو کتاب مرتبط دیگر شده است:
[۲] Queinnec's [۳] Lisp in Small Pieces
Krishnamurthi's Programming Languages: Application and Interpretation
همچنین ببینید
- ساختار و تفسیر برنامه های کامپیوتری
- نحوه طراحی برنامهها
مراجع
- ↑ "Mitchell Wand". The MIT Press. Retrieved 2019-08-05.
- ↑ "C. Queinnec's L.i.S.P book and code". pages.lip6.fr. Retrieved 2020-05-20.
- ↑ "Christian Queinnec's home page". pages.lip6.fr. Retrieved 2020-05-20.