ⓘ اسکیم, زبان برنامه‌نویسی. اسکیم یک زبان برنامه‌نویسی تابعی است که از چندین پارادایم مثل پارادایم تابعی و دستوری پشتیبانی می کند. این زبان یکی از سه ویش های لیسپ ..

                                     

ⓘ اسکیم (زبان برنامه‌نویسی)

اسکیم یک زبان برنامه‌نویسی تابعی است که از چندین پارادایم مثل پارادایم تابعی و دستوری پشتیبانی می کند. این زبان یکی از سه ویش های لیسپ در کنار Common Lisp و Clojure می باشد. برعکس Common Lisp، اسکیم از فلسفه طراحی حداقل گرا استفاده می کند، بر اساس این فلسفه هسته استاندارد باید کوچک باشد، ضمن این که برای توسعه زبان ابزار های قدرتمندی را دارا باشد.

اسکیم در طول دهه ۷۰ در آزمایشگاه هوش مصنوعی دانشگاه MIT توسط توسعه دهندگانش، Guy L. Steele و Gerald Jay Sussman به وسیلهٔ یک سری از یادداشت‌ها که حالا به عنوان مقالات لاندا شناخته می‌شوند توسعه و انتشار داده شد. این زبان از اولین زبان‌های برنامه‌نویسی بود که از تداوم کلاس اول پشیبانی می‌کند. تأثیر قابل توجهی بر تلاشی که منجر به توسعه Lisp رایج شد داشت.

زبان اسکیم در استاندارد IEEE رسمی استانداردسازی شده‌است و عملاً استانداردی که گزارش تجدید نظر در طرح زبان الگوریتمی اسکیم RnRs نامیده می‌شود. بزرگترین استاندارد پیاده‌سازی شده R5RS است ۱۹۹۸; یک استاندراد جدید، R6RS، در سال ۲۰۰۷ تصویب شده‌است.اسکیم پایه کاربری متنوعی را به دلیل فشردگی و ظرافت دارد، اما فلسفه حداقل گرای آن باعث واگرایی میان پیاده‌سازی‌های کاربردی آن شده‌است، به‌طوری‌که کمیته فرمان اسکیم آن را "سیار ترین زبان برنامه‌نویسی" و "یک خانواده از گویش ها" می‌نامد تا یک زبان برنامه‌نویسی تنها.

                                     

1. تاریخچه

مقاله اصلی: History of the Scheme programming language

ریشه‌ها

اسکیم در دهه ۷۰ به عنوان تلاشی برای فهمیدن مدل بازیگر Carl Hewitt، برای قصدی که Steele و Sussmanدر "مفسر کوچک Lisp" با استفاده از Maclisp نوشتند و بعد از آن "مکانیزم‌های افزوده شده برای ساختن بازیگرها و ارسال پیام هاً شروع شد. اسکیم در اصل و به رسم دیگر زبان‌های مشتق شده از Lisp مانند Planner یا Connover, "schemer" نامیده می‌شد. نام حال حاضر نتیجه از استفاده نویسندگان از سیستم عامل ITS است، که نام فایل‌ها را به دو بخش از که هر کدام حد اکثر شش کارکتر می‌پذیرند سات. در حال حاضر، "Schemer" برای اشاره به برنامه‌نویس اسکیم استفاده می‌شود.

                                     

2. ویژگی‌های متمایز

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

وابستگی به لیست‌ها به عنوان ساختار داده‌ها بین همه لهجه‌های لیسپ وجود دارد. اسکیم، یک مجموعه غنی از اولویت‌های پردازش لیست از جمله "cons", "car" و "cdr" را از نمونه‌های قدیمی تر لیسپ اجداد لیسپ به ارث می‌برد. اسکیم به شدت اما به صورت پویا از متغیرهای تایپ شده‌استفاده می‌کند و از رویه‌های procedures کلاس اولیه پشتیبانی می‌کند؛ بنابراین، رویه‌ها را می‌توان به عنوان مقادیر به متغیرها یا آرگومان‌ها تعیین نمود.

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

در نمونه‌هایی که در این بخش ارائه شده است، از علامت "نتیجه result ===> "، برای نشان دادن نتیجهٔ ارزیابی عبارت خط ماقبل استفاده می‌شود. این همان قرارداد استفاده شده در R5RS است.

ویژگی‌های طراحی بنیادی

این بخش، آن ویژگی‌های اسکیم را توصیف می‌کند که آن را از دیگر زبان‌های برنامه‌نویسی از همان ابتدا متمایز می‌کند. این‌ها جنبه‌هایی از اسکیم هستند که بیشترین تأثیر را بر هر محصول زبان اسکیم دارند، و جنبه‌هایی هستند که تمامی نسخه‌های نسخه‌های زبان برنامه‌نویسی اسکیم، از سال ۱۹۷۳ به بعد، آن را دارا هستند.

مینیمالیسم minimalism

اسکیم یک زبان بسیار ساده است، بسیار آسان‌تر از خیلی از زبان‌های قابل مقایسه دیگر از نظر قدرت بیان پیاده‌سازی می‌شود. این سهولت را می‌توان به استفاده از محاسبات لامبدا تا بسیاری از نحو این زبان، از فرم‌های ابتدایی تر نسبت داد. به عنوان مثال از ۲۳ ساختار نحوی مبتنی بر عبارات s در استاندارد R5RS، ۱۱ تا به عنوان فرم مشتق یا فرم کتابخانه‌ای طبقه‌بندی شده‌اند، که می‌تواند به صورت ماکروی شامل اشکال اساسی بیشتر، به ویژه لامبدا نوشته شود. همان‌طور که R5RS عنوان می‌کند R5RS بخش ۳٫۱: "اساسی‌ترین ساختارهای انقیاد متغیر عبارات لامبدا است، زیرا تمام دیگر ساختارهای انقیاد متغیر را می‌توان به شکل عبارات لامبدا توضیح داد."

فرم‌های بنیادی: define, lambda, if, quote, unquote, unquote-splicing, quasiquote, define-syntax, let-syntax, letrec-syntax, syntax-rules, set!

فرم‌های کتابخانه ای: do, let, let*, letrec, cond, case, and, or, begin, named let, delay

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

بنابراین استفاده از "let" مانند بالا، پیاده‌سازی اسکیم عبارت "let a 1b 2) + b a)" را به عنوان "lambda a b + b a) 1 2)" بازنویسی می‌کند، که کار پیاده‌سازی را به نمونه رویه‌های کدنویسی کاهش می‌دهد.

در ۱۹۹۸، ساسمَن و استیل اشاره کردند که اسکیمِ مینیمالیسم یک هدف طراحی آگاهانه نخواهد بود، بلکه به نوعی نتیجهٔ ناخواسته فرایند طراحی است. "ما در واقع تلاش می‌کردیم چیزی پیچیده و کشف شده را بسازیم، که به‌طور تصادفی چیزی ساختیم که تمام اهداف ما را دربر گرفته بود اما خیلی ساده‌تر از آنچه ما قبلاً در نظر داشتیم. ما متوجه شدیم که محاسبات لامبدا _ یک فرمالیزم ساده و کوچک _ می‌تواند به عنوان هستهٔ یک زبان برنامه‌نویسی قوی و با معنا به کار رود."

محدوده واژگانی Lexical Scope

همانند بسیاری از زبان‌های برنامه‌نویسی مدرن و برخلاف لیسپ‌های قدیمی تر مانند ماکلیسپMaclisp، اسکیم به صورت واژگانی محدود می‌شود = در scope قرار می‌گیرد: تمام انقیاد متغیرهای ممکن در یک واحد برنامه می‌تواند با خواندن متن یک واحد برنامه بدون در نظر گرفتن مفاد آن تحلیل کند. این در مقایسه با محدوده پویایی dynamic scope است که مشخصه گویش‌های اولیه لیسپ بود؛ به دلیل هزینه‌های پردازش مرتبط با روش‌های جایگزینی متنی اولیه استفاده شده برای پیاده‌سازی الگوریتم‌های محدوده لغوی Lexical Scoping در کامپایلرها و مفسران روز. در آن لیسپ‌ها، برای یک مرجع متغیر آزاد درون یک رویه، کاملاً امکان‌پذیر بود که به انقیادهای کاملاً مجزا خارج از رویه بسته به فراخوانی منتسب نماید.

انگیزهٔ ترکیب محدوده لغویlexical scoping، که در اوایل دهه ۱۹۷۰ یک مدل محدوده غیرمعمول بود، به نسخه جدیدی از لیسپ، از مطالعات ساسمَن در مورد زبان الگول ALGOL نشئت گرفت. او پیشنهاد کرد که مکانیزم‌های محدوده لغوی مشابه الگول کمک می‌کند تا هدف اولیه خود از اجرای مدل بازیگر هِویت Hewitt’s Actor در لیسپ را تحقق ببخشند. بینش کلیدی در چگونگی معرفی محدوده لغوی به یک گویش لیسپ، در مقاله لامبدای ساسمَن و استیل ۱۹۷۵ شهرت یافت؛ "اسکیم: یک مفسر برای محاسبات گسترده لامبدا" ، که در آن، آن‌ها مفهوم بستار لغوی را تصویب کردند؛ در صفحه ۲۱، که در یک یادداشت هوش مصنوعی از جوئل موسِز کسی که این ایده را به پیتر ج لَندین نسبت داده، شرح داده شده بود.

محاسبات لامبدا

نشانه ریاضیاتی آلونزو چِرچ Alonzo Church، محاسبات لامبدا، الهام بخش استفاده از "لامبدا" به عنوان یک کلید واژه برای معرفی رویه، همچنین تأثیر در توسعه تکنیک‌های برنامه‌نویسی تابعی شامل استفاده از توابع درجه بالاتر در لیسپ می‌باشد. اما لیسپ‌های ابتدایی تر، عبارات مناسبی از محاسبات لامبدا نبودند؛ به دلیل رفتار متغیرهای آزادش.

معرفی محدوده لغوی، مسئله را با ایجاد همبستگی هم‌ارزی میان برخی اَشکال لامبدا و بیان عملی آن‌ها در یک زبان برنامه‌نویسی کارا حل کرده‌است. ساسمَن و استیل نشان دادند که زبان جدید می‌تواند برای استنتاج تمام معانی اِخباری و دستوری زبان‌های برنامه‌نویسی دیگر مانند الگول و فرترن و محدوده پویا دیگر لیسپ‌ها، با استفاده از عبارات لامبدا، نه به عنوان رویه ساده، بلکه به عنوان "ساختارهای کنترل و اصلاح‌کننده‌های محیط" استفاده شود. آن‌ها شیوهٔ continuation-passing را همراه با اولین توصیف اسکیم در اولین مقالات لامبدا معرفی کردند و در مقالات بعدی، قدرت استفاده عملی محاسبات لامبدا را نشان دادند.

ساختار بلوک

اسکیم، ساختار بلوکی خود را از زبان‌های با ساختار بلوکی قدیمی تر به ارث برده است، به ویژه الگول. در اسکیم، بلوک‌ها با ۳ ساختار انقیاد پیاده‌سازی می‌شود:" let”،" let*” و" letrec”. برای مثال، ساختار زیر یک بلوک ایجاد می‌کند که در آن یک نماد به نام var به شماره ۱۰ محدود می‌شود:

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

یک نوع از" let” و" let*”، اجازه انقیادها را می‌دهد تا به متغیرهای تعریف شده قبلی در همان ساختار ارجاع دهد؛ بنابراین:

نوع دیگر،" letrec”، طراحی شده تا رویه‌های بازگشتی دوگانه را قادر سازد به یکدیگر بسته شوند.

دنباله‌های مرد و زن هوفستادر برای تعاریف مورد استفاده در این مثال را ببینید

تمامی رویه‌های محدود در یک" letrec”، می‌توانند با نام به دیگری اشاره کنند، همچنین مقادیر متغیرهایی که قبلاً در همان" letrec” تعریف شدند، اما ممکن است به مقادیر تعریف شده بعدی در همان" letrec” اشاره نکنند.

یک نوع از" let”، فرم "named let"، یک شناسه پس از کلیدواژهٔ" let” دارد. این متغیرهای "let" را به آرگومان‌های یک رویه که نامش همان "شناسهٔ داده شده" و بدنه آن همان بدنه فرم "let" است، به هم می‌پیوندد مقید می‌کند. بدنه می‌تواند با فراخوانی رویه، به دلخواه تکرار شود. "named let" به‌طور گسترده‌ای برای پیاده‌سازی تکرار استفاده می‌شود.

مثال: یک شمارنده ساده

مانند هر رویه در اسکیم، رویه ایجاد شده در" named let”، یک شی کلاس اول است.

بازگشت دنباله مناسب

برای جزئیات بیشتر در این موضوع، بازگشت دنباله را ببینید.

اسکیم یک ساختار تکرار دارد، اما استفاده از بازگشت دنباله بیشتر اصطلاحی است. پیاده‌سازی استاندارد اسکیم برای بهینه‌سازی فراخوانی‌های دنباله به منظور پشتیبانی از تعداد نامحدودی از فراخوانی‌های فعال دنباله مورد نیاز هستندR5RS بخش ۳٫۵. یک ویژگی که اسکیم به عنوان بازگشت دنباله مناسب توصیف می‌کند _ و آن را برای برنامه نویسان اسکیم برای نوشتن الگوریتم‌های تکراری با استفاده از ساختارهای بازگشتی آسان‌تر می‌کند، که بعضی اوقات بیشتر بصری و حسی هستند. رویه‌های بازگشت دنباله و فرم" named let”، از خاصیت "تکرار" با استفاده از بازگشت دنباله

پشتیبانی می‌کنند.

                                     

3.1. استانداردهای پیاده‌سازی برج عددی

مقاله اصلی: Numerical tower

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

استاندارد R5RS، روال exact-> inexact و inexact-> exact را مشخص می‌کند که می‌تواند در تغییر دقیق بودن یک عدد مورد استفاده قرار گیرد. رویه inexact-> exact "عدد دقیقی که از لحاظ عددی نزدیکترین به آرگومان است" را تولید می‌کند. رویه exact-> inexact "عدد نادقیق که از لحاظ عددی به آرگومان نزدیکترین است" را تولید می‌کند. استاندارد R6RS این رویه‌ها را از گزارش اصلی حذف می‌کند، اما آن‌ها را به عنوان رویه‌های سازگار R5RS در کتابخانه استاندارد مشخص می‌کند rnrs r5rs 6). در استاندارد R5RS، پیاده‌سازی‌های اسکیم نیاز به پیاده‌سازی کل برج عددی ندارند، بلکه آن‌ها باید "یک زیر مجموعه منسجم شامل هردوی مقصود پیاده‌سازی و روح زبان اسکیم" را پیاده‌سازی کنند. R5RS sec. 6.2.3. استاندارد R6RS جدید نیاز به پیاده‌سازی تمام برج دارد، و "شی‌های عدد صحیح دقیق و شی‌های عدد منطقی دقیق از عملاً اندازه نامحدود و دقت، و پیاده‌سازی کردن رویه‌های مخصوص… که آن‌ها همیشه نتایج دقیقی را هنگامی که آرگومان‌های دقیق به آن‌ها می‌دهیم بازمی‌گردانند" R6RS sec. 3.4, sec. 11.7.1.

مثال ۱: ریاضیات دقیق در یک پیاده‌سازی که اعداد پیچیده منطقی دقیق را پشتیبانی می‌کند.

مثال ۲: همان ریاضی در یک پیاده‌سازی که هیچ‌یک از اعداد منطقی یا پیچیده را پشتیبانی نمی‌کند ما اعداد حقیقی را در نشانه منطقی می‌پذیرد:

هر دو پیاده‌سازی با استاندارد R5RS تأیید می‌شوند اما دومی با استاندارد R6RS تأیید نمی‌شود زیرا تمام برج اعداد را پیاده‌سازی نکرده‌است.

                                     

3.2. استانداردهای پیاده‌سازی ارزیابی تأخیر

همچنین ببینید: Lazy evaluation

اسکیم ارزیابی تأخیر را پشتیبانی می‌کند در قالب delay و رویه force.

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

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

زبان رسمی در استانداردهای R5RS 1998 و R6RS 2007 تعریف شده‌است. آن‌ها یک "فرم" استاندارد توصیف می‌کنند: کلمات کلیدی و نحو همراه، که ساختار کنترل زبان را ارائه می‌دهند و رویه‌های استاندارد که کارهای معمول را انجام می‌دهند.

                                     

4. فرمهای استاندارد

این جدول فرم‌ها و اَشکال استاندارد در اسکیم را توصیف می‌کند. بعضی از فرم‌ها در بیش از یک ردیف ظاهر می‌شوند زیرا آن‌ها به راحتی نمی‌توانند به یک تابع در زبان طبقه‌بندی شوند. فرم‌ها با نماد "L" در این جدول به عنوان فرم‌های "کتابخانه" طبقه‌بندی شده و اغلب با استفاده از فرم‌های بنیادی تر به عنوان ماکروها پیاده‌سازی می‌شوند؛ که باعث می‌شود وظیفه پیاده‌سازی بسیار ساده‌تر از سایر زبان‌ها شود.

فرم‌های استاندارد در زبان اسکیم R5RS

توجه داشته باشید که" begin” به عنوان یک نحو کتابخانه در R5RS تعریف می‌شود، اما توسعه دهنده باید برای دستیابی به قابلیت پیوند، در مورد آن بداند. در R6RS، دیگر یک نحو کتابخانه نیست.

رویه‌های استاندارد

دو جدول زیر رویه‌های استاندارد در اسکیم R5RS را توصیف می‌کند. R6RS بسیار گسترده‌تر است و خلاصه‌ای از این نوع هم کارا نخواهد بود.

بعضی رویه‌ها در بیشتر از یک خط ظاهر می‌شوند زیرا به راحتی نمی‌توانند به یک تابع در زبان طبقه‌بندی شوند.

رویه‌های استاندارد در زبان اسکیم R5RS

رویه‌های کاراکتری و رشته‌ای که "-ci" را در نام خود دارند، مقایسه‌های مستقل موردی بین آرگومانهایشان انجام می‌دهند: نسخهٔ حروف بزرگ و حروف کوچک از یک کاراکتر یکسان، برابر خواهد بود.

رویه‌های عددی استاندارد در زبان اسکیم R5RS

پیاده‌سازی – و / که بیش از دو آرگومان را تعریف می‌کند اما در R5RS اختیاری است.

                                     

5. درخواست‌های طرح برای اجرا پیاده‌سازی

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

-ساخت پسوند شرطی مبتنی بر ویژگی

-مجموعه فهرست

-انواع داده‌های برداری عددی همگن

-پورت رشته اولیه

-دریافت و پیوند با مقادیر متعد

-تعریف انواع ثبت

-مجموعه رشته

                                     

6. پیاده‌سازی‌ها

دسته اصلی: Scheme programming language

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

Gambit, Chicken, و Biglooبا اسکیمای کامپایل شونده به c کار می‌کنند که به‌طور خاص تعبیه کردن را آسان می‌کنند. علاوه بر این، مترجم Bigloo می‌تواند جوری پیکربندی شود که بایت کدهای JVM تولید کند، و همچنین یک تولیدکننده بایت کد برای.NET باشد.

برخی پیاده‌سازی‌ها ویژگی‌های اضافه تری را فراهم می‌کنند. برای مثال Kawa و JSchee یکپارچه‌سازی با کلاس‌های جاوا را فراهم می‌کنند، و اسکیم به مترجم‌های c معمولاً کار راب برای کتابخانه‌های خارجی نوشته شده به زبان c، بسته به اینکه به کد تعبیه شده در c واقعی در سورس اسکیم اجازه دهیم، راحت می‌کند. یک مثال دیگر Pvts است، که یک مجموعه از ابزار بصری را برای پشتیبانی یادگیری اسکیم ارائه می‌دهد.

                                     

7. کاربردها

این طرح به‌طور گسترده به وسیلهٔ چندین مدرسه مورد استفاده قرار می‌گیرد. به‌طور ویژه دوره‌های علوم کامپیوتری مقدماتی از این طرح در رابطه با ساختار کتاب درسی و تغییر برنامه‌های کامپیوتری sicp استفاده می‌کنند. برای ۱۲ دهه گذشته plt پردازی pragrambydesign اجرا کرده‌است.

2- mit ۶٬۰۰۱ قدیمی در این طرح آموزش داده شده. هر چند ۶٬۰۰۱ با دوره‌های جدید تر جایگزین شد، اما هنوز sicp آموزش به زبان mit را ادامه می‌دهد. کتاب دو چگونه برنامه‌ها را طراحی کنیم با نویسندگی مایتاس فلیس به وسیلهٔ چندین مؤسسه آموزش عالی برای دوره‌های علوم کامپیوتری مقدماتی آن‌ها به کار برده می‌شود. هم دانشگاه فورس استرن و هم مؤسسه ورسسترپلی تکنیک از این طرح به‌طور انحصاری برای دوره‌های مقدماتی "اصول علوم کامپیوتری" و مقدمه‌ای برطراحی برنامه استفاده می‌کنند رز_هولمان از این طرح در دوره مفاهیم زبان برنامه‌نویسی پیشرفته تر استفاده می‌کند.

                                     
  • اسکیم می تواند یکی از موارد زیر باشد: اسکیم ریاضیات اسکیم زبان برنامه نویسی دکتر اسکیم
  • دکتر اسکیم DrScheme یک نرم افزار رایگان است در یک محیط تأثیرگذار برای زبان برنامه نویسی اسکیم که دارای فضای ترسیمی کار بر است. این قسمت اصلی از PLT Scheme
  • طراح زبان برنامه نویسی هسکل مارتین ادرسکی طراح اسکالا روبرتو یروزالیمسچی طراح زبان برنامه نویسی لوا گای ال استیل جونیور مشارکت در طراحی اسکیم و طراح
  • کرد که بعدها نمونه های پیشرفته آن مانند اسکیم ایجاد شد. برنامه نویسی منطقی logic programming برنامه نویسی منطقی به عنوان یک سطح وسیع استفاده از منطق
  • پیکو یک زبان برنامه نویسی است که در آزمایشگاه زبان های نرم افزاری دانشگاه وریجه بروسل توسعه داده شد. این زبان جهت معرفی الزامات برنامه نویسی به دانشجویان
  • شامل همه زبان های برنامه نویسی مهم می باشد. سامانه ای ای زبان برنامه نویسی آباپ زبان برنامه نویسی ای بی سی ای سی سی زبان برنامه نویسی اکشن اکشن اسکریپت
  • اسنپ به انگلیسی: Snap یک زبان برنامه نویسی آموزشی گرافیکی است که مبتنی بر مرورگر و یک سری بلوک های فرمان است. این زبان به دانش آموزان امکان ایجاد پویانمایی
  • R یک زبان برنامه نویسی و محیط نرم افزاری برای محاسبات آماری و علم داده ها است که بر اساس زبان های اس و اسکیم پیاده سازی شده است. این نرم افزار متن باز
  • جمله زبان های برنامه نویسی استانداردشده و سرشناسی می توان به الگوا سی سی جاوااسکریپت تحت نام اکما اسکریپت اسمال تاک پرولوگ لیسپ معمولی اسکیم استاندارد
  • استفاده میشود. این زبان از زبان های برنامه نویسی مفسر بوده و به صورت کامل یک زبان شیءگرا است که در ویژگی ها با زبان های تفسیری پرل روبی اسکیم اسمال تاک و
  • جمله لیسپ معمولی اسکیم کلوژر زبان برنامه نویسی ولفرام راکت ارلنگ اوکمل هسکل و F برنامه نویسی تابع گرا همچنین برای برخی از زبان های خاص منظوره
  • مدیریت خودکار حافظه و همچنین ویژگی های قدرتمند فرابرنامه نویسی است. این زبان برنامه نویسی دارای یک پیاده سازی واحد است که مرکب از یک کامپایلر بهینه ساز