Mój przyjaciel bez znajomości programowania zadał mi to pytanie i uznałem je za interesujące.
Myślę, że nie jest to możliwe, ponieważ wymagałoby to naprawdę zaawansowanej sztucznej inteligencji zdolnej do analizy tekstu problemu, przemyślenia rozwiązania i zaprogramowania go. Samo myślenie o maszynie, która może zaprogramować prosty kalkulator, wydaje mi się dość zaawansowane.
Ale może się mylę i chciałbym wiedzieć, co o tym sądzisz i czy znasz jakieś artykuły / badania na ten temat, lub czy już istnieje, czy istnieje możliwość wyboru specyfikacji i uzyskania maszyna do samodzielnego zaprogramowania do tej „specyfikacji”?
Odpowiedzi:
Joel faktycznie odpowiedział na to kilka lat temu . Rzeczywiste znaczenie „naucz maszynę samodzielnego programowania” to „naucz maszynę, jak pobrać specyfikację i stworzyć program, który odpowiada tej specyfikacji”. I mając to na uwadze:
Jedynym sposobem na obejście tego byłoby stworzenie rzeczywistego, inteligentnego komputera z wystarczającą intuicją, aby wykonać wszystkie puste pola, które ty i ja robimy automatycznie, cały czas, przy tworzeniu oprogramowania ... w takim przypadku ty skończy z komputerem, który sam się programuje, a także ludzkim programistą. ;)
źródło
Jasne, możemy zrobić to przez cały ten czas (na bardzo ograniczonych podzbiorów problemy). Wyobrażenie sobie, że wykonasz kolejny krok lub dwa i powiązasz coś takiego jak Siri z wejściem tych generatorów kodu (lub czegoś takiego jak Wolfram Alpha), które z kolei zapisuje kod i rozwiązuje problem, jest dość trywialne . Spodziewałbym się, że coś już istnieje gdzieś, aby zrobić najbardziej podstawowe rzeczy.
Problem z pisaniem złożonego oprogramowania dla biznesu nie polega na tworzeniu programu do pisania kodu - jest pisaniu programu spełniającego wymagania.
źródło
Myślę, że odpowiedź @Mason Wheeler zawiera kluczowy pomysł. Wygląda to tak:
Entropia Shannona w kółko i krzyżyk jest naprawdę niewielka. Nazywamy więc grę kółko i krzyżyk „rozwiązaną” lub „deterministyczną” grą. To nie jest naprawdę interesujące, gdy przejdziesz szkołę podstawową. Warcaby mają wyższą entropię, jeśli weźmie się pod uwagę entropię wszystkich możliwych gier, w które można grać. Ale warcaby również są grą „rozwiązaną” lub „deterministyczną”. Jeśli wykonasz ruch jako pierwszy, powinieneś wygrać lub zremisować. Szachy mają znacznie wyższą entropię, ale żaden człowiek nie pokonał najlepszych graczy komputerowych od 2006 roku. W pewnym sensie komputery opanowały szachy w sposób, którego ludzie nie potrafią. Big Blue przeanalizował wikipedię, a następnie zagrał w Jeopardy przeciwko ludzkim graczom i pobił ich mocno.
Co dalej? Jaka jest entropia powieści, czy sonety Shakepeare'a?
Podobnie w przestrzeni programowania prawdopodobnie pojawi się rosnący zestaw kompetencji. Prolog zajął się zestawem problemów z komputerem, na którym skonfigurowałeś problem, a komputer rozwiązał odpowiedź. Ktoś prawdopodobnie znajdzie klasy prostych problemów programistycznych, które komputer będzie w stanie zaspokoić, itp. Następnie ktoś wykorzysta to, aby uzyskać „dostosowanie na żądanie” w obrębie pewnego obszaru problemów. I tak to idzie.
Myślę, że pytanie zmienia się w to, jak długo AI potrzebuje opanowania danej ilości entropii ... i ile zasobów obliczeniowych jest wymaganych? Myślę, że to niewyobrażalne, że komputer nie byłby w stanie opanować entropii opanowanej przez najlepszy ludzki mózg - w mózgach nie ma magii - ale pytanie brzmi: ile rdzeni potrzebujesz i ile stuleci zajmie, aby się tam dostać?
Ale ... czy komputer kiedykolwiek będzie w stanie wykonać moją pracę? Niepojęty!
źródło
Trudno na to odpowiedzieć, ponieważ podobnie jak w przypadku sztucznej inteligencji, kiedy to osiągniemy, będzie tak, ponieważ będziemy pisać program, który to robi. A krytycy powiedzą: „Cóż, ta maszyna tak naprawdę sama się nie programuje!
No tak. Cokolwiek zrobimy z komputerami, zrobimy to, dając mu jakiś program i on go wykona. Jeśli jest to argument przeciwko, nie możemy nic osiągnąć. A jednak w pewnym momencie ludzie myśleli, że komputer do gry w szachy będzie oczywiście inteligentny. Teraz mogą, a my wiemy dokładnie jak i nie uważamy, że to inteligentne. Okręty podwodne wciąż nie potrafią pływać.
Więc - rozważ kilka przykładów.
Od dziesięcioleci mamy generatory analizatorów składni . Dajesz im opis języka, jest on przetwarzany, a wynikiem jest kod parsera dla tego języka. Wiemy dokładnie, jak się to robi, ale czy to nie samo oprogramowanie komputerowe?
Po drugie - edytory, które informują o popełnieniu błędu (błąd składni, nieistniejąca zmienna itp.). Sam niczego nie programuje, ale może powiedzieć, że zrobiłeś coś złego. Jest bardzo na powierzchni.
Języki, w których można po prostu kliknąć i przeciągnąć elementy sterujące interfejsu użytkownika, a kod, który sprawi, że będą działać, jest generowany automatycznie.
Kompilatory JIT. Oprogramowanie, które rozpoznaje punkty aktywne w aktualnie uruchomionym oprogramowaniu i zastępuje niektóre z nich wysoce zoptymalizowanym skompilowanym kodem, skutecznie optymalizując się podczas działania. Myślę, że jest to przykład tego, co może wydawać się samym programowaniem maszynowym, dopóki nie dowiesz się dokładnie, jak to się dzieje, a potem okazuje się, że robi to, co programista powiedział, jak zawsze.
Ogólna gra. Jest to interesująca dziedzina badań, w której badacze piszą programy, które potrafią czytać opisy zasad gier, które następnie grają przeciwko sobie. Więc zamiast programu kółko i krzyżyk lub programu szachowego, są to programy, które czytają zasady gry w kółko i krzyżyk lub szachy lub jakąś nową grę wymyśloną na miejscu, a następnie mogą je zagrać. Program sam się nie programuje, ale gra w szachy bez ustalonych zasad gry w szachy. Był czas, kiedy to byłoby wyraźnie uważane za komputer, który sam się czegoś uczy.
Zrobiliśmy wiele małych kroków w ogólnym kierunku.
Ale nie mogę wymyślić żadnych programów, które same przepisują się na podstawie wyników wcześniejszych uruchomień lub które mogą rozpoznać przestarzałe lub nieefektywne procedury we własnym kodzie. Myślę, że któregoś dnia będziemy to mieć i uważamy, że to nic specjalnego, ponieważ będzie to tylko funkcja najnowszego kompilatora ...
źródło
Nie obecnie i nie w przewidywalnej przyszłości, ponieważ potrzebujesz całej niesamowitej złożoności ludzkiego mózgu, aby stworzyć program. I nawet wtedy te mózgi muszą być dobrze wyszkolone, aby robić to właściwie, i nawet wtedy nie wszystkie z nich są w stanie wykonać to zadanie, choć można argumentować, że przy wystarczającym czasie można przeszkolić każdego do programowania.
Wziąłem ze sposobu, w jaki sformułowałeś swoje pytanie, że nie mówisz o prostych emulowanych zadaniach.
Poprosiłeś o artykuły i ten artykuł na blogach naukowych dotyczący rozwoju inteligencji, który na wiele sposobów odpowiada na to pytanie.
źródło