Muitas luas atrás eu cortei o código C para sobreviver, principalmente mantendo um servidor POP3 que suportava uma ampla variedade de sistemas operacionais (Linux, * BSD, HPUX, VMS ...).
Estou planejando polir a ferrugem das minhas habilidades em C e aprender um pouco sobre a implementação da linguagem, codificando um FORTH simples em C.
Mas estou me perguntando como (ou se?) As coisas mudaram no mundo C desde 2000. Quando penso em C, acho ...
- comp.lang.c
- ANSI C sempre que possível (mas C89 como C99 não é tão amplamente suportado)
gcc -Wall -ansi -pedantic
em vez de ferramentas de análise estática- Emacs
- Ctags
- Autoconf + make (e veja o ponto 2 para vantagens de VMS, HP-UX etc.)
Alguém que esteja escrevendo em C nos últimos onze anos pode me dizer o que (se alguma coisa ;-)) mudou ao longo dos anos?
(Em outras notícias, caramba, venho fazendo isso há mais de uma década).
programming-languages
c
language-agnostic
Duncan Bayne
fonte
fonte
Respostas:
É realmente difícil para mim pensar no passado como "Uau, como era a programação C há 10 anos?", Mas posso falar sobre algumas coisas que sei que estou fazendo de maneira diferente.
Embora você ainda possa convocar alguém como Peter Seebach no comp.lang.c para obter ajuda sobre um bug particularmente bobo que você suspeita estar relacionado à linguagem, a maioria, se não todas as perguntas de programação C, obtém respostas excepcionais no Stack Overflow.
A análise estática ainda é meio dolorosa. Splint (pelo menos até onde eu sei) não lida tão bem com C99, os gráficos de cobertura ainda são um pouco difíceis de visualizar. Os avisos do GCC "melhoraram" bastante (entre aspas, porque isso depende de quem você pergunta).
Valgrind é o santo de todos os verificadores de erros de memória e geralmente aponta para problemas no seu código que nenhuma ferramenta de análise estática poderia / poderia encontrar. Não é 100% perfeito, mas acho que não. Hoje em dia, raramente tenho que tocar no GDB, o que (nada pessoal) está bem comigo. A ferramenta maciço Valgrind também é um criador de perfil de pilha muito bom.
Sempre existem novas extensões no GCC, algumas delas sutis , por isso é uma boa idéia se a portabilidade for uma grande preocupação. Para o programador iniciante / enferrujado, às vezes é fácil confundir extensões com recursos de linguagem 'ocultos'.
O CCAN surgiu (pense no CPAN, mas para C) e está começando a decolar. Há muitas jóias úteis lá, incluindo uma adaptação do TAP, que é uma ferramenta de teste incrível. As strings em C ainda são ruins, mas o número e a qualidade das bibliotecas para ajudar a lidar com elas certamente aumentaram nos últimos dez anos.
SCons e CMake estão aumentando em popularidade na configuração de compilação. O Autoconf / Automake / Libtool ainda é amplamente utilizado, mas muitas pessoas se sentem um pouco limitadas pelo M4. Ainda assim, se esse é o sistema que você gosta de usar, o arquivo macro da Autoconf ainda está ativo e bem.
Obviamente, existem mais editores disponíveis hoje. Ainda não encontrei um "IDE" que não atrapalhasse ao trabalhar com C, mas provavelmente porque eu sou um evangelista velho e idiota que bebe Sanka por simplicidade.
No geral, porém, eu não diria que a vida (até onde C vai) é até quase profundamente diferente do que era há 10 anos. Mas, de várias maneiras, é realmente um pouco mais fácil. É difícil atribuir isso às ferramentas sobre a experiência.
fonte
glib pode ser a "nova biblioteca padrão". Ele oferece muito do que muitos sentem fora do padrão - segmentação e rede independentes de plataforma, estruturas de dados de contêineres etc. É claro que não é aplicável em todos os lugares, mas se você pode usá-lo, economiza muito tempo.
fonte
fonte
2) e 3) mudaram. C99 é mainstream, C90 está se tornando cada vez mais obsoleto.
gcc -Wall -std=c99 -pedantic
.Além disso, as duas mudanças mais notáveis ainda não abordadas em outras respostas são:
fonte
A linguagem de programação C chegou às 2 ou 3 principais linguagens de programação do diário do Dr. Dobb em seu estudo / pesquisa mais recente.
Quanto à implementação de um idioma, C é usado para implementar um novo idioma que está sendo construído no Google, chamado Go (golang.org).
Não acompanhei o grupo usenet de C nos últimos anos. Eu visito seu canal de IRC Freenode frequentemente. É ativo e frequentado por muitos.
Novos programas estão sendo escritos em C, mas eles não recebem a publicidade que teriam se este ano fosse, digamos, 1999.
Isso é algo que vem ao topo da mente. Pode haver muito mais, mas espero que você permaneça em contato com o seu chapéu de programador, embora você não tenha frequentado o modelo C do chapéu :)
fonte
Eu acho que o suporte ao C99 é melhor do que você suspeita. O Visual Studio não suporta, mas todos os outros compiladores que eu consigo imaginar suportam (com, talvez algumas omissões aqui e ali). Se você não precisa de compatibilidade com o VS, diria que vá com o C99, pois é muito mais agradável escrever do que o C89 IMHO.
fonte