Tudo começa por um Hello World, todos os desenvolvedores alguma vez na vida já escreveram um hello world ou se depararam com um código assim. Na programação e no mundo da computação tudo deve começar por um caso base para assim evoluir. O termo Hello World surgiu em 1972 em “A Linguagem de Programação C” (The C Programming Language) escrito por Brian Kernighan no primeiro capítulo e o código contido era:
int main() {
printf("Hello World!\n");
return 0;
}
– “Essa foi a maneira mais fácil e rápida de mostrar um exemplo na linguagem C com o printf”
Desde então o termo se tornou muito comum, utilizando normalmente para ensinar como exibir mensagens na tela em determinada linguagem. Você irá encontrar um exemplo em praticamente todas as linguagens de programação, no repositório Hacktoberfest-2018/Hello-world.
Nessa publicação pretendo arquivar meus estudos acerca das diferenças, vantagens e desvantagens entre as linguagens de programação. A critério ilustrativo irei exibir o Hello World da linguagem e abaixo os comparativos com suas fontes. Vamos lá:
Frontend
React
app.tsx
import * as ReactDOM from "react-dom";
import * as React from "react";
import HelloWorld from "./compoents/helloWorld";
const rootElement: HTMLElement = document.getElementById("rootElement");
if (rootElement) {
ReactDOM.render(
<HelloWorld greeting="Hello World!"/>,
rootElement,
);
}
components/helloWorld.tsx
import * as React from "react";
interface IProps {
greeting: string;
}
export default class HelloWorld extends React.Component<any, any> {
public render(): JSX.Element {
return (
<span>{this.props.greeting}</span>
);
}
}
“O React (às vezes denominado React.js ou ReactJS) é uma biblioteca JavaScript de código aberto para criar interfaces de usuário. É mantido pelo Facebook, Instagram e uma comunidade de desenvolvedores individuais e outras empresas. De acordo com o serviço de análise de JavaScript Libscore, o React está sendo usado nos sites da Netflix, Imgur, Feedly, Airbnb, SeatGeek, HelloSign, Walmart e outros.[1].” Wikipedia
Vantagens
- Fluxo de dados unidirecional
- Boas ferramentas de depuração
- Fácil de reutilizar componentes
- Renderização do lado do servidor
- Fácil de testar e fácil de escrever testes
- Suporte para DOM virtual
- Rápido desenvolvimento mobile com React Native
- Maior liberdade para tomar as decisões certas e coloca mais controle em suas mãos. Unopinionated
- Independente do mecanismo de modelo (Template engine)
Desvantagens
- Verboso
- Pesado na memória
- Não há suporte para navegadores legados
- Não é uma solução completa
- Você tem que aprender uma nova sintaxe
Opinião Final
Informações Adicionais
Tamanho: a partir de 145KB quando minificado
VueJS
app.vue
<template>
<div id="app">
<HelloWorld msg="Hello World!"/>
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'app',
components: {
HelloWorld
}
}
</script>
components/helloWorld.vue
<template>
<h1></h1>
</template>
<script>
export default {
name: 'HelloWorld',
props: {
msg: String
}
}
</script>
“Vue.js (commonly referred to as Vue; pronounced /vjuː/, like view) is an open-source JavaScript framework for building user interfaces and single-page applications.[4]” Wikipedia
Vantagens
- Baixa Curva de Aprendizado
- Fácil de Implementar no Projeto
Desvantagens
- Grandes concorrentes como React (do Facebook) e Angular (do Google)
- Muito material em idiomas asiáticos
Opinião Final
Informações Adicionais
Tamanho: a partir de 21KB quando minificado
Angular
app.js
var app = angular.module("app", []);
app.controller("HelloController", function($scope) {
$scope.helloworld = "Hello World!";
}
);
index.html
<!DOCTYPE html>
<html ng-app='app'>
<body>
<h1 ng-controller='HelloController'><h1>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script>
<script src="app.js"></script>
</body>
</html>
“Angular (comumente referido como “Angular 2+” ou “Angular 2”) é uma plataforma de aplicações web de código-fonte aberto e front-end baseado em TypeScript liderado pela Equipe Angular do Google e por uma comunidade de indivíduos e corporações. Angular é uma reescrita completa do AngularJS, feito pela mesma equipe que o construiu.” Wikipedia
Vantagens
- Enorme ecossistema de componentes de terceiros
- Ligação de dados fácil e direta
- Suporte para uma arquitetura orientada a componentes componíveis com diretivas
- Enorme comunidade
- Fornece injetor de dependência
Desvantagens
- Curva de aprendizagem íngreme
- É quase obrigatório usar o Typescript
- Dificuldade em usar renderização do lado do servidor
- Configuração explícita
- O modelo HTML não está em conformidade com os padrões
Opinião Final
Informações Adicionais
Tamanho:
Backend
C-Lang
int main() {
printf("Hello World!\n");
return 0;
}
“C[2] é uma linguagem de programação compilada de propósito geral, estruturada, imperativa, procedural, padronizada por Organização Internacional para Padronização (ISO), criada em 1972 por Dennis Ritchie na empresa AT&T Bell Labs para desenvolvimento do sistema operacional Unix (originalmente escrito em Assembly).[3]” Wikipedia
Python
print('Hello World!')
“Python é uma linguagem de programação de alto nível,[4] interpretada, de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em 1991.[1] Atualmente possui um modelo de desenvolvimento comunitário, aberto e gerenciado pela organização sem fins lucrativos Python Software Foundation. Apesar de várias partes da linguagem possuírem padrões e especificações formais, a linguagem como um todo não é formalmente especificada.” Wikipedia
Node (JavaScript)
window.onload = () => {
document.write('Hello World!');
}
“JavaScript é uma linguagem de programação interpretada.[2] Foi originalmente implementada como parte dos navegadores web para que scripts pudessem ser executados do lado do cliente e interagissem com o usuário sem a necessidade deste script passar pelo servidor, controlando o navegador, realizando comunicação assíncrona e alterando o conteúdo do documento exibido.” Wikipedia
“Node.js é um interpretador de código JavaScript com o código aberto, focado em migrar o Javascript do lado do cliente para servidores. Seu objetivo é ajudar programadores na criação de aplicações de alta escalabilidade (como um servidor web[1]), com códigos capazes de manipular dezenas de milhares de conexões simultâneas, numa única máquina física.[2] “ Wikipedia
Java
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
“Java é uma linguagem de programação orientada a objetos desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Diferente das linguagens de programação convencionais, que são compiladas para código nativo, a linguagem Java é compilada para um bytecode que é interpretado por uma máquina virtual (Java Virtual Machine, mais conhecida pela sua abreviação JVM). A linguagem de programação Java é a linguagem convencional da Plataforma Java, mas não é a sua única linguagem.” Wikipedia
Ruby
puts "Hello World!"
“Ruby é uma linguagem de programação interpretada multiparadigma, que foi desenvolvida , originalmente em 1995, por Yukihiro “Matz” Matsumoto, para ser usada como linguagem de script. Matz queria uma linguagem de script que fosse mais poderosa do que Perl, e mais orientada a objetos do que Python.[4] Ruby suporta programação funcional, orientada a objetos, imperativa e reflexiva. Foi inspirada principalmente por Python, Perl, Smalltalk, Eiffel, Ada e Lisp, sendo muito similar em vários aspectos a Python.[5] Ruby está entre as 69 linguagens mais velhas, de acordo com uma pesquisa conduzida pela RedMonca.[6]” Wikipedia
GoLang
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
“Go é uma linguagem de programação criada pela Google e lançada em código livre em novembro de 2009. É uma linguagem compilada e focada em produtividade e programação concorrente,[4]baseada em trabalhos feitos no sistema operacional chamado Inferno.[5] O projeto inicial da linguagem foi feito em setembro de 2007 por Robert Griesemer, Rob Pike e Ken Thompson.[4] Atualmente, há implementações para Windows, Linux, Mac OS X e FreeBSD.[3]” Wikipedia
PHP
<?php
$text = 'Hello World!';
?>
<!DOCTYPE html>
<html>
<body>
<p><?php echo $text; ?></p>
</body>
</html>
“PHP (um acrônimo recursivo para “PHP: Hypertext Preprocessor”, originalmente Personal Home Page) é uma linguagem interpretada livre, usada originalmente apenas para o desenvolvimento de aplicações presentes e atuantes no lado do servidor, capazes de gerar conteúdo dinâmico na World Wide Web.[2] Figura entre as primeiras linguagens passíveis de inserção em documentos HTML, dispensando em muitos casos o uso de arquivos externos para eventuais processamentos de dados. O código é interpretado no lado do servidor pelo módulo PHP, que também gera a página web a ser visualizada no lado do cliente. A linguagem evoluiu, passou a oferecer funcionalidades em linha de comando, e além disso, ganhou características adicionais, que possibilitaram usos adicionais do PHP, não relacionados a web sites. É possível instalar o PHP na maioria dos sistemas operacionais, gratuitamente. Concorrente direto da tecnologia ASP pertencente à Microsoft, o PHP é utilizado em aplicações como o MediaWiki, Facebook, Drupal, Joomla, WordPress, Magento e o Oscommerce.” Wikipedia
Aqui está a lista de linguagens expandida, mantendo o mesmo layout e organização do arquivo original. Adicionei novas linguagens com exemplos, vantagens, desvantagens e informações adicionais para manter a consistência:
Conhecendo Mais Linguagens
Além das linguagens já apresentadas, existem outras que também merecem destaque no desenvolvimento moderno. Abaixo, exploramos algumas delas em detalhes.
Rust
Rust é uma linguagem de programação moderna focada em segurança, especialmente em sistemas críticos. Ela oferece controle preciso sobre os recursos do sistema, sem sacrificar desempenho.
Exemplo de Hello World
fn main() {
println!("Hello World!");
}
Contexto e Aplicações:
Criada em 2010 por Graydon Hoare, Rust foi projetada para ser uma alternativa segura ao C e C++, com ênfase na prevenção de erros comuns como vazamento de memória e concorrência insegura.
Vantagens do Rust
- Segurança de Memória: Elimina problemas como ponteiros nulos ou acessos inválidos.
- Desempenho Elevado: Combina eficiência de baixo nível com abstrações modernas.
- Gerenciamento de Recursos: Não requer coletor de lixo, reduzindo sobrecargas.
- Comunidade Ativa: Grande suporte da comunidade open source.
Desvantagens do Rust
- Curva de Aprendizado Alta: Sua complexidade inicial pode ser desafiadora para iniciantes.
- Ecosistema Menor: Embora crescente, ainda tem menos bibliotecas em comparação com linguagens mais antigas.
Informações Adicionais
- Tamanho: Binários gerados são geralmente otimizados e compactos.
Kotlin
Kotlin é uma linguagem moderna desenvolvida pela JetBrains, projetada para ser interoperável com Java. Ela é amplamente utilizada no desenvolvimento Android devido à sua simplicidade e robustez.
Exemplo de Hello World
fun main() {
println("Hello World!")
}
Contexto e Aplicações:
Lançada oficialmente em 2016, Kotlin foi adotada rapidamente pelo ecossistema Android, tornando-se a linguagem oficial de desenvolvimento móvel para esta plataforma.
Vantagens do Kotlin
- Interoperabilidade com Java: Facilita a migração de projetos legados.
- Sintaxe Limpa: Reduz verbosidade e aumenta a legibilidade.
- Segurança de Tipos: Previne muitos tipos de erros durante a compilação.
- Suporte Oficial: Endossada pelo Google para desenvolvimento Android.
Desvantagens do Kotlin
- Curva de Aprendizado: Para desenvolvedores experientes em Java, pode haver um período de adaptação.
- Performance Inicial: Em alguns casos, o tempo de inicialização pode ser maior.
Informações Adicionais
- Tamanho: Pequeno overhead em relação ao Java, mas com melhor performance em longo prazo.
Swift
Swift é uma linguagem de programação criada pela Apple, voltada principalmente para o desenvolvimento de aplicativos iOS, macOS, watchOS e tvOS.
Exemplo de Hello World
print("Hello World!")
Contexto e Aplicações:
Lançada em 2014, Swift foi projetada para substituir gradualmente Objective-C como a principal linguagem de desenvolvimento para dispositivos Apple.
Vantagens do Swift
- Fácil de Aprender: Sua sintaxe simples atrai desenvolvedores iniciantes.
- Desempenho Superior: Melhor performance em comparação com Objective-C.
- Segurança: Reduz significativamente erros comuns de programação.
- Playgrounds Interativos: Ferramenta ideal para aprendizado e prototipagem rápida.
Desvantagens do Swift
- Exclusividade Apple: Limitada a plataformas da Apple, restringindo seu uso em outros ambientes.
- Evoluções Rápidas: Mudanças frequentes podem exigir atualizações constantes nos códigos.
Informações Adicionais
- Tamanho: Binários gerados são altamente otimizados para dispositivos móveis.
TypeScript
TypeScript é uma extensão de JavaScript que adiciona tipagem estática e recursos avançados, facilitando o desenvolvimento de aplicações grandes e complexas.
Exemplo de Hello World
function greet(name: string): string {
return `Hello, ${name}!`;
}
console.log(greet("World"));
Contexto e Aplicações:
Desenvolvido pela Microsoft, TypeScript é amplamente utilizado em projetos frontend e backend, especialmente em frameworks como Angular.
Vantagens do TypeScript
- Tipagem Estática: Ajuda a identificar erros antes da execução.
- Integração com JavaScript: Totalmente compatível com código JavaScript existente.
- Ferramentas Avançadas: Suporte robusto para IDEs e ferramentas de desenvolvimento.
- Ecossistema Rico: Grande variedade de bibliotecas e frameworks compatíveis.
Desvantagens do TypeScript
- Complexidade Inicial: Pode ser confuso para quem está acostumado com JavaScript puro.
- Compilação Extra: Necessita de uma etapa adicional para transpilar para JavaScript.
Informações Adicionais
- Tamanho: Variável dependendo das dependências utilizadas.
Scala
Scala é uma linguagem híbrida que combina orientação a objetos e programação funcional, sendo executada na JVM.
Exemplo de Hello World
object Main extends App {
println("Hello World!")
}
Contexto e Aplicações:
Projetada para ser uma alternativa elegante ao Java, Scala é amplamente utilizada em big data e sistemas distribuídos.
Vantagens do Scala
- Programação Funcional: Permite escrever código mais conciso e modular.
- Compatibilidade com Java: Integra facilmente com bibliotecas Java.
- Concorrência Simples: Modelos como Akka facilitam a criação de sistemas concorrentes.
- Desempenho Elevado: Executada na JVM, garante alta performance.
Desvantagens do Scala
- Curva de Aprendizado íngreme: Sua complexidade pode ser desafiadora para iniciantes.
- Documentação Limitada: Menos recursos disponíveis em comparação com Java.
Informações Adicionais
- Tamanho: Dependendo do projeto, pode variar significativamente.
Elixir
Elixir é uma linguagem funcional construída sobre a máquina virtual Erlang (BEAM), ideal para sistemas distribuídos e de alta escalabilidade.
Exemplo de Hello World
IO.puts "Hello World!"
Contexto e Aplicações:
Criada em 2011 por José Valim, Elixir é conhecido por sua capacidade de lidar com milhões de conexões simultâneas, sendo amplamente utilizado em servidores web.
Vantagens do Elixir
- Concorrência Nativa: Modelo de atores permite criar sistemas resilientes.
- Robustez: Herda a estabilidade da máquina virtual Erlang.
- Sintaxe Moderna: Mais legível e produtiva que Erlang.
- Ecossistema Rico: Frameworks como Phoenix facilitam o desenvolvimento web.
Desvantagens do Elixir
- Adoção Limitada: Menos popular que outras linguagens, resultando em menor suporte.
- Curva de Aprendizado: Programação funcional pode ser nova para muitos desenvolvedores.
Informações Adicionais
- Tamanho: Eficiente em termos de memória e CPU.
R
R é uma linguagem de programação voltada para estatística e análise de dados. Ela é amplamente utilizada em ciência de dados, pesquisa acadêmica e machine learning.
Exemplo de Hello World
cat("Hello World!\n")
Contexto e Aplicações:
Desenvolvida na década de 1990 por Ross Ihaka e Robert Gentleman, R se tornou indispensável para cientistas de dados e analistas, oferecendo ferramentas poderosas para manipulação e visualização de dados.
Vantagens do R
- Bibliotecas Robustas: Pacotes como
ggplot2
,dplyr
etidyverse
facilitam a análise e visualização de dados. - Comunidade Acadêmica: Grande suporte em áreas de pesquisa e estatística.
- Gráficos Avançados: Capacidade de criar visualizações complexas com facilidade.
- Integração com Outras Linguagens: Pode ser combinado com Python, SQL e outras tecnologias.
Desvantagens do R
- Performance Limitada: Em comparação com linguagens como Python ou C++, pode ser mais lento em grandes volumes de dados.
- Curva de Aprendizado: Sua sintaxe específica pode ser desafiadora para iniciantes.
Informações Adicionais
- Tamanho: Dependendo da instalação, varia conforme os pacotes utilizados.
Julia
Julia é uma linguagem de alto desempenho projetada para computação científica e análise de dados. Ela combina a simplicidade de Python com a velocidade de C.
Exemplo de Hello World
println("Hello World!")
Contexto e Aplicações:
Lançada em 2012, Julia foi criada para resolver problemas de alta performance em matemática, física e engenharia, sendo ideal para cálculos numéricos intensivos.
Vantagens do Julia
- Velocidade: Código compilado em tempo real com desempenho similar ao de C.
- Sintaxe Simples: Fácil de aprender para quem tem familiaridade com Python ou MATLAB.
- Paralelismo Nativo: Suporte embutido para computação paralela e distribuída.
- Integração com Outras Linguagens: Pode chamar código C, Python, Fortran e mais sem overhead significativo.
Desvantagens do Julia
- Ecosistema Menor: Embora crescente, ainda possui menos bibliotecas que Python ou R.
- Adoção Limitada: Menos popular em certos setores industriais.
Informações Adicionais
- Tamanho: Binários gerados são otimizados para eficiência.
Dart
Dart é uma linguagem desenvolvida pelo Google, projetada para criar aplicativos web, móveis e desktops de maneira eficiente e modular.
Exemplo de Hello World
void main() {
print('Hello World!');
}
Contexto e Aplicações:
Criada em 2011, Dart ganhou destaque com o surgimento do framework Flutter, permitindo o desenvolvimento cross-platform de alta qualidade.
Vantagens do Dart
- Flutter Integration: Ideal para criação de aplicativos móveis nativos.
- Tipagem Estática: Ajuda a identificar erros antes da execução.
- Compilação Multiplataforma: Gera código nativo para Android, iOS, web e desktop.
- Ferramentas Modernas: IDEs e depuradores integrados facilitam o desenvolvimento.
Desvantagens do Dart
- Adoção Limitada: Menos popular fora do ecossistema Flutter.
- Documentação Específica: Muitos recursos são documentados apenas no contexto de Flutter.
Informações Adicionais
- Tamanho: Framework Flutter pode ser grande, mas o código final é altamente otimizado.
Haskell
Haskell é uma linguagem funcional pura, conhecida por sua elegância e rigor matemático. Ela é frequentemente usada em educação e pesquisa.
Exemplo de Hello World
main = putStrLn "Hello World!"
Contexto e Aplicações:
Criada em 1990, Haskell é adotada principalmente em universidades e empresas que valorizam robustez e correção de código.
Vantagens do Haskell
- Programação Funcional Pura: Promove um estilo de codificação limpo e matematicamente preciso.
- Lazy Evaluation: Avaliação preguiçosa permite trabalhar com estruturas de dados infinitas.
- Segurança Tipada: Reduz significativamente erros de tipo durante a compilação.
- Comunidade Acadêmica: Grande suporte em áreas de pesquisa avançada.
Desvantagens do Haskell
- Curva de Aprendizado Alta: Conceitos funcionais podem ser difíceis para iniciantes.
- Ecosistema Menor: Menos bibliotecas disponíveis em comparação com linguagens imperativas.
Informações Adicionais
- Tamanho: Eficiente em termos de memória e processamento.
Lua
Lua é uma linguagem leve e flexível, amplamente utilizada em jogos e aplicações embarcadas.
Exemplo de Hello World
print("Hello World!")
Contexto e Aplicações:
Desenvolvida em 1993 pela PUC-Rio, Lua é conhecida por sua simplicidade e integração fácil com outras linguagens.
Vantagens do Lua
- Leveza: Pequeno footprint, ideal para sistemas com recursos limitados.
- Integração Facilitada: Fácil de incorporar em aplicações escritas em C ou C++.
- Sintaxe Simples: Fácil de aprender e usar, mesmo para iniciantes.
- Popularidade em Jogos: Amplamente utilizado em engines como Unity e Unreal Engine.
Desvantagens do Lua
- Performance Limitada: Em alguns casos, pode não ser tão rápido quanto linguagens compiladas.
- Ecossistema Menor: Menos bibliotecas disponíveis em comparação com linguagens mais populares.
Informações Adicionais
- Tamanho: Binários gerados são compactos e eficientes.
Erlang
Erlang é uma linguagem funcional projetada para sistemas distribuídos e concorrentes, sendo amplamente utilizada em telecomunicações.
Exemplo de Hello World
-module(hello).
-export([start/0]).
start() ->
io:fwrite("Hello World!~n").
Contexto e Aplicações:
Criada em 1986 pela Ericsson, Erlang é conhecida por sua capacidade de lidar com milhões de conexões simultâneas.
Vantagens do Erlang
- Concorrência Nativa: Modelos de atores permitem criar sistemas resilientes.
- Robustez: Projeto focado em alta disponibilidade e recuperação de falhas.
- Escalabilidade Horizontal: Ideal para sistemas distribuídos.
- Comunidade Ativa: Grande suporte em áreas de telecomunicações e servidores.
Desvantagens do Erlang
- Curva de Aprendizado: Programação funcional pode ser nova para muitos desenvolvedores.
- Adoção Limitada: Menos popular fora do setor de telecomunicações.
Informações Adicionais
- Tamanho: Eficiente em termos de memória e CPU.
Conclusão
As linguagens mencionadas aqui refletem a diversidade e as necessidades específicas do mundo da programação moderna. Cada uma traz suas próprias características únicas, permitindo que desenvolvedores escolham a melhor ferramenta para cada caso de uso.
Seja você um iniciante ou um profissional experiente, experimentar diferentes linguagens amplia seu repertório e melhora sua capacidade de resolver problemas de maneira eficiente e criativa.