Prompt de Comando e Terminal

Olá, se você ainda não viu o post sobre Gerenciamento de Arquivos e Pastas de uma olhadinha aqui.

O Prompt de Comando no Windows e o Terminal no Linux e OS X são uma forma de executar operações e aplicativos através de comandos, sem o uso da interface gráfica. Podemos considera-lo como um acesso mais avançado as funcionalidades do sistema operacional. Antigamente também era comum chama-los de console.

Certamente grande maioria das pessoas não precisa não precisa e muitas vezes até desconhece estes recursos, e antes, quando a utilização dos computadores era realizada apenas por este meio certamente era um ponto de dificuldade e até mesmo impedimento a utilização para grande parte das pessoas.

prompt-windows

Na época do MS-DOS o Windows era basicamente uma interface gráfica, carregada quando se executava o aplicativo win.exe, a partir do Windows 95 este carregamento passou a ser automático, mas caso algum problema ocorresse ou se fizesse uma inicialização de segurança, apenas o modo texto (chamado de modo DOS) era carregado. Essa interface gráfica era uma forma de tentar tornar o uso do computador mais amigável e simples, e se popularizou com o Macintosh da Apple. No Linux o sistema operacional também é baseado em modo texto, e um gerenciador gráfico o X Window System é carregado e a partir dele, vários ambientes gráficos podem ser instanciados, por isso é possível ter Linux executando KDE, GNome, XFCE, Cinnamon, MATE, Unity e diversos outros desktops gráficos.

terminal-linux

Já no OS X, embora seja baseado em Unix BSD foi concebido desde o principio para rodar uma interface gráfica (o Aqua) e ocultar toda complexidade de utilização do sistema Unix.

terminal-osx

Atualmente, tanto o Prompt de Comando quanto o Terminal são janelas gráficas onde se exibe essa estrutura e comportamento mais antigos, que de maneira alguma estão velhos. Embora não exista mais a necessidade de uso pela grande maioria das pessoas, para usuários avançados e ainda mais para programadores, o uso deste modo permite acesso a funcionalidades que através da interface gráfica são muito mais lentas e trabalhosas e em alguns casos completamente inacessível.

Antes do Windows 10 a única forma de executar um terminal linux no windows era através de emulação, normalmente utilizando o Cygwin. Era uma forma de executar comandos do Linux e eventualmente ter um primeiro contato com o terminal. No entanto, sua execução é normalmente lenta e nem tudo funciona 100%. A alternativa seria rodar o Linux numa máquina virtual (usando VMWare Player ou Virtualbox) ou ainda executa-lo através de pendrive ou Live CD (sem a necessidade de instalação). No Windows 10 de 64 bits, a partir da Build 14316 do Windows 10 Insider Preview é possível instalar o Bash on Ubuntu on Windows, um terminal Linux Bash nativo, criado em conjunto pela Canonical e Microsoft, executando no Windows sem emulação ou necessidade de máquina virtual.

bash-windows10

Nos vídeos demonstrarei as diferenças de sintaxe de comandos e funcionalidade entre Prompt de Comando e Terminal. Também demonstrarei o cmder um emulador de console pra Windows que possui melhorias visuais e funcionalidades extras que deixam o uso mais agradável e prático. Ele também une as funcionalidades de Prompt de Comando e Terminal, permitindo a utilização de ambos os comandos no mesmo console, facilitando a adaptação para uso de Terminal Linux no Windows sem a necessidade de grandes adaptações e instalações. O cmder também possui entre outras coisas, integração com Git (sem a necessidade de instalação do Git para Windows que na verdade utiliza o Cygwin).

No próximo post mostrarei os primeiros comandos para que você possa começar a brincadeira 😉

 

Gerenciamento de Arquivos e Pastas

Arquivos são a forma como armazenamos programas (sejam código fonte ou executável), documentos, imagens, músicas, vídeos, etc.

Para que possamos ter um mínimo de organização e localizar arquivos relacionados mais facilmente, reunimos os arquivos em Pastas (antigamente eram denominadas diretórios). A forma como são armazenadas e representadas as pastas e arquivos é determinada pelo sistema operacional, e embora existam diferenças entre eles, os conceitos são os mesmos e é nisso que iremos nos concentrar.

No Windows, as áreas de armazenamento (HD, SSD, leitores de CD/DVD, Pendrives e antigamente os disquetes) são identificadas por letras do alfabeto. As letras “A” e “B” são reservadas para os disquetes (desde o início do MS-DOS) e atualmente não são mais utilizadas. Normalmente o HD/SSD onde o sistema operacional está gravado inicia na letra “C” e as demais letras podem ser CD/DVD, outros HDs ou partições, Pendrives, leitores de cartão de memória (mais comum em notebooks) ou ainda compartilhamentos de rede montados como unidades.

unidade-windows

Em sistemas derivados do Unix, como o Linux e o OS X, as áreas de armazenamento iniciam em “/” e HDs, leitores de CD/DVD, Pendrives, etc, são acessados a partir de um “ponto de montagem”, que seria algo similar a associar um caminho de pasta ao hardware em si. Por exemplo, em algumas distribuições de Linux é comum ter o ponto de montagem /mnt/cd para identificar e acessar o leitor de CD.

unidade-linux

No OS X, embora o funcionamento seja similar, a interface gráfica oculta isso, fazendo uma abstração mais amigável.

unidade-osx

Os nomes de arquivos e pastas podem ser formados por letras, números, espaço e alguns símbolos especiais. No MS-DOS e nas primeiras versões do Windows havia o limite de 8 caracteres para o nome e 3 caracteres para extensão (um sufixo que identifica o tipo de arquivo, por exemplo .exe, .dll, .pdf, .jpg, .doc, etc). Esse limite foi estendido posteriormente (quando o sistema de arquivos mudou de FAT para FAT32), mas no MS-DOS e no Prompt de Comando, arquivos com nomes mais longos eram exibidos com uma variação de 8 caracteres para o nome. Embora atualmente se possa usar espaço no nome do arquivo, este não pode ser o primeiro caractere do nome, que deve iniciar com uma letra, número ou símbolo especial. Também não são todos os símbolos que podem ser usados, asterisco, ponto de interrogação, barra de divisão e contra barra são símbolos que já possuem funções específicas (praticamente comuns a todos os sistemas operacionais) e portanto tem uso restrito. Em sistemas derivados de Unix, a extensão não é tão significativa quanto no Windows, onde a mesma determina também funcionalidades do arquivo, mas utiliza-se por convenção e organização.

Para nomear os programas que iremos criar, como regra, devemos utilizar apenas letras (consoantes e vogais sem acento), números e o símbolo de underscore ou underline ( _ ), também não devemos utilizar espaço, pois dependendo da linguagem de programação ou ferramenta utilizada pode inviabilizar a execução e gerar diversas mensagens de erro. Veremos isso na prática quando começarmos a codificar.

No próximo post, vamos entender o que é e porque Prompt de Comando e Terminal são ferramentas essenciais para os programadores.

Te vejo lá.

Construindo Habilidades para Programação

Olá! Este post é o inicio de uma série onde irei compartilhar dicas, referencias e informações sobre como desenvolver habilidades necessárias para programação, independente da linguagem, ferramentas ou IDE que venha utilizar. Estes conhecimentos eram pré requisito para qualquer programador antes da popularização de interfaces gráficas nos sistemas operacionais, mas foram ficando de lado, na medida que as próprias ferramentas e IDEs foram se tornando mais amigáveis. No entanto, conhecer detalhes mais profundos do funcionamento interno do sistema operacional e suas ferramentas, utilitários, protocolo de rede e das plataformas utilizadas certamente auxiliam não apenas numa compreensão mais ampla de determinados problemas, mas também na economia de tempo ao conseguir executar tarefas de forma mais direta e eficiente, especialmente em situações onde a interface gráfica ou IDEs pesadas mais atrapalham que ajudam.

Também irei te ensinar estratégias para aprender novas linguagens de programação usando alguns princípios simples mas eficientes, correlacionando conhecimentos novos com os que já possui e ampliando seu leque de opções quando precisar solucionar um problema com código.

Caso ainda não saiba nenhuma linguagem de programação, lhe ajudarei a desenvolver sua lógica e mostrarei no que focar para aprender.

Te darei um panorama geral sobre algumas das linguagens que aprendi ao longo de três décadas que venho trabalhando com programação e como conhecer um pouco de algumas delas e seus paradigmas pode te dar uma visão mais abrangente sobre o desenvolvimento de software. Vamos codificar, debugar e comparar código entre elas.

Iremos entender como funciona o gerenciamento de versão (Git e GitHub), algo muito solicitado para qualquer vaga que se candidate atualmente, e como o seu uso também pode auxiliá-lo a criar o novo modelo de currículo que as empresas buscam (o famoso “Falar é fácil, me mostre o código”).

Veremos os conceitos básicos e fundamentais de Bancos de Dados Relacionais, comandos SQL, SGDBs mais utilizados e como os mesmos se interligam com linguagens de programação.

Também irei abordar virtualização, protocolos de rede, segurança, DevOps, Cloud e alguns outros tópicos que embora não sejam diretamente ligados a programação rodeiam o nosso universo de atuação e ter conhecimentos sobre eles pode ser um ótimo diferencial para você e sua carreira.

Para conectar tudo, desenvolveremos um projeto prático, um pequeno sistema web, em uma das linguagens analisadas, conectando todos os conhecimentos adquiridos, produzindo um software de verdade, com acesso a banco de dados, código versionado com Git e hospedado no GitHub e sua publicação no Heroku (plataforma de nuvem), passando por todas as etapas de desenvolvimento, desde a analise até a entrega (publicação).

Iniciaremos nossa jornada analisando o Gerenciamento de Arquivos e Pastas e uso de Prompt de Comando. Utilizaremos como sistema base o Windows 10 mas ao longo da caminhada trabalharemos também com Linux e OS X (o sistema operacional dos computadores da Apple, criadora do iPhone).

Vem comigo, e juntos iremos construir e empurrar suas habilidades e seu conhecimento para um novo nível.

Happy Programmers’ Day

Feliz Dia do Programador pra você que coda por profissão, por paixão ou como eu, por ambas.

Só por diversão, criei alguns trechos de código em algumas linguagens: Go, Ruby, Python, Lua, Javascript, PHP e T-SQL.

Esta foi a ordem em que fui criando os códigos, e não tem relação com preferência ou qualquer coisa assim, simplesmente os códigos apenas foram saindo nesta sequencia…

Se quiser dar uma olhadinha, vai encontrá-los no meu Github aqui. Eles podem ser testados neste serviço online repl.it, com exceção do código em T-SQL.

Abaixo da pra verificar o “resultado final” de cada linguagem:

GO

2016-09-12_01-go

Ruby

2016-09-12_02-ruby

Python

2016-09-12_03-python

Lua

2016-09-12_04-lua

Javascript

2016-09-12_05-javascript

PHP

2016-09-12_06-php

T-SQL

2016-09-12_07-t-sql