زبان بل به زبان بل نوشته شده است.

در سال ۱۹۶۰، جان مککارتی، لیسپ، نوع جدیدی از زبان برنامهنویسی را توصیف کرد. من میگویم «نوع جدید» زیرا لیسپ فقط یک زبان جدید نبود، بلکه روشی جدید برای توصیف زبانها بود.
برای تعریف Lisp، او با مجموعه کوچکی از عملگرها، نوعی اصول موضوعه، شروع کرد که سپس از آنها برای نوشتن یک مفسر برای خود زبان استفاده کرد.
او قصد نداشت زبان برنامهنویسی را به معنای سنتی آن - زبانی که برای گفتن به کامپیوتر استفاده میشود - توصیف کند. در مقاله سال ۱۹۶۰ او، لیسپ به عنوان یک مدل رسمی محاسبات شبیه به ماشین تورینگ در نظر گرفته شده بود. مککارتی تا زمانی که استیو راسل، دانشجوی فارغالتحصیلش، آن را پیشنهاد نکرد، به استفاده از آن در کامپیوترها فکر نکرده بود.
لیسپ سال ۱۹۶۰ فاقد ویژگیهای رایج زبانهای برنامهنویسی بود. برای مثال، هیچ عدد، خطا یا ورودی/خروجی نداشت. بنابراین، افرادی که از لیسپ به عنوان پایه زبانهای برنامهنویسی کامپیوتر استفاده میکردند، مجبور بودند خودشان این ویژگیها را اضافه کنند. و آنها این کار را با کنار گذاشتن رویکرد مبتنی بر اصول موضوعه انجام دادند.
بنابراین، توسعه Lisp در دو مرحله - و به نظر میرسد کاملاً مستقل - انجام شد: مرحله رسمی، که در مقاله سال ۱۹۶۰ ارائه شد، و مرحله پیادهسازی، که در آن زبان برای استفاده در کامپیوتر تطبیق داده و گسترش یافت. بخش عمده کار، که از نظر تعداد ویژگیهای پیادهسازی شده اندازهگیری میشود، در طول مرحله پیادهسازی رخ داد. Lisp سال ۱۹۶۰، که به Common Lisp ترجمه شده است، تنها شامل ۵۳ خط کد است. این زبان فقط آنچه را که برای تفسیر عبارات لازم است انجام میدهد. هر چیز دیگری در طول مرحله پیادهسازی اضافه شد.
فرضیه من این است که با وجود تاریخچه دشوارش، لیسپ از توسعه دو مرحلهای خود سود برده است؛ اینکه تمرین اولیه تعریف زبان با نوشتن مفسر آن به زبان لیسپ، آن را با بهترین ویژگیهایش عجین کرده است. و اگر چنین است، چرا فراتر نرویم؟
یگان سنجش صوت — تلاشی است برای پاسخ به این سوال: چه میشود اگر به جای گذار از مرحله رسمی به مرحله اجرا در اوایل، این گذار را تا حد امکان دیر انجام دهید؟ اگر به استفاده از رویکرد اصل موضوعی ادامه دهید تا زمانی که چیزی نزدیک به یک زبان برنامهنویسی کامل داشته باشید، به چه اصول موضوعی نیاز خواهید داشت و زبان حاصل چگونه خواهد بود؟
میخواهم در مورد اینکه Bel چه هست و چه نیست، شفافسازی کنم. اگرچه ویژگیهای بسیار بیشتری نسبت به Lisp مککارتی در سال ۱۹۶۰ دارد، Bel هنوز محصولی در مرحله رسمی است. مانند Lisp که در مقاله ۱۹۶۰ توضیح داده شده است، زبانی نیست که بتوانید برای برنامهنویسی از آن استفاده کنید. دلیل اصلی این امر این است که مانند Lisp مککارتی، به کارایی اهمیتی نمیدهد. وقتی چیزی به Bel اضافه میکنم، بدون تلاش برای ارائه یک پیادهسازی کارآمد، معنای آن افزوده را شرح میدهم.
چرا؟ چرا مرحله رسمی را طولانی کنیم؟ یک پاسخ این است که ببینیم رویکرد مبتنی بر اصول موضوعه ما را به کجا هدایت میکند، که خود یک تمرین جالب است. اگر کامپیوترها به اندازهای که ما میخواهیم قدرتمند بودند، زبانها چه شکلی میشدند؟
اما من همچنین معتقدم که میتوان با اضافه کردن محدودیتها، یک پیادهسازی کارآمد بر اساس Bel نوشت. اگر زبانی با قدرت بیان، وضوح و کارایی میخواهید، شاید بهتر باشد که با قدرت بیان و وضوح شروع کنید و سپس محدودیتها را اضافه کنید تا اینکه در جهت مخالف حرکت کنید.
بنابراین اگر مایلید نوشتن یک پیادهسازی مبتنی بر Bel را امتحان کنید، بفرمایید. من یکی از اولین کاربران خواهم بود.
در نهایت، من برخی از ویژگیهای گویشهای قبلی را بازسازی کردهام. یا طراحان آنها درست متوجه شدهاند، یا من تحت تأثیر گویشهای قبلی هستم و پاسخ درست را نمیبینم - زمان همه چیز را مشخص خواهد کرد. من همچنین سعی کردهام خیلی از قراردادهای Lisp فاصله نگیرم. این بدان معناست که اگر انحرافی از قراردادهای Lisp میبینید، ممکن است دلیلی برای آن وجود داشته باشد.
.
ممنون بابت ترجمه: دنیس میتروپولسکی
PS
منبع: www.habr.com
