Blog

post

Hello World

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