بخشی از پاورپوینت
اسلاید 1 :
Lisp,1960
¨نگاهی به تاریخچه ی Lisp:
¡ایده کلی:
úبرخی از ایده های قدیمی ، قدیمی به نظر می رسند.
úبرخی از ایده های قدیمی ، جدید به نظر می رسند.
¡مثالی از یک زبان خوش ساخت و کار راه انداز
¡متفاوت از C ، C++ و JAVA : شانسی برای متفاوت فکر کردن
¡موضوعات کلی در رابطه با طراحی زبان را شرح می دهد.
اسلاید 2 :
John McCarthy
¨
¨
¨پیشگام در AI
¡فرموله کردن استدلال ها
¨همچنین
¡پیشنهاد اشتراک زمانی
¡تئوری های ریاضی
¨Lisp
از علاقه به محاسبات سمبلیک سرچشمه گرفت
(ریاضی ، منطق)
اسلاید 3 :
خلاصه ای از Lisp
¨دارای لهجه های متفاوتی است:
¡Lisp 1.5, Maclisp, …, Scheme, ...
¡CommonLisp دارای ویژگیهای اضافی است
¡در این درس مختصری از Lisp 1.5 توضیح داده خواهد شد.
¨دارای نحو ساده ای است
(+ 1 2 3)
(+ (* 2 3) (* 4 5))
(f x y)
اسلاید 4 :
Atom ها و Pair ها
¨Atom ها شامل اعداد و رشته های غیر قابل تقسیم است.
<atom> ::= <smbl> | <number>
<smbl> ::= <char> | <smbl><char> |<smbl><digit>
<num> ::= <digit> | <num><digit>
¨جفتهای دارای نقطه (dotted pairs)
¡برای pair از (A . B) استفاده می شود.
¡به عبارتهای سمبلیک، S-expressions می گویند:
<sexp> ::= <atom> | (<sexp> . <sexp>)
اسلاید 5 :
توابع پایه
¨توابعی که روی اتمها و pair ها عمل می کنند:
cons car cdr eq atom
¨اعلانها و کنترل:
cond lambda define eval quote یا ‘
¨مثال:
(lambda (x) (cond ((atom x) x) (T (cons ‘A x))))
function f(x) = if atom(x) then x else cons(“A”,x)
¨توابعی با اثرات جانبی (Side Effect)
rplaca rplacd
اسلاید 6 :
ارزیابی عبارت ها
¨لیسپ از حلقه Read-eval-print استفاده می کند
¨فراخوانی تابع (function arg1 ... argn)
¡هر یک از آرگومانها ارزیابی می شوند
¡لیستی از مقادیر آرگومانها به تابع داده می شود
¨در بعضی از فراخوانی ها تمام آرگومانها ارزیابی نمی شوند
¡مثال (cond (p1 e1) ... (pn en) )
úاز چپ به راست پیش می رود
úاولین pi با مقدار درست یافته می شود، ei مربوط به آن ارزیابی می شود
úمثال: در (quote A) ، A ارزیابی نمی شود
اسلاید 7 :
مثالها
(+ 4 5)
expression with value 9
(+ (+ 1 2) (+ 4 5))
evaluate 1+2, then 4+5, then 3+9 to get value
(cons (quote A) (quote B))
pair of atoms A and B
(quote (+ 1 2))
evaluates to list (+ 1 2)
'(+ 1 2)
same as (quote (+ 1 2))
¨
اسلاید 8 :
مقاله ی McCarthy در سال 1960
¨مقاله ای قابل توجه بخاطر:
¡ایده های خوب برای زبانها
¡شرح وضعیت برنامه نویسی در 1960
¡بینش خوبی در پروسه ی طراحی زبان ارائه می داد.
¨مفاهیم مهم:
¡علاقه به محاسبات سمبلیک طراحی را تحت تأثیر قرار داده بود.
¡از مدل ماشین ساده ای استفاده شده بود
¡به مسایل تئوری توجه شده بود
تئوری تابع بازگشتی ، محاسبات لامبدا
¡ایده های خوب: برنامه ها به عنوان داده، زباله روبی
¡
اسلاید 9 :
طراحی یک زبان خوب
¨کاربرد انگیزه دهنده
¨ماشین انتزاعی (Abstract machine)
¨بنیاد تئوری
اسلاید 10 :
کاربرد انگیزه دهنده
¨کاربردهای انگیزه دهنده قسمتی از طراحی زبان خوب است و در طراحی زبان به صورتهای زیر تأثیر می گذارد:
¡تمرکز روی مهمترین اهداف
¡حذف ایده های جذاب ولی غیر ضروری
Lisp محاسبات سمبلیک ، منطقی ، برنامه نویسی اکتشافی
C سیستم عامل یونیکس
Simula شبیه سازی
PL/1 سعی در حل تمام مسائل برنامه نویسی ؛ موفق نبود