✨Lisp

Lisp

nhỏ|phải|Biểu tượng hình con thằn lằn đôi khi được các [[lập trình viên dùng trong các chương trình viết bằng ngôn ngữ Lisp.]] Lisp là ngôn ngữ lập trình được phát triển từ rất sớm (1958). Lisp, viết tắt của LISt Processing có cấu trúc dữ liệu nền tảng là các danh sách liên kết (linked list). Lisp được biết đến như một trong những ngôn ngữ lập trình hàm tiêu biểu, mặc dù đôi khi vẫn có các chương trình Lisp được viết theo hướng thủ tục. Về hình thức, cú pháp lệnh của Lisp rất đặc biệt với những cặp ngoặc đơn và viết theo ký pháp tiền tố.

Lịch sử

Lisp được John McCarthy đề xuất vào năm 1958 tại MIT. Steve Russell đã chuyển từ ý tưởng sang thực tế trên máy tính. Trình biên dịch Lisp đầu tiên được viết bởi Tim Hart và Mike Levin (1962) bằng chính ngôn ngữ Lisp.

Lisp đã được sử dụng rộng rãi trong lĩnh vực trí tuệ nhân tạo.

Đặc điểm

  • Cú pháp thuần nhất (sẽ được trình bày trong phần dưới)
  • Hàm cũng là một đối tượng
  • Lập trình kiểu động.
  • Thu rác trong bộ nhớ (Garbage collector)
  • Gói chương trình
  • Biên dịch tăng dần (Incremental compiling): Trong khi phát triển chương trình có thể sử dụng các hàm được biên dịch cùng với các hàm được thông dịch.

Cú pháp

  • Lisp có cú pháp thuần nhất. Cấu trúc chung của Lisp là danh sách liên kết biểu thị bởi cặp ngoặc đơn, bên trong là các phần ngăn cách bởi dấu trống (space). (phần-1 phần-2 phần-3...)

Trong đó mỗi phần có thể là: : hàm: Trong Lisp, hàm có nghĩa rộng bao gồm cả chương trình con hoặc thủ tục, các câu lệnh, các toán tử trong các ngôn ngữ lập trình thủ tục nói chung. : biến: một biến trong Lisp có thể nhận bất kì kiểu dữ liệu nào :* nguyên tố (atom): bao gồm các giá trị số (nguyên / thực), ký tự, chuỗi ký tự, boolean và ký hiệu (symbol). Riêng ở trong Lisp còn có kiểu phân số (ratio), tiện dụng khi giải các bài toán sơ cấp.

Ví dụ: : Hàm căn bậc hai: (sqrt 2) : Lệnh in ra màn hình: (princ "Common Lisp") :* Phép tính cộng trong đó hàm là toán tử: (+ 3 5)

Cú pháp như vậy được gọi chung là biểu thức S (S-expression hay Sexp). Một chương trình Lisp thực ra là một biểu thức S lớn mà mỗi phần của nó gồm nhiều biểu thức S con khác.

Một số cú pháp cụ thể của Lisp như sau:

  • Khai báo hàm (defun tên-hàm (danh-sách-tham-số) (nội-dung-của-hàm))
  • Gán (setq tên-biến giá-trị)
  • Khối lệnh (progn (lệnh-1) (lệnh-2)...)
  • Chọn / rẽ nhánh (if (biểu-thức-điều-kiện) (nhánh-đúng) (nhánh-sai))

(cond ((biểu-thức-1) (nhánh-1)) ((biểu-thức-2) (nhánh-2)) ... )

* Lặp (while (điều-kiện) (lệnh) )

Quy ước đặt tên

Trong thư viện chuẩn của Lisp, các hàm dạng logic (predicate) trả lại kết quả đúng (T) hoặc sai (NIL) đều kết thúc với chữ (p). Chẳng hạn: zerop là hàm kiểm tra một số bằng 0 hay không.

Quy ước đặt tên này không bắt buộc, nó có tác dụng với người lập trình (để dễ đọc và tiện gỡ lỗi) nhưng không có ý nghĩa với trình biên dịch.

Hướng đối tượng trong Lisp

Mặc dù được phát triển với định hướng ban đầu là lập trình hàm, ngôn ngữ Lisp cũng được bổ sung các tính năng cho phép lập trình 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 các tính năng cơ bản là:

  • Định nghĩa các lớp
  • Tạo các đối tượng trong mỗi lớp
  • Định nghĩa các phương thức và hàm tổng quát.

Một ví dụ cụ thể với việc định nghĩa một lớp person với các giá trị mặc định tên là bill và 10 tuổi như sau:

(defclass person () ((name:accessor person-name :initform 'bill :initarg:name) (age:accessor person-age :initform 10 :initarg:age)))

Các dòng Lisp

Trong quá trình phát triển, có nhiều dòng Lisp khác 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) đã ra đời. Tuy vậy, hiện nay cũng có nhiều bản của Common Lisp như Allegro CL, LispWork (các phiên bản thương mại), và CMU CL, SBCL (các phiên bản tự do).

Một nhánh phát triển khác của Lisp là Scheme, một ngôn ngữ Lisp rút gọn với vài thay đổi về các từ khóa. Scheme là ngôn ngữ được giảng dạy phổ biến tại Hoa Kỳ. Trường MIT dùng Scheme để dạy sinh viên năm thứ nhất, nhưng đã chuyển qua dùng python.

Ứng dụng của Lisp

Sau khi ra đời, Lisp dần dần trở thành ngôn ngữ chuyên dụng trong ngành trí tuệ nhân tạo ở Hoa Kỳ. Thậm chí ở Hoa Kỳ ảnh hưởng của nó còn lấn át một ngôn ngữ thông dụng khác trong ngành trí tuệ nhân tạo là Prolog. Nghiên cứu trí tuệ nhân tạo bằng Lisp được khái quát thành những bài toán mang tính mẫu mực.

Ngoài ra Lisp còn là công cụ lập trình mạnh mẽ bên trong các chương trình AutoCAD và Emacs, và được sử dụng rộng rãi trong công thương nghiệp.

👁️ 2 | 🔗 | 💖 | ✨ | 🌍 | ⌚
nhỏ|phải|Biểu tượng hình con thằn lằn đôi khi được các [[lập trình viên dùng trong các chương trình viết bằng ngôn ngữ Lisp.]] **Lisp** là ngôn ngữ lập trình được phát triển từ rất sớm
Mặt nạ môi BIOAQUA Collagen Nourish Lisp Membrane * Khối lượng: 8g - Mặt nạ Môi Collagen Nourish Lips Membrane Mask với thành phần Vitamin E và Acid Hayluronic…. giúp giảm thiểu nếp nhăn môi,
MÔ TẢ SẢN PHẨM❤Mặt nạ môi BIOAQUA Collagen Nourish Lisp Membrane * Khối lượng: 8g- Mặt nạ Môi Collagen Nourish Lips Membrane Mask với thành phần Vitamin E và Acid Hayluronic…. giúp giảm thiểu nếp
Serum VAURA BABIER LISP VOLUME ✳️ Công dụng; _ Giải quyết các vấn đề về môi _Môi bong tróc.môi bị tái và đang trong tình trạng lão hoá _ Dưỡng ẩm môi giúp môi luôn
**Dylan** là một ngôn ngữ lập trình đa mẫu hình có hỗ trợ hàm, lập trình hướng đối tượng (OOP), động và phục hồi trong khi cung cấp một mô hình lập trình được thiết
ài điều bạn cần biết để tự tin dùng hàng nội địa trung quốc : Mọi người thường có cái nhìn không mấy thiện cảm về hàng hoá trung quốc nhưng đâu biết rằng hàng
Mặt Nạ Dưỡng Môi Bioaqua ,Làm Mềm Môi, Giảm Các Nếp Nhăn Môi Ngay Sau Lần Đầu Sử DụngVài điều bạn cần biết để tự tin dùng hàng nội địa trung quốc : Mọi người
MÔ TẢ SẢN PHẨMMặt Nạ Dưỡng Môi Bioaqua ,Làm Mềm Môi, Giảm Các Nếp Nhăn Môi Ngay Sau Lần Đầu Sử DụngVài điều bạn cần biết để tự tin dùng hàng nội địa trung quốc
MÔ TẢ SẢN PHẨMMặt Nạ Dưỡng Môi Bioaqua ,Làm Mềm Môi, Giảm Các Nếp Nhăn Môi Ngay Sau Lần Đầu Sử DụngVài điều bạn cần biết để tự tin dùng hàng nội địa trung quốc
Gom sale 95% sét phấn son MUA 1 ĐƯỢC 3 NÀY CÁC CHỊ EM ƠI PHẤN NƯỚC hãng VT làm theo phiên bản #BTS #TẶNG 2 SON 01 hộp Phấn nước chứa Collagen, Hyaluronic Acid
( VT X BTS ) THE SWEET SPECIAL EDITION SET là một set mỹ phẩm kết hợp giữa hãng mỹ phẩm VT Cometics và nhóm nhạc nam đình đám BTS của Hàn Quốc.Xuất xứ: Hàn
(VT X BTS ) THE SWEET SPECIAL EDITION SET là một sét mỹ phẩm kết hợp giữa hãng mỹ phẩm VT Cometics và nhóm nhạc nam đình đám BTS của Hàn Quốc.Xuất xứ: Hàn QuốcThương
( VT X BTS ) THE SWEET SPECIAL EDITION SET là một set mỹ phẩm kết hợp giữa hãng mỹ phẩm VT Cometics và nhóm nhạc nam đình đám BTS của Hàn Quốc.Xuất xứ: Hàn
MÔ TẢ SẢN PHẨM Vài điều bạn cần biết để tự tin dùng hàng nội địa trung quốc : Mọi người thường có cái nhìn không mấy thiện cảm về hàng hoá trung quốc nhưng
Thông Tin sản phẩm Mặt nạ môi BIOAQUA Collagen Nourish Lisp Membrane* Khối lượng: 8g- Mặt nạ Môi Collagen Nourish Lips Membrane Mask với thành phần Vitamin E và Acid Hayluronic…. giúp giảm thiểu nếp
MÔ TẢ SẢN PHẨMThông Tin sản phẩm Mặt nạ môi BIOAQUA Collagen Nourish Lisp Membrane* Khối lượng: 8g- Mặt nạ Môi Collagen Nourish Lips Membrane Mask với thành phần Vitamin E và Acid Hayluronic…. giúp
Mặt nạ môi BIOAQUA Collagen Nourish Lisp Membrane * Khối lượng: 8g Mặt nạ Môi Collagen Nourish Lips Membrane Mask với thành phần Vitamin E và Acid Hayluronic…. giúp giảm thiểu nếp nhăn môi, dưỡng
bao gồm : 1 cushion The Sweet Grossy Cushion. 2 thỏi son kem The Sweet Mousse Lisp Fluid. 1 tấm thiệp + card B.T.S Được thiết kế cực bắt mắt với packing galaxy tone tím
Xuất xứ: Hàn Quốc Thương hiệu : VT X BTS Set make-up nhanh- gọn - nhẹ và xinh đẹp bao gồm 01 thỏi son tint và 01 cushion foundation ẩm nhẹ, che phủ tốt: -
Mặt Nạ Dưỡng Môi BioaquaVài điều bạn cần biết để tự tin dùng hàng nội địa trung quốc : Mọi người thường có cái nhìn không mấy thiện cảm về hàng hoá trung quốc nhưng
Mục đích của **danh sách các ngôn ngữ lập trình** này là bao gồm tất cả các ngôn ngữ lập trình hiện tại đáng chú ý, được sử dụng hiện tại và những ngôn ngữ

**Ngôn ngữ kịch bản** () là ngôn ngữ lập trình cho môi trường thời gian chạy đặc biệt tự động hóa thực thi các tác vụ; các tác vụ thay thế có thể
**Biểu diễn tri thức và suy luận** (**Knowledge representation and reasoning**, **KRR**, **KR&R**, **KR²**) là lĩnh vực của trí tuệ nhân tạo (AI) tập trung vào việc biểu diễn thông tin về thế giới dưới
**Lập trình hướng đối tượng** () là một mẫu hình lập trình dựa trên khái niệm "đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu trong các trường, thường được gọi là
**John McCarthy** (4 tháng 9 năm 1927 - 24 tháng 10 năm 2011) là một nhà khoa học máy tính và nhà khoa học nhận thức người Mỹ. McCarthy là một trong những người sáng
Đây là bài con của **Trí tuệ nhân tạo**, nội dung chú trọng vào sự phát triển và **lịch sử ngành trí tuệ nhân tạo**. ## Sự phát triển của lý thuyết trí tuệ nhân
phải|Biểu đồ hoạt động của một trình biên dịch lý tưởng. **Trình biên dịch** () hay **phần mềm biên dịch** là một chương trình máy tính làm công việc dịch một chuỗi các câu lệnh
nhỏ|phải|"Chữ _c_ đảo ngược trong vòng tròn" là biểu tượng copyleft. Nó là hình ảnh phản chiếu của [[biểu tượng bản quyền. Không giống như biểu tượng bản quyền, biểu tượng này không có ý
**Workstation** (một số tài liệu gọi là _máy trạm_) được sử dụng theo các nghĩa: Workstation là một Microcomputer được thiết kế dành để chạy các ứng dụng kỹ thuật hoặc khoa học. Mục đích
Trong ngành điện toán, khái niệm **con trỏ rỗng** chỉ một biến con trỏ có một giá trị định sẵn khiến cho nó không trỏ được tới bất kỳ một đối tượng chính tắc nào.
Một số ngôn ngữ lập trình cung cấp **kiểu dữ liệu phức** để lưu và thực hiện các phép toán số học số phức dưới dạng một kiểu dữ liệu có sẵn (cơ bản). Trong
**Phòng thí nghiệm khoa học máy tính và trí tuệ nhân tạo MIT (CSAIL) **là một phòng thí nghiệm nghiên cứu tại viện công nghệ Massachusetts thành lập bởi sự sáp nhập vào năm 2003
Trong trí tuệ nhân tạo, **lập trình di truyền** (_genetic programming, GP_) là một kỹ thuật tiến hóa các chương trình mà ban đầu chưa thích nghi (thường là chương trình ngẫu nhiên) cho đến
Trong khoa học máy tính, **reflection** (có thể dịch là "phản tỉnh", "tự xét mình") là việc tiến trình có khả năng xem xét, nội quan, và sửa đổi kết cấu cùng với hành trạng
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
:_Bài này nói về trình soạn thảo văn bản. Về kiểu máy tính của Apple Macintosh, xem eMac._ **Emacs** là trình soạn thảo văn bản đa chức năng. Đây là phần mềm tự do, chạy
Đây là danh sách **Phần mềm mã nguồn mở**: là phần mềm máy tính được cấp phép giấy phép mã nguồn mở. Bài viết này không có tham vọng liệt kê tất cả những phần
**Scheme** là một ngôn ngữ lập trình hỗ trợ nhiều khuôn mẫu lập trình (_multi-paradigm_), nhưng được biết đến nhiều nhất với khả năng hỗ trợ lập trình hàm. Đây là một trong hai biến
**Lôgíc mô tả** (tiếng Anh: _Description logics_, viết tắt _DL_) là một họ các ngôn ngữ biểu diễn tri thức có thể sử dụng để biểu diễn tri thức thuật ngữ của một miền ứng
thumb|**[[Phép tính lambda** là một hệ thống hình thức để định nghĩa hàm, ứng dụng hàm và đệ quy được Alonzo Church đề xuất vào những năm 193x.]] **Lý thuyết ngôn ngữ lập trình** (thường
Dưới đây là danh sách những cái chết đáng chú ý trong **tháng 10 năm năm 2011**. ## Tháng 10 năm 2011 ### 31 *Flórián Albert, 70, cầu thủ Hungary. [http://www.championat.com/football/news-975809.html] (tiếng Nga) *John Makin,
**ALGOL** (viết tắt từ **ALGO**rithmic **L**anguage) là một họ các ngôn ngữ lập trình máy tính bắt buộc được phát triển vào năm 1958. ALGOL ảnh hưởng lớn đến nhiều ngôn ngữ khác và là
**Ngôn ngữ biên dịch** (tiếng Anh: _compiled language_) là ngôn ngữ lập trình có triển khai thường là trình biên dịch (bộ dịch tạo ra mã máy từ mã nguồn), chứ không phải trình thông
Trong lập trình máy tính, **hàm tổng quát** (tiếng Anh: _generic function_) là một hàm được định nghĩa cho các kiểu đa hình. ## Trong ngôn ngữ kiểu tĩnh Trong ngôn ngữ kiểu tĩnh (như
Đây là danh sách các ngôn ngữ lập trình đáng chú ý, được nhóm theo loại. Vì không có sơ đồ phân loại bao quát cho các ngôn ngữ lập trình, nên trong nhiều trường
**Lập trình dựa trên nguyên mẫu** (tiếng Anh: **prototype-based programming**) là một kiểu lập trình hướng đối tượng, trong đó việc tái sử dụng hành vi (được gọi là kế thừa) được thực hiện thông
Trong khoa học máy tính, đặc biệt là trong biểu diễn tri thức và siêu logic học, lĩnh vực **suy luận tự động** (automated reasoning) được dành riêng cho việc hiểu các khía cạnh khác
Trong trí tuệ nhân tạo, **khung** là một dạng cấu trúc dữ liệu, tức là cách mà thông tin được tổ chức, lưu trữ và truy cập. Ý tưởng của khung là chia nhỏ tri
Trong điện toán, **lập trình hướng khía cạnh** (tiếng Anh: _aspect-oriented programming_, viết tắt: _AOP_) là một mẫu hình lập trình nhằm tăng tính mô đun bằng cách cho phép phân tách những mối quan
nhỏ|Chân dung nhà toán học George Boole Trong khoa học máy tính, **kiểu dữ liệu Boolean** (tiếng Anh: _Boolean data type_) là một kiểu dữ liệu có một trong hai giá trị cụ thể (thường