На це важко відповісти, тому що, як і зі штучним інтелектом, колись ми це зробимо, це буде тому, що ми написали програму, яка це робить. І критики скажуть: "ну, ця машина насправді не сама програмує! Вона точно відповідає програмі, яку ви їй дали!"
Ну так. Що б ми ніколи не робили з комп’ютерами, ми зробимо, надавши йому якусь програму, і вона виконає її. Якщо це аргумент проти, то ми нічого не можемо досягти. І все-таки в якийсь момент люди думали, що комп'ютер, що грає в шахи, буде очевидно розумним. Тепер вони можуть, і ми точно знаємо як, і не вважаємо, що це розумно. Підводні човни все ще не вміють плавати.
Отже - розглянемо кілька прикладів.
З десятиліть у нас були генератори парсеру . Ви даєте їм опис мови, вона обробляється, і результат - код для аналізатора для цієї мови. Ми точно знаємо, як це робиться, але хіба це не саме комп’ютерне програмування?
По-друге - редактори, які повідомляють, що ви допустили помилку (синтаксична помилка, неіснуюча змінна тощо). Він нічого не програмує сам, але може сказати вам, що ви щось зробили не так. Це дуже багато лише на поверхні.
Мови, на яких ви можете просто клацнути та перетягнути елементи управління інтерфейсом, а код, який фактично змусить їх працювати, генерується автоматично.
Компілятори JIT. Програмне забезпечення, яке може розпізнати гарячі точки в поточному програмному забезпеченні та замінити його на високооптимізований складений код, ефективно оптимізуючи себе під час його роботи. Я думаю, що це приклад того, що може здатися самим машинним програмуванням, поки ви точно не дізнаєтесь, як це відбувається, а потім виявляється просто робити те, що програміст сказав, як завжди.
Загальна гра. Це цікава сфера досліджень, в якій дослідники пишуть програми, які можуть читати описи правил ігор, щоб потім програми грали один проти одного. Тож замість програми «тик-так-нок» або шахової програми - це програми, які читають правила тик-так-ніг або шахи, або якась нова гра, складена на місці, і потім вони можуть грати в них. Програма сама по собі не програмує, але вона грає в шахи без того, щоб правила в шахи були жорстко закодовані. Був час, коли це, очевидно, вважатиметься комп'ютером, який сам щось навчає.
Ми зробили багато маленьких кроків у загальному напрямку.
Але я не можу придумати жодних програм, які переписують себе за результатами попередніх запусків, або які можуть розпізнати застарілі або неефективні підпрограми у власному коді. Я думаю, що одного разу у нас це буде, і ми вважатимемо це взагалі нічого особливим, оскільки це буде лише якась особливість останнього компілятора ...