Brinque com o TRS 80, uma das máquinas glamourosas dos anos 70 e 80, no Linux

Com emuladores, hoje é possível estar em vários lugares, conhecer e revisitar diversos “brinquedos” e, até mesmo, voltar ao passado.
O sistema de micro computador TRS 80 foi uma linha importante de microcomputadores, lançada pela companhia Texana (EUA) Tandy Corp.

No Brasil, em função da Política Nacional de Informática e da prática de uma reserva de mercado, esta linha foi vendida na forma de clones compatíveis com os originais.
Alvo de críticas extremamente ácidas, a reserva de mercado para fabricantes de computadores nacionais (brasileiros) teve aspectos positivos, que convém ressaltar:

  1. Desenvolvimento básico da indústria nacional de informática, com a consequente geração de empregos especializados e desenvolvimento científico no setor.
  2. E, pessoalmente, creio que o design dos nossos clones, em vários casos, superavam o original estrangeiro — com destaque pro CP-400 (eu morria de inveja dos amigos que tinham este…)

As pessoas ainda tem discussões acaloradas sobre esta política, no Brasil e – neste artigo, pelo menos – pretendo me manter afastado disso, para não perder o foco do TRS-80 e de seu emulador. 😉

No nosso território, foram vendidos, nos modelos CP 300, CP-400, CP-500 (Prológica) e D-8000 (Dismac).
Chamava a atenção, no hardware, o teclado QWERTY completo e o novíssimo processador Zilog Z80 (que competia com o Intel 8080), 4K de memória RAM e a presença da linguagem de programação BASIC .
Nos EUA, o preço era equivalente a 2.400,00 dólares (atualizados para 2017).

Como instalar o emulador do TRS-80 no Linux

No Debian/Ubuntu, o emulador xtrs está disponível nos repositórios oficiais e pode ser instalado a partir do terminal, com o apt:


sudo apt install xtrs

Trata-se de um emulador GUI para os modelos TRS-80 I, II, III, 4 e 4P.
O emulador estende suas capacidade a periféricos, como o monitor, suporte a fita cassete, disquete (podem ser usadas as mídias reais, inclusive) e disco rígido.
Suporta ainda, importar e exportar arquivos do sistema hospedeiro
Você vai precisar obter as imagens ROM para conseguir dar um boot com sucesso.
No site TRS-80.com é possível obter disquetes com conteúdo útil (inclusive as ROMs) para usar com o xtrs.

Como obter os arquivos ROM

Até aqui, tudo foi fácil, eu espero.
Encontrar as ROMs requeridas para fazer o emulador funcionar pode vir a ser um verdadeiro teste para a sua paciência.
O problema é que, apesar do tempo decorrido, o conteúdo original das ROMs ainda está sob os direitos da Tandy e da Microsoft.
Nos fóruns da comunidade de usuários do emulador, é possível encontrar quem possa te enviar estes arquivos.
De acordo com o site Gaming After 40, só é necessário o MODEL1.ROM, ou trs80model1.rom, como arquivo requerido para fazer o xtrs decolar.
xtrs trs-80 emulador

De cara, ele já permite usar a linguagem de programação BASIC para começar a dar instruções ao sistema.
Consegui por o meu sistema no ar após ler o último link (em inglês), abaixo, na sessão Referências.
Boa sorte!

Referências

Página de direcionamento da Wikipedia sobre os TRS-80: https://pt.wikipedia.org/wiki/TRS-80.
Mais informações sobre o uso do emulador (em inglês): http://www.trs-80emulators.com/model-1-3-4-emulator/.
Aonde encontrei informações muito úteis (inclusive aonde baixar ROMs): https://gamingafter40.blogspot.com.br/2010/12/how-to-emulate-trs-80-model-iiii.html.

Perl, PHP e Python.

Cada qual com suas próprias vantagens e desvantagens, Perl, PHP e Python têm mais do que a letra ‘P’, no início de seus nomes, em comum.
Trata-se de 3 linguagens de programação modernas e muito populares.

Para se tornar um bom programador, dominar uma única linguagem de programação não é o suficiente.
É muito comum nos envolvermos em projetos que fazem uso de mais de uma linguagem, como meio para solucionar problemas.
Fazer a mudança de uma linguagem de programação para outra é mais fácil quando se tem intimidade com mais de uma.
O problema é que há muitas linguagens de programação no mundo.
Neste post, vou tentar mostrar porque Perl, PHP e Python merecem que você dedique parte do seu tempo para aprender, pelo menos, uma delas.
Claro que a escolha de uma linguagem, para erigir um projeto, parte de se considerar diferentes fatores — tais como

  • as funcionalidades que se deseja que as aplicações tenham,
  • que novos recursos elas devem suportar,
  • a(s) plataforma(s) de hardware/sistemas operacionais para as quais se vai desenvolver as soluções
  • performance, segurança, quantidade de código que precisará ser criado, a comunidade etc.

As linguagens dos ‘P’, são dinâmicas e poderosas, cada qual do seu jeito e têm em comum o fato de que são muito usadas para desenvolver aplicações web e scripts.
Vamos conhecer um pouco de cada uma, suas vantagens e (lógico!) desvantagens.

Perl

O Perl (nas versões 5.x e 6.x) é uma linguagem de programação dinâmica, interpretada, de propósito geral e de alto nível.
Originalmente desenvolvida por Larry Wall, em 1987, para uso no sistema operacional Unix — tinha um objetivo inicial de facilitar o processamento de relatórios de sistema.
O Perl passou por várias mudanças e revisões e tem sido reprojetada na versão 6 — a ponto de evoluir para uma nova linguagem, em relação á original.
Ambas as ramificações (Perl 5 e 6) têm desenvolvimento ativo e independente uma da outra, formando a família de linguagens Perl.
A família pega emprestado características de outras linguagens importantes, como C, shell script, AWK e sed.
Atualmente, encontra aplicação na administração de sistemas, programação de redes, aplicações financeiras, bioinformática etc.

Manipulação de cadeias de caracteres (strings) e expressões regulares são pontos fortes conhecidos do Perl.

Vantagens

  • Perl é muito boa para lidar com expressões regulares e costuma ser a primeira opção para fazer trabalho pesado nesta área.
  • Seu código é bem curto e, comumente, é possível implementar soluções com apenas uma linha de código.
  • Pode ser usada como linguagem funcional, imperativa, procedural ou orientada a objetos.
  • O CPAN do Perl provê uma grande quantidade de módulos e código testado. Boa parte é gratuita.
  • Por ser uma linguagem, já tradicional e com bastante estrada (mais de 30 anos), conta com muita documentação online e uma grande comunidade de suporte.
  • Portabilidade e disponibilidade a todas as plataformas.

Desvantagens

  • Uma vez que tem sintaxe complexa, iniciantes podem ter alguma dificuldade de entender.
    O mesmo código pode ser escrito de modos diferentes — o que é muito bom, quando se já tem um conhecimento mais avançado sobre a linguagem, mas pode ser fator de confusão para quem está aprendendo.
  • Comparado ao Python, tem documentação escassa sobre como programar orientado a objetos.
  • Pode ser lenta, em comparação com outras linguagens de script.

Popularidade

Mesmo não sendo “nova no pedaço”, seu crescimento tem sido lento, (novamente) comparado a outras linguagens.
Ainda assim, goza de grande popularidade e de uma comunidade engajada.

PHP

Também se trata de uma linguagem de propósito geral, mas é amplamente usada em websites.
Projetada por Rasmus Lerdorf, é uma linguagem de script interpretada server-side, desenvolvida com o propósito de ser usada no desenvolvimento web — sendo que, inicialmente, seu nome correspondia a Personal Home Page.
Atualmente, PHP é um acrônimo recursivo para PHP: Hypertext Preprocessor — ou “PHP: Preprocessador de Hipertexto”.
É muito usada em meio ao código HTML e está inserida em vários sistemas de gestão de conteúdo online.
O código é geralmente processado por interpretador implementado como módulo no servidor web ou como CGI (Common Gateway Interface).
O código também pode ser executado/interpretado na interface de linha de comando (CLI) e pode ser usado para implementar aplicações standalone.
Com um desenvolvimento, cujo início data de 1995, o PHP se encontra na versão 7.x, atualmente.
Ao contrário do Perl (5 e 6) e do Python (2 e 3), a comunidade do PHP caminha junto com as novas versões — de forma que a linguagem não sofreu uma bifurcação em seu desenvolvimento.
É usado no YouTube, no Facebook e em vários outros grandes projetos na Internet.

Vantagens

  • A grande maioria dos provedores de Internet oferece um ambiente pronto para você desenvolver em PHP, nas implementações mais atuais da linguagem.
  • É fácil de aprender e usar. A sintaxe é muito parecida com a da linguagem C.
  • Conta com uma enorme comunidade de suporte.
  • É estável e rápido.
  • Tem suporte a muitos bancos de dados e provê gestão nativa de sessão.

Desvantagens

  • Algumas das bibliotecas escritas em PHP usam uma abordagem procedural e podem ser de difícil compreensão para programadores com formação exclusiva em orientação a objetos.
  • Pode se tornar lenta com a escalabilidade das suas necessidades.
    Algumas organizações fazem uso de frameworks para contornar este problema, contudo.
  • Não é a opção ideal para escrever aplicações desktop.

Popularidade

É, certamente, muito popular e costuma integrar a lista top 10 de linguagens de programação — principalmente quando o assunto é desenvolvimento para a web.

Leia mais sobre o PHP.

Python

Desenvolvida no fim dos anos 80, por Guido van Rossum, Python é uma linguagem de programação elegante e fácil de aprender.
Tem se tornado especialmente popular nos últimos anos e costuma-se recomendar seu aprendizado (como primeira linguagem) a iniciantes em programação.
Tem suporte a múltiplos paradigmas — funcional, imperativa, procedural e, obviamente, orientada a objetos.
Pode ser usada para desenvolver aplicações para desktop, para dispositivos móveis, análise de dados, Web, computação nas nuvens, jogos etc.
A linguagem usa a indentação para identificar blocos de código, o que elimina a necessidade de usar pontos-e-vírgulas etc.

Vantagens

  • Muito bem documentada e você encontra muitos livros sobre a linguagem, inclusive ótimas publicações de autores nacionais. Ou seja, você não precisa comprar traduções malfeitas.
  • É usada em animação 3D e no desenvolvimento de jogos, diferente das outras linguagens de que falamos aqui.
  • Estudantes costumam aprender Python mais rápido do que C ou C++.
  • O código é mais enxuto e mais limpo e, portanto, mais fácil de entender.
  • Comparado a outras linguagens, seu código costuma ser mais curto.
  • Tem suporte a JVM, de forma que seu código pode rodar alguns objetos ou APIs Java.

Desvantagens

Por mais animado que se esteja com uma linguagem de programação, não dá para fechar os olhos para seus pontos fracos:

  • O seu código pode simplesmente não funcionar por que você esqueceu de indentar corretamente.
  • O Python força os programadores a seguir uma convenção.
  • É uma linguagem interpretada e mais lenta que C ou C++.
  • Até o momento, não é muito eficiente para rodar código voltado para múltiplos processadores e/ou núcleos.

Popularidade

Tem se tornado mais e mais popular nos últimos anos e chegou a ganhar o TIOBE Programming Language of the Year/2007. A instituição mede o crescimento e a popularidade de uma linguagem no período de um ano.
A linguagem se manteve em 2o, durante o ano de 2017.

Conclusão

Não existe resposta pronta para a pergunta “qual a melhor linguagem ….”
No caso destas 3, todas podem realizar os mesmos projetos — algumas, com mais eficiência do que as outras.
A título de sugestão, segue a minha lista:

  • PHP é a mais indicada para o desenvolvimento Web e projetos na Internet. Dos servidores gratuitos aos mais caros, quase todos oferecem suporte a PHP e a bancos de dados MySQL/MariaDB.
  • Projetos do lado do cliente, para rodar no desktop ou em dispositivos móveis, podem ser melhor servidos com Python.
  • Perl é mais vantajoso na automação de serviços, na administração de sistemas e em scripts.

Se você tem planos de iniciar um projeto na Web, vale saber que, com o PHP, vai encontrar quase tudo pronto para começar a trabalhar e ver os resultados.
Contudo, se ainda não tiver qualquer projeto em mente, minha recomendação pessoal é a favor do Python.

Referências

https://pt.wikipedia.org/wiki/Perl.

https://pt.wikipedia.org/wiki/PHP.

https://pt.wikipedia.org/wiki/Python.

Leia mais sobre Python.

https://electronicsforu.com/resources/software/a-guide-to-rogramming-in-perl-php-and-python.

Por que eu uso o Vim para programar.

Já experimentei várias IDEs de programação e ainda uso algumas, entre editores de textos variados.

Se alguém me perguntar qual editor uso para escrever código, a resposta é “Muitos!”.

Mas um deles sempre me cativou mais e é a quem sempre recorro quando vou dar continuidade a algum trabalho, dar alguns retoques em algum pedaço de código e editar arquivos de configuração do sistema.

O nome dele é Vim (ou Vi) e, embora não seja a única (como já disse), é a minha principal opção de editor de código.

Recentemente topei com o post do Casper Beyer, em que ele explica por que também prefere usar o Vim para programar.

Me senti tipo… “Poxa! Não sou o único maluco do pedaço”. 😉 Faço minhas as palavras do Casper:

A principal razão para usar o Vim é o costume — e não por que não sei sair dele.

A filosofia por trás da construção do Vim, não é apenas a leveza. Tanto isto é verdade, que as estatísticas vão mostrar que o Nano, muitas vezes, bate o Vim, neste quesito.

A ideia do Vim é oferecer uma experiência de agilidade para desenvolvedores — oferecendo uma gama de comandos que podem ser dados sem a necessidade de afastar as mãos do centro do teclado.

gvim text editor screen capture

Desde que comecei a usar o Linux, me acostumei a abrir pequenos arquivos de código ou de configurações do sistema dentro dele, em vez de ficar a esperar “séculos” que o editor GUI (interface gráfica) aparecesse na tela.

Na CLI, ele é leve, pequeno e está bem longe de ser um programa ruim. Pelo contrário, podemos usar extensões e plugins para aumentar as suas funcionalidades.

gvim text editor screen capture

Saber usar bem este programa, vai também ajudar quando você tiver que se conectar a algum servidor remoto via SSH — onde é possível que o vi (irmão mais velho do Vim) e o Nano sejam as únicas opções de editores disponíveis.

Quem usa computadores com restrição de recursos, vai entender bem melhor alguns dos argumentos, aqui.

A possibilidade de aumentar as funcionalidades, através de extensões e a velocidade com que o editor trabalha são as razões mais importantes, pra mim.

O visual é uma questão de gosto pessoal. E eu gosto do “visu” espartano dele.

vim text editor screen capture
O Gvim é uma versão GUI do editor.

Em seu artigo, Beyer propõe um teste. Carregar um arquivo com o seguinte código (em linguagem C), em vários editores, para comparar desempenhos:

#include 

int main() {
  printf("Hello, world!\n");
}

Eu obtive os seguintes números, relativos ao tempo total de carregamento e finalização do aplicativo, em segundos:

  1. Nano: 0,45s
  2. Vim: 0,47s
  3. Komodo Editor: 8,257s

Como você pode observar, o Nano consegue ser ainda mais rápido do que o Vim.

E a diferença entre o tempo de abertura destes dois para o do Komodo Editor, é brutal.

Consumo de memória do Vim

E o consumo de memória?

O código, acima, ocupa 66 bytes no disco do meu sistema. Veja os valores atingidos com o uso de cada editor:


ps aux | grep "hello.c"

justinc+ 16719 11.7  3.0 958240 242980 pts/1   Sl   16:32   0:09 /opt/Komodo-Edit-11/bin/komodo hello.c
justinc+ 16720  0.1  0.0  33140  7112 pts/1    T    16:32   0:00 vim hello.c
justinc+ 16721  0.0  0.0  15060  2640 pts/1    T    16:32   0:00 nano hello.c

O resultado exibe o consumo de memória na 4a coluna, da esquerda para a direita.

Assim, temos um consumo de 3.0 MB para o komodo, enquanto o Nano e o Vim nem “mexem os ponteiros”.

O ps não é perfeito para medir o consumo de memória de aplicativos mas o objetivo, aqui, é só estabelecer uma comparação.

Veja os resultados obtidos com o pmap:


pmap -x 16866 16969 16970 | grep total

total kB          973988  237952  155584
total kB           41932    7792    2892
total kB           23952    3736     960

Pela ordem, acima, temos os números (em KB), na segunda coluna, referentes ao Komodo, ao Vim e ao Nano.

Este último é o preferido de muita gente, em termos de editores em CLI, além de estar presente em quase todas as distribuições GNU/Linux.

Estes números só reforçam o quanto é ridículo usar um editor com um consumo de memória tão massivo.

Conclusão

Além do Komodo, como editor para GUI do Linux, uso também o Atom e o Netbeans (IDE).
Acho-os incríveis e vou continuar a tê-los instalados no meu sistema, para quando eu lembrar de usá-los.

O preferido, contudo, continua a ser o Vim.
A lógica pela qual o programa foi construído é fantástica: dar o máximo de produtividade para o desenvolvedor. Todas as funções que se precisa, devem estar ao alcance dos dedos.

Ele dispensa você da necessidade de tirar a mão de cima do teclado, para pegar no mouse — embora tenha completo suporte ao dispositivo tanto na edição para GUI quanto para a CLI.

Você pode levar algum tempo para conhecer e memorizar os comandos e as teclas de atalho do Vim — da mesma forma como vai levar algum tempo para dominar qualquer outro editor.
A diferença é que, com o Vim, você será premiado com mais eficiência e produtividade no final.

Comente sobre o que você acha deste editor.
Prefere mais agilidade e velocidade para editar ou prefere a comodidade de uma grande IDE?

Leia outros artigos sobre o Vim.

Como instalar o FORTRAN no Debian

Criada, dentro dos laboratórios da IBM, por John Backus, em 1957, a linguagem de programação Fortran completou 60 anos de idade em 2017.
Com diversas versões e atualizações, ao longo dos anos, ela amadureceu bem e tem se mantido atualizada, por grandes empresas (como a IBM e a Intel).
O Debian 9 Stretch tem aproximadamente 400 pacotes de softwares relacionados ao FORTRAN.
Você mesmo, pode fazer a pesquisa, com o apt search:


apt search fortran

Use o comando grep para obter uma lista mais sucinta — e filtrar melhor o que você realmente quer ver:


apt search fortran | grep -B1 -i "compiler" | less

O comando, acima, retornou 90 itens para mim.
Para poder começar a programar ou compilar seu código, contudo, basta instalar 1 ou 2 destes pacotes.
Atualmente, você pode acrescentar facilmente às suas ferramentas um emulador QEMU, para rodar o FORTRAN em uma arquitetura de hardware específica.
No Debian e em outras distribuições Linux, é muito comum se usar o gfortran (GNU/FORTRAN) — que é software livre e segue todos os padrões da linguagem.


apt show gfortran

Package: gfortran
Version: 4:6.3.0-4
Priority: optional
Section: devel
Source: gcc-defaults (1.168)
Maintainer: Debian GCC Maintainers 
Installed-Size: 16,4 kB
Provides: fortran-compiler, gfortran-mod-14
Depends: cpp (>= 4:6.3.0-4), gcc (>= 4:6.3.0-4), gfortran-6 (>= 6.3.0-9~)
Suggests: gfortran-multilib, gfortran-doc
Tag: devel::compiler, devel::lang:fortran, role::dummy, suite::gnu
Download-Size: 1.356 B
APT-Sources: http://ftp.br.debian.org/debian testing/main amd64 Packages
Description: compilador Fortran 95 da GNU

 Este é o compilador Fortran 95 da GNU, que compila o código em todas as
plataformas suportadas pelo compilador gcc. Ele usa o mecanismo gcc para
gerar código otimizado.

 É um pacote de dependências fornecendo o compilador Fortran 95 padrão
da GNU.

O Fortran 95 (lançado em 1997), foi uma versão revisada do Fortran 90.
O Fortran 2015, a próxima versão, tem previsão para ser lançada em meados de 2018.

O pacote gfortran é um ótimo ponto de partida. Veja como instalar:


sudo apt install gfortran

Uma vez instalado, se quiser ver a versão do software, use a opção ‘–version’:


gfortran --version

GNU Fortran (Debian 6.3.0-18) 6.3.0 20170516
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

fortran hello world

Hello World em Fortran

Para escrever o seu primeiro programa em Fortran, abra um editor de textos comum (eu uso o vim) e digite o seguinte código:


program helloworld
        print *, "------------"
        print *, "Hello World!"
        print *, "------------"
        end program helloworld

Não se preocupe com a ‘caixa’ das letras — o Fortran é case insensitive, ou seja tanto faz escrever tudo em maiúsculas como minúsculas.
Salve o código como helloworld.f95 (ou qualquer outro nome que você achar melhor.
Em seguida use o compilador, que você acabou de instalar:


gfortran helloworld.f95 -o hello

O compilador irá gerar um arquivo executável, chamado hello:


./hello 

 ------------
 Hello World!
 ------------

Saiba por que precisamos usar ./ antes de nome do programa que queremos executar no Linux e no UNIX.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

instale o Android SDK no Linux

Em algumas distribuições Linux, você pode começar a desenvolver para a plataforma móvel imediatamente, após instalar o metapacote Android SDK, que contém um conjunto de ferramentas e softwares utilitários CLI voltados para quem deseja programar para esta plataforma.
O kit inclui uma variedade de ferramentas de assistência ao desenvolvedor de aplicações para a plataforma mobile Android.
As ferramentas, presentes no kit, se classificam em 3 grupos:

  1. SDK Tools — ou Software Development Kit Tools (kit de ferramentas de desenvolvimento de software)(
  2. Platform-tools ou ferramentas de plataforma.
  3. Build-tools ou ferramentas de construção

É conveniente dizer que as ferramentas incluídas são CLI, ou seja, voltadas para a linha de comando.
O SDK Tools é independente de plataforma e é sempre requerido, seja qual for a versão do Android para a qual você deseja voltar o seu trabalho.
Testei a instalação nos sistemas operacionais Debian 9 Stretch e no Ubuntu 16.04 LTS Xenial Xerus. Nas duas distribuições os pacotes estão presentes e podem ser instalados direto dos repositórios.
No Debian 9.0 Stretch o Android-SDK é uma novidade — e ele provê todas as ferramentas necessárias para desenvolver para a plataforma Android, a partir da versão android-23.
É possível também instalar os binários do Google, diretamente no diretório /usr/lib/android-sdk.
A documentação oficial revela que todas as bibliotecas usadas no app ainda não estão cobertas, tal como o Android Support — que não faz muito sentido dentro do Debian, já que só é útil dentro de um app Android.

Como instalar o kit de desenvolvimento Android no Debian ou Ubuntu

Claro que, depois da instalação do kit, você vai precisar estudar e ler um pouco mais para se aprofundar na área de desenvolvimento para a plataforma. Neste sentido, espero que os links na seção de Referências (lá embaixo!) ajude.
Para instalar os metapacotes necessários, siga os passos:

  1. Comece a instalar android-sdk e o android-sdk-platform-23 (pacote sugerido):
    sudo apt update
    sudo apt install android-sdk android-sdk-platform23
    
  2. Ajuste algumas variáveis de ambiente:
    export ANDROID_HOME=/usr/lib/android-sdk
  3. Opcionalmente, rode o gradle:
    gradle build --init-script /usr/share/android-sdk-helper/init.gradle
    

Com este procedimento, você terá algumas ferramentas de linha de comando (CLI) para iniciar — como o adb, o emulator, o fastboot etc.
Sugiro complementar este kit com a instalação da IDE Android Studio, uma ferramenta gráfica (GUI) para desenvolvimento visual.

Referências

https://guardianproject.info/2017/03/13/build-android-apps-with-debian-apt-install-android-sdk/.
https://bits.debian.org/2017/03/build-android-apps-with-debian.html.
https://wiki.debian.org/AndroidTools.