2009-07-20 17 views
5

Bạn có nghĩ VB là ngôn ngữ tốt cho AI không? Tôi ban đầu đã làm AI sử dụng chủ yếu là Lisp và C/C++ khi thực hiện là cần thiết, nhưng gần đây đã được làm một số lập trình VB.Sử dụng VB cho Trí tuệ Nhân tạo

VB có những ưu điểm sau: 1. Tốt debugger (cần thiết!) 2. Tốt thanh tra (cơ sở đồng hồ) 3. Dễ cú pháp (Intellisense so sánh với cấu trúc biên tập viên của các môi trường Lisp cuối 80 của). 4. Dễ tích hợp với phần mềm của bên thứ 3. 5. Biên dịch thành mã nhanh (hiệu suất CLR khá tốt) 6. Phát triển nhanh.

Nhân tiện, cảm ơn tất cả các câu trả lời hữu ích. Tôi đã upvoted tất cả những người đóng góp.

+0

Tôi đoán bạn có nghĩa là VB.NET, không phải kiểu cũ VB :-) –

+5

VB sẽ là tốt nhất cho công việc không phải với AI nhưng với AS (ngu dốt nhân tạo). Nó không chỉ phù hợp hơn với ngôn ngữ, mà nó còn bản đồ hóa với thế giới thực chính xác hơn. – lavinio

+2

skynet có lẽ được viết bằng VB. Điều đó sẽ giải thích rất nhiều*. – Christopher

Trả lời

5

Bạn đang nói về VB nào ở đây? Nếu bạn đang nói VB.NET thì có, và không .. Tôi sẽ đề nghị C# hoặc có thể F # .. F # là một ngôn ngữ chức năng và do đó nói chung là phù hợp hơn cho nhiều mô hình bạn sẽ được giao dịch khi lập trình AI. Các phiên bản mới hơn của C# cũng có hỗ trợ cho các tính năng ngôn ngữ như biểu thức lambda, delagates vô danh và những thứ khác cũng có thể có lợi cho bạn!

+0

Vâng, VB .NET tất nhiên :) Tôi đã thử những năm VB cũ trở lại, nhưng không bao giờ có thể "có được nó" bởi vì nó chỉ có vẻ quá lạ. VB .NET là một bất ngờ thú vị. –

+1

VB.NET cũng có các tính năng như biểu thức lambda và các đại biểu ẩn danh. C# và Visual Basic .NET có bộ tính năng gần như giống hệt nhau. –

+0

@Jim, tôi không bao giờ nói VB.NET không có lambdas và các đại biểu vô danh nhưng đề nghị của tôi đi đến C#, hoặc F # .. Điều đó, tôi chắc chắn không coi là lý do đủ để bỏ phiếu xuống. Tôi xin lỗi nếu tôi xúc phạm bạn bằng bất kỳ cách nào bằng cách đưa ra tuyên bố cho C# trong thiệt hại của VB.NET –

6

Tôi khuyên bạn nên sử dụng C# thay vì VB.Net.

Bạn nhận được tất cả các tính năng đẹp mà bạn thảo luận nhưng cú pháp tốt hơn (và quen thuộc hơn).

+1

Tôi sẽ đề nghị bạn đi với F # chứ không phải là C#. Bạn nhận được tất cả các tính năng tốt đẹp mà bạn thảo luận nhưng một cú pháp tốt hơn (và rõ ràng hơn). – Juliet

+0

Tôi đang sử dụng VB tại nơi làm việc ngay bây giờ, vì vậy việc chuyển đổi bánh răng dễ dàng hơn. Các ngôn ngữ có vẻ tương đương vì CLR cơ bản –

+0

F # là một ngôn ngữ tốt ... Tôi thậm chí không nghĩ về nó. Về việc sử dụng VB bởi vì đó là những gì bạn đã làm việc .... Tôi vẫn không thể đồng ý với điều đó. AI hiệu trưởng dễ dàng hơn rất nhiều để thể hiện trong C# (và chắc chắn F #). VB được tạo ra như một ngôn ngữ kinh doanh.Nó là tiết và ngữ pháp của nó làm cho nó khó khăn để thể hiện những điều nhất định trong. Vì nó rõ ràng là một ngôn ngữ hoàn thành du lịch, nó có thể làm AI, nhưng câu hỏi là ... bạn có thực sự muốn làm AI trong nó? Nó là loại giống như việc lựa chọn để chìm một bu lông 12 inch với một cờ lê cresent chứ không phải là một cờ lê tác động khí nén. làm việc nhiều hơn cho kết quả eqaul – joejoeson

1

1, 2 và 3 là tất cả các khía cạnh mà bất kỳ IDE nâng cao đầy đủ nào có, do đó, đó không phải là vấn đề lớn đối với hầu hết các ngôn ngữ. Đối với 4, 5 và 6: Python phù hợp với 4 và 6, nhưng không phải 5, vì nó không phải là rất nhanh, mặc dù một số triển khai Python có tốc độ tốt hơn so với những người khác, tùy thuộc vào cấu hình của chúng. (Chỉ cần nhắc đến Python vì bạn đã gắn thẻ câu hỏi của bạn với thẻ python.)

Nếu bạn định sử dụng .NET Framework, tôi có thể gợi ý C# không? Cú pháp tương tự như của C và C++ (tương tự như cú pháp Java), vì vậy nó sẽ quen thuộc hơn với bạn, và nó thực hiện chính xác những thứ mà VB thực hiện (và có tất cả các tính năng IDE giống nhau, vì cả hai đều sử dụng Visual Studio IDE, mặc dù tôi cho rằng bạn có thể sử dụng một IDE thay thế nếu bạn muốn, vì trình biên dịch VB và C# thực sự đi kèm với .NET Framework và không phải với Visual Studio).

4

Khi bạn nói AI, ý của bạn là gì? Đó là một lĩnh vực rất rộng. Nếu bạn chỉ cần lướt qua những điều cơ bản, như tìm kiếm có hướng dẫn và các cơ sở tri thức đơn giản thì yea VB .Net có vẻ có lợi. Nhưng cấu trúc ngôn ngữ và cú pháp làm cho nó rất thiếu khi bạn bắt đầu nghiên cứu định lý, ILP và các lĩnh vực khác của máy học bạn sẽ bắt đầu nhận ra rằng ngôn ngữ như Lisp vẫn đang được sử dụng ngày nay bởi vì chúng cung cấp một cú pháp tự nhiên hơn để diễn đạt AI khái niệm.

+0

Trên thực tế khu vực chính của tôi là ILP :) Steve Muggleton (người đặt ra thuật ngữ ILP) trình bày các giấy tờ tại IJCAI 87 về cảm ứng mang tính xây dựng. –

+0

Bạn đã đọc nền tảng của ILP (Shan-Hwei Nienhuys-Cheng và Ronald de Wolf) chưa? Tuyệt vời đọc nếu bạn quan tâm. Tôi nghĩ rằng cách tốt nhất để đi (từ quan điểm ILP ít nhất) là một loại interop. Tôi có một câu hỏi ở đây về C#/Lisp interop. – SpaceghostAli

+0

Không, tôi chưa đọc cuốn sách đó. Tôi đoán là một tác giả là cố vấn và người kia là một Ph.D. sinh viên và đây là luận án của mình :) –

1

VB có những ưu điểm sau: [...]

Nhưng sau đó bạn tiếp tục và danh sách những thứ mà hiện thực hiện đại nhất của Common Lisp phục vụ, đặc biệt là những thương mại.

Bạn đã thử Common Lisp gần đây chưa? Bạn nhớ những phần nào của VB.NET khi lập trình CL?

+0

Tôi đã thử một số phương ngữ lisp phổ biến - SBCL, CLISP, Lispworks. Tôi nhớ có khung chuẩn, đáng tin cậy cho luồng và GUI, và dễ cài đặt, IDE không gặp sự cố (chất nhờn là một cơn đau ở mông) –

+0

Tôi có thể thấy ý của bạn về SBCL và CLISP. Nhưng Lispworks và Allegro có giao diện người dùng khá thân thiện với người mới và đi kèm với đồng thời và GUI. Tất nhiên YMMV, do đó bạn có thể đã không tìm thấy IDE của họ tuyệt vời. Vẫn không phải là lý do để tôi làm việc với bất kỳ môi trường phát triển Visual .NET nào thay vì Lisp - trừ khi có thể 90% lập trình ứng dụng của bạn là giao diện đồ họa. – skypher

+1

Tôi nghĩ rằng vấn đề là tôi đang so sánh mã nguồn mở với một sản phẩm thương mại (VB .NET) mà không thực sự là một sự so sánh công bằng. Tôi thực sự nên thử Allegro hoặc Lispworks để so sánh hợp lệ. –

1

Điều đó tùy thuộc vào ý nghĩa của từ "AI".

Một ý nghĩa phổ biến chỉ là "công nghệ phần mềm cạnh hàng đầu" (ví dụ: chơi cờ vào năm 2010 không còn quan tâm nhiều đến trí tuệ nhân tạo, chỉ là một bộ kỹ thuật hỗ trợ cơ bản). .Đối với các công cụ cạnh hàng đầu, ngôn ngữ nên được chọn để phù hợp với công nghệ cụ thể. Cả VB (các biến thể khác nhau) lẫn C++ đều không thể là ứng cử viên tốt.

Mặt khác, người ta có thể coi AI là "trí tuệ nhân tạo" nghĩa đen, nỗ lực tạo ra AI thực sự, ngay cả khi chỉ ở mức độ sâu hoặc thông minh ruồi. Sau đó, trở ngại chính, như được ghi nhận bởi Scott Fahlman rất lâu trước đây (thập niên bảy mươi bảy mươi?), Là khả năng thực hiện các giao lộ lớn trong các mạng lưới ngữ nghĩa khổng lồ rất nhanh, song song, ví dụ, để nhận ra con vật nguy hiểm đó. Và vì phần cứng hiện tại không tăng lên (tốc độ đồng hồ không bù đắp cho nút cổ chai von Neumann), ngoại trừ những thứ được sử dụng bởi NSA và như vậy, nó là một cuộc chiến cho hiệu suất máy tính tuyệt đối, có nghĩa là C++ có thể là một lựa chọn tốt cho các cấp thấp hơn.

Cheers & hth,

-. Alf

0

Không có vấn đề gì ngôn ngữ mà bạn viết mã AI trong, nếu ngôn ngữ cho phép bạn làm toán học phức tạp. VB.NET có các tính năng giống như C# vì nó sử dụng cùng một khung công tác. Việc truy cập các phần đó của khung công tác có thể có những người gọi khác nhau.

AI yêu cầu nhiều tối ưu hóa cho bộ nhớ và chức năng tùy chỉnh được cắt ... Làm quen với không gian tên Reflection cho người gọi bộ nhớ không được quản lý. Con trỏ là có thể và hữu ích trong bộ nhớ không được quản lý; VB cũng cho phép những thứ này mà tất cả những kẻ C# đều chiến đấu vì họ không biết làm thế nào để làm điều đó trong VB. Phân bổ bộ nhớ/con trỏ và đĩa nằm trong lớp Marshall là một dịch vụ Interop.

http://msdn.microsoft.com/en-us/library/vstudio/system.runtime.interopservices.marshal%28v=vs.100%29.aspx

Bất cứ ai mà nói với bạn, C++ là cách duy nhất để đi không hiểu lập trình hay chỉ đơn giản là một bigot rằng tin C++ là ngôn ngữ duy nhất trên thế giới.

AI thường được xác định bởi đại biểu toán học là đại diện chức năng của một hành động; do đó nếu toán học của bạn không tốt; mã của bạn sẽ không tốt.

Mạng nơron không quan tâm đến nền tảng nào chúng được viết khi chúng được lắp ráp; họ là hội.

Các vấn đề liên quan