Computação 2
Computação 2
Linguagem C++
História, funcionamento e comparação ao python.
Linguagem C++
História, funcionamento e comparação ao python.
Vitória da Conquista
2024
Índice
O C++ pode manipular diretamente o hardware, por ser POO, além de ter herdado a
eficiência e a velocidade do C junto á capacidade se construir sistemas operacionais
complexos herdado do Simula, torna a linguagem a melhor candidata para rodar em
ambientes onde o espaço de hardware é limitado, dessa forma foi o possível a criação de
aplicativos de baseados em C++ que rodam em uma variedade de dispositivos, tornando as
exigências mais acessíveis.
É comum ouvir programadores mais experientes que o C++, não muito amigável
para novatos. Nos dias de hoje é uma linguagem que se escreve “muito” apenas para obter códigos
simples além de exigir, certo esforço mental em paralelo, para lembrar-se de colocar “#include”-guards.
Há um excesso de cadeias de chamadas de função, comparada ao Javascript, o que acaba sendo confuso
principalmente para quem não está acostumado. Embora seja rápida e versátil, exige uma quantidade
relativamente grande de complexidade cognitiva e esforço manual para escrever o código correto.
Programadores também relatam como ponto fraco a coesão dentro da linguagem.
Vulnerabilidade de segurança:
Por ser orientada á objetos e mexer diretamente na memória, além do seu uso
comum, a segurança definitivamente não é o seu ponto forte. Ela surgiu em uma época, em
que, diferente do mundo atual, as linguagens de programação no final dos anos 70 e início
dos anos 80, não levavam em a vulnerabilidade de segurança, já que este fenômeno só
começa a aparecer com o surgimento da internet. Nos dias de hoje as linguagens de
programação focam em proteger a memória e sacrificar parte do alto desempenho, tanto o C
quanto o C++ focaram em manter o alto desempenho. O uso tanto para programas de alto
nível quanto para de baixo nível têm ajudado a tornar a segurança que passa ao usuário um
ponto questionável, segundo o que tece programadores mais experientes.
2001-2003:
Não querendo ficar para trás, já que linguagens de programação influenciadas por
C++, como Java e C#, introduziram recursos que poderiam estar presentes no C++ , mas não estavam.
Pode-se dizer a possibilidade de inicializar um membro de dados em uma classe. Sendo assim no início
dos anos 2000 a linguagem declinava e necessitava de reformas, não só com a introdução de novos
recursos mais de melhorias também.
O C++14:
O herdeiro do C++11 foi o C++14, que cobriu apenas alguns aspectos parciais mas
que foram melhorias de extrema importância como lambdas genéricas, dedução do tipo de retorno da
função, expressões de captura lambda e adicionou o subpadrão std:: make_unique.
O C++ 17:
A terceira versão veio focada em trazer facilidade para o usuário, que agora poderia
desfrutar de códigos simples para usos mais complexos. Esses avanços incluem a dedução de argumentos
de modelo de classe, a declaração “if-constexpr”, inspirado pelo python trouxe a ligação estruturada, e
novas adições á biblioteca padrão
O C++20:
Ao contrário das duas versões antecessora, esta trouxe renovações mais profundas, a
modularização da linguagem agora seria mudada com a saída do clássico “#include”, melhorando o
tempo de construção. Além da entrada de outros três recursos, que elevaram ainda mais a importãncio do
C++20: Conceitos, corrotinas e intervalos.
Interações com outras linguagens de programação
- Em muitos casos é muito mais benéfico a atuação híbrida em conjunto de várias linguagens
de programação e isso pode ser observado na computação científica, indústria dos jogos e engenharia
financeira. Esse esquema é conhecido por interfaces de função estrangeira ( FFI’s) quando aplicadas junto
ao C++.
Python e C++:
Java e C++:
A interação entre Java e C++, pode ser feita através da função “Java Native
Interface” no próprio java que permite chamar bibliotecas e aplicações nativas não só do C++ mas
também do C.
Javascript e C++:
Python C++
Facilidade: Facilidade:
Com uma sintaxe mais complicada,
Apresenta uma facilidade iniciantes tendem a ter mais
maior do que o C++, com um dificuldade. Porém fornece uma boa
foco em códigos simples. base para aprender outras linguagens.
Desempenho: Desempenho:
Por ser compilada e ainda por cima
A tipagem dinâmica do python e usando menos memória, torna seu
sua leitura linha por linha, induz a desempenho melhor e mais rápido.
um desempenho pior
Aprendizado: Aprendizado:
Iniciantes tendem a ter uma
Iniciantes tendem a ter uma dificuldade maior com C++ por
facilidade maior com python por apresentar uma sintaxe um pouco
possuir um foco no essencial com mais complexa.
códigos simples.
O futuro do C++
Desempenho:
Como consequência das duas últimas, e do aumento da interação das
linguagens o desempenho das novas versões deve melhorar, buscando sempre ter mais compatibilidade, e
talvez uma facilitação da sintaxe e melhorias na biblioteca padrão.
Fontes e Referências:
https://medium.com/@milankathiriya/the-history-of-the-c-language-dc0b20d07b99
https://www.stroustrup.com/bs_faq.html#invention
https://www.geeksforgeeks.org/history-of-c/
https://www.codecademy.com/resources/blog/what-is-c-plus-plus-used-for/
Críticas ao C++ :
https://www.reddit.com/r/cpp/comments/19b1brk/why_does_c_get_so_much_hate_is_it_
really_that_bad/?rdt=60848
https://blog.codinghorror.com/the-problem-with-c/
https://medium.com/@gooro0/why-cpp-is-a-bad-language-b6b6f1927cc4
Evolução do C++
https://www.incredibuild.com/blog/modern-c-the-evolution-of-c
https://medium.com/@AlexanderObregon/integrating-c-with-other-languages-12c331813476
https://www.ionos.com/digitalguide/websites/web-development/python-vs-c/
https://www.geeksforgeeks.org/difference-between-python-and-c/
O futuro do C++:
https://www.incredibuild.com/blog/modern-c-the-evolution-of-c
https://blog.developer.adobe.com/c-and-the-next-30-years-47c3b3b8fe98