{"id":889,"date":"2024-10-03T07:17:19","date_gmt":"2024-10-03T10:17:19","guid":{"rendered":"https:\/\/www.blindtec.com.br\/blog\/?p=889"},"modified":"2024-10-03T15:37:52","modified_gmt":"2024-10-03T18:37:52","slug":"programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas","status":"publish","type":"post","link":"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/","title":{"rendered":"Programando \u00e0s cegas: ambiente inicial para python, javascript, php e outras linguagens interpretadas"},"content":{"rendered":"<p>Salve, galera!<\/p>\n<p>Muitas vezes me perguntam qual o setup que recomendo para quem est\u00e1 aprendendo a programar, come\u00e7ando por linguagens interpretadas como python ou javascript.<\/p>\n<p>Ent\u00e3o, segue o que eu recomendo. Essas recomenda\u00e7\u00f5es s\u00e3o baseadas em bem mais do que opini\u00f5es pessoais, por\u00e9m irei direto ao ponto, sem me justificar dos motivos de cada decis\u00e3o.<\/p>\n<h2>Items necess\u00e1rios:<\/h2>\n<ul>\n<li>Windows 10 ou 11<\/li>\n<li>NVDA<\/li>\n<li>Visual studio code<\/li>\n<\/ul>\n<h2>Acesso ao prompt de comandos<\/h2>\n<p>Para come\u00e7o de conversa, sugiro fortemente que o Windows seja utilizado no in\u00edcio do aprendizado.<\/p>\n<p>Dentro do Windows, voc\u00ea vai precisar aprender a utilizar a linha de comandos. Na verdade, utilizar o terminal (ou prompt de comandos) vai acabar sendo mais produtivo para quem n\u00e3o enxerga para uma s\u00e9rie de coisas, por uma pancada de motivos.<\/p>\n<p>Ent\u00e3o, j\u00e1 que temos que aprender, vamos l\u00e1:<\/p>\n<h3>Configura\u00e7\u00f5es iniciais<\/h3>\n<p>Voc\u00ea precisar\u00e1 fazer isso apenas uma vez<\/p>\n<ol>\n<li>Aperte Windows + r e digite cmd.<\/li>\n<li>pressione alt + espa\u00e7o para acessar os menus e selecione propriedades.<\/li>\n<li>Na aba options (ou op\u00e7\u00f5es), habilite a caixa de verifica\u00e7\u00e3o &#8220;enable ctrl key shortkuts&#8221; ou &#8220;habilitar atalhos com tecla ctrl&#8221;.<\/li>\n<li>Habilite a caixa de verifica\u00e7\u00e3o &#8220;use ctrl+shift+c \/ v as copy \/ past&#8221; ou &#8220;uusar ctrl + shift + c \/ v como copiar \/ colar&#8221;<\/li>\n<li>Na aba terminal, selecione &#8220;Windows console host&#8221; na caixa combinada de &#8220;ddefault terminal application&#8221; ou &#8220;aplica\u00e7\u00e3o padr\u00e3o de terminal&#8221;.<\/li>\n<li>Pressione ok. Feche e abra novamente o prompt de comando, como instru\u00eddo no primeiro item.<\/li>\n<\/ol>\n<h3>Navegando no prompt de comandos<\/h3>\n<p>Longe de mim aqui dar uma aula completa sobre terminal. Na d\u00favida, use o Google, voc\u00ea vai precisar fazer isso de qualquer forma.<\/p>\n<p>Mas vamos a algumas dicas r\u00e1pidas:<\/p>\n<ol>\n<li>Toda vez que digitar um comando, o NVDA vai ecoar a resposta retornada automaticamente.<\/li>\n<li>Setas para cima e para baixo navegam pelo hist\u00f3rico de comandos.<\/li>\n<li>setas a esquerda e direita navegam pelo comando selecionado.<\/li>\n<li>Enter manda o comando digitado para processar.<\/li>\n<li>Se o retorno do comando for muito longo, talvez voc\u00ea n\u00e3o queira ouvir tudo. Nesse caso, \u00e9 poss\u00edvel rever a tela com as teclas 7 8 9 (linha anterior, atual, pr\u00f3xima), 4 5 6 (palavra anterior, atual, pr\u00f3xima), 1 2 3 (caracter anterior, atual, pr\u00f3ximo), tudo isso no teclado num\u00e9rico com o num lock inativo para desktop. Se estiver usando layout de laptop, procure na documenta\u00e7\u00e3o do NVDA ou leia nosso artigo sobre <a href=\"https:\/\/www.blindtec.com.br\/blog\/2017\/10\/migrando-do-jaws-para-o-nvda-guia-pratico\/\">migra\u00e7\u00e3o do JAWS para o NVDA<\/a>.<\/li>\n<li>Se esse modo for desconfort\u00e1vel, existe um complemento (tamb\u00e9m abordado no artigo sobre migra\u00e7\u00e3o do JAWS) chamado &#8220;explora\u00e7\u00e3o virtual&#8221;. Instale e depois pressione ctrl + NVDA + w para rever a tela em um buffer.<\/li>\n<li>A \u00faltima coisa que o terminal sempre mostra, depois do resultado do comando, \u00e9 a sua localiza\u00e7\u00e3o atual (em qual pasta ou diret\u00f3rio) voc\u00ea est\u00e1 nesse momento. Vai ser algo como c:\\xxx\\yyy\\zzz. C: se refere ao seu drive principal, e a partir da\u00ed cada diret\u00f3rio \u00e9 mostrado separado pela barra invertida ().<\/li>\n<\/ol>\n<p>Ent\u00e3o, fa\u00e7a uma experi\u00eancia: simplesmente pressione enter. Voc\u00ea vai enviar nada para ser processado, vai receber nada como sa\u00edda, e a \u00fanica coisa que ser\u00e1 exibida (e falada) vai ser essa \u00faltima linha, mostrando o diret\u00f3rio no qual voc\u00ea est\u00e1. A esta \u00faltima linha, chamamos normalmente prompt.<\/p>\n<h2>Estabelecendo uma pasta de trabalho<\/h2>\n<h3>HOME<\/h3>\n<p>Se para quem enxerga organiza\u00e7\u00e3o \u00e9 desej\u00e1vel, para quem n\u00e3o enxerga \u00e9 essencial, a menos que voc\u00ea queira ficar totalmente perdido com suas coisas. Isso ocorre porque voc\u00ea vai demorar muito mais tempo para se achar do que pessoas que enxergam, e isso vai te desgastar, o que queremos evitar, a final o aprendizado por si j\u00e1 \u00e9 desgastante e portanto gostar\u00edamos que outros desgastes fossem evitados neste momento.<\/p>\n<p>Isto posto, talvez voc\u00ea n\u00e3o saiba, mas a maioria dos sistemas operacionais multi usu\u00e1rios (nos quais o Windows est\u00e1 incluso) oferece, para cada usu\u00e1rio, uma pasta particular, que chamaremos de home.<\/p>\n<p>Sem a menor coincid\u00eancia, quando voc\u00ea abre o prompt de comandos, sempre ser\u00e1 posicionado dentro de sua pasta particular, a sua home.<\/p>\n<p>Ali, recomendo a cria\u00e7\u00e3o de uma pasta chamada projetos, e dentro de cada uma um projeto separado, mesmo que sejam chamados de exercicio1, exercicio2 ou similares.<\/p>\n<h3>Criando e acessando pastas<\/h3>\n<p>o comando md serve para criar pastas.<\/p>\n<p>Se digitar &#8220;md projetos&#8221; e apertar enter, voc\u00ea ouvir\u00e1 o prompt ser ecoado de volta, o que significa que o comando funcionou e n\u00e3o apresentou qualquer sa\u00edda.<\/p>\n<p>para comprovar que o diret\u00f3rio projetos foi criado, voc\u00ea agora pode entrar nele, com o comando cd. Se digitar &#8220;cd projetos&#8221; e apertar enter, voc\u00ea vai ouvir um novo prompt, agora te dizendo que voc\u00ea est\u00e1 dentro do diret\u00f3rio projetos.<\/p>\n<p>Agora, dentro da pasta projetos, use o comando md para criaro diret\u00f3rio para seu primeiro projeto, e o comando cd para acessar essa pasta.<\/p>\n<h3>Diret\u00f3rios especiais<\/h3>\n<p>Existem duas pastas especiais no sistema, chamadas respectivamente de &#8220;.&#8221; e &#8220;..&#8221;.<\/p>\n<p>Essas pastas n\u00e3o existem de fato, seus nomes s\u00e3o atalhos. O diret\u00f3rio &#8220;.&#8221; se refere (ou resolve) para o nome do diret\u00f3rio onde voc\u00ea est\u00e1 atualmente. Pode parecer rid\u00edculo, mas vamos ver um exemplo de como usar isso a nosso favor em breve.<\/p>\n<p>O diret\u00f3rio &#8220;..&#8221;, por outro lado, se refere ao diret\u00f3rio no o qual o diret\u00f3rio atual est\u00e1 contido, e pode ser usado para voltarmos na hierarquia de pastas.<\/p>\n<p>Por exemplo: Se eu estiver em c:\\marlon\\projetos e fizer um &#8220;cd ..&#8221;, vou para c:\\marlon. Se fizer novamente um &#8220;cd ..&#8221; vou para c:.<\/p>\n<h3>Bonus<\/h3>\n<p>Voc\u00ea pode abrir o Windows explorer diretamente na pasta onde est\u00e1 localizado no prompt de comandos. Para isso, digite &#8220;explorer .&#8221; e pressione enter.<\/p>\n<p>Voc\u00ea notou o &#8220;.&#8221; no final do comando? Fazemos isso pois o comando explorer exige um par\u00e2metro, que \u00e9 o diret\u00f3rio inicial no qual ele deve abrir. E, no caso aqui, queremos que ele abra no diret\u00f3rio no qual estamos na linha de comando. E qual pasta especial sempre retorna o diret\u00f3rio em que estamos? Sim, a pasta &#8220;.&#8221;! Assim, ao passar . como um par\u00e2metro para o comando explorer, fazemos com que este abra j\u00e1 na pasta onde estamos.<\/p>\n<p>Obviamente, voc\u00ea pode criar as pastas via explorer, e depois acessar usando cd no prompt de comandos. Mas digitar md e o nome da pasta depois enter ser\u00e1 na maioria das vezes mais r\u00e1pido e eficiente do que usar a interface gr\u00e1fica de qualquer maneira.<\/p>\n<h2>Linguagens interpretadas<\/h2>\n<p>Agora precisamos falar muito rapidamente sobre linguagens interpretadas. Nessas, caem, entre outras, python, javascript e php.<\/p>\n<p>Falaremos sobre essas tr\u00eas que s\u00e3o mais populares, mas a maioria das outras segue o mesmo tipo de comportamento.<\/p>\n<p>Porque s\u00e3o interpretadas?<\/p>\n<p>Porque elas l\u00eaem arquivos e executam diretamente, n\u00e3o existe nenhum processo intermedi\u00e1rio.<\/p>\n<p>Em uma linguagem compilada (golang por exemplo), voc\u00ea:<\/p>\n<ol>\n<li>Escreve o c\u00f3digo em um arquivo com exten\u00e7\u00e3o .go.<\/li>\n<li>Passa esse arquivo por um compilador.<\/li>\n<li>O compilador (caso nenhum erro seja pego) gera um arquivo .exe (no Windows).<\/li>\n<li>Voc\u00ea executa o arquivo .exe.<\/li>\n<\/ol>\n<p>Veja que, nesse tipo de situa\u00e7\u00e3o, o arquivo executado n\u00e3o \u00e9 o mesmo arquivo do c\u00f3digo fonte. Mas, em linguagens interpretadas, como exemplo aqui o javascript, voc\u00ea:<\/p>\n<ol>\n<li>Escreve o c\u00f3digo em um arquivo com exten\u00e7\u00e3o .js.<\/li>\n<li>Chama o interpretador, passando o nome do arquivo a ser interpretado, algo como node (o nome do interpretador) e o nome do seu arquivo .js como par\u00e2metro.<\/li>\n<li>O interpretador (caso nenhum erro seja pego) interpreta e executa o arquivo.<\/li>\n<\/ol>\n<p>Veja que, nesse caso, o arquivo executado (na verdade interpretado seria melhor) \u00e9 exatamente o mesmo arquivo fonte que voc\u00ea escreveu.<\/p>\n<p>Mas, querido autor, voc\u00ea deve estar se perguntando, eu uso o NVDA, que \u00e9 escrito em python, e nunca instalei um interpretador python em meu computador. Mais do que isso, o arquivo inicial do nvda \u00e9 um nvda.exe, o que prova que voc\u00ea n\u00e3o sabe o que fala. Voc\u00ea \u00e9 um enganador. Voc\u00ea \u00e9 um looser, um imbecil, um completo idiota e eu estou perdendo meu tempo!<\/p>\n<p>Bom, querido leitor, quem sabe se eu posso ser uma ou mais dessas coisas. Isso pode ser discutido, mas o que est\u00e1 fora de discu\u00e7\u00e3o aqui s\u00e3o esses argumentos. Se eu for t\u00e3o lament\u00e1vel assim, garanto, deve ser por outros motivos.<\/p>\n<p>O que acontece, e voc\u00ea n\u00e3o sabia, \u00e9 que junto com o NVDA vai um interpretador python inteirinho e que o arquivo nvda.exe inicia, por debaixo dos panos, um arquivo em bom e velho pythom que, sim, \u00e9 interpretado.<\/p>\n<p>Esses arquivos python tamb\u00e9m s\u00e3o compactados em um formato espec\u00edfico e descompactados em mem\u00f3ria (muito resumidamente isso), portanto o acesso a eles acaba sendo mais r\u00e1pido e sua distribui\u00e7\u00e3o mais compactada e segura.<\/p>\n<p>Agora que minha credibilidade foi, espero, ao menos parcialmente restaurada, seguimos em frente.<\/p>\n<h3>REPL<\/h3>\n<p>Mas, se as linguagens interpretadas interpretam arquivos, elas tamb\u00e9m podem interpretar, vamos dizer assim, c\u00f3digo escrito ao vivo por programadores?<\/p>\n<p>Sim. A isso, chamamos de repl (read, evaluate, print, loop) ou (ler, interpretar, escrever, repetir).<\/p>\n<p>Funciona assim: eu como programador n\u00e3o preciso escrever necessariamente um arquivo para experimentar com a linguagem. Em vez disso, posso pedir para a linguagem interpretar c\u00f3digo que, em vez de estar em um arquivo, eu vou escrevendo.<\/p>\n<ol>\n<li>Eu escrevo.<\/li>\n<li>Aperto enter.<\/li>\n<li>O interpretador interpreta o que eu escrevi.<\/li>\n<li>O interpretador me diz o resultado daquilo (caso ele consiga interpretar).<\/li>\n<li>E, finalmente, ele me pede por mais c\u00f3digo, e o processo \u00e9 repetido novamente.<\/li>\n<\/ol>\n<p>O uso de repl&#8217;s \u00e9 largamente desconhecido pela comunidade de programadores geral, menos ainda pela comunidade de programadores cegos, principalmente iniciantes.<\/p>\n<p>A quantidade de tempo que se pode economizar simplesmente experimentando com c\u00f3digo em vez de ir para o google buscar por alguma coisa ou escrever alguma fun\u00e7\u00e3o em algum arquivo qualquer do fonte e executar um fluxo enorme apenas para chegar no ponto de teste \u00e9 enorme.<\/p>\n<p>De fato, repl&#8217;s existem inclusive para algumas linguagens compiladas, notadamente java. Nesse caso, o repl primeiro faz uma pequena compila\u00e7\u00e3o e depois executa o c\u00f3digo (isso muito resumidamente), mas nosso assunto aqui s\u00e3o linguagens interpretadas.<\/p>\n<h3>Instala\u00e7\u00e3o<\/h3>\n<p>Nesta altura, voc\u00ea j\u00e1 sabe, precisar\u00e1 instalar o interpretador da linguagem que voc\u00ea quer usar.<\/p>\n<p>Instale o php, o node ou o python, e garanta que o caminho para o execut\u00e1vel esteja na vari\u00e1vel de ambiente PATH.<\/p>\n<p>Certo, vamos precisar explicar este conceito.<\/p>\n<h4>A vari\u00e1vel de ambiente PATH<\/h4>\n<p>Uma vari\u00e1vel de ambiente \u00e9 um recurso que os sistemas operacionais (Windows inclusive) oferecem para deixar a vida de todos mais f\u00e1cil. Funciona assim: voc\u00ea configura a vari\u00e1vel de ambiente em algum lugar que varia de sistema para sistema (painel de controles no caso do Windows), e toda vez que algu\u00e9m precisa do seu valor, \u00e9 s\u00f3 digitar o nome da vari\u00e1vel e pronto, o valor \u00e9 resolvido.<\/p>\n<p>Mas porque essas vari\u00e1veis existem?<\/p>\n<p>para que voc\u00ea (ou software que voc\u00ea usa) consiga usar valores sem saber na verdade quem os configurou.<\/p>\n<p>Por exemplo, um software pode querer decidir quantas threads usar, e isso \u00e9 dependente do n\u00famero de processadores. O que ele faz? Pede ao sistema o valor da vari\u00e1vel &#8220;NUMBER_OF_PROCESSORS&#8221;. Quem configurou isso? N\u00e3o interessa. Mas, em todas as m\u00e1quinas com o Windows instalado, essa vari\u00e1vel existir\u00e1, e apontar\u00e1 para o n\u00famero de processadores do computador.<\/p>\n<p>Um outro exemplo \u00e9 a vari\u00e1vel USERPROFILE. Esta aponta sempre para a home do usu\u00e1rio logado. Ent\u00e3o o software rodando, se precisar ler ou escrever em arquivos na home do usu\u00e1rio, precisa apenas consultar a vari\u00e1vel USERPROFILE, que ter\u00e1 um valor diferente dependendo do usu\u00e1rio logado (que est\u00e1 executando o software).<\/p>\n<p>Assim, o software tem apenas uma instru\u00e7\u00e3o (do tipo leia o arquivo em %USERPROFILE%\\applications\\temp) e, dependendo do usu\u00e1rio que o executa, o valor retornado por essa vari\u00e1vel ser\u00e1 diferente, pois sempre apontar\u00e1 para a home do usu\u00e1rio logado.<\/p>\n<p>voc\u00ea pode acessar qualquer vari\u00e1vel de ambiente no prompt de comandos usando o comando echo. Fa\u00e7a echo %[nome_da_vari\u00e1vel]%, por exemplo echo %USERPROFILE% e veja o que acontece.<\/p>\n<p>Ainda melhor, para vari\u00e1veis cujo valor \u00e9 um caminho de diret\u00f3rios, voc\u00ea pode usar seu valor com o comando cd. Por exemplo cd %USERPROFILE% sempre te levar\u00e1 para a sua home.<\/p>\n<p>A vari\u00e1vel PATH \u00e9 utilizada para que comandos possam ser executados sem sabermos exatamente onde foram instalados.<\/p>\n<p>Funciona dessa maneira: quando voc\u00ea digita um comando, por exemplo &#8220;node&#8221;, o sistema checa se um arquivo node.exe est\u00e1 na pasta em que voc\u00ea est\u00e1. Se estiver, o arquivo \u00e9 executado. De outra forma, antes de dizer que o arquivo n\u00e3o foi encontrado, o sistema l\u00ea o valor da vari\u00e1vel de ambiente PATH. Esta, no Windows, apresenta uma s\u00e9rie de diret\u00f3rios separados por ponto e v\u00edrgula (;). O sistema tenta encontrar o arquivo solicitado em cada um dos diret\u00f3rios ali listados e, caso encontre, o executa. Apenas retorna arquivo n\u00e3o encontrado se o arquivo n\u00e3o estiver em nenhum dos diret\u00f3rios listados, al\u00e9m claro do diret\u00f3rio corrente.<\/p>\n<p>E para que isso serve?<\/p>\n<p>Serve para:<\/p>\n<ol>\n<li>Que voc\u00ea possa, por exemplo, instalar o node na pasta que quiser. Porque, depois de instalado, a pasta onde o arquivo node.exe est\u00e1 ser\u00e1 acrescentada na vari\u00e1vel PATH, portanto voc\u00ea pode digitar &#8220;node&#8221; em qualquer lugar que o arquivo vai ser encontrado, independentemente de onde tenha sido instalado.<\/li>\n<li>Que voc\u00ea possa executar um comando no diret\u00f3rio atual em vez de ter que descobrir onde ele est\u00e1 e ficar digitando o caminho sempre que precisar executar o comando.<\/li>\n<\/ol>\n<p>Voc\u00ea precisa garantir que a pasta onde o execut\u00e1vel do node ou do python ou do php est\u00e1 seja listada na vari\u00e1vel PATH, para que possa executar confortavelmente os interpretadores na linha de comandos e para que outros editores, como o visual studio code, tamb\u00e9m possam fazer isso.<\/p>\n<p>Normalmente, o node coloca a si pr\u00f3prio na vari\u00e1vel PATH. O python oferece, como um dos passos da instala\u00e7\u00e3o, esta op\u00e7\u00e3o, e o php n\u00e3o faz isso, o que te obrigar\u00e1 a colocar manualmente a pasta de instala\u00e7\u00e3o na vari\u00e1vel. Deixamos para voc\u00ea descobrir como fazer isso.<\/p>\n<h3>Executando os REPL&#8217;s<\/h3>\n<p>Para garantir que o intepretador de escolha esteja na vari\u00e1vel de ambiente PATH, basta, em qualquer prompt de comando, digitar node ou python ou php -a e apertar enter. Se voc\u00ea cair no REPL (se n\u00e3o der arquivo n\u00e3o encontrado), est\u00e1 tudo certo com a configura\u00e7\u00e3o.<\/p>\n<p>Agora, experimente um pouco com constru\u00e7\u00f5es da linguagem que voc\u00ea precisa e se acostume ao REPL. Vai ser de muito valor.<\/p>\n<h3>Saindo<\/h3>\n<p>Para sair do REPL do node, pressione ctrl + d.<\/p>\n<p>Para sair do REPL do python, digite ctrl + z e pressione enter.<\/p>\n<p>Para sair do REPL do php, digite ctrl + c.<\/p>\n<h2>Demais configura\u00e7\u00f5es<\/h2>\n<h3>Visual studio code<\/h3>\n<p>Na pasta do seu projeto, digite o comando &#8220;code .&#8221;.<\/p>\n<p>Este comando, de maneira similar ao explorer, abre o visual studio code no diret\u00f3rio representado pelo seu par\u00e2metro. Como passamos a pasta especial &#8220;.&#8221;, o Visual studio code abrir\u00e1 na pasta atual, que \u00e9 nesse caso o que queremos.<\/p>\n<h4>Exten\u00e7\u00f5es<\/h4>\n<p>Para python, voc\u00ea vai precisar das exten\u00e7\u00f5es <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-python.python\">python<\/a>, <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-python.vscode-pylance\">pylance<\/a> e <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-python.debugpy\">python debugger<\/a>, ambas publicadas pela Microsoft.<\/p>\n<p>Para php, voc\u00ea vai precisar das exten\u00e7\u00f5es <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=bmewburn.vscode-intelephense-client\">php intelephense<\/a> publicada por Bem Mewburn e <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=xdebug.php-debug\">php debug<\/a>, publicada por xdebug.<\/p>\n<p>Para node, voc\u00ea n\u00e3o precisar\u00e1 de quaisquer exten\u00e7\u00f5es.<\/p>\n<p>Cada uma dessas exten\u00e7\u00f5es precisa ser corretamente instalada, e est\u00e1 fora do escopo deste artigo detalhar os processos. No geral, lendo o readme de cada uma delas (exibido ap\u00f3s a instala\u00e7\u00e3o) dever\u00e1 ser suficiente.<\/p>\n<p>Evite instalar exten\u00e7\u00f5es as quais voc\u00ea n\u00e3o precisa. Se n\u00e3o for desenvolver em php, n\u00e3o instale as exten\u00e7\u00f5es de php at\u00e9 que sejam necess\u00e1rias, o mesmo se aplicando para as outras linguagens.<\/p>\n<p>Independentemente de qual for a sua linguagem de desenvolvimento, voc\u00ea vai precisar da exten\u00e7\u00e3o <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=TonyMalykh.indent-nav\">indentnav<\/a>, publicada por Tony Malykh. Tenha a certeza de que esta exten\u00e7\u00e3o est\u00e1 instalada.<\/p>\n<h3>NVDA<\/h3>\n<p>Precisaremos perparar o NVDA para suporte a desenvolvimento.<\/p>\n<h4>Configura\u00e7\u00f5es<\/h4>\n<p>Voc\u00ea dever\u00e1 criar um perfil para programa\u00e7\u00e3o. Se n\u00e3o souber como faz\u00ea-lo, procure documenta\u00e7\u00e3o ou verifique o artigo sobre <a href=\"https:\/\/www.blindtec.com.br\/blog\/2017\/10\/migrando-do-jaws-para-o-nvda-guia-pratico\/\">migra\u00e7\u00e3o do JAWS para o NVDA<\/a> que publicamos, onde os procedimentos est\u00e3o detalhados.<\/p>\n<p>Garanta que o perfil seja ativado com o carregamento do Visual Studio code.<\/p>\n<p>No perfil:<\/p>\n<ol>\n<li>Configure a pontua\u00e7\u00e3o para tudo.<\/li>\n<li>Configure o an\u00fancio de recuo de linha (identa\u00e7\u00e3o) para som (recomendado) ou qualquer uma das outras op\u00e7\u00f5es, menos desligado.<\/li>\n<\/ol>\n<h4>Complementos<\/h4>\n<p>Voc\u00ea vai precisar do complemento Tony&#8217;s enhancements. Garanta que este complemento esteja instalado.<\/p>\n<h2>Executando<\/h2>\n<p>Agora, chegou a hora de rodar seus scripts.<\/p>\n<ol>\n<li>Fa\u00e7a ctrl + n no visual studio code.<\/li>\n<li>Fa\u00e7a ctrl + s para salvar o arquivo. Arquivos .php com a exten\u00e7\u00e3o .php. arquivos javascript com a exten\u00e7\u00e3o .js, arquivos python com a exten\u00e7\u00e3o .py. Salvar os arquivos com a exten\u00e7\u00e3o correta \u00e9 importante pois ajuda o visual studio code a ativar as exten\u00e7\u00f5es corretas.<\/li>\n<li>Escreva um c\u00f3digo simples.<\/li>\n<li>fa\u00e7a alt + tab para chegar na linha de comandos.<\/li>\n<li>Digite node (ou python ou php) espa\u00e7o e o nome do seu arquivo.<\/li>\n<li>Ou\u00e7a o retorno. Caso precise, use as teclas de cursor do NVDA para navegar pelo resultado.<\/li>\n<li>Quando estiver satisfeito, escreva mais c\u00f3digo.<\/li>\n<li>Alt tab novamente para a linha de comandos, execute novamente. Para n\u00e3o precisar digitar node (ou python ou php) e o nome do seu arquivo, voc\u00ea pode apertar a seta para sima que te posicionar\u00e1 no \u00faltimo comando digitado e apenas pressionar enter.<\/li>\n<\/ol>\n<p>Este fluxo dever\u00e1 ser seguido e repetido para suportar o desenvolvimento, e se aproxima bastante da maneira que fazemos desenvolvimento profissional.<\/p>\n<h3>Bonus<\/h3>\n<p>Rever a sa\u00edda com os cursores do NVDA ou com o complemento explora\u00e7\u00e3o virtual pode ser can\u00e7ativo. Existe uma outra maneira, envolvendo redirecionamento de sa\u00edda.<\/p>\n<p>Mas, primeiro, um pouco de teoria.<\/p>\n<p>E antes de voc\u00ea reclamar, se pretende se tornar um desenvolvedor e n\u00e3o quer saber como o que quer que esteja fazendo de fato funciona, considere se de fato voc\u00ea gostaria de ir por essa rota.<\/p>\n<p>De qualquer maneira, seguimos em frente:<\/p>\n<p>Todo software quando executa faz tr\u00eas coisas principais:<\/p>\n<ol>\n<li>L\u00ea entradas.<\/li>\n<li>Processa entradas.<\/li>\n<li>Escreve sa\u00eddas.<\/li>\n<\/ol>\n<p>O processador de textos recolhe entradas que voc\u00ea digita, processa (no sentido de formatar o texto entre outras tarefas) e escreve sa\u00eddas (na tela, ap\u00f3s cada letra e ap\u00f3s o processamento, ao salvar um arquivo com o texto digitado, ao imprimir esses arquivos, entre outras coisas). Um navegador recolhe a entrada (ao digitar um endere\u00e7o, ao clicar em um link, ao pressionar um bot\u00e3o), processa, e retorna a sa\u00edda (ao construir a tela de acordo com o resultado do HTML obtido, entre outros). Um leitor de telas recolhe entrada (ao receber comandos e eventos do sistema operacional), processa as informa\u00e7\u00f5es e escreve sa\u00edda (ao falar o que est\u00e1 escrito na tela, entre outros).<\/p>\n<p>Do ponto de vista do seu software, tudo (o que vem via teclado, o que vem via rede, o que vai para a tela, o que vai para a placa de som, o que vai para o hd) \u00e9 abstra\u00eddo para um conceito, o conceito de arquivos. O software l\u00ea entrada de um ou mais arquivos, processa informa\u00e7\u00e3o, e escreve a sa\u00edda em um ou mais arquivos.<\/p>\n<p>Ent\u00e3o, a tarefa do seu software \u00e9 facilitada, pois ele na verdade precisa apenas saber:<\/p>\n<ol>\n<li>Ler informa\u00e7\u00f5es de arquivos.<\/li>\n<li>Processar informa\u00e7\u00e3o.<\/li>\n<li>Escrever informa\u00e7\u00f5es para um ou mais arquivos.<\/li>\n<\/ol>\n<p>Cabe ao sistema operacional entender qual o tipo de arquivo est\u00e1 sendo lido ou escrito e ler ou escrever da maneira correta os conte\u00fados.<\/p>\n<p>Mas o que isso tem que ver com a explora\u00e7\u00e3o de cursores do NVDA?<\/p>\n<p>Cada arquivo (sendo uma tela, uma placa de som ou um arquivo na HD) \u00e9 representado por um identificador num\u00e9rico.<\/p>\n<p>N\u00e3o temos como saber qual identificador um sistema atribuir\u00e1 a um arquivo em disco, por exemplo, antes de fazermos uma opera\u00e7\u00e3o de open. Mas, alguns endere\u00e7os s\u00e3o sempre constantes, e n\u00f3s sabemos exatamente quais s\u00e3o.<\/p>\n<p>Podemos, portanto, escrever para arquivos nesses endere\u00e7os e sabemos sem sombra de d\u00favidas o que acontecer\u00e1.<\/p>\n<p>Mas quais endere\u00e7os s\u00e3o esses?<\/p>\n<p>O standard output, descrito sempre pelo endere\u00e7o 1 e o standard error, descrito sempre pelo endere\u00e7o 2.<\/p>\n<p>Quando voc\u00ea faz um console.log (no javascript), ou um print (no python) ou um echo (no php), est\u00e1 na verdade abrindo o arquivo no endere\u00e7o 1, escrevendo conte\u00fado e fechando esse arquivo.<\/p>\n<p>E o que o sistema operacional faz com conte\u00fado escrito no arquivo 1? Ele, por padr\u00e3o, direciona para a tela.<\/p>\n<p>Tanto o arquivo 1 como o arquivo 2 na verdade.<\/p>\n<p>O arquivo 2 (standard error) \u00e9 onde softwares (inclusive os interpretadores) escrevem sa\u00edda de erro.<\/p>\n<p>Mas aqui est\u00e1 o interessante: n\u00f3s podemos, ao rodar um sofftware, informar ao sistema que, para esta execu\u00e7\u00e3o, conte\u00fado escrito no arquivo 1 n\u00e3o deve ir para onde o sistema o mandaria, e sim para onde n\u00f3s queremos.<\/p>\n<p>Isso significa que o sistema pegar\u00e1 o que deveria ser escrito na tela (destino original do arquivo 1 ) e encaminhar\u00e1 para outro destino.<\/p>\n<p>E qual destino n\u00f3s queremos neste caso?<\/p>\n<p>Um arquivo em disco, ao lado do nosso arquivo fonte. Particularmente costumo chamar esse arquivo sempre como a.txt<\/p>\n<p>E como fazemos isso?<\/p>\n<p>Simples: digitamos o comando (node ou python ou php) o nome do nosso arquivo fonte , um espa\u00e7o, e o redirecionamento &#8220;> a.txt 2>&amp;1&#8221;<\/p>\n<p>Como isso funciona?<\/p>\n<p>O prompt de comandos entende um > como o redirecionamento do arquivo 1 para algumn lugar. O lugar vem logo ap\u00f3s, portanto &#8220;> a.txt&#8221; significa que o conte\u00fado do arquivo 1 que iria para a tela agora deve ser direcionado para o arquivo a.txt.<\/p>\n<p>Se nosso software operar com sucesso, sua sa\u00edda pode ser lida no arquivo a.txt.<\/p>\n<p>O comando ctrl + shift + e permite navegar pelos arquivos dentro do visual studio code. Voc\u00ea pode muito facilmente, portanto, abrir o arquivo a.txt e analisar sua sa\u00edda.<\/p>\n<p>Mais do que isso, uma vez que o arquivo a.txt tenha sido aberto no vscode, voc\u00ea poder\u00e1 alternar entre ele e o seu arquivo fonte com ctrl + tab, o que permite um acesso r\u00e1pido a sa\u00edda, com todo o conforto de ler em um editor de texto.<\/p>\n<p>Mas, como estamos, se seu software estiver com erro, este erro ser\u00e1 escrito na tela. Isso se deve ao fato de que o arquivo 2 (standard error), onde os erros s\u00e3o escritos, n\u00e3o foi redirecionado.<\/p>\n<p>Para cuidar disso, ap\u00f3s o &#8220;> a.txt&#8221;, que redireciona o standard output para o arquivo a.txt, colocamos 2>&amp;1.<\/p>\n<p>Este comando instrui que conte\u00fado escrito no arquivo 2 seja redirecionado para o arquivo 1. O arquivo 1 por sua vez est\u00e1 redirecionado para o arquivo a.txt.<\/p>\n<p>Assim, garantimos que tando a sa\u00edda correta (em caso de execu\u00e7\u00e3o sem erros) quanto os erros (em caso de erros) sejam adequadamente redirecionados para o arquivo a.txt que poder\u00e1 ser lido e analisado com extremo conforto.<\/p>\n<h2>Dicas<\/h2>\n<p>O processo acima descrito \u00e9 muito eficiente, e pode ser utilizado para praticamente qualquer tipo de desenvolvimento, principalmente em linguagens interpretadas.<\/p>\n<ol>\n<li>Codificar.<\/li>\n<li>Alt tab, executar (comando completo da prineira vez, das outras apenas seta para cima e enter).<\/li>\n<li>Se redirecionou os arquivos (o que recomendamos), ler a sa\u00edda com calma no arquivo a.txt. Do contr\u00e1rio, ler na pr\u00f3pria tela).<\/li>\n<li>De volta no fonte, corrigir problemas ou continuar a codificar e repetir o processo.<\/li>\n<\/ol>\n<p>Sempre:<\/p>\n<ol>\n<li>N\u00e3o codifique mais de uma funcionalidade ao mesmo tempo. Passos pequenos s\u00e3o a receita do sucesso.<br \/>\nSe precisa ler do teclado e fazer um c\u00e1lculo, primeiro aprenda a ler do teclado. Escreva a parte que l\u00ea do teclado e imprime o que foi lido na tela, at\u00e9 ter certeza de que funciona.<br \/>\nDepois, escreva a parte de fazer o c\u00e1lculo. Passe os par\u00e2metros e garanta que os resultados do c\u00e1lculo estejam corretos.<br \/>\nPor fim, ligue o retorno do que foi lido do teclado com a fun\u00e7\u00e3o que faz o c\u00e1lculo, e seu software estar\u00e1 pronto.<br \/>\nIsso servir\u00e1 para que, em caso de erro, a quantidade de lugares onde o erro possa ter sido causada seja pequena, o que facilitar\u00e1 sua an\u00e1lise.<\/li>\n<\/ol>\n<p>Falando em erros &#8230;<\/p>\n<p>Em caso de erro, leia calmamente o que est\u00e1 errado. N\u00e3o finja que entende o que est\u00e1 escrito em ingl\u00eas, se for o caso use um dicion\u00e1rio. Assumir incorretamente o que uma mensagem de erro diz vai te atrapalhar quando tentar ajustar o c\u00f3digo, pois voc\u00ea muito provavelmente tentar\u00e1 arrumar algo diferente do que est\u00e1 sendo acusado como um erro.<\/p>\n<p>A maioria dos interpretadores vai apontar uma linha do c\u00f3digo fonte como o erro, e muitas vezes nesta linha de fato estar\u00e1 o que precisa ser ajustado, mas nem sempre.<\/p>\n<p>Al\u00e9m disso, erros l\u00f3gicos (em vez de erros de sintaxe ou de exce\u00e7\u00f5es) n\u00e3o ser\u00e3o apontados. Esses s\u00e3o detectados quando seu software faz algo diferente do esperado, e para entend\u00ea-los \u00e9 necess\u00e1rio reler com aten\u00e7\u00e3o tudo o que foi escrito e entender onde o erro de l\u00f3gica est\u00e1.<\/p>\n<p>Da\u00ed uma outra vantagem de se codificar por partes o que se deseja.<\/p>\n<h2>Identa\u00e7\u00e3o<\/h2>\n<p>Essa palavra significa que c\u00f3digo pertensente a um bloco come\u00e7a mais a direita do que c\u00f3digo fora deste bloco. Visualmente \u00e9 importante e para python isso tamb\u00e9m faz parte da linguagem propriamente dita.<\/p>\n<p>Se voc\u00ea configurou o visual studio code e o NVDA como sugerimos:<\/p>\n<ol>\n<li>Ouvir\u00e1 um tom cada vez que a identa\u00e7\u00e3o mudar.<\/li>\n<li>Se a identa\u00e7\u00e3o for maior (c\u00f3digo come\u00e7a mais a direita), o som ser\u00e1 mais agudo. Do contr\u00e1rio, o som ser\u00e1 mais grave.<\/li>\n<li>Podemos navegar entre linhas com a mesma identa\u00e7\u00e3o usando alt + seta para cima e seta para baixo.<\/li>\n<li>Em python, linhas terminadas em dois pontos (:) pedem que a pr\u00f3xima (ou pr\u00f3ximas) linhas tenham identa\u00e7\u00e3o maior, pois linhas terminadas em dois pontos (dois pontos) s\u00e3o aberturas de bloco.<\/li>\n<li>Em python, um bloco termina quando a pr\u00f3xima linha come\u00e7ar em uma identa\u00e7\u00e3o mais a esquerda (menor). Voc\u00ea precisar\u00e1 se atentar ao tom grave para entender quando um bloco terminou.<br \/>\nA identa\u00e7\u00e3o da pr\u00f3xima linha vai dizer a qual bloco ela pertense. Se voc\u00ea n\u00e3o se lembrar, poder\u00e1 pressionar alt + seta para cima para ouvir a linha que abre o bloco que acabou de terminar.<\/li>\n<li>Em javascript e php, um bloco come\u00e7a normalmente em linhas que terminam com abre chave ({), e terminam com um fecha chave (}).<br \/>\nEmbora identa\u00e7\u00e3o n\u00e3o seja parte da linguagem, \u00e9 boa pr\u00e1tica seguir as mesmas regras do python.<\/li>\n<li>Pode parecer ruim, mas por exemplo se voc\u00ea n\u00e3o estiver interessado em uma determinada fun\u00e7\u00e3o (em python sempre, nas outras linguagens assumindo-se que o c\u00f3digo esteja corretamente identado) \u00e9 s\u00f3 pressionar alt + seta para baixo que voc\u00ea pular\u00e1 a fun\u00e7\u00e3o inteira e ir\u00e1 para o seu final.<\/li>\n<li>Isso vale para qualquer tipo de bloco.<\/li>\n<\/ol>\n<h2>Conclus\u00e3o<\/h2>\n<p>Assim terminamos de descrever o que, em nosso ponto de vista, se configura a maneira mais eficiente de trabalharmos com c\u00f3digo fonte de linguagem de programa\u00e7\u00e3o quando n\u00e3o enxergamos.<\/p>\n<p>Agradecendo sempre a Deus em primeiro lugar, tamb\u00e9m o fazemos a voc\u00ea, leitor, que chegou at\u00e9 o final deste artigo. Esperamos que isso possa ajudar e que tenham proveito.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Salve, galera! Muitas vezes me perguntam qual o setup que recomendo para quem est\u00e1 aprendendo a programar, come\u00e7ando por linguagens interpretadas como python ou javascript. Ent\u00e3o, segue o que eu recomendo. Essas recomenda\u00e7\u00f5es s\u00e3o baseadas em bem mais do que opini\u00f5es pessoais, por\u00e9m irei direto ao ponto, sem me justificar dos motivos de cada decis\u00e3o. Items necess\u00e1rios: Windows 10 ou<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[162,59,264],"tags":[295,296,293,266,294,297],"class_list":["post-889","post","type-post","status-publish","format-standard","hentry","category-artigos","category-dicas","category-programacao","tag-javascript","tag-node-js","tag-php","tag-programacao","tag-python","tag-visual-studio-code"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Programando \u00e0s cegas: ambiente inicial para python, javascript, php e outras linguagens interpretadas - BlindTec<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programando \u00e0s cegas: ambiente inicial para python, javascript, php e outras linguagens interpretadas - BlindTec\" \/>\n<meta property=\"og:description\" content=\"Salve, galera! Muitas vezes me perguntam qual o setup que recomendo para quem est\u00e1 aprendendo a programar, come\u00e7ando por linguagens interpretadas como python ou javascript. Ent\u00e3o, segue o que eu recomendo. Essas recomenda\u00e7\u00f5es s\u00e3o baseadas em bem mais do que opini\u00f5es pessoais, por\u00e9m irei direto ao ponto, sem me justificar dos motivos de cada decis\u00e3o. Items necess\u00e1rios: Windows 10 ou\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/\" \/>\n<meta property=\"og:site_name\" content=\"BlindTec\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/oficialBlindtec\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/marlon.brandaodesousa\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-03T10:17:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-03T18:37:52+00:00\" \/>\n<meta name=\"author\" content=\"Marlon Brand\u00e3o de Sousa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@twitter\" \/>\n<meta name=\"twitter:site\" content=\"@oficialBlindtec\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marlon Brand\u00e3o de Sousa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/\",\"url\":\"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/\",\"name\":\"Programando \u00e0s cegas: ambiente inicial para python, javascript, php e outras linguagens interpretadas - BlindTec\",\"isPartOf\":{\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/en\/#website\"},\"datePublished\":\"2024-10-03T10:17:19+00:00\",\"dateModified\":\"2024-10-03T18:37:52+00:00\",\"author\":{\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/cec5894d9a4927ea9ef65745353511bf\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/www.blindtec.com.br\/blog\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programando \u00e0s cegas: ambiente inicial para python, javascript, php e outras linguagens interpretadas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/en\/#website\",\"url\":\"https:\/\/www.blindtec.com.br\/blog\/en\/\",\"name\":\"BlindTec\",\"description\":\"A tecnologia assistiva ao alcance de todos\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.blindtec.com.br\/blog\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/cec5894d9a4927ea9ef65745353511bf\",\"name\":\"Marlon Brand\u00e3o de Sousa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/83010b6ef5076436b9ce0bedaf8038d9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/83010b6ef5076436b9ce0bedaf8038d9?s=96&d=mm&r=g\",\"caption\":\"Marlon Brand\u00e3o de Sousa\"},\"description\":\"Ol\u00e1, Meu Nome \u00e9 Marlon Sousa e sou fundador e editor chefe do portal BlindTec. Sou formado em Processamento de dados pela Escola T\u00e9cnica Estadual Lauro Gomes em S\u00e3o Bernardo do campo SP, em Gest\u00e3o de Tecnologia da Informa\u00e7\u00e3o pela Unisul de Santa Catarina e atualmente curso MBA em desenvolvimento de aplicativos m\u00f3veis e games na FIAP, em S\u00e3o Paulo. No mercado de tecnologia desde 2003, atuei em empresas de grande porte nos ramos de comunica\u00e7\u00e3o e consultoria e, atualmente, trabalho em uma empresa no ramo financeiro. Como experi\u00eancia profissional, durante minha carreira exerci fun\u00e7\u00f5es de desenvolvimento de software, quality assurance e controle de processos e an\u00e1lise de sistemas. Sou um entusiasta do trabalho em equipe e acredito que um + um, quando existe un objetivo em comum, \u00e9 sempre maior do que dois! Na vida pessoal, gosto de boa companhia, bons papos, bons amigos e boa arte. Ou\u00e7o uma vasta gama de estilos musicais, sou um leitor inveterado e gosto de conhecer novos lugares, novos modos de pensar, novas pessoas. Al\u00e9m disso, sou apaixonado por tecnologia como um todo e, dentro desse universo, em especial por uma \u00e1rea chamada tecnologia assistiva, cuja principal fun\u00e7\u00e3o \u00e9 empoderar e ajudar pessoas. E isso, certamente, \u00e9 um grande compromisso e uma miss\u00e3o para mim. Se voc\u00ea n\u00e3o conhece o conceito de tecnologia assistiva e como isso \u00e9 importante, clique aqui e veja a defini\u00e7\u00e3o da BlindTec sobre o assunto.\",\"sameAs\":[\"https:\/\/www.blindtec.com.br\",\"https:\/\/www.facebook.com\/marlon.brandaodesousa\",\"https:\/\/x.com\/twitter\"],\"url\":\"https:\/\/www.blindtec.com.br\/blog\/author\/marlonsousa\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programando \u00e0s cegas: ambiente inicial para python, javascript, php e outras linguagens interpretadas - BlindTec","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/","og_locale":"pt_BR","og_type":"article","og_title":"Programando \u00e0s cegas: ambiente inicial para python, javascript, php e outras linguagens interpretadas - BlindTec","og_description":"Salve, galera! Muitas vezes me perguntam qual o setup que recomendo para quem est\u00e1 aprendendo a programar, come\u00e7ando por linguagens interpretadas como python ou javascript. Ent\u00e3o, segue o que eu recomendo. Essas recomenda\u00e7\u00f5es s\u00e3o baseadas em bem mais do que opini\u00f5es pessoais, por\u00e9m irei direto ao ponto, sem me justificar dos motivos de cada decis\u00e3o. Items necess\u00e1rios: Windows 10 ou","og_url":"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/","og_site_name":"BlindTec","article_publisher":"https:\/\/www.facebook.com\/oficialBlindtec","article_author":"https:\/\/www.facebook.com\/marlon.brandaodesousa","article_published_time":"2024-10-03T10:17:19+00:00","article_modified_time":"2024-10-03T18:37:52+00:00","author":"Marlon Brand\u00e3o de Sousa","twitter_card":"summary_large_image","twitter_creator":"@twitter","twitter_site":"@oficialBlindtec","twitter_misc":{"Escrito por":"Marlon Brand\u00e3o de Sousa","Est. tempo de leitura":"25 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/","url":"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/","name":"Programando \u00e0s cegas: ambiente inicial para python, javascript, php e outras linguagens interpretadas - BlindTec","isPartOf":{"@id":"https:\/\/www.blindtec.com.br\/blog\/en\/#website"},"datePublished":"2024-10-03T10:17:19+00:00","dateModified":"2024-10-03T18:37:52+00:00","author":{"@id":"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/cec5894d9a4927ea9ef65745353511bf"},"breadcrumb":{"@id":"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.blindtec.com.br\/blog\/2024\/10\/programando-as-cegas-ambiente-inicial-para-python-javascript-php-e-outras-linguagens-interpretadas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.blindtec.com.br\/blog\/en\/"},{"@type":"ListItem","position":2,"name":"Programando \u00e0s cegas: ambiente inicial para python, javascript, php e outras linguagens interpretadas"}]},{"@type":"WebSite","@id":"https:\/\/www.blindtec.com.br\/blog\/en\/#website","url":"https:\/\/www.blindtec.com.br\/blog\/en\/","name":"BlindTec","description":"A tecnologia assistiva ao alcance de todos","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.blindtec.com.br\/blog\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/cec5894d9a4927ea9ef65745353511bf","name":"Marlon Brand\u00e3o de Sousa","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/83010b6ef5076436b9ce0bedaf8038d9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/83010b6ef5076436b9ce0bedaf8038d9?s=96&d=mm&r=g","caption":"Marlon Brand\u00e3o de Sousa"},"description":"Ol\u00e1, Meu Nome \u00e9 Marlon Sousa e sou fundador e editor chefe do portal BlindTec. Sou formado em Processamento de dados pela Escola T\u00e9cnica Estadual Lauro Gomes em S\u00e3o Bernardo do campo SP, em Gest\u00e3o de Tecnologia da Informa\u00e7\u00e3o pela Unisul de Santa Catarina e atualmente curso MBA em desenvolvimento de aplicativos m\u00f3veis e games na FIAP, em S\u00e3o Paulo. No mercado de tecnologia desde 2003, atuei em empresas de grande porte nos ramos de comunica\u00e7\u00e3o e consultoria e, atualmente, trabalho em uma empresa no ramo financeiro. Como experi\u00eancia profissional, durante minha carreira exerci fun\u00e7\u00f5es de desenvolvimento de software, quality assurance e controle de processos e an\u00e1lise de sistemas. Sou um entusiasta do trabalho em equipe e acredito que um + um, quando existe un objetivo em comum, \u00e9 sempre maior do que dois! Na vida pessoal, gosto de boa companhia, bons papos, bons amigos e boa arte. Ou\u00e7o uma vasta gama de estilos musicais, sou um leitor inveterado e gosto de conhecer novos lugares, novos modos de pensar, novas pessoas. Al\u00e9m disso, sou apaixonado por tecnologia como um todo e, dentro desse universo, em especial por uma \u00e1rea chamada tecnologia assistiva, cuja principal fun\u00e7\u00e3o \u00e9 empoderar e ajudar pessoas. E isso, certamente, \u00e9 um grande compromisso e uma miss\u00e3o para mim. Se voc\u00ea n\u00e3o conhece o conceito de tecnologia assistiva e como isso \u00e9 importante, clique aqui e veja a defini\u00e7\u00e3o da BlindTec sobre o assunto.","sameAs":["https:\/\/www.blindtec.com.br","https:\/\/www.facebook.com\/marlon.brandaodesousa","https:\/\/x.com\/twitter"],"url":"https:\/\/www.blindtec.com.br\/blog\/author\/marlonsousa\/"}]}},"_links":{"self":[{"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/posts\/889"}],"collection":[{"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/comments?post=889"}],"version-history":[{"count":2,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/posts\/889\/revisions"}],"predecessor-version":[{"id":900,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/posts\/889\/revisions\/900"}],"wp:attachment":[{"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/media?parent=889"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/categories?post=889"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/tags?post=889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}