Melhore seu desempenho como programador C e C++ com o uso de um cache de compilador.

Com frequência precisamos compilar um programa e testar diversas vezes, até poder finalizar o trabalho com ele.
Ter uma ferramenta de caching do seu compilador é uma ótima forma de tornar seu trabalho todo mais eficiente e, principalmente, mais veloz.

Neste post, vou te apresentar o ccache.
Veja o que a própria ajuda do pacote diz sobre ele:


apt show ccache

...
O ccache é um cache de compilador.
Ele acelera a recompilação fazendo cache de compilações anteriores e detectando quando a mesma compilação está sendo feita novamente.
Há suporte para as linguagens C, C++, Objective-C e Objective-C++.

Como tudo, a ferramenta tem limitações.
O ccache suporta apenas um único arquivo C/C++/Objective-C/Objective-C++.
Para outros tipos de compilação (como arquivos múltiplos e links), ele acabará disparando o compilador real e, nestes casos, não haverá ganhos de desempenho.
Algumas flags de compilação podem também não ter suporte, o que também fará com que o utilitário volte ao compilador real do sistema.
Se você usa o Debian ou o Ubuntu, instale o ccache com o apt:


apt install ccache

No Fedora, use o dnf:


dnf install ccache

Meu teste com o ccache

Segue o meu teste de compilação do programa arearect.c++ — com aproximadamente 15 linhas de código.
Primeiro usei o g++ padrão do sistema:


g++ arearect.c++ 

real    0m0,678s
user    0m0,608s
sys 0m0,069s

Realizei 3 vezes o teste e o melhor resultado foi este, acima.
Abaixo, o melhor resultado usando o ccache:


time ccache g++ arearect.c++

real    0m0,663s
user    0m0,596s
sys 0m0,054s

Faça os seus próprios testes e decida se vale a pena para você.

Como encontrar ferramentas de programação para desenvolvedores Debian e Ubuntu (CLI)

A linha de comando (CLI) é um dos ambientes mais férteis e que oferece mais respostas rápidas e eficiência na execução de tarefas em muitos sistemas operacionais.
Para programadores(as), como um nicho, é onde se encontra um enorme ecossistema de ferramentas para criar, testar e distribuir o resultado do seu trabalho.

Usuários novatos podem achar uma tela preta, com letras coloridas, um tanto intimidante.
Ao se dar oportunidade, você irá ver que há muito para se extrair do seu sistema operacional, na CLI, contudo.

Nos sistemas Debian e nos seus derivados, é possível encontrar as ferramentas disponíveis para trabalho com o uso do comando apt ou apt-get.
Ambos servem para inquirir os repositórios.

Este é um post complementar ao Ferramentas de programação para desenvolvedores (GUI), em que mostrei como encontrar aplicativos para ajudar no desenvolvimento de programas no ambiente gráfico (GUI).
Na CLI, porém, é possível encontrar muito mais opções de softwares.
Abra um terminal e use o apt search:


apt search python

O exemplo acima, infelizmente, dá um resultado horrível, com “milhares” de itens inúteis na lista.
O problema é que o sistema inteiro usa diversas bibliotecas (libraries)— relacionadas ao desenvolvimento de aplicativos em Python, Perl, C, C++ etc. — que sempre irão aparecer neste tipo de busca — o que não acrescenta, nem ajuda quem está procurando ferramentas, como aplicativos, de programação para a sua linguagem favorita.
Para obter uma relação de aplicativos mais relevantes, pode-se usar o comando grep:


apt search python | grep -i "ide"

Como eu disse, a relação é grande…
Para excluir os resultados que contenham a string “lib” (library), use a opção ‘-v’


apt search python | grep -B1 -v "lib"

A opção ‘-B1’, acima, informa ao grep para mostrar a linha anterior (before) àquela que contém o resultado da busca. Usualmente, é a linha que contém o nome do aplicativo.
Acrescente o less, para facilitar sua leitura:


apt search python | grep -B1 -v "lib" | less

As buscas irão retornar resultados mais relevantes se você souber o que está procurando.

Ferramentas para desenvolver PARA Debian e Ubuntu

No Debian e no Ubuntu, você irá precisar instalar (pra começar) o build-essential, que contém os seguintes pacotes (fundamentais para criar e empacotar novos programas):

  • libc6-dev – biblioteca padrão C.
  • gcc – compilador C.
  • g++ – compilador C++.
  • make – utilitário GNU make, usado para manter grupos de programas.
  • dpkg-dev – ferramentas de empacotamento para desenvolvedores.

Editores de código

Acho as IDEs gráficas excelentes e, até, uso algumas eventualmente.
Na maior parte do tempo em que estou lidando com código, porém, gosto de fazer isto com ferramentas leves.
Gosto de usar o Vim para programar.
Porém, há outros excelentes editores de texto CLI, que você pode considerar:

  • nano — quase sempre presente em todas as distribuições GNU/Linux. Tem uma abordagem diferente do Vim e costuma ter desempenho tão bom ou melhor. Sua concepção vem de um dos editores de texto mais populares na década de 80: o WordStar.
  • jed — tem uma concepção mais moderna e é completamente customizável. Possui modos de emulação Emacs, para quem deseja migrar daquela plataforma. Também pode emular CUA, que facilita o uso para quem está acostumado a usar os atalhos de teclado do OpenOffice.
  • drpython e pype — editores voltados para programar em Python.

Você pode fazer buscas por editores voltados para a sua linguagem de programação, se quiser:


apt search editor | grep -B1 -i perl

Obtive resultados relevantes com o comando:


apt search editor | grep -B1 -v "lib"

Espero que este post tenha sido, de alguma forma relevante. Não se esqueça de ler a outra parte, sobre como encontrar ferramentas gráficas de programação.

Como instalar um compilador COBOL no Linux

O COBOL está, provavelmente, bem longe de ser uma linguagem de programação extinta.
Nunca fui programador COBOL, mas já tive contato com programas e código-fonte escritos nesta linguagem — que nunca me pareceu difícil de entender e aprender, digo de passagem.
No Linux, qualquer programador de COBOL pode se atendido com compiladores — que podem ser baixados e instalados rapidamente dos repositórios da sua distro favorita.
No Debian (versão 9, aqui!) é possível encontrar pacotes voltados para o COBOL, com o comando ‘apt search’:

apt search cobol

O comando acima, funciona no Ubuntu e em qualquer outra distribuição baseada no Debian.
Usuários do openSUSE, podem usar o zypper:

zypper search cobol

Para instalar o compilador open-cobol, no Debian e Ubuntu, use novamente o apt:

sudo apt install open-cobol

No openSUSE, você pode usar o ‘zypper install’ ou o oneClick install.
Não se preocupe se o nome exibido for GNU-Cobol — este é o novo nome do open-cobol, na verdade.
opensuse oneclick install cobol
Usuários Red Hat ou Fedora podem instalar o pacote com o yum:

yum install open-cobol

Para obter a versão instalada, use o parâmetro ‘–version’:

cobc --version
cobc (OpenCOBOL) 1.1.0
Copyright (C) 2001-2009 Keisuke Nishida / Roger While
Built    Mar 01 2014 13:11:28
Packaged Feb 06 2009 10:30:55 CET

Esta versão pode produzir binários compatíveis com até 6 dialetos da linguagem. Veja como obter a lista de dialetos:

cat cobc.help | grep -i '<dialect>' -A7
  -std=<dialect>        Compile for a specific dialect :
                          cobol2002   Cobol 2002
                          cobol85     Cobol 85
                          ibm         IBM Compatible
                          mvs         MVS Compatible
                          bs2000      BS2000 Compatible
                          mf          Micro Focus Compatible
                          default     When not specified

Se você usa o Fedora, pode achar interessante ler sobre como instalar o ambiente de desenvolvimento GNUCobol ou OpenCobol, na sua distro.

6 compiladores online para estudantes e profissionais de programação

Neste artigo, vou falar de alguns websites que oferecem a facilidade de compilar e rodar seu código, em variadas linguagens de programação — tais como, C, C++, Java, Python etc.
Desde que você tenha acesso à Internet, pode colocar o seu código à prova, de onde estiver.

Pode ser uma ótima solução para o caso de ter que usar um computador emprestado — no qual você não pode instalar o compilador ou interpretador que você precisa para estudar ou testar seu código.

Há vários sites, que podem ajudar na falta de um compilador ou, mesmo, de uma IDE adequada para você.
Neste post, vou citar 6 (os links abrem em nova janela/aba) que possuem múltiplas opções de compiladores de diferentes linguagens de programação.
Se você conhece outras soluções semelhantes, não deixe de compartilhar sua experiência com os outros leitores, nos comentários.

CodeChef IDE

screen shot codechef website
O CodeChef aceita código em mais de 35 linguagens.
Antes de tudo, é um site de competição para programadores. Você pode pegar um dos desafios da competição ou praticar nos diversos níveis disponíveis (beginner, easy, medium, hard, challenge e peer).
Seu editor de textos permite configurar a indentação e escolher entre mais de 30 temas (inclusive, com fundos escuros, para quem trabalha à noite).
Além disto, a IDE oferece recursos como atalhos de teclado — que facilitam enormemente quando o trabalho é grande.
Por exemplo, não precisa rolar a tela para baixo e clicar no botão “Run” para compilar e rodar o código. Nem precisa tirar a mão do teclado. As teclas ‘Ctrl + Enter’, fazem isto.
Há mais de 80 atalhos de teclado e isto, com certeza, é um bom motivo para usar o editor.
Link para ir direto para a IDE do CodeChef: https://www.codechef.com/ide.

CodePad

captura de tela codepad sobre o GNOME
Com um editor mais simplificado e uma quantidade limitada de linguagens suportadas (C/C++, D, Haskell, Lua, OCcami, PHP, Perl, Python, Ruby, Scheme e TCL), este vale pela simplicidade e eficiência — se a sua linguagem de trabalho/estudo estiver na lista, claro.
O CodePad não é uma IDE, mas um editor integrado ao compilador/interpretador.
É também uma ferramenta de colaboração (ou pastebin).
Ao escrever e executar seu código, o site gera um link para ele — e você o pode compartilhar fácil.

A função de compartilhamento, pastebin, gera um link específico para o site com o seu código, o que torna fácil mostrá-lo a outras pessoas.

Por curiosidade, o website foi desenvolvido em Python, com o uso de Pylons e SQLAlchemy.
Você o encontra aqui: http://codepad.org/

Ideone

captura de tela ideone
O Ideone, não chega a ser uma IDE (como o nome leva a crer). Trata-se de um compilador e ferramenta de debugging online.
Você pode escrever seu código no seu editor local (ou no próprio site). Em seguida, pode escolher entre mais de 60 linguagens de programação, para compilar e rodar seu trabalho.
Mesmo tendo aparência simples, possui syntax highlighting também e permite compartilhar fácil o seu código, como um pastebin.
Confira aqui: http://ideone.com/

OnlineCompiler

onlinecompiler web online compiler
Com opções de linguagens de programação limitadas a C/C++, FORTRAN, Java, Pascal e Basic, permite compilar e baixar o seu executável — para Windows ou Linux.
Confira aqui: http://www.onlinecompiler.net/.

Repl.it

captura de tela compilador online replit
Com suporte a 30 linguagens de programação, o Replit é um trabalho de uma equipe pequena, porém muito bem feito.
O Replit Classroom é uma ferramenta, dentro do site, voltada para professores. Com ela, se cria uma “sala de aula”, para ensinar programação para quantos estudantes se quiser.
O editor permite configuração da identação e de seu visual. Possui 2 opções de tema (clara/escura).
A função de compartilhamento de código tem a “burocracia” de pedir cadastro.
Confira o site aqui: https://repl.it/.

RemoteInterview

captura de tela remoteinterview
Com uma interface limpa, 2 opções de tema (clara/escura, também) e mais de 20 opções de linguagens de programação (entre as mais populares), o RemoteInterview tem a concepção de ser um site de “entrevista” para a contratação de programadores, onde o profissional pode mostrar seu conhecimento etc. Ele vai muito além disto, com certeza.
A interface é eficiente e tem opções de teclas de atalho, que simulam os editores Vim, Sublime e Emacs. Se você já estiver acostumado com um deles, este local pode ser de grande produtividade para você.
O RemoteInterview também tem a funcionalidade de pastebin, para compartilhar seu código em fóruns, chats, nas redes sociais etc.
Confira o site aqui: https://codepad.remoteinterview.io/.

Use o checkinstall para criar pacotes gerenciáveis dos aplicativos que você compila no seu sistema.

Compilar softwares a partir do código fonte, é um método de instalação que possibilita obter a versão mais atual do seu aplicativo.
Outra vantagem, é poder construir automaticamente software feito sob medida para o seu sistema.
Este texto complementa o artigo Como Compilar Código Fonte de Programas no Linux.
Na maioria das vezes, é muito fácil compilar software. Mas esta abordagem traz algumas desvantagens ou riscos que convém enumerar:

  • O software compilado não participa das atualizações automáticas do sistema. Se o objetivo era ter a versão mais atual, com o tempo, você pode acabar com uma versão desatualizada do seu aplicativo favorito.
    Isto significa também que ele não receberá correções para novos bugs, à medida em que são descobertos. Tampouco receberá patches de segurança.
    Resumindo, você terá que fazer as atualizações manualmente, se quiser.
  • Em alguns casos, pode ser complicado remover software instalado através deste método. Se você não sabe exatamente aonde foi gravado cada arquivo associado do aplicativo principal, pode acabar com um sistema cheio de coisas que não usa mais.
  • Pode haver perda de dados, em casos (embora raros) de conflito com o restante do sistema.

No texto Como Preservar a Integridade e a Estabilidade da sua Instalação Debian, são enumeradas as várias armadilhas que podem quebrar o seu sistema. Entre elas, compilar softwares do código fonte.

Como usar o checkinstall

Para solucionar parte destes problemas, use o checkinstall.
Este utilitário pode ajudar a rastrear softwares locais e a produzir arquivos binários que podem ser manipulados pelo seu aplicativo de gestão de pacotes.

O checkinstall produz um pacote binário que pode ser gerenciado pelo sistema de gestão de pacotes — facilitando, entre outras coisas, a futura desinstalação.

Trata-se de um programa que monitora o processo de instalação feito por ‘make install’ ou por um script ‘install.sh’ e cria um pacote padrão para a sua distribuição.
Atualmente, o checkinstall suporta pacotes deb, rpm e tgz — que podem ser usados, respectivamente, pelos gestores dpkg, rpm e installpkg.
Na maioria dos casos, o checkinstall precisa ser executado com privilégios administrativos, para ser realmente útil.
Sua sintaxe segue o padrão de linha de comando GNU:
checkinstall opções comando-de-instalação
Seu funcionamento segue os seguintes passos:

# entre no diretório em que se encontra o código fonte
./configure
make
sudo checkinstall

Se você prefere gerar pacotes .deb, para o seu sistema Debian/Ubuntu, use a opção ‘-D’:

sudo checkinstall -D 

Se preferir gerar pacotes RPM, use a opção ‘-R’; ou ‘-S’, para criar um pacote Slackware.
Use a opção ‘–install=no’ para evitar a instalação automática do pacote.
O exemplo, abaixo, cria um pacote RPM e sai, sem instalar nada:

sudo checkinstall -R --install=no

O novo pacote criado, ficará disponível no mesmo local em que você executou o comando. Basta usar o comando ls, para encontrá-lo.

Referências

https://manpages.debian.org/cgi-bin/man.cgi?sektion=8&query=checkinstall&apropos=0&manpath=sid&locale=en.
https://wiki.debian.org/CheckInstall.