#include <stdio.h>
int main (void) {
printf("Hello, World!\n");
return 0;
}
Linguagem C
Mais do que nunca, hoje em dia quase todo mundo sabe o que é programar e o que é uma linguagem de programação, especialmente linguagens famosas como C. Mas o que vejo que muitas pessoas errando é em como pensam sobre cada linguagem.
Motivos para usar C
Vou adiantar a explicação e dizer que o motivo para usar qualquer linguagem é simplesmente por você precisar ou querer; é isso, não fique pensando em melhores linguagens ou o que os outros acham. Escolha aquilo que paga seu pão e o que você gosta, somente isso.
O ato de programar
Programar é uma habilidade (ou capacidade) de dar instruções para um computador de forma automatizada e padronizada. Em resumo é apenas isso. Nós temos uma necessidade, seja nossa ou do cliente, e então usamos de uma linguagem padronizada para dar instruções e criar novos padrões para o computador.
Mas, na prática, programar é muito mais que isso! Programar, esquecendo o pragma, é também uma cultura e um legado importante na tecnologia. Comunidades diferentes mantém a mesma essência, programadores diversos compartilham experiências parecidas na área e até desafios próximos. Programar pode ser resumido como uma habilidade, mas também como uma cultura inteira criada na base de um legado enorme da tecnologia e intimamente ligada com sua evolução.
Objetivo de criação
Então qual o motivo para se usar C? As pessoas costumam dizer que C é baixo nível e já vi chamarem de nichado; isso é uma forma errada de abordar uma linguagem. A linguagem C foi criada para desenvolver o UNIX, ter portabilidade e outros motivos menores (confirme com o criador: “The Development of the C Language”, Dennis M. Ritchie), porém não é assim que a banda toca hoje em dia.
Então o objetivo de criação de C foi criar um sistema, substituir o Assembly, trazer portabilidade e entre outros. E você pode dizer que isso é a prova para a linguagem ser baixo nível, mas o nível de abstração que a gente se refere é justamente sobre abstração de uma linguagem e o C é abstração alta com a capacidade de fazer tarefas de baixo nível (The C Programming Language, The Development of the C Language, ISO/IEC 9899:2018). O objetivo do C não é ser baixo nível, ele pode fazer muito mais que isso. C é uma linguagem de propósito geral, sendo possível criar pequenas automações até grandes softwares totalmente do zero ou com muito suporte.
Usos do C
Uso C para criar um despertador simples, um malware elaborado ou uma integração em um Firmware; não preciso trocar linguagem fora de aplicações online ou projetos já em outra linguagem.
Meu motivo para usar C é justamente que C é uma linguagem muito rápida em compilação (amém linkedição), tem a portabilidade mais flexível que água, tem abstração de alto nível, controle de baixo nível e simplesmente tem uma comunidade fervorosa que a mantém viva sempre. É fácil encontrar um programador de C que é viciado em documentações e livros, parece até uma seita religiosa.
O C brilha para:
- Desenvolver Firmwares e drivers;
- Desenvolver Softwares Embarcados (IoT);
- Automações ou Softwares em ambientes controlados e/ou limitados (como Raspberry);
- Compiladores e Interpretadores.
- Modulos e Utilitários de Sistemas Operacionais;
- Engenharia Mecânica;
O C se torna difícil com:
- Desenvolver redes neurais e aplicações M.L/A.I;
- Ciência de Dados;
- Automações de rotina simples;
- Softwares de aplicação online (WEB);
- Desenvolvimento de jogos (mas é ótimo com a engine);
Presença do C
A linguagem simplesmente está em tudo, e não é brincadeira: Linux, firmwares, satélites, drivers, engines, softwares de segurança, ferramentes úteis, projetos de engenharia, etc. Usar C é garantir que tenha tudo que precisa em muita eficiência e liberdade.
Mercado do C
Apesar de tudo, o mercado do C não é tão grande e funcional. Ele tem seu mercado em Softwares IoT, Embarcados e integrações com hardware (como firmwares), mas não são tão vastos como outras linguagens atualmente. Outro problema é que algumas áreas que aplicam o C não são necessariamentes sobre desenvolvimento, como é o caso da engenharia reversa ou exploração de binários que pertencem a área de Segurança.
Então é possível atuar em C, mas lembrando, não faço parte do mercado de trabalho do C então isso é mais por pesquisa e conhecimento aproximado. Por isso minha visão é de que mesmo sendo possível, não é o tipo de mercado que aponta em um crescimento tão vasto como outras, sendo apenas um viés leigo da área.
Dificuldade
C tem 32 palavras-chave reservadas (IF, ELSE, FOR, …) e isso faz dela uma linguagem completamente simples. A dificuldade não está na linguagem, pelo contrário, C é mais fácil de aprender do que um JavaScript.
O problema das pessoas em achar que C é difícil é somente que as pessoas não desenvolvem lógica de programação, capacidade de ler um algoritmo e muito menos a de planejar um pouco antes de programar. Querem abrir um editor e sair programando como se fossem pessoas que receberam a iluminação celestial da programação em criar um projeto. Claro que C vai ser frustrante se você não consegue lidar com problemas e criar soluções sozinho.
Linguagens como Python criam facilidades que o C não trata como se não tivesse, ele só te dá o controle bem alto na linguagem e isso garante que o programador tenha todo o poder necessário, mas com a responsabilidade total por seu código. A linguagem depende de você, e por isso, ela é mais difícil do que as outras: ela não mastiga tipagem e funções na sua boca; e isso é ótimo! É te dar a liberdade e capacidade de fazer as coisas do seu jeito, não ser limitado por uma linguagem.
Problemas Atuais da Linguagem
(WIP)

