پل گراهام یک زبان برنامه نویسی جدید Bel را معرفی کرد

زبان بل به زبان بل نوشته می شود.

پل گراهام یک زبان برنامه نویسی جدید Bel را معرفی کرد
در سال 1960، جان مک کارتی Lisp، نوع جدیدی از زبان برنامه نویسی را توصیف کرد. من می گویم "نوع جدید" زیرا Lisp فقط یک زبان جدید نبود، بلکه یک روش جدید برای توصیف زبان ها بود.

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

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

Lisp در سال 1960 ویژگی های مشترک زبان های برنامه نویسی را نداشت. به عنوان مثال، هیچ عدد، خطا یا I/O وجود نداشت. بنابراین افرادی که از Lisp به عنوان پایه زبان های مورد استفاده برای برنامه نویسی رایانه ها استفاده می کردند، مجبور بودند خودشان این ویژگی ها را اضافه کنند. و آنها این کار را با کنار گذاشتن رویکرد بدیهی انجام دادند.

بنابراین، توسعه Lisp در دو مرحله - و ظاهراً کاملاً مستقل - پیش رفت: یک مرحله رسمی، که در مقاله‌ای در سال 1960 معرفی شد، و یک مرحله پیاده‌سازی، که در آن زبان برای اجرا روی رایانه‌ها تطبیق داده شد و گسترش یافت. کار اصلی، اگر با تعداد فرصت های اجرا شده سنجیده شود، در مرحله اجرا اتفاق افتاد. Lisp از سال 1960، ترجمه شده به Common Lisp، تنها شامل 53 خط است. تنها کاری را که برای تفسیر عبارات لازم است انجام می دهد. بقیه موارد در مرحله اجرا اضافه شد.

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

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

من می خواهم روشن کنم که بل چیست و چیست. اگرچه ویژگی های بسیار بیشتری نسبت به Lisp مک کارتی 1960 دارد، اما Bel هنوز محصولی در مرحله رسمی خود است. مانند Lisp که در مقاله ای در سال 1960 توضیح داده شد، زبانی نیست که بتوانید از آن برای برنامه نویسی استفاده کنید. عمدتاً به این دلیل که مانند Lisp مک کارتی، به کارایی اهمیتی نمی دهد. وقتی چیزی به Bel اضافه می‌کنم، معنای اضافه را بدون تلاش برای ارائه یک پیاده‌سازی کارآمد توصیف می‌کنم.

برای چی؟ چرا مرحله رسمی را تمدید کنید؟ یک پاسخ این است که ببینیم رویکرد بدیهی به کجا می‌تواند ما را ببرد، که خود تمرین جالبی است. اگر کامپیوترها به اندازه ای که ما می خواهیم قدرتمند بودند، زبان ها چگونه به نظر می رسیدند؟

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

بنابراین اگر می خواهید یک پیاده سازی بر اساس Bel بنویسید، ادامه دهید. من یکی از اولین کاربران خواهم بود.

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

ادامه توضیحات زبان در اینجا.

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

PS

منبع: www.habr.com

اضافه کردن نظر