✨Ngôn ngữ hình thức

Ngôn ngữ hình thức

Tiền đề trong việc xây dựng lý thuyết Automata là ngôn ngữ hình thức Trong toán học và khoa học máy tính, một ngôn ngữ hình thức (formal language) được định nghĩa là một tập các chuỗi (string) được xây dựng dựa trên một bảng chữ cái (alphabet), và chúng được ràng buộc bởi các luật (rule) hoặc văn phạm (grammar) đã được định nghĩa trước. Alphabet có thể là tập các ký tự trong ngôn ngữ tự nhiên (natural language) hoặc tập tự định nghĩa các ký tự.

Giả sử có một alphabet ∑ = {a, b} và ký hiệu L là ngôn ngữ. Như vậy, ta có thể định nghĩa một số ngôn ngữ trên alphabet ∑ như sau:

:: L1 = {aa, aaa} :: L2 = {aba, aab} :: L3 = {ab, ba, aabb,..., aaabbb,...}

Lĩnh vực mà lý thuyết ngôn ngữ hình thức nghiên cứu là những mẫu hình (pattern) có cấu trúc bên trong những ngôn ngữ hình thức, và đó là những khía cạnh hoàn toàn mang tính chất có cú pháp. Ngôn ngữ hình thức không còn đơn giản chỉ là để định nghĩa ngôn ngữ tự nhiên, mà nó đã vượt ra ngoài khỏi phạm vi đó, và nó cũng là một cách để hiểu được những quy tắc có cú pháp của ngôn ngữ tự nhiên.

Lý thuyết ngôn ngữ hình thức còn được ứng dụng trong lĩnh vực khoa học máy tính, cụ thể là các ngôn ngữ lập trình khi mà mỗi từ của ngôn ngữ đó đều mang một ý nghĩa đặc biệt. Còn trong lĩnh vực lý thuyết độ phức tạp tính toán (Computational complexity theory), các vấn đề quyết định (decision problems) được định nghĩa như là các ngôn ngữ hình thức, và các lớp độ phức tạp (complexity classes) được xác định là tập của những ngôn ngữ hình thức. Còn trong toán học, cú pháp của các hệ thống tiên đề được biểu diễn bằng ngôn ngữ hình thức.

Các định nghĩa

Một alphabet, trong ngữ cảnh ngôn ngữ hình thức thì có thể bất kì tập hợp nào, mặc dù thông thường là tập các chữ cái, hoặc ký tự trong bảng ASCII được sử dụng. Hơn nữa, một alphabet có thể là vô hạn (infinite); ví dụ, một tập alphabet ngoài các ký tự ∧, ¬, ∀, (,),... ra còn có vô số x1, x2,... thể hiện các biến. Các thành phần riêng lẻ trong một alphabet được gọi là chữ cái (letter).

Chuỗi (string) hoặc từ (word): là một chuỗi các chữ cái trên alphabet nào đó.

Câu (sentence): một chuỗi được gọi là câu nếu nó thuộc về một ngôn ngữ nào đó.

Ngôn ngữ rỗng (empty language): một ngôn ngữ không chứa bất kì câu nào được gọi là ngôn ngữ rỗng (ký hiệu: ∅). Cần phân biệt ngôn ngữ rỗngchuỗi rỗng (không chứa ký tự nào trong alphabet).

Phân loại ngôn ngữ theo mô hình Chomsky

Mô hình phân cấp Chomsky. Cơ bản nhất là Regular, phức tạp nhất là Recursively Enumerable Noam Chomsky (1928), một nhà triết học người Mỹ về ngôn ngữ và là giáo sư ngôn ngữ học tại MIT đã xây dựng lên một ý tưởng rằng "Loài người học ngôn ngữ không phải bắt đầu từ những hành vi (behavior) (là những phản ứng sự kích thích một cách có định hướng), mà nó dựa trên nhận thức và sự bẩm sinh". Bằng những nỗ lực để chứng minh học thuyết này, ông đã đưa ra một mô hình gọi là Mô hình phân cấp Chomsky.

Mô hình này gồm bốn loại ngôn ngữ và các gắn kết về ngữ pháp (grammar) và máy (machine):

  • Loại 0: Recursively Enumerable Languages (ngôn ngữ đếm được theo cách đệ quy)
  • Loại 1: Context-Sensitive Languages (ngôn ngữ phụ thuộc ngữ cảnh)
  • Loại 2: Context-Free Languages (ngôn ngữ không phụ thuộc ngữ cảnh)
  • Loại 3: Regular Languages (ngôn ngữ chính quy)

Các phép toán trên ngôn ngữ

Giả sử tồn tại L1 và L2 là 2 ngôn ngữ trên một hoặc nhiều bộ alphabet nào đó. Ta có thể thực hiện một số phép tính giữa L1 và L2 như sau:

  • Phép nối (concatenation): L1L2 bao gồm tất cả các chuỗi (string) được kết hợp từ 2 ngôn ngữ.
  • Phép giao (intersection): L1∩L2 gồm các chuỗi xuất hiện trong cả hai ngôn ngữ.
  • Phép bù (complement): ¬L1 hoặc ¬L2 gồm các chuỗi không nằm trong (hoặc thuộc) 2 ngôn ngữ trên.
  • Luật Kleene star
  • Phép đảo ngược (Reversal):
  • Homomorphism trên chuỗi

Ứng dụng

Ngôn ngữ lập trình

Ứng dụng thường thấy trong lĩnh vực khoa học máy tính của ngôn ngữ hình thức là Trình biên dịch hay trong các giải thuật về chuỗi (tìm kiếm, hoán vị...).

Một trình biên dịch về cơ bản gồm 2 thành phần riêng biệt. Một là trình phân tích từ vựng (lexical analyser), nó có nhiệm vụ xác định các token của nguồn một chương trình máy tính, ví dụ như các định danh (identifier) (tên của hàm, biến...), các từ khóa (keyword), các ký hiệu... Thành phần thứ 2 là trình phân tích cú pháp (parser) với nhiệm vụ quyết định xem mã nguồn chương trình đó có được viết đúng cú pháp của ngôn ngữ lập trình mà trình biên dịch đó hỗ trợ không. Kết quả của một parser là cây cú pháp trừu tượng (abstract syntax tree) và nó được sử dụng cho các giai đoạn sau của quá trình biên dịch. Hai thành phần đó đều hoạt động dựa trên ngôn ngữ hình thức.

Lý thuyết và hệ thống và dẫn xuất về hình thức

Trong toán logic, một lý thuyết hình thức (formal theory) là một tập các câu (sentence) được biểu diễn trên một ngôn ngữ hình thức.

Một hệ thống hình thức (hay còn gọi là phép tính logic (logical calculus) hay hệ thống logic (logical system) là sự kết hợp của một ngôn ngữ hình thức và một bộ máy suy diễn (deductive apparatus).

Một dẫn xuất (derivation) là một chuỗi hữu hạn các công thức đúng cú pháp.

👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
_Tiền đề trong việc xây dựng lý thuyết Automata là ngôn ngữ hình thức_ Trong toán học và khoa học máy tính, một **ngôn ngữ hình thức** (_formal language_) được định nghĩa là một tập
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**
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
Trong ngôn ngữ học, một **ngôn ngữ tự nhiên** (tiếng Anh: _natural language_) là bất kỳ ngôn ngữ nào phát sinh, không suy nghĩ trước trong não bộ của con người. Điển hình là một
khung|phải|Một ngôn ngữ đánh dấu đặc biệt theo [[SGML đường sử dụng để viết phiên bản điện tử của _Oxford English Dictionary_. Cách này để cho người dùng có thể truy vấn tinh vi, và
**Ngôn ngữ** là một hệ thống giao tiếp có cấu trúc được sử dụng bởi con người. Cấu trúc của ngôn ngữ được gọi là ngữ pháp, còn các thành phần tự do của nó
**Ngôn ngữ LGBT** là môn nghiên cứu từ ngữ của cộng đồng LGBT. Các thuật ngữ liên quan hoặc đồng nghĩa phát triển bởi William Leap vào những năm 1990, bao gồm **ngôn ngữ màu
**Ngôn ngữ học** hay **ngữ lý học** là bộ môn nghiên cứu về ngôn ngữ. Người nghiên cứu bộ môn này được gọi là nhà ngôn ngữ học. Nói theo nghĩa rộng, nó bao gồm
phải|Bản đồ ngôn ngữ của châu Âu (đơn giản hóa). **Ngôn ngữ học châu Âu** là ngành ngôn ngữ học khá mới mẻ, nghiên cứu về các ngôn ngữ tại châu Âu. Tuy nhiên, ở
nhỏ|Tấm biển tại [[Ung Hòa cung tại Bắc Kinh, Trung Quốc, từ phải sang trái viết bằng tiếng Mãn, tiếng Hán, tiếng Tạng, tiếng Mông Cổ.]] nhỏ|phải|Biểu trưng của chính quyền Liên bang [[Thụy Sĩ,
**Ngôn ngữ quốc gia** () hay **Quốc ngữ** là một dạng của sự tồn tại của một ngôn ngữ trong kỷ nguyên tồn tại của một quốc gia, một sự thống nhất hệ thống phức
Trung Quốc có tới hàng trăm ngôn ngữ khác nhau. Ngôn ngữ chủ yếu là tiếng Hán tiêu chuẩn, dựa trên tiếng Quan Thoại là trung tâm, nhưng tiếng Trung Quốc có hàng trăm ngôn
thumb|Các ngôn ngữ ở Hồng Kông Luật Cơ bản của Hồng Kông quy định tiếng Anh và tiếng Trung là hai ngôn ngữ chính thức của Hồng Kông. Trong thời kỳ thuộc địa của Anh,
**R** là một ngôn ngữ lập trình và môi trường phần mềm dành cho tính toán và đồ họa thống kê. Đây là một bản hiện thực ngôn ngữ lập trình S với ngữ nghĩa
**Viện Ngôn ngữ học** (tên tiếng Anh: _Institute of Linguistics_) là một viện nghiên cứu khoa học chuyên ngành thuộc Viện Hàn lâm Khoa học xã hội Việt Nam. Viện có chức năng nghiên cứu
**Ngôn ngữ của cộng đồng Hoa** **kiều** ở nước ngoài ảnh hưởng bởi rất nhiều yếu tố, bao gồm tổ tiên, xuất xứ, sự đồng hóa qua nhiều thế hệ, và các chính sách chính
Đây là danh sách các nước và vùng lãnh thổ theo **ngôn ngữ sử dụng**, hay ngôn ngữ nói. Do tính phổ biến của các ngôn ngữ khác nhau, nên việc xếp mục lục không
nhỏ|phải Hoa Kỳ không có một ngôn ngữ chính thức, nhưng tiếng Anh được khoảng 82% dân số nói như tiếng mẹ đẻ. Biến thể tiếng Anh được nói tại Hoa Kỳ được biết như
[[Tập tin:Africa ethnic groups 1996.jpg|thumb|upright=1.5|Bản đồ cho thấy phân bố của các ngữ hệ truyền thống tại châu Phi: Niger-Congo: Nin-Sahara: ]] Có 1.250 tới 2.100 và theo một nguồn là có tới 3.000 ngôn
**Nhóm ngôn ngữ Semit Ethiopia** (còn gọi **Ethio-Semitic,** **Ethiosemitic,** **Ethiopia** hoặc **Abyssinia**) là một nhóm ngôn ngữ được nói ở Ethiopia, Eritrea và Sudan. Cùng với ngôn ngữ Nam bán đảo Ả Rập cổ đại,
**Nhóm ngôn ngữ Dard** (còn gọi là **Dardu** hoặc **Pisaca**) là một nhóm ngôn ngữ nhỏ thuộc ngữ chi Ấn-Arya nói ở mạn Bắc Gilgit-Baltistan và Khyber Pakhtunkhwa (Pakistan), Jammu và Kashmir (miền Bắc Ấn
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
**Nguồn gốc ngôn ngữ** và quan hệ của ngôn ngữ đối với tiến hóa của loài người là chủ đề học thuật đã được bàn luận trong nhiều thế kỷ. Mặc dù vậy, ta vẫn
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
**Loại hình ngôn ngữ** là một khái niệm của ngôn ngữ học dùng để chỉ tập hợp các ngôn ngữ có chung một hay nhiều đặc điểm hình thái nhất định. Loại hình học là
nhỏ|Giao tiếp phi ngôn ngữ giữa hai người tại [[Tây An, Trung Quốc.]] **Giao tiếp phi ngôn ngữ** giữa con người là sự giao tiếp bằng cách gửi và nhận những tín hiệu phi ngôn
**Ngôn ngữ đơn âm tiết** (chữ Anh: _Monosyllabic language_) là loại ngôn ngữ mà từ đơn chủ yếu do một âm tiết duy nhất cấu thành. Một ví dụ về ngôn ngữ đơn âm tiết
thế=Tập hợp các phân loại được mô tả trong hệ thống phân cấp Chomsky.|nhỏ|Tập hợp các phân loại được mô tả trong hệ thống phân cấp Chomsky. Trong các lĩnh vực lý thuyết ngôn ngữ
**C#** (**C Sharp**, đọc là _"xi-sáp"_) là một ngôn ngữ lập trình hướng đối tượng đa năng, mạnh mẽ được phát triển bởi Microsoft, C# là phần khởi đầu cho kế hoạch .NET của họ.
**Python** () là ngôn ngữ lập trình bậc cao đa năng. Triết lý thiết kế của nó nhấn mạnh khả năng đọc mã bằng cách sử dụng thụt lề đáng kể. Python có kiểu động
**Java** (phiên âm Tiếng Việt: "_Gia-va_") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để có càng ít phụ thuộc thực thi càng tốt. Nó là ngôn ngữ
Đây là một trong bốn loại hình ngôn ngữ quan trọng của thế giới: loại hình **ngôn ngữ đơn lập** hay còn gọi là **ngôn ngữ cách thể**, loại hình ngôn ngữ chắp dính (ngôn
nhỏ|Mô hình ngôn ngữ máy được lập nên bởi nhà toán học, nhà thủy văn và lập trình viên Vladimir Mikhailovich Kazakov, nhân viên Máy tính của Viện Energosetproekt năm 1962-1972. **Ngôn ngữ máy** (còn
thumb|thumbtime=5|_Preservation of the Sign Language_ (1913) nhỏ|Juan Pablo Bonet, _Reducción de las letras y arte para enseñar a hablar a los mudos_ (Madrid, 1620). **Ngôn ngữ ký hiệu** hay **ngôn ngữ dấu hiệu**, **thủ ngữ**
**Cú pháp ngôn ngữ (lập trình) C** là tập hợp các quy tắc nhằm xác định cách thức để viết và dịch trong ngôn ngữ lập trình C. :Thí dụ:
 // Dòng này sẽ
**Thuyết tương đối ngôn ngữ** (), hay **giả thuyết Sapir-Whorf**, cho rằng cấu trúc ngôn ngữ ảnh hưởng đến tư duy và khả năng nhận biết thế giới xung quanh. Đó là, ngôn ngữ quyết
nhỏ|Cbmain Trong khoa học máy tính, một **ngôn ngữ lập trình bậc cao** (tiếng Anh: _high-level programming language_) là một ngôn ngữ lập trình có sự trừu tượng hóa mạnh mẽ khỏi các chi tiết
**D** là một ngôn ngữ lập trình hệ thống hướng đối tượng, dùng câu lệnh, đa mẫu hình do Walter Bright của Digital Mars tạo ra và phát hành năm 2001. Quá trình thiết kế
**Ngôn ngữ học xã hộ**i (_Sociolinguistics_) là ngành học nghiên cứu ảnh hưởng của bất kỳ và tất cả các lĩnh vực xã hội, bao gồm các khái niệm văn hóa, kỳ vọng và ngữ
**Ngôn ngữ học tính toán** là một lĩnh vực liên ngành liên quan đến mô hình thống kê hoặc dựa theo luật của ngôn ngữ tự nhiên từ góc độ tính toán cũng như nghiên
**Rối loạn** **ngôn ngữ** hoặc **suy giảm ngôn ngữ** là những rối loạn liên quan đến việc xử lý thông tin ngôn ngữ. Các vấn đề có thể gặp phải có thể liên quan đến
frameless|right|UML logo **Ngôn ngữ mô hình hóa thống nhất** (tiếng Anh: _Unified Modeling Language_, viết tắt thành **UML**) là một ngôn ngữ mô hình gồm các ký hiệu đồ họa mà các phương pháp hướng
**Xử lý ngôn ngữ tự nhiên** (_natural language processing_ - NLP) là một nhánh của trí tuệ nhân tạo tập trung vào các ứng dụng trên ngôn ngữ của con người. Trong trí tuệ nhân
Trong ngành khoa học máy tính, **các phương pháp hình thức** là các kỹ thuật toán học cho việc đặc tả, phát triển và kiểm định các hệ thống phần mềm và phần cứng. Cách
**Các ngôn ngữ Đông Á** thuộc về một số ngữ hệ khác biệt với các đặc tính chung hình thành từ quá trình tiếp xúc giữa các ngôn ngữ. Trong vùng ngôn ngữ học Đông
**Ngôn ngữ ký hiệu Mỹ** (ASL) là ngôn ngữ dấu hiệu chiếm ưu thế của cộng đồng người khiếm thính tại Hoa Kỳ và hầu hết tại Canada nói tiếng Anh. Ngoài Bắc Mỹ, các
thumb|Khẩu hiệu an toàn giao thông ở [[Kin, Okinawa, viết bằng tiếng Nhật (giữa) và tiếng Okinawa (trái và phải).]] là những ngôn ngữ bản địa ở quần đảo Lưu Cầu, phần viễn nam của
**Ruby** là một ngôn ngữ lập trình hướng đối tượng, có khả năng phản ứng. Theo tác giả, Ruby chịu ảnh hưởng bởi Perl, Smalltalk, Eiffel, Ada và Lisp. Ruby cung cấp nhiều mẫu hình
thumb|right|Hai người phụ nữ nói chuyện với nhau. Chú ý người phụ nữ mặc áo xanh khép một cánh tay co sát cơ thể, trong khi người kia sử dụng tay mình để biểu thị,
**Ngôn ngữ trung gian chung **hoặc **Ngôn ngữ trung gian dùng chung** (**Common Intermediate Language - CLI**), là ngôn ngữ lập trình có thể đọc được của con người ở mức thấp nhất được xác