„Нов крайъгълен камък в състезателното програмиране“ беше провъзгласено от британското дъщерно дружество за изкуствен интелект на Google DeepMind по-рано този месец, когато представи AlphaCode, система, която твърди, че може да пише пълноценни компютърни програми, които се сравняват благоприятно с работата на хората. Разработката на софтуер отдавна е определена като област, в която AI може да има значително въздействие, и с напредъка, който AlphaCode и други системи предлагат, реалистична ли е перспективата машините да заменят човешките програмисти?
Системата AlphaCode на DeepMind е победила 54% от участниците в състезание по кодиране. (Снимка от Daniel Acker/Bloomberg чрез Getty Images)
DeepMind казва, че AlphaCode е в състояние да разбере проблем, след което да напише програма, която решава този проблем. Той казва, че е тествал системата срещу хора, които са участвали в състезания по кодиране и е установил, че нейните резултати се нареждат сред първите 54% от човешките участници.
„Решаването на проблеми в състезателното програмиране е наистина трудно нещо, което изисква както добри умения за кодиране, така и креативност за решаване на проблеми от хората“, каза софтуерният инженер на Google Петр Митричев, който участва в състезания по кодиране. „Бях много впечатлен, че AlphaCode може да постигне напредък в тази област, и бях развълнуван да видя как моделът използва своето разбиране на изявленията, за да създаде код и да ръководи произволното си изследване за създаване на решения.“
Тъй като AlphaCode демонстрира толкова впечатляващ напредък, на Митричев и колегите му може да им бъде простено да гледат през рамо.
Свързани
AI и автоматизацияВъзстановяването от пандемия дава на високорисковите работни места „временно отлагане“ от автоматизацията
Колко значим е AlphaCode на DeepMind?
DeepMind използва комбинация от неконтролирано и контролирано машинно обучение за обучение на AI моделите, които са в основата на AlphaCode. Първо системата погълна 715 гигабайта данни от хранилището за кодиране GitHub, преди екипът на DeepMind да я прецизира, използвайки създадена от него база данни с изявления за проблеми, тестови случаи и изпращания – правилни и неправилни – от конкурси за кодиране.
Данни, прозрения и анализи, доставени до вас Преглед на всички бюлетини от екипа на Tech Monitor Регистрирайте се за нашите бюлетиниКогато му бъде представен нов проблем, AlphaCode претърсва информацията, с която разполага, предлага хиляди или, в някои случаи, милиони решения, след което ги филтрира до десетте най-добри, които изпраща за конкурса. Ако едно от тях се окаже правилно, екипът го счита за успех.
Съдържание от нашите партньори
Тези банки трябва да се трансформират бързо или да пропуснат предимствата на отвореното банкиране
Използвайте облака и експертизата, за да оптимизирате ангажиментите от въвеждането до приключването
Как предприятията могат най-добре да се подготвят за дигитализация на финансите
Този процес отличава AlphaCode от други инструменти за кодиране с изкуствен интелект, като OpenAI Codex, които могат да генерират специфични кодови фрагменти по команда. „Това е пробив в смисъл, че те решават проблеми с програмирането, много по-сложни от предишните системи“, казва професор Ърнест Дейвис от катедрата по компютърни науки в Нюйоркския университет.
Но професор Дейвис казва, че не е без ограничения. Тъй като неговият метод включва измислянето на толкова много потенциални решения на проблем (преди да бъдат филтрирани, за да се намерят най-добрите), количеството данни за обучение, необходими за писане на по-сложни програми, вероятно ще бъде огромно. „Разумно е да се очаква, че броят на необходимите проби нараства експоненциално с продължителността на програмата“, казва професор Дейвис. Той също така разчита на уместността на своите данни за обучение, за да предложи точни решения, нещо, което човешки програмист би могъл да заобиколи, дори и да няма познания по темата.
AlphaCode е полезен принос към изследванията на ИИ, но кодирането на ИИ на ниво умел човек все още е на светлинни години разстояние.
Дмитрий Бахданау, ServiceNow
И в сравнение с другите AI постижения на DeepMind, AlphaCode е сравнително малък успех, твърди Дмитрий Бахданау, изследовател в доставчика на софтуер за работни процеси ServiceNow, който е проучил как работи AlphaCode. „В този момент AlphaCode е полезен принос към изследванията на ИИ, но кодирането на ИИ на ниво опитен човек все още е на светлинни години“, казва той. „Това не е AlphaGo от гледна точка на побеждаване на хора, нито AlphaFold от гледна точка на революционизиране на цяла област на науката.“
Ще AI ще замени ли хората програмисти?
Дори ако AI като AlphaCode може да преодолее тези ограничения, условията, при които той се представя при тестване, са значително различни от света на професионалната разработка на софтуер, казва д-р Питър Шрамел, преподавател по компютърни науки в Университета на Съсекс и технически директор и съосновател на софтуерната компания Diffblue. „Предизвикателствата при кодирането са относително специфични, тъй като заданията трябва да бъдат възможно най-недвусмислени, за да можем да сравняваме решенията по честен начин“, обяснява той. „Описанието е доста добре структурирано и примерите са дадени по последователен начин.“
Развитието в реалния свят е „различен звяр“, твърди той. „Изискванията са неясни и определени в постепенни итерации“, казва той. „Разработчиците на софтуер договарят изискванията в разговори със заинтересованите страни, прилагат първа версия, след това я демонстрират и обсъждат със заинтересованите страни какво да подобрят за следващата итерация.“ Докато в предизвикателството за кодиране „съвършено се знае какви са изискванията“, казва д-р Шрамел, „в разработката на софтуер в реалния свят извличането на изискванията от главите на заинтересованите страни е основното предизвикателство.“
Бахданау се съгласява и казва, че не вярва, че много хора в индустрията „сериозно гледат [ИИ да замени човешките програмисти] като цел“. „Хората разбират по-широкия контекст, действителната цел в реалния свят защо кодът трябва да бъде написан“, казва той. „AlphaCode, Codex и други са просто много напреднали статистически методи, които съдържат милиарди гигабайти код, дестилиран в тях. Въпреки това AI има потенциала да помогне на разработчиците на човешки софтуер да вършат работата си по-бързо.
Как AI ще подпомогне разработката на софтуер?
Но с продължаващия недостиг на технически умения, който заплашва да забави темпото на дигиталната трансформация, AI има значителна роля в разработката на софтуер , подпомагайки все по-натоварени ИТ екипи. Tech Monitor съобщи за нарастващата популярност на системи с нисък код и без код, които позволяват на нетехническия персонал да създава цифрови функции, които да подпомагат работата им, като се очаква безкод да представлява 65% на разработката на приложения до 2024 г., според Gartner.
За професионалистите инструменти като GitHub CoPilot, който предлага редове код или функции за подпомагане на разработката, вероятно ще бъдат най-продуктивното използване на AI в краткосрочен до средносрочен план, твърди д-р Шрамел. „Самото разработване на софтуер до голяма степен се е възползвало от автоматизацията от самото начало“, казва той. „Вече никой не създава ръчно машинен код. Автоматизирани инструменти като компилатори и генератори на код трансформират официални спецификации на високо ниво на приложение в машинно изпълним код.“
Самото разработване на софтуер до голяма степен се е възползвало от автоматизацията от самото начало.
Д-р Питър Шрамел, Университет на Съсекс
Възходът на тези компилатори доведе до автоматизиране на „досадни задачи“, но не доведе до намаляване на броя на човешките разработчици, добавя д-р Шрамел. „Една от причините може да е, че много дейности по разработване на софтуер, като инженеринг на изисквания, разчитат на широк спектър от знания за домейна и трябва да се справят с големи степени на неяснота“, казва той. „Тези дейности са много по-трудни за автоматизиране, отколкото дейности, които са по-редовни, като кодиране от добре дефинирани спецификации и тестване.“
Наистина по-нататъшната автоматизация на системите за тестване вероятно ще бъде следващата граница на ИИ в програмирането, казва д-р Шрамел. С нарастването на автоматизацията Бахданау вярва, че все по-важна роля за човешките разработчици ще бъде да гарантират, че начинът, по който AI генерира код, е разбран. „Професионалните разработчици ще трябва да разберат и проверят алгоритъма, който AI предлага“, казва той. „За гражданските разработчици, използващи интерфейси за програмиране с нисък код или без код, летвата за надеждност на AI ще бъде още по-висока и те ще се нуждаят от опит на разработчици, който обяснява логиката, предлагана от AI.“
Теми в тази статия: Разработчици на софтуер