한국   대만   중국   일본 
Lisp ? Wikipedia ti?ng Vi?t B??c t?i n?i dung

Lisp

Bach khoa toan th? m? Wikipedia
Bi?u t??ng hinh con th?n l?n đoi khi đ??c cac l?p trinh vien dung trong cac ch??ng trinh vi?t b?ng ngon ng? Lisp.

Lisp la ngon ng? l?p trinh đ??c phat tri?n t? r?t s?m ( 1958 ). Lisp, vi?t t?t c?a LISt Processing co c?u truc d? li?u n?n t?ng la cac danh sach lien k?t ( linked list ). Lisp đ??c bi?t đ?n nh? m?t trong nh?ng ngon ng? l?p trinh ham tieu bi?u, m?c du đoi khi v?n co cac ch??ng trinh Lisp đ??c vi?t theo h??ng th? t?c . V? hinh th?c, cu phap l?nh c?a Lisp r?t đ?c bi?t v?i nh?ng c?p ngo?c đ?n va vi?t theo ky phap ti?n t? .

L?ch s? [ s?a | s?a ma ngu?n ]

Lisp đ??c John McCarthy đ? xu?t vao n?m 1958 t?i MIT . Steve Russell đa chuy?n t? y t??ng sang th?c t? tren may tinh. Trinh bien d?ch Lisp đ?u tien đ??c vi?t b?i Tim Hart va Mike Levin ( 1962 ) b?ng chinh ngon ng? Lisp.

Lisp đa đ??c s? d?ng r?ng rai trong l?nh v?c tri tu? nhan t?o .

đ?c đi?m [ s?a | s?a ma ngu?n ]

  • Cu phap thu?n nh?t (s? đ??c trinh bay trong ph?n d??i)
  • Ham c?ng la m?t đ?i t??ng
  • L?p trinh ki?u đ?ng.
  • Thu rac trong b? nh? ( Garbage collector )
  • Goi ch??ng trinh
  • Bien d?ch t?ng d?n ( Incremental compiling ): Trong khi phat tri?n ch??ng trinh co th? s? d?ng cac ham đ??c bien d?ch cung v?i cac ham đ??c thong d?ch .

Cu phap [ s?a | s?a ma ngu?n ]

  • Lisp co cu phap thu?n nh?t. C?u truc chung c?a Lisp la danh sach lien k?t bi?u th? b?i c?p ngo?c đ?n, ben trong la cac ph?n ng?n cach b?i d?u tr?ng (space).

( ph?n-1 ph?n-2 ph?n-3... )

Trong đo m?i ph?n co th? la:

Vi d?:

  • Ham c?n b?c hai: (sqrt 2)
  • L?nh in ra man hinh: (princ "Common Lisp")
  • Phep tinh c?ng trong đo ham la toan t?: (+ 3 5)

Cu phap nh? v?y đ??c g?i chung la bi?u th?c S ( S-expression hay Sexp ). M?t ch??ng trinh Lisp th?c ra la m?t bi?u th?c S l?n ma m?i ph?n c?a no g?m nhi?u bi?u th?c S con khac.

M?t s? cu phap c? th? c?a Lisp nh? sau:

  • Khai bao ham ( defun ten-ham ( danh-sach-tham-s? ) ( n?i-dung-c?a-ham ))
  • Gan ( setq ten-bi?n gia-tr? )
  • Kh?i l?nh ( progn ( l?nh-1 ) ( l?nh-2 ) ... )
  • Ch?n / r? nhanh
    (
    if
     (
    bi?u-th?c-đi?u-ki?n
    )
     (
    nhanh-đung
    )
     (
    nhanh-sai
    ))
    
    
    (
    cond
    
      ((
    bi?u-th?c-1
    )
     (
    nhanh-1
    ))
    
      ((
    bi?u-th?c-2
    )
     (
    nhanh-2
    ))
    
    ...
    
    )
    
    
  • L?p
    (
    while
     (
    đi?u-ki?n
    )
    
      (
    l?nh
    )
    
    )
    
    

Quy ??c đ?t ten [ s?a | s?a ma ngu?n ]

Trong th? vi?n chu?n c?a Lisp, cac ham d?ng logic ( predicate ) tr? l?i k?t qu? đung ( T ) ho?c sai ( NIL ) đ?u k?t thuc v?i ch? ( p ). Ch?ng h?n: zerop la ham ki?m tra m?t s? b?ng 0 hay khong.

Quy ??c đ?t ten nay khong b?t bu?c, no co tac d?ng v?i ng??i l?p trinh (đ? d? đ?c va ti?n g? l?i ) nh?ng khong co y ngh?a v?i trinh bien d?ch .

H??ng đ?i t??ng trong Lisp [ s?a | s?a ma ngu?n ]

M?c du đ??c phat tri?n v?i đ?nh h??ng ban đ?u la l?p trinh ham , ngon ng? Lisp c?ng đ??c b? sung cac tinh n?ng cho phep l?p trinh h??ng đ?i t??ng . Ch?ng h?n v?i Common Lisp , h??ng đ?i t??ng đ??c th? hi?n qua CLOS , v?i cac tinh n?ng c? b?n la [1] :

  • đ?nh ngh?a cac l?p
  • T?o cac đ?i t??ng trong m?i l?p
  • đ?nh ngh?a cac ph??ng th?c va ham t?ng quat.

M?t vi d? c? th? v?i vi?c đ?nh ngh?a m?t l?p person v?i cac gia tr? m?c đ?nh ten la bill va 10 tu?i nh? sau:

(
defclass
 person
 ()

  ((
name:accessor
 person-name

:initform
 'bill

:initarg:name
)

   (
age:accessor
 person-age

:initform
 10

:initarg:age
)))

Cac dong Lisp [ s?a | s?a ma ngu?n ]

Trong qua trinh phat tri?n, co nhi?u dong Lisp khac nhau nh?: MacLisp , ZetaLisp , Franz Lisp v.v... V?i nguy?n v?ng th?ng nh?t m?t chu?n chung cho Lisp, Common Lisp (CL) đa ra đ?i. Tuy v?y, hi?n nay c?ng co nhi?u b?n c?a Common Lisp nh? Allegro CL , LispWork (cac phien b?n th??ng m?i), va CMU CL , SBCL (cac phien b?n t? do).

M?t nhanh phat tri?n khac c?a Lisp la Scheme , m?t ngon ng? Lisp rut g?n v?i vai thay đ?i v? cac t? khoa . Scheme la ngon ng? đ??c gi?ng d?y ph? bi?n t?i Hoa K? . Tr??ng MIT dung Scheme đ? d?y sinh vien n?m th? nh?t, nh?ng đa chuy?n qua dung python . [2]

?ng d?ng c?a Lisp [ s?a | s?a ma ngu?n ]

Sau khi ra đ?i, Lisp d?n d?n tr? thanh ngon ng? chuyen d?ng trong nganh tri tu? nhan t?o ? Hoa K?. Th?m chi ? Hoa K? ?nh h??ng c?a no con l?n at m?t ngon ng? thong d?ng khac trong nganh tri tu? nhan t?o la Prolog [3] . Nghien c?u tri tu? nhan t?o b?ng Lisp đ??c khai quat thanh nh?ng bai toan mang tinh m?u m?c [4] .

Ngoai ra Lisp con la cong c? l?p trinh m?nh m? ben trong cac ch??ng trinh AutoCAD va Emacs , va đ??c s? d?ng r?ng rai trong cong th??ng nghi?p [5] .

Xem them [ s?a | s?a ma ngu?n ]

Tham kh?o [ s?a | s?a ma ngu?n ]

  1. ^ “Jeff Dalton. A brief guide to CLOS . B?n g?c l?u tr? ngay 6 thang 5 n?m 2015 . Truy c?p ngay 7 thang 12 n?m 2008 .
  2. ^ “Why MIT now uses python instead of LISP” . B?n g?c l?u tr? ngay 17 thang 9 n?m 2010 . Truy c?p ngay 7 thang 8 n?m 2012 .
  3. ^ Ivan Bratko. Prolog programming for artificial intelligence
  4. ^ Peter Norvig. Paradigms of Artificial Intelligence: Case Studies in Common Lisp . [1]
  5. ^ “Lisp Success Stories” . B?n g?c l?u tr? ngay 1 thang 12 n?m 2008 . Truy c?p ngay 7 thang 12 n?m 2008 .