Matriks bersyarat ketidakakuratan untuk jaringan saraf dan satu set uji 500 program dengan panjang 3 baris. Setiap sel berisi probabilitas rata-rata dari hasil positif palsu (dalam cetakan besar) dan jumlah program uji dari mana nilai ini diturunkan (dalam cetakan lebih kecil, dalam kurung). Saturasi warna berkorelasi dengan probabilitas false positiveProgrammer akan segera memiliki penolong yang baik: jaringan saraf pintar yang dapat melakukan tugas-tugas rutin. Selain itu, dengan bantuan jaringan saraf seperti itu, orang dapat membuat program tanpa mengetahui sintaksis bahasa tertentu dan tanpa benar-benar dapat memprogram. Kita perlu membuat algoritma dan mengatur tugas - dan jaringan saraf akan menulis kode untuk menyelesaikannya.
Akibatnya, semua pekerjaan akan menjadi jauh lebih produktif: "Orang akan dapat menciptakan sistem yang tidak mungkin dibuat sebelumnya," kata seorang ahli independen
Armando Solar-Lezama dari Massachusetts Institute of Technology, dalam
komentar untuk
New Scientist .
Para peneliti dari Microsoft dan Universitas Cambridge telah mengembangkan sistem yang disebut
DeepCoder , yang sekarang dengan benar memecahkan masalah sederhana dari kompetisi pemrograman sekolah. DeepCoder menggunakan teknik yang disebut Sintesis Program Induktif, yang dikenal banyak pengembang. Dia mengambil baris kode dari program lain - dan membuat program uniknya sendiri. Penting untuk diingat bahwa DeepCoder, seperti sistem sintesis perangkat lunak lainnya, menggunakan bahasa khusus domain (DSL) yang khusus untuk aplikasi tertentu. Ini bisa disebut "bahasa mini" atau "bahasa pemrograman terpotong." Ini hanya berisi sembilan fungsi urutan pertama:
KEPALA, TERAKHIR, MENGAMBIL, DROP, AKSES, MINIMUM, MAKSIMUM, REVERSE, SORT, SUM
dan lima fungsi tingkat tinggi:
PETA, FILTER, COUNT, ZIPWITH, SCANL1
Cakupan bahasa domain-spesifik terbatas relatif terhadap bahasa pemrograman tujuan umum.
Pilihan garis untuk mengkompilasi program dilakukan setelah analisis nilai input dan output masing-masing fragmen kode. Dalam karya ilmiah, Anda dapat mempelajari sembilan contoh program 5-line yang ditulis oleh jaringan saraf DeepCoder. Misalnya, berikut adalah solusi untuk masalah permen (di sebelah kiri) dengan deskripsi teks (di sebelah kanan) dan nilai input (di tengah):

Dalam mencari baris kode yang sesuai, DeepCoder melampaui man: ia mampu mengindeks dan menganalisis lebih banyak kode sumber daripada yang mampu dilakukan manusia. Sistem pembelajaran mesin belajar untuk memahami bagaimana menggunakan pola-pola ini - dan sebelumnya membentuk dasar. Selain itu, jaringan saraf akan menghubungkan garis-garis yang ditemukan dengan cara yang tidak pernah terjadi untuk menghubungkannya dengan orang yang hidup. Melalui coba-coba, jaringan saraf secara bertahap belajar untuk mencapai tujuannya. Implementasi sintesis perangkat lunak dalam sistem DeepCoder ini disebut Learning Inductive Program Synthesis (LIPS).
Representasi skematis dari encoder kopling langsung dan dekoder DeepCoderIlustrasi di bawah ini menunjukkan bagaimana jaringan saraf DeepCoder memprediksi probabilitas setiap fungsi yang muncul dalam kode sumber.

Semua keunggulan ini memungkinkan DeepCoder untuk menulis program lebih cepat dari pendahulunya. Dia menulis program tiga baris dalam sepersekian detik, sedangkan sistem sebelumnya membutuhkan beberapa kali atau puluhan kali lebih banyak waktu untuk mencoba semua opsi yang mungkin. Sebagai contoh, tabel menunjukkan kecepatan menghasilkan program dari tiga baris kode dengan berbagai tugas.

Program dari lima baris kode dihasilkan dengan urutan yang lebih lambat. Grafik di sebelah kanan menunjukkan ketergantungan kecepatan pada panjang program.

Saat Anda belajar, sistem memahami kombinasi kode mana yang berfungsi dan yang tidak. Dia meningkat dalam pemrograman dengan setiap tugas baru.
Teknologi ini berpotensi digunakan untuk refactor dan mencari bug dalam program. Dia akan menemukan garis yang salah dan menggantinya dengan garis yang benar dari program lain. Para penulis percaya bahwa dengan bantuannya mudah untuk membuat program rutin dengan gaya
IFTTT yang terkenal - untuk mengotomatisasi interaksi dasar antara berbagai layanan web. Bahkan non-programmer dapat membuat instruksi sederhana seperti memilih foto dari Facebook dan mengurutkannya sesuai dengan kriteria yang ditentukan. Program sederhana semacam itu dapat dibuat dalam hitungan menit tanpa pengetahuan pemrograman.
Tentu saja, alat-alat seperti itu belum bisa menggantikan programmer yang sebenarnya. Mereka dianggap hanya sebagai alat bantu. Pengembang DeepCoder sendiri akan sangat berguna di masa depan: itu akan membebaskan diri dari beban operasi rutin dan akan memungkinkan Anda untuk berkonsentrasi pada tugas yang lebih kompleks dan penting.
Saat ini, DeepCoder mampu menyelesaikan masalah pemrograman, bekerja dengan sekitar lima baris kode. Tentu saja, dalam bahasa pemrograman tingkat lanjut, lima baris kode memungkinkan Anda untuk menulis program yang sangat berguna, tetapi masih sangat sederhana, hal-hal dasar. Para ahli percaya bahwa tidak mungkin untuk menghasilkan program yang kompleks dengan sejumlah besar kode menggunakan sintesis perangkat lunak. Di sisi lain, dengan bantuan manusia hal ini dimungkinkan. Bagaimanapun, program besar terdiri dari sejumlah besar fragmen kecil.
Setidaknya dalam beberapa tahun ke depan, sebagian besar programmer tidak menghadapi kehilangan pekerjaan karena otomatisasi pengkodean. Tetapi metode pembelajaran mesin meningkat dengan sangat cepat. Sungguh menakjubkan betapa banyak yang telah dilakukan di daerah ini belakangan ini.