فایل ترجمه مقاله زبان Scheme زبان برنامه نویسی An Introduction to Scheme

ترجمه مقاله زبان Scheme زبان برنامه نویسی An Introduction to Scheme

دسته بندی برنامه نویسی
فرمت فایل docx
تعداد صفحات 33
حجم فایل 56 کیلو بایت
برای دانلود فایل بر روی دکمه زیر کلیک کنید

دریافت فایل

ترجمه مقاله زبان  Scheme  زبان  برنامه نویسی   An Introduction to Scheme

 

مقدمه ای بر زبان برنامه نویسی scheme

 

An Introduction to Scheme

 

Every programming language has a “machine model,” which is a philosophy of how that language views the underlying machine as being structured. Traditional languages such as C have a physical machine model, which means they think of the ambient system in terms of the hardware units that it is built up of. Others, such as Prolog, prefer to think of the underlying system as being a logic engine.

 

Some languages take on a different viewpoint: they perceive the model to be a mathematical one, whereby the machine is a huge mathematical “brain” capable of performing certain computations rapidly and unerringly, but of otherwise unknown construction. Such languages are less likely to deal with memory locations and assignments, and more likely to deal with functions and their evaluation. The core of Scheme, which we will discuss here, is one such language.

 

History

 

Scheme was designed by Gerald Jay Sussman and Guy L. Steele, Jr. at the MIT AI Lab in 1975. It is a descendant of at least three languages, which we briefly outline here.

 

In the late fifties, John McCarthy designed Lisp as an approximation to the lambda calculus, a theoretical computation model proposed by logicians in the thirties in which the fundamental computational object was the function, and the fundamental operation was function application. Lisp was a dynamically typed language with an unusual (prefix and fully-parenthesized) syntax which made it particularly amenable to the rapid prototyping of other languages. Scheme was one such language, originally written wholly in MacLisp (a popular Lisp implementation). Since these prototypes were most easily written when they shared Lisp’s syntax, Scheme inherited this and has retained it ever since.

 

Algol, another seminal language dating to the same period as Lisp, was one of the first languages to introduce static scoping. Since the implementors of Scheme had been studying Algol, and since static scoping seemed necessary for their experiment anyway, Scheme adopted this scoping protocol.

 

The crucial player of the trio was Carl Hewitt’s “actor” model of computation. Processes were seen as actors which communicated by passing messages to each other. These messages were themselves actors. Sussman and Steele defined two kinds of objects: functions and actors. Functions returned values, while actors took an actor to which they passed the result of their computation. However, the process of creating these similar entities was almost identical, and indeed, the act of message-passing looked exactly like that of calling a function.

 

On studying their implementation, Sussman and Steele discovered that apart from the primitives used to write actors and functions, they were in all other respects entirely identical and could therefore be merged. Combining the features of the two, function calls were again made fundamental to computation (as in the lambda calculus), while the actor style of computation lead to interesting paradigms of computation being expressed by function application alone. Thus Scheme was born [6].

 

Over the years, Scheme has grown and evolved considerably. Yet, it retains something of the original minimal spirit; the core is kept relatively small, and new primitives are rarely introduced. There are now committees that have standardized Scheme, and several high-performance compilers are available for it.

 

Now we explore the rudiments of this language, touching along the way some of the original ideas mentioned above.

 

Evaluation and Reduction

 

Consider the arithmetic expression

 

    2 + 3 * 5 – 7

 

 

 

مقدمه :

 

هر زبان برنامه نویسی یک مدل ماشین دارد که دیدگاههای زبان بر اساس این ماشین ساخته می شود.زبانهای قدیمی مثل c   مدل ماشین سخت افزاری دارند بدین معنی که آنها فکر می کنند که سیستم محیطی در قسمتی از واحدهای سخت افزاری است و بر اساس آن ساخته میشود. زبانهای دیگری مثل prolog  ترجیح می دهند فکر کنند که سیستم اساسی یک ماشین منطقی است.

مطلب مفید دیگر:  کاملترین فایل فرهنگ لغت با استفاده از نر‌م‌افزار Visual Basic

 

غالباُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُُ زبانها نقطه نظرهای متفاوتی را ارائه می دهند:آنها دریافته اند که مدل برای محاسبات بوسیله یک ماشین است که مغز محاسباتی بزرگی دارد که قادر است محاسبات معین را با سرعت و بدون خطا اجرا کند که در غیر این صورت ساختمان ماشین مجهول است. این زبانها که کمتر مناسب هستند به موقعیتهایی از حافظه تقسیم بندی می شوند و اختصاص می یابند. زبانهایی که مناسب هستند به توابع و ارزیابی آنها تقسیم بندی می شوند.هسته scheme که ما مورد بحث قرار خواهیم داد یکی از این زبانهای تابعی است.

 

تاریخچه :

 

Scheme   بوسیله Gerald jay sussman و guy l.steele  در آزمایشگاه mit at در سال 1975 طراحی شد.scheme  نسلی از سه زبانی است که در اینجا شرح می دهیم.

 

در سالهای بین 50 و 60  john maccarthy, لیسپ را که شباهت زیادی به  lambda calculus(حساب جامعه و فاضله) داشت طراحی کرد. منطق دانان یک نظریه محاسباتی در سال  سی ام مطرح کردند که هر موضوع محاسباتی اساسا” یک تابع بودوهر عملگر عملیات تابع بود. لیسپ یک زبان نوع پویا بود که با یک نحو غیر معمول (پیشوندی وپرانتز گذاری شده ) ساخته شد. آن مخصوصا” الگوی سرعت به سایر زبانها شد. Scheme از آن زبانهایی بود که در اصل فرزند لیسپ ( در پیاده سازی وابسته به لیسپ ) نوشته شد. تا زمانی نوشتن چنین الگویی ساده بود که نحو لیسپ با scheme  مشترک باشد. Scheme  این خصوصیت(اشتراک نحو با لیسپ ) را گرفت و برای همیشه نگه داشت.

 

Algol  زبان اصلی دیگری است که با لیسپ همدوره بود. از زبانهای اولیه ای است که برای معرفی حوزه ایستا به کار رفت.

 

زمانی  طراحان scheme  , algol  مطالعه می کردند  که حوزه ایستا  برای آزمایش آنان ضروری به نظر می رسید .در هر صورت scheme  این پروتوکل ( حوزه ایستا ) را اتخاذ کرد.

 

قاطع ترین بازیگر سه تایی carl hewitt’s مدل محاسباتی اکتور( actor) بود.پردازشها با ارتباط اکتورها از طریق فرستادن پیغام به همدیگر بودند.پیغامها خود اکتور بودند.sussman و دو نوع موضوع تعریف کردند:تابع و اکتور.

 

توابع مقدار بر می گردانند تا زمانی که اکتورها نتیجه محاسبه فرستاده شده از اکتور دیگر را بگیرند. با وجود این پردازشها موجودیتهای شبیه به هم ایجاد می کردند که تقریبا یکسان بود و  واقعا عمل ارسال پیغام وگرفتن پیغام عینا شبیه فراخوانی توابع به نظر می رسید.

 

در مطالعه پیاده سازی sussman و steel دریافتند که قسمتهای مجزای قدیمی  که برای نوشتن اکتور و تابع به کار میرود در تمامی مراجعات کاملا یکسان بودند.

 

بنابراین می توانستند ترکیب کنند. ترکیب کردن ترکیبات دو تابع فراخوانی شده دوباره اساس محاسبه ای ( مانند lambda calculs ) را به وجود آورد.بدین گونه شد که scheme  زاده شد.

 

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

 

 

 

ارزیابی و تبد یل

 

عبارت ریاضی زیر را در نظر بگیرید:

 

                                                                                        2+3*5-7

 

برای تعیین ارزش آن ما باید (شاید به طور ضمنی ) یک سری عبارات واسط بنویسیم و بعد به جواب نهایی مانند زیر دست یابیم.

برای دانلود فایل بر روی دکمه زیر کلیک کنید

دریافت فایل

جعبه دانلود

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *