Taverna /dev/All

A relevância da linguagem C hoje e amanhã

image

Apesar de não ser a linguagem mais usada hoje (há controvérsias https://www.tiobe.com/tiobe-index/ ) não dá pra negar a sua importância: basicamente quase todas as tecnologias que usamos como base hoje tem suas origens no C (SGBDs, sistemas operacionais, ambientes de execução).

E tenho observado uma quantidade crescente de artigos atuais falando sobre a importância da linguagem C que compartilho abaixo para iniciar nossa discussão aqui:

Apesar de ter usado muito pouco a linguagem profissionalmente, sem sombra de dúvidas foi aquela que mais me agregou enquanto desenvolvedor: foi graças a ela que entendi como funciona a memória do computador e diversos conceitos, como estruturas de dados (strings principalmente), além de também entender alguns dos principais erros que topamos hoje (segmentation fault, null pointer exception…)

Resumindo: C foi uma das linguagens que me tornou um desenvolvedor melhor e acredito que um erro de diversas faculdades é inclusive o fato de começar o aprendizado por Java e não por C.

Recentemente até pesquisei a possibilidade de desenvolvermos alguns projetos web (sim, web) com C/C++, mas uma pesquisa que não foi muito pra frente, apesar de existirem frameworks para tal hoje (quer ver algo interessante neste aspecto? Toma um link: https://www.webtoolkit.eu/wt)

Sendo assim, levanto aqui a discussão: vocês usam C no dia a dia? Para vocês, qual a importância da linguagem hoje e, ainda mais importante: conseguem vê-la cruzando seu caminho no futuro?

(eu pessoalmente vejo cruzando meu caminho: seja na economia de recursos em cloud ou mesmo em mercados como IoT e sistemas embarcados)

Importante mencionar: este livro “The C Programming Language” de Kernighan e Ritchie foi uma das maiores influências profissionais da minha vida.

Foi quando vi que um livro sobre uma linguagem de programação além de poder ser bem escrito, também poderia ir bem além do tópico central (a linguagem de programação). Recomendo sempre a leitura aos iniciantes, mesmo que jamais toquem em uma linha de C.

1 Curtida

Olá Kiko. Eu uso essas duas linguagens todos os dias no meu trabalho com telecom. É amplamente usada em core de sistemas de billing e rating. Acredito que elas só serão substituídas quando algo que faça a mesma coisa de maneira mais prática aparecer. Temos Rust hoje, mas a linguagem ainda não está madura, e tem poucos anos de vida:

1 Curtida

E você vê evoluções no ajuste diz respeito à funcionalidades no C?

Ou é algo que já está super estabilizado, como COBOL?

Dei uma sorte violenta, a minha turma na faculdade foi a última que teve as aulas introdutórias em C, em 2015. De 2016 em diante, passaram a usar… Python!!!

Endosso tudo que foi falado e acho que o assunto veio a calhar porque estou fazendo disciplinas que usam Ruby e C, e trabalhando com Python nas atividades de extensão. Daí eu fico pensando, fazendo comparações: nas linguagens de script tudo é tão mais fácil mas o custo em desempenho é enorme!!

Como que até agora um cidadão não teve a ideia de desenvolver um framework web massa em C puro? Será que alguém já tentou? Algum dia eu conseguirei fazer um? Kkk.

1 Curtida

Sem dúvida Rust reviveu o tema, pode haver um substituto para a linguagem C?

Alguns meses atrás, este artigo saiu:

< Rust is not a good C replacement>

Então, acho melhor procurar razões pelas quais devemos aprender.

<Here’s why there’s never been a better time to delve into the C++ alternative Rust.>

Eu ainda não tenho muita experiência com RUST mas, é uma das minhas próximas linguagens para aprender :slight_smile:

Eu enxergo diferente sobre as questões sobre qual linguagem escolher, pois sempre olhei como uma ferramenta para um fim. Acredito que C tem e terá sempre um lugar sempre que um requisito do software apontá-lo como uma melhor solução, e como saber se ele é a melhor solução? Ampliando o conhecimento sobre linguagens de programação. Não sou adepto de que o desenvolvedor tenha que saber todas as linguagens de programação, mas que ele entenda os aspectos relevantes que cada uma pode trazer, seja em paradigma (objeto, funcional etc) ou da plataforma de desenvolvimento (compilável, interpretada, VM etc). Isso sempre alinhado com a visão do ambiente em que a solução será aplicada (restrições de memória, cpu, escalabilidade, banco de dados, licença etc).

1 Curtida

C já é estável como Cobol desde o draft c99. O uso da linguagem é para systems programming, ou seja , desenvolvimento de ferramentas de sistema. C++ tem evoluído bastante e já está indo para a versão 20. Ela já conta com um modelo de alto nível para programação concorrente(possui futures), smart pointers para evitar segfaults, não precisa alocar mais memória com new nem reclamar com delete. C++ evolui muito. Agora Rust, tem tudo que linguagens de alto nível tem, ou seja uma abstração grande a custo zero, sem garbage collection, sem null values, e com runtime praticamente inexistente. Ou seja, faz o que a linguagem c++ e c fazem.

Corrigindo uma errata, o último standard é o c11, https://cboard.cprogramming.com/c-programming/84349-c-draft-standards.html

De qualquer forma, eu imagino que C vai continuar pautando o desenvolvimento de ferramentas de sistema por mais uns 15, ou 20 anos. Ainda não existe uma tecnologia madura o suficiente para suprir os requisitos de projetos que necessitam dela.

Acho que existem algumas soluções, mas o esforço para adequar aos nossos padrões de projeto são grandes. Por isso não se vê frameworks web pra c. A ideia é gerar softwares pequenos, rápidos e que sejam o mais enxuto possíveis.

itexto