Ziua in care calculatoarele isi scriu programele

Purtam o discutie cu un coleg ca munca, in general, tinde sa fie automatizata si sa fie preluata de masini. Masinile fac lucrurile mult mai precis, mai rapid, nu obosesc, nu isi iau zile libere si nu isi cer drepturile. Dpdv al intreprinzatorului ofera numai beneficii. In 2022 Amazon a testat livrarea de produse cu drona, in 2014 Google a creat masina fara sofer. Automatizarile sunt deja o parte importanta din activitatea noastra, si asta aduce lucruri bune si pentru consumatori, dar nu despre asta este vorba aici.

Intrebarea care s-a pus: cand calculatoarele isi vor scrie propriile programe, si vor suplini munca unui programator? Ar face-o mult mai bine decat un om, mai optimizat, mai precis, mai rapid, etc.

Pai...ziua in care calculatoarele isi scriu programele...a sosit...acum peste 30 de ani.

Aproape nimeni in ziua de azi nu mai scrie programe propriu-zise. Toate acele linii de cod in C, C++, Delphi, .NET, etc, sunt doar instructiuni despre cum trebuie sa fie programul, nu programul. Aici nu fac referire la PHP, Perl, Python, Javascript, etc, intrucat acestea sunt de tip scripting language si detaliez mai jos.

Sa explic:

Orice program reprezinta o serie de instructiuni pentru procesor in limbaj cod-masina sau instructiuni pentru SO (sistemul de operare). Sunt instructiuni foarte precise si fara ambiguitati, sinonime, etc, pentru ca procesoarele cunosc un numar limitat de instructiuni, iar acest numar creste foarte rar de la o generatie la alta, din simplul motiv ca procesoarele trebuie noi trebuie sa fie compatibile cu cele vechi si limbajul cod-masina a celor vechi nu poate fi actualizat fiind hard-codat in fire si tranzistori.

Procesoarele se impart in cateva arhitecturi: Intel (PC si Laptop), ARM (smart-phone-uri), PIC, Atmega, etc.

Limbajele de programare sunt multe, sunt dezvoltate continuu si se creaza altele noi periodic. Chiar daca un cod scris intr-un limbaj oarecare reprezinta si ele niste instructiuni, procesorul nu poate cunoaste toate instructiunile acestor limbaje, astfel ca acelea sunt instructiuni pentru compilator sa stie cum trebuie sa creeze programul, "vorbind pe limba" OS-ului sau a procesorului pentru care este creat. Acelasi cod sursa va fi compilat fundamental diferit pentru diferite arhitecturi sau OS. Mai adaug si concepte mai avansate precum obiecte, liste, cozi, arbori, grafuri, etc. Procesorul nu cunoaste in mod direct aceste concepte si compilatoarele au diferite moduri de a le implementa in limbaj cod-masina.

 

Spuneam mai sus de scripting languages precum PHP, Perl, Python, Javascript, etc.
Aceste aplicatii nici macar nu sunt compilate in limbaj cod-masina. Pentru a rula, au nevoie de un program interpretor... care este compilat pentru procesoare si OS-uri specifice.

Mai nou, inteligenta artificiala ajuta la a scrie chiar si cod sursa. Genereaza functii corecte si complexe pentru diferite task-uri, creaza unit-test-uri pornind de la clase existente, explica concepte, vine cu solutii si ne bea cafeaua. 

Inca cred ca suntem departe de momentul in care calculatoarele isi vor scrie singure programele. Chiar daca la un moment dat vor crea aplicatii complete, tot vor fi niste oameni care vor identifica o nevoie a unei organizatii, si cel putin un programator care va transforma nevoia in instructiuni chiar si pentru un AI, va testa solutia si va veni cu ajustari si dezvoltare.

Ziua in care la sedintele de brain-storming va participa si un AI care va asculta tot ce se discuta si va crea solutia... va fi cea mai proasta zi pentru toti. Un astfel de AI va putea inlocui pe oricine a carui munca nu se bazeaza pe propriile maini (in agricultura de exemplu): programare, HR, justitie, medicina non-invaziva, consultanta, finante, presa, etc, dar si management.

Asa ca sefu'/sefa', nu va bucurati prea devreme. Ne luam un AI care face treaba tuturor din echipa si va facem concurenta :)