Przez kilka dziesięcioleci językiem programowania AI był Prolog lub LISP , a kilka innych nie było tak dobrze znanych . Większość z nich została zaprojektowana przed latami 70.
Zmiany zdarzają się często w wielu innych domenach w określonych językach, ale w domenie sztucznej inteligencji nie pojawiło się tak dużo, jak w określonych językach internetowych lub skryptach itp.
Czy istnieją najnowsze języki programowania, które miały na celu zmianę gry w sztucznej inteligencji i wyciąganie wniosków z niedoskonałości poprzednich języków?
lisp
artificial-intelligence
prolog
Eduard Florinescu
źródło
źródło
Odpowiedzi:
Kurs sztucznej inteligencji, w którym uczestniczyłem online, prowadzony w Stanford, zalecał użycie Pythona do odrabiania zadań domowych. Wierzę, że Georgia Tech nadal korzysta z LISP.
Błędem jest to, że „nowy” jest „dobry”. Badania nad AI są jedną z najstarszych dyscyplin komputerowych. Ucieka z subpól, gdy ludzie zdają sobie sprawę, że techniki z nich można wykorzystać gdzie indziej. Przetwarzanie języka, uczenie maszynowe i eksploracja danych to przykłady „praktycznych” aplikacji korzystających z ogromnej liczby języków.
Więc mniej zmieniło się główne pole niż zostało zmienione w ogromną gamę powiązanych dziedzin. Przypomina to powiedzenie „obliczeń naukowych” i oczekiwanie, że będzie to oznaczało rozwiązanie równań liniowych.
Języki, o których wspomniałeś, ewoluowały całkiem sporo w ciągu ostatnich 20 lub 30 lat. Lisp zrodził Common Lisp i Clojure. Prolog pojawił się Visual Prolog (ma przedmioty ...) i Mercury (zabierz Haskella i Prologa, zamknij je razem w pokoju ... stań daleko i przygotuj się do ucieczki).
Biorąc pod uwagę, że badania nad sztuczną inteligencją są bardziej teoretyczne, sensowne byłoby skoncentrowanie się na teorii (matematyce), a nie na praktyczności (językach).
Biorąc to wszystko pod uwagę, największym innowatorem technologii AI, który postawiłem, jest Google. Zwykle faworyzują Pythona (i Go i Dart, ale to nie ma sensu). Tak więc powiedziałbym, że Python jest „ostatnim wybranym językiem”, ale możesz również użyć Haskell lub OCaml lub F # lub C # lub nawet Java.
źródło
Odpowiedzi na pytania można znaleźć w ostatnim wydaniu specjalnym „Sprachen der KI” („Języki AI”) niemieckiego czasopisma AI KI - Künstliche Intelligenz , tom 26, numer 1 / luty 2012, opublikowanym przez Springera. Jestem współautorem jednej z zawartych w nim części dyskusji: „Jakiego języka używasz do tworzenia programów sztucznej inteligencji i dlaczego?” Oto jego przedruk: http://ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf
Podsumowując, niektórzy badacze AI wciąż przysięgają na klasyczne języki AI Lisp i Prolog. Inni używają głównych języków, takich jak C ++, Java lub Python. Jeszcze inni lubią odkrywać nowe ezoteryczne języki programowania.
Uważam, że w AI nie ma nic specjalnego, co wymagałoby specjalnych języków programowania. Na ogół naukowcy chcą języków programowania, które umożliwiają szybkie prototypowanie. Jest to coś, w czym świetnie nadają się stare języki AI (Lisp, Prolog) i nowsze języki „skryptowe” (Perl, Python, Ruby lub najnowsze języki JVM, takie jak Clojure).
Niektórzy badacze chcą wyjść poza prototypowanie lub mają specjalne wymagania (np. Duże zbiory danych) i muszą ponownie wdrożyć swoje algorytmy w skompilowanych lub silnie typowanych językach, takich jak C, C ++ lub Java, po zakończeniu fazy programowania eksploracyjnego i mają lepsza przyczepność do problemu. Niektórzy powiedzieliby, że w tym momencie (kiedy problem jest dobrze zrozumiany) nie masz już do czynienia z AI.
Wracając do ostatniego pytania, wszystkie znaczące zmiany w nowych językach sztucznej inteligencji, o których wiem, są inspirowane programowaniem opartym na ograniczeniach. Niektórzy weszli w implementacje Prologu, takie jak SICStus i SWI, inni stworzyli języki podobne do Prologu, takie jak Mercury i Mozart / Oz. Oczywiście prawdopodobnie pojawią się nowe znaczące zmiany, o których nie wiem.
źródło
Podczas gdy większość tych odpowiedzi skupia się na słowie „język”, ponieważ użyłeś go w swoim pytaniu, nie sądzę, że powinieneś myśleć konkretnym językiem, myśląc o AI.
Pracuję z tą technologią od lat i obecnie pracuję z Proof Assistants i przekształcam trochę kodu z OCaml do F #. To nie język osiąga sztuczną inteligencję, ale określone algorytmy zaimplementowane w tym języku. Dla PROLOG jest to silnik wnioskowania oparty na unifikacji . Teraz, jeśli zaczniesz od zjednoczenia i przyjrzysz się, jak został on dostosowany i zaawansowany przez lata, myślę, że znajdziesz postęp, którego szukasz. Nie skupiaj się na języku, skup się na algorytmach.
Jako przykład, wnioskowanie typu w językach funkcjonalnych wykorzystuje Hindley – Milner, który opiera się na unifikacji.
Kolejny przykład specyficzny dla asystenta dowodu znajduje się tutaj , zauważ prolog.ml. Silnik wnioskowania dla prologu jest zaimplementowany w OCaml i jest tłumaczony na F #. Tak więc, chociaż OCaml i F # nie są normalnie zapisywane jako języki AI, są one w pełni zdolne do implementacji algorytmów AI.
źródło
Powiedziałbym, że to zależy od tego, co masz na myśli przez AI. Uczenie maszynowe generalnie uległo szybkiej ewolucji narzędzi, dlatego w Pythonie, C #, Ruby, OCaml i Java, żeby wymienić tylko kilka.
Jeśli zajmujesz się przetwarzaniem danych na dużą skalę w celu budowania takich rzeczy, jak silniki rekomendacji, filtrowanie grupowe lub inne rodzaje problemów związanych z uczeniem się bez nadzoru lub nadzorowanego, możesz rzucić okiem na Mahout . Nie jest to tak naprawdę „język programowania”, ale zestaw narzędzi do tego rodzaju problemów. Możesz pisać kod modelu w Javie lub innych językach JVM, takich jak groovy (dynamiczny, dość ekspresyjny język) lub clojure (seplenienie).
Nie jestem pewien, dlaczego uważa Pan Lisp za datę; stąd pochodzi większość „nowych” funkcji językowych w innych językach (zamknięcia itp.).
Oczywiście techniki uczenia maszynowego przeważnie zmierzają w kierunku modeli probabilistycznych niż w oparciu o logikę binarną, podejście oparte na drzewku decyzyjnym, od którego zaczęły się początkowe wysiłki AI, więc można argumentować, że uczenie maszynowe jest odgałęzieniem lub odejściem od dużego namiotu AI.
źródło
Językiem wyboru AI, z którego korzystałem przed laty, był Prolog, który ma wersję Visual Prolog dostarczaną z IDE, jak w Delphi.
Prolog (i jego wersja GUI Visual Prolog) to język programowania logiki ogólnego zastosowania związany ze sztuczną inteligencją i językoznawstwem obliczeniowym.
Jednak najnowszy trend pokazuje, że każdy język OOP, taki jak C #, Java, Python, Haskell itp., Staje się programowalny dla aplikacji AI.
źródło