{"id":34063,"date":"2018-09-19T18:10:58","date_gmt":"2018-09-19T18:10:58","guid":{"rendered":"http:\/\/antonini.med.br\/?p=34063"},"modified":"2021-04-02T04:54:35","modified_gmt":"2021-04-02T04:54:35","slug":"a-inteligencia-artificial-que-escreve-programas","status":"publish","type":"post","link":"https:\/\/antonini.ddns.net\/?p=34063","title":{"rendered":"A intelig\u00eancia artificial que escreve programas"},"content":{"rendered":"<p style=\"text-align: justify;\"><b><em>Colabora\u00e7\u00e3o: Alessandro de Oliveira Faria<\/em><\/b><\/p>\n<p style=\"text-align: justify;\"><b><em>Data de Publica\u00e7\u00e3o: 19 de setembro de 2018<\/em><\/b><\/p>\n<p style=\"text-align: justify;\">Neste s\u00e9culo XXI a profiss\u00e3o mais solicitada \u00e9 a programa\u00e7\u00e3o, que agora parece receber uma excelente ferramenta, a intelig\u00eancia artificial. Veremos neste documento como utilizar um projeto de software livre que recorre aos recursos de intelig\u00eancia artificial para criar programas, mais especificamente sub-rotinas, m\u00e9todos e\/ou fun\u00e7\u00f5es.<\/p>\n<p style=\"text-align: justify;\">O projeto denominado BAYOU foi criado por cientistas da computa\u00e7\u00e3o da Universidade de Rice com o financiamento da Google e militares. A t\u00e9cnica utilizada \u00e9 deep learning, tomando como princ\u00edpio computacional a pesquisa para codifica\u00e7\u00e3o baseado em tags\/palavras-chave para o sistema desenvolver o software solicitado. O resultado do processamento \u00e9 um c\u00f3digo java criado pelo sistema conforme requisitado pelo &#8220;operador&#8221;.<\/p>\n<h2 style=\"text-align: justify;\">Linux: A Intelig\u00eancia Artificial que escreve programas<\/h2>\n<p style=\"text-align: justify;\">A tecnologia foi constru\u00edda por t\u00e9cnicos da Universidade de Rice com verbas disponibilizadas pelo ex\u00e9rcito americano e Google. Resumidamente o sistema analisa cerca de 1500 c\u00f3digo fontes de aplicativos Android, com aproximadamente 100 milh\u00f5es de linhas.<\/p>\n<p style=\"text-align: justify;\">Com toda esta base de informa\u00e7\u00e3o, alimentou-se a intelig\u00eancia artificial e o resultado foi um software para elaborar outro software. O aprendizado da informa\u00e7\u00e3o contextual \u00e9 o diferencial do projeto que permite obter linhas de c\u00f3digo baseado apenas em tags\/palavras chaves. Acredito ser uma excelente not\u00edcia, para o mundo da tecnologia, para melhorar cada vez mais a qualidade de c\u00f3digo, obter ganhos de produtividade e utilizar o talento dos programadores para resolver problemas realmente complexo e n\u00e3o tarefas que exige uma simples CRTL+C CRTL+V.<\/p>\n<p style=\"text-align: justify;\">O projeto ainda \u00e9 embrion\u00e1rio, mas promissor e n\u00e3o tem o prop\u00f3sito de substituir programadores, como um corretor de texto n\u00e3o substituiu um escritor. Pelo menos neste momento, o projeto gera rascunho \/sugest\u00f5es de linhas de c\u00f3digo relevantes para o trabalho que um desenvolvedor precisa elaborar. Mesmos assim acredito ser um passo muito importante para a ci\u00eancia da computa\u00e7\u00e3o e o projeto pode servir como base para um conceito muito inovador.<\/p>\n<h2 style=\"text-align: justify;\">M\u00c3O NA MASSA<\/h2>\n<p style=\"text-align: justify;\">Aqui veremos o que ser\u00e1 necess\u00e1rio para executar o projeto BAYOU, desde os seus requisitos at\u00e9 a instala\u00e7\u00e3o e execu\u00e7\u00e3o.<\/p>\n<h3 style=\"text-align: justify;\">Requisitos:<\/h3>\n<ul style=\"text-align: justify;\">\n<li>Linux (CLARO!)<\/li>\n<li>Maven<\/li>\n<li>Mavn-jansi<\/li>\n<li>Tensorflow<\/li>\n<li>Scikit-learn<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Para o texto tornar extenso, assumirei que o ambiente Linux com Java, Python e Maven est\u00e1 devidamente instalado e configurado.<\/p>\n<h3 style=\"text-align: justify;\">Instalando os pacotes Tensorflow e Scikit-learn<\/h3>\n<p style=\"text-align: justify;\">Com o ambiente python funcionando corretamente, utilize os comandos abaixo como super-usu\u00e1rio para resolver as depend\u00eancias python do projeto Bayou:<\/p>\n<pre class=\"comandos\"># pip install tensorflow\r\n# pip install scikit-learn\r\n<\/pre>\n<p style=\"text-align: justify;\">Para testar o funcionamento adequado do tensorflow, utilize as instru\u00e7\u00f5es a seguir. Se o resultado for similar, significa que o ambiente python est\u00e1 devidamente configurado.<\/p>\n<pre class=\"comandos\">$ python\r\n&gt;&gt;&gt; import tensorflow as tf\r\n&gt;&gt;&gt; hello = tf.constant('Hello, TensorFlow!')\r\n&gt;&gt;&gt; sess = tf.Session()\r\n&gt;&gt;&gt; print(sess.run(hello))\r\nb'Hello, TensorFlow!'\r\n<\/pre>\n<p style=\"text-align: justify;\">Agora efetue o download a partir do c\u00f3digo fonte.<\/p>\n<pre class=\"comandos\">$ git clone https:\/\/github.com\/capergroup\/bayou.git<\/pre>\n<p style=\"text-align: justify;\">Ap\u00f3s o download, siga o exemplo a seguir para resolver as depend\u00eancias java:<\/p>\n<pre class=\"comandos\">$ cd bayou\/tool_files\/build_scripts\r\n$ sudo .\/install_dependencies.sh\r\n<\/pre>\n<p>A compila\u00e7\u00e3o \u00e9 efetuada com o comando build:<\/p>\n<pre class=\"comandos\">.\/build.sh<\/pre>\n<p style=\"text-align: justify;\">Agora para executar o motor principal, entre na pasta out e execute o comando start_bayou.sh:<\/p>\n<pre class=\"comandos\">$ cd out\/\r\n$ .\/start_bayou.sh \r\n<span class=\"saida\">2018-09-08 20:53:52.604:INFO::main: Logging initialized @2482ms to org.eclipse.jetty.util.log.StdErrLog\r\n2018-09-08 20:53:52.896:INFO:oejs.Server:main: jetty-9.4.z-SNAPSHOT\r\n2018-09-08 20:53:52.992:INFO:oejs.AbstractConnector:main: Started ServerConnector@2cbb3d47{HTTP\/1.1,[http\/1.1]}{0.0.0.0:8081}\r\n2018-09-08 20:53:52.993:INFO:oejs.Server:main: Started @2871ms\r\n2018-09-08 20:53:52.994:INFO:oejs.Server:main: jetty-9.4.z-SNAPSHOT\r\n2018-09-08 20:53:52.995:INFO:oejs.AbstractConnector:main: Started ServerConnector@7ea37dbf{HTTP\/1.1,[http\/1.1]}{0.0.0.0:8080}\r\n2018-09-08 20:53:52.995:INFO:oejs.Server:main: Started @2873ms\r\n===================================\r\n   Loading Model. Please Wait.    \r\n===================================\r\nINFO:tensorflow:Restoring parameters from model49.ckpt\r\n===================================\r\n           Bayou Ready            \r\n===================================\r\n* Serving Flask app \"ast_server\" (lazy loading)\r\n* Environment: production\r\n  Use a production WSGI server instead.\r\n* Debug mode: off\r\n<\/span>\r\n<\/pre>\n<p style=\"text-align: justify;\">Agora crie um arquivo .java onde desejamos que a intelig\u00eancia artificial atue, coloque a TAG FILEWRITE para escrita de arquivo utilizando BUFFER.<\/p>\n<pre class=\"codigo\">import java.io.*;\r\nimport java.util.*;\r\npublic class Test {\r\n   void write(File file, String toWrite) {\r\n       {\r\n               \/\/\/ call:write type:FileWriter type:BufferedWriter\r\n       }\r\n   }  \r\n}<\/pre>\n<p style=\"text-align: justify;\">Agora utilize o comando synthesize para o sistema devolver o resultado do problema proposto:<\/p>\n<pre class=\"comandos\">.\/synthesize.sh exemplo\/Test.java<\/pre>\n<p>Veja o resultado:<\/p>\n<pre class=\"codigo\">---------- BEGIN PROGRAM  ----------\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileWriter;\r\n\r\npublic class Test {\r\n void write(File file, String toWrite) {\r\n   {\r\n     FileWriter fw1;\r\n     BufferedWriter bw1;\r\n     try {\r\n       fw1 = new FileWriter(file);\r\n       bw1 = new BufferedWriter(fw1);\r\n       bw1.write(toWrite);\r\n       bw1.close();\r\n     } catch (IOException _e) {\r\n     }\r\n     return;\r\n   }\r\n }\r\n}\r\n\r\n\u2014-------- BEGIN PROGRAM  ----------\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport java.io.IOException;\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileWriter;\r\n\r\npublic class Test {\r\n void write(File file, String toWrite) {\r\n   {\r\n     FileWriter fw1;\r\n     BufferedWriter bw1;\r\n     try {\r\n       fw1 = new FileWriter(toWrite);\r\n       bw1 = new BufferedWriter(fw1);\r\n       bw1.write(toWrite);\r\n       bw1.close();\r\n     } catch (IOException _e) {\r\n     }\r\n     return;\r\n   }\r\n }\r\n}\r\n\r\n\u2014-------- BEGIN PROGRAM  ----------\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileWriter;\r\n\r\npublic class Test {\r\n void write(File file, String toWrite) {\r\n   {\r\n     FileWriter fw1;\r\n     BufferedWriter bw1;\r\n     try {\r\n       fw1 = new FileWriter(file);\r\n       bw1 = new BufferedWriter(fw1);\r\n       bw1.write(toWrite);\r\n     } catch (IOException _e) {\r\n     }\r\n     return;\r\n   }\r\n }\r\n}\r\n\r\n\u2014-------- BEGIN PROGRAM  ----------\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileWriter;\r\n\r\npublic class Test {\r\n void write(File file, String toWrite) {\r\n   {\r\n     FileWriter fw1;\r\n     BufferedWriter bw1;\r\n     try {\r\n       fw1 = new FileWriter(file);\r\n       bw1 = new BufferedWriter(fw1);\r\n       bw1.write(toWrite);\r\n       bw1.newLine();\r\n     } catch (IOException _e) {\r\n     }\r\n     return;\r\n   }\r\n }\r\n}\r\n\r\n\u2014-------- BEGIN PROGRAM  ----------\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport java.io.IOException;\r\nimport java.io.FileWriter;\r\n\r\npublic class Test {\r\n void write(File file, String toWrite) {\r\n   {\r\n     FileWriter fw1;\r\n     try {\r\n       fw1 = new FileWriter(toWrite);\r\n       fw1.write(toWrite);\r\n       fw1.close();\r\n     } catch (IOException _e) {\r\n     }\r\n     return;\r\n   }\r\n }\r\n}\r\n\r\n\u2014-------- BEGIN PROGRAM  ----------\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.FileWriter;\r\n\r\npublic class Test {\r\n void write(File file, String toWrite) {\r\n   {\r\n     FileWriter fw1;\r\n     try {\r\n       fw1 = new FileWriter(file);\r\n       fw1.write(toWrite);\r\n       fw1.close();\r\n     } catch (IOException _e) {\r\n     }\r\n     return;\r\n   }\r\n }\r\n}\r\n\r\n\u2014-------- BEGIN PROGRAM  ----------\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport java.io.IOException;\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileWriter;\r\n\r\npublic class Test {\r\n void write(File file, String toWrite, boolean _arg11) {\r\n   {\r\n     FileWriter fw1;\r\n     BufferedWriter bw1;\r\n     try {\r\n       fw1 = new FileWriter(toWrite, _arg11);\r\n       bw1 = new BufferedWriter(fw1);\r\n       bw1.write(toWrite);\r\n       bw1.newLine();\r\n       bw1.flush();\r\n       bw1.close();\r\n     } catch (IOException _e) {\r\n     }\r\n     return;\r\n   }\r\n }\r\n}\r\n\r\n\u2014-------- BEGIN PROGRAM  ----------\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileWriter;\r\n\r\npublic class Test {\r\n void write(File file, String toWrite, boolean _arg11) {\r\n   {\r\n     FileWriter fw1;\r\n     BufferedWriter bw1;\r\n     try {\r\n       fw1 = new FileWriter(file, _arg11);\r\n       bw1 = new BufferedWriter(fw1);\r\n       bw1.write(toWrite);\r\n       bw1.close();\r\n     } catch (IOException _e) {\r\n     }\r\n     return;\r\n   }\r\n }\r\n}\r\n\r\n\u2014-------- BEGIN PROGRAM  ----------\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileWriter;\r\n\r\npublic class Test {\r\n void write(File file, String toWrite, boolean _arg11) {\r\n   {\r\n     FileWriter fw1;\r\n     BufferedWriter bw1;\r\n     try {\r\n       fw1 = new FileWriter(file, _arg11);\r\n       bw1 = new BufferedWriter(fw1);\r\n       bw1.write(toWrite);\r\n       bw1.newLine();\r\n       bw1.flush();\r\n       bw1.close();\r\n     } catch (IOException _e) {\r\n     }\r\n     return;\r\n   }\r\n }\r\n}\r\n\r\n\u2014-------- BEGIN PROGRAM  ----------\r\nimport java.io.*;\r\nimport java.util.*;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.BufferedWriter;\r\nimport java.io.FileWriter;\r\n\r\npublic class Test {\r\n void write(File file, String toWrite, boolean _arg11) {\r\n   {\r\n     FileWriter fw1;\r\n     BufferedWriter bw1;\r\n     try {\r\n       fw1 = new FileWriter(file, _arg11);\r\n       bw1 = new BufferedWriter(fw1);\r\n       bw1.write(toWrite);\r\n       bw1.newLine();\r\n     } catch (IOException _e) {\r\n     }\r\n     return;\r\n   }\r\n }\r\n}\r\n<\/pre>\n<p style=\"text-align: justify;\">Resumidamente, recebemos diversos exemplos de como escrever um m\u00e9todo para escrever um arquivo! Genial&#8230;<\/p>\n<p style=\"text-align: justify;\">A seguir um v\u00eddeo demonstrativo da implementa\u00e7\u00e3o do Bayou no meu projeto Modoki de c\u00f3digo aberto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Colabora\u00e7\u00e3o: Alessandro de Oliveira Faria Data de Publica\u00e7\u00e3o: 19 de setembro de 2018 Neste s\u00e9culo XXI a profiss\u00e3o mais solicitada \u00e9 a programa\u00e7\u00e3o, que agora parece receber uma excelente ferramenta, a intelig\u00eancia artificial. Veremos neste documento como utilizar um projeto de software livre que recorre aos recursos de intelig\u00eancia artificial para criar programas, mais especificamente [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-34063","post","type-post","status-publish","format-standard","hentry","category-informatica"],"_links":{"self":[{"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/posts\/34063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=34063"}],"version-history":[{"count":1,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/posts\/34063\/revisions"}],"predecessor-version":[{"id":34064,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=\/wp\/v2\/posts\/34063\/revisions\/34064"}],"wp:attachment":[{"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=34063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=34063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/antonini.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=34063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}