Notícias

A importância e as vantagens de saber programar em linguagem C

É consenso que diferentes linguagens de programação são adequadas para o desenvolvimento de diferentes aplicações. Na verdade, hoje, existe um leque de linguagens adequadas para o desenvolvimento de cada tipo de aplicação, seja ela uma aplicação científica, uma aplicação web, uma aplicação para gerenciamento de dados etc. Não existe uma única linguagem de programação adequada para desenvolvimento de qualquer aplicação. Pelo contrário, é comum o desenvolvimento de uma mesma aplicação fazer uso de diferentes linguagens.

Não é consenso, no entanto, quais linguagens de programação um profissional deve aprender. Basta aprender uma ou outra linguagem de programação adequada para o desenvolvimento de aplicações na área em que atua? É importante aprender todas as alternativas ou mesmo uma linguagem não adequada para ou não comumente utilizada na sua área de atuação? Da mesma forma, não é consenso qual a linguagem deve ser usada em um primeiro curso sobre programação. Diferentes (e boas) universidades optam por diferentes linguagens: Python, Java, JavaScript, C, Haskell, Scheme etc.

Quando escrevemos o livro “Introdução a Estruturas de Dados”¹, optamos por utilizar a linguagem de programação C para apresentar e discutir as implementações e os usos de diferentes estruturas de dados. Eu até sou favorável ao uso da linguagem C nos cursos introdutórios de programação para profissionais das áreas técnico científicas, mas reconheço outros benefícios no uso de linguagens de programação mais abstratas. Diferentes opções têm diferentes benefícios.

Independente da ordem, eu acho que o aprendizado de C é muito importante, senão fundamental, para uma sólida formação em programação. Naturalmente, existem bons programadores que não conhecem a linguagem C, mas eu acredito que eles serão programadores ainda melhores se aprenderem a programar em C com desenvoltura.

A linguagem C opera muito próxima ao hardware. Se, por um lado, isto gera uma dificuldade extra para seu aprendizado, por outro, programando em C, temos um bom conhecimento de como o computador funciona, e este conhecimento é fundamental para programar bem em qualquer linguagem. Em C, somos obrigados a gerenciar explicitamente a memória que alocamos, podemos manipular diretamente endereços de memória, precisamos entender o conceito de passagem de parâmetro por valor e por referência, aprendemos o conceito de variáveis do tipo ponteiro etc. Adquirimos um conhecimento que nos permite escrever programas corretos e eficientes.

Este conhecimento é particularmente importante quando precisamos projetar novas estruturas de dados para atender demandas específicas. Linguagens de programação mais abstratas oferecem suporte nativo às estruturas de dados mais usuais; em C, precisamos implementá-las. O conhecimento adquirido ao implementar as estruturas nos faz ter um melhor discernimento de qual estrutura devemos usar numa determinada aplicação, nos capacita a adaptar estruturas já existentes quando necessário, e nos ensina a avaliar a eficiência dos algoritmos que fazem uso dessas estruturas.

Vamos tomar um exemplo simples, mas sutil. Considere as declarações em C a seguir:

char *s1 = “Linguagem C”;
char s2[ ] = “Linguagem C”;

As duas declarações (apesar da diferença sintática tênue da linguagem) criam variáveis com muitas diferenças, e o aprendizado de C nos requer o entendimento dessas diferenças: cadeia de caracteres constante versus cadeia local e editável, escopo global versus escopo local, acesso indireto versus acesso direto. Esconder esses conceitos certamente acelera o aprendizado dos fundamentos de programação, mas, por outro lado, entender esses conceitos certamente nos ajuda a projetar códigos melhores.

Além do conhecimento adquirido, o aprendizado de C se justifica por si só. A linguagem C é ubíqua, estando presente em todas as plataformas computacionais, desde supercomputadores a processadores ARM embutidos. Por isso, escrever um código padrão C é escrever um código portátil; além disso, ganhamos em versatilidade, pois programamos desde sistemas embarcados em hardware simples a sistemas computacionais complexos. A linguagem C nos permite fazer diferentes aplicações, escritas em diferentes linguagens, interoperarem entre si. A grande maioria das linguagens de programação proveem suporte a programação de interfaces em C. A linguagem C é a “língua franca” de programação de computadores² ³.

Eu ainda avalio que é melhor aprender a linguagem C antes de aprender C++ (ou mesmo Java). Sei que muitos discordam, e acham que C++ deve ser aprendido independente de C, argumentando que C é um subconjunto de C++. Por isso mesmo, acho que vale a pena aprender C antes. Todo o conhecimento adquirido será importante para entender C++, e o conhecimento menos abstrato de C ajudará na codificação de programas eficientes em C++, pois conseguiremos avaliar melhor o custo computacional associados às operações. Programar com desenvoltura em C ou C++ é para profissionais, e ainda existe uma grande carência de bons programadores profissionais nas áreas técnico científicas.

*Waldemar Celes é autor de Introdução a Estrutura de Dados (Elsevier).

[1] Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados – com técnicas de programação em C, 2a. Edição, Ed. Elsevier, 2016.

[2] Alex Allain, “Why Should You Learn C?”, Cprograming.com – Your resource for C and C++, 2011. www.cprogramming.com/whyc.html

[3] Joel Spolsky, “Advice for Computer Science College Students”, Joel on Software, Janeiro 2005. www.joelonsoftware.com/articles/CollegeAdvice.html

Recent Posts

Pure Storage aposta em mudança de paradigma para gestão de dados corporativos

A Pure Storage está redefinindo sua estratégia de mercado com uma abordagem que abandona o…

1 mês ago

A inteligência artificial é mesmo uma catalisadora de novos unicórnios?

A inteligência artificial (IA) consolidou-se como a principal catalisadora de novos unicórnios no cenário global…

1 mês ago

Finlândia ativa a maior bateria de areia do mundo

À primeira vista, não parece grande coisa. Mas foi na pequena cidade de Pornainen, na…

1 mês ago

Reforma tributária deve elevar custos com mão de obra no setor de tecnologia

O processo de transição previsto na reforma tributária terá ao menos um impacto negativo sobre…

1 mês ago

Relação entre OpenAI e Microsoft entra em clima de tensão, aponta WSJ

O que antes parecia uma aliança estratégica sólida começa a mostrar rachaduras. Segundo reportagem do…

1 mês ago

OpenAI fecha contrato de US$ 200 milhões com Departamento de Defesa dos EUA

O Departamento de Defesa dos Estados Unidos firmou um contrato de US$ 200 milhões com…

1 mês ago