Ngôn ngữ lập trình gần đây cho AI? [đóng cửa]


15

Trong một vài thập kỷ, ngôn ngữ lập trình được lựa chọn cho AI là Prolog hoặc LISP , và một vài ngôn ngữ khác không được biết đến nhiều . Hầu hết chúng được thiết kế trước những năm 70.

Các thay đổi xảy ra rất nhiều trên nhiều ngôn ngữ cụ thể của các miền khác, nhưng trong miền AI, nó không nổi lên nhiều như trong các ngôn ngữ cụ thể trên web hoặc tập lệnh, v.v.

Có ngôn ngữ lập trình gần đây nào có ý định thay đổi trò chơi trong AI và học hỏi từ sự thiếu hiệu quả của các ngôn ngữ cũ không?


1
Octave là một ngôn ngữ tốt cho Machine Learning nếu nhánh AI đó làm bạn quan tâm.
setzamora

Cũng xem xét một cách tiếp cận lập trình meta (tức là tạo chương trình). Nhìn vào blog của J.Pitrat . Sau đó, ngôn ngữ bạn tạo ra có thể không có nhiều nội dung, thậm chí có thể là C.
Basile Starynkevitch

Câu trả lời:


23

Khóa học AI tôi tham gia trực tuyến, được giảng dạy tại Stanford, khuyến nghị sử dụng Python cho bài tập về nhà. Tôi tin rằng Georgia Tech vẫn sử dụng LISP.

Sai lầm ở đây là "mới" là "tốt". Nghiên cứu AI là một trong những ngành nghiên cứu điện toán lâu đời nhất. Nó tiếp tục sinh ra các trường con khi mọi người nhận ra rằng các kỹ thuật từ nó có thể được sử dụng ở nơi khác. Xử lý ngôn ngữ, học máy và khai thác dữ liệu là tất cả các ví dụ về các ứng dụng "thực tế" sử dụng rất nhiều ngôn ngữ.

Vì vậy, ít hơn là lĩnh vực chính đã thay đổi so với nó đã được tinh chế thành một loạt lớn các ngành liên quan. Nó giống như nói "Tính toán khoa học" và hy vọng nó chỉ có nghĩa là giải phương trình tuyến tính.

Các ngôn ngữ bạn đã đề cập đã phát triển khá nhiều trong 20 hoặc 30 năm qua. Lisp sinh ra Lisp và Clojure phổ biến. Prolog sinh ra Visual Prolog (nó có đồ vật ...) và Mercury (lấy Haskell và Prolog, khóa chúng trong một căn phòng cùng nhau ... đứng cách xa và sẵn sàng chạy).

Cho rằng nghiên cứu AI mang tính lý thuyết nhiều hơn, có ý nghĩa rằng nó sẽ tập trung vào lý thuyết (toán học) hơn là thực tiễn (ngôn ngữ).

Tất cả những gì đang được nói, nhà cải tiến lớn nhất của công nghệ AI mà tôi đặt cược là Google. Họ có xu hướng ủng hộ Python (và Go và Dart nhưng đó là điểm chính). Do đó, tôi muốn nói Python là "ngôn ngữ được lựa chọn gần đây" nhưng bạn cũng có thể sử dụng Haskell hoặc OCaml hoặc F # hoặc C # hoặc thậm chí Java.


+1 Để đề cập đến sao Thủy.
Guy Coder

8

Bạn có thể tìm thấy câu trả lời cho câu hỏi của mình trong một vấn đề đặc biệt gần đây, Sprachen der KIÊ (Ngôn ngữ của AIật ) của tạp chí AI của Đức KI - Künstliche Intellectenz , Tập 26, Số 1 / Tháng 2 năm 2012, được xuất bản bởi Springer. Tôi là đồng tác giả của một phần của bài thảo luận có trong đó: Bạn sử dụng ngôn ngữ nào để tạo chương trình AI của mình và tại sao? Đây là bản in lại của nó: http://ai.cs.unibas.ch / con / schmid-et-al-kijournal2012.pdf

Tóm lại, một số nhà nghiên cứu AI vẫn thề với các ngôn ngữ AI cổ điển Lisp và Prolog. Những người khác sử dụng các ngôn ngữ chính như C ++, Java hoặc Python. Vẫn còn những người khác thích khám phá các ngôn ngữ lập trình bí truyền mới.

Tôi tin rằng không có gì đặc biệt về AI sẽ yêu cầu các ngôn ngữ lập trình đặc biệt. Những gì các nhà nghiên cứu nói chung muốn là ngôn ngữ lập trình cho phép tạo mẫu nhanh. Đây là thứ mà các ngôn ngữ AI cũ (Lisp, Prolog) và các ngôn ngữ script script mới hơn (Perl, Python, Ruby hoặc các ngôn ngữ JVM gần đây như Clojure) rất phù hợp.

Một số nhà nghiên cứu muốn vượt ra ngoài việc tạo mẫu hoặc họ có các yêu cầu đặc biệt (ví dụ: dữ liệu lớn) và cần triển khai lại thuật toán của họ bằng các ngôn ngữ được biên dịch hoặc gõ mạnh như C, C ++ hoặc Java khi giai đoạn lập trình khám phá kết thúc và họ có nắm bắt tốt hơn các vấn đề. Một số người sẽ nói rằng tại thời điểm đó (khi vấn đề được hiểu rõ), bạn không còn phải đối phó với AI nữa.

Quay trở lại câu hỏi cuối cùng của bạn, tất cả những phát triển quan trọng trong các ngôn ngữ AI mới mà tôi biết đều được truyền cảm hứng từ lập trình dựa trên ràng buộc. Một số đã tham gia triển khai Prolog như SICStus và SWI, những người khác đã sinh ra các ngôn ngữ giống như Prolog như Mercury và Mozart / Oz. Tất nhiên có khả năng là những phát triển mới đáng kể mà tôi không biết.


2

Mặc dù hầu hết các câu trả lời này tập trung vào từ "ngôn ngữ" vì bạn đã sử dụng nó trong câu hỏi của mình, tôi không tin rằng bạn nên nghĩ một ngôn ngữ cụ thể khi nghĩ về AI.

Tôi đã làm việc với công nghệ này trong nhiều năm và tôi hiện đang làm việc với Proof Assistant và chuyển đổi một số mã từ OCaml sang F #. Nó không phải là ngôn ngữ đạt được AI mà là các thuật toán cụ thể được triển khai trong ngôn ngữ. Đối với PRITAL đây là một công cụ suy luận dựa trên sự thống nhất . Bây giờ nếu bạn bắt đầu với sự thống nhất và xem xét cách nó đã được tùy chỉnh và nâng cao qua nhiều năm, tôi nghĩ bạn sẽ tìm thấy sự tiến bộ của sự tiến bộ mà bạn tìm kiếm. Đừng tập trung vào ngôn ngữ, tập trung vào các thuật toán.

Ví dụ, suy luận kiểu trong các ngôn ngữ chức năng sử dụng Hindley Mạnh Milner dựa trên sự thống nhất.

Một ví dụ khác cụ thể cho trợ lý bằng chứng là ở đây , hãy chú ý prolog.ml. Công cụ suy luận cho prolog được triển khai trong OCaml và được dịch sang F #. Vì vậy, trong khi OCaml và F # không được ghi chú bình thường như ngôn ngữ AI, chúng hoàn toàn có khả năng thực hiện các thuật toán AI.


Tôi phải nói rằng đây chính xác là những gì tôi nghĩ về câu hỏi này: các thuật toán quan trọng hơn ngôn ngữ bạn sử dụng để viết chúng, đó là lý do tại sao mọi cuốn sách AI tôi đọc đều khăng khăng đưa ra mã giả cho các thuật toán.
JJP

1

Tôi muốn nói nó phụ thuộc vào ý của bạn về AI. Học máy nói chung đã chứng kiến ​​sự phát triển nhanh chóng của công cụ, do đó, một số thuật toán để phân loại, phân cụm và các hình thức học tập có giám sát và không giám sát khác, đặc biệt là với các mô hình đồ họa xác suất, đã được triển khai trong Python, C #, Ruby, OCaml, và Java, chỉ để một vài tên.

Nếu bạn đang thực hiện thao tác dữ liệu trên quy mô lớn để xây dựng những thứ như công cụ đề xuất, lọc cộng tác hoặc các loại vấn đề học tập không được giám sát hoặc giám sát khác, bạn có thể muốn xem Mahout . Nó không thực sự là một "ngôn ngữ lập trình", nhưng nó là một bộ công cụ cho loại vấn đề này. Bạn có thể viết mã mô hình bằng Java hoặc các ngôn ngữ JVM khác như groovy (ngôn ngữ động, biểu cảm hợp lý) hoặc clojure (giống như lisp).

Tôi không chắc tại sao bạn lại coi Lisp là ngày; đó là nơi mà hầu hết các tính năng ngôn ngữ "mới" trong các ngôn ngữ khác (đóng cửa, v.v.) có nguồn gốc từ.

Tất nhiên, các kỹ thuật học máy nói chung đã chuyển sang các mô hình xác suất hơn là logic nhị phân, cách tiếp cận kiểu cây quyết định mà hầu hết các nỗ lực AI ban đầu bắt đầu, vì vậy có thể lập luận rằng học máy là một nhánh hoặc chuyển hướng từ lều lớn của AI.


0

Ngôn ngữ được lựa chọn cho AI mà tôi đã sử dụng từ nhiều năm trước là Prolog, phiên bản Visual Prolog đi kèm với IDE như trong Delphi.

Prolog (và phiên bản GUI của nó Visual Prolog) là ngôn ngữ lập trình logic mục đích chung gắn liền với trí tuệ nhân tạo và ngôn ngữ học tính toán.

Tuy nhiên, xu hướng gần đây cho thấy rằng bất kỳ ngôn ngữ OOP nào như C #, Java, Python, Haskell, v.v. đều đang được lập trình cho các ứng dụng AI.


3
Từ khi nào là Haskell OOP?
Andrea

bạn có thể mô phỏng OOP trong Haskell, phải không?
Yusubov

1
bạn có thể mô phỏng nó bằng bất kỳ ngôn ngữ nào, không có nghĩa là bạn thường coi bất kỳ ngôn ngữ nào là OO
jk.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.