Evolução dos Paradigmas de Programação

O conceito de paradigma de programação pode ser descrito de várias formas. Podemos defini-lo como um grupo de características em comum entre linguagens, assim como um padrão de técnicas de resolução de problemas. O fato é que podemos classificar as diversas linguagens de programação em paradigmas de programação, podendo enxergar facilmente semelhanças entre elas e ter uma melhor asertividade ao escolher uma linguagem para a resolução de algum problema específico. 

Imperativo

Os paradigmas de programação evoluíram junto com as linguagens. A cada nova linguagem que surgia, novas técnicas apareciam, novos métodos de implementação se tornavam realidade. Em um dos primeiros paradigmas, a programação imperativa, o algoritmo é caracterizado por ser uma sequência de instruções a serem executadas. Cada instrução é uma ordem dada ao sistema. 

A partir da programação imperativa, surgiram paradigmas como a programação estruturada ou procedimental. Nesta, os comandos são organizados em blocos, chamados de funções ou procedimentos, que são acionados sob demanda. As funções podem receber parâmetros que modificam o seu comportamento, oferecendo uma possibilidade de reaproveitamento de código. COBOL e FORTRAN são exemplos de linguagens imperativas. 

Orientado a objeto

Com o aumento do nível de complexidade das aplicações e o aumento da dificuldade de implementação usando os paradigmas existentes, surgiram as linguagens orientadas a objeto. Ainda hoje uma das técnicas mais usadas, ela se baseia no conceito de classe para representar logicamente as entidades do programa. As ações que podem ser operadas sobre as entidades ficam diretamente ligadas à sua classe. Java, C++ e C# são exemplos de linguagens orientadas a objetos e que representam a popularidade dentre os diversos paradigmas existentes. 

Funcional

Programação funcional é uma das abordagens mais recentes. Sua principal característica é a implementação de funções, de forma que o programa nasça a partir da interação entre elas. Nessa abordagem, funções são tratadas como estruturas de baixo nível, podendo ser  usadas até mesmo como parâmetros. Esse paradigma tem dado um poder a mais às linguagens mais recentes, como Python e JavaScript. Não coincidentemente, essas duas linguagens são das mais usadas atualmente, sendo a última apontada como a linguagem de maior tendência para o futuro.

Multiparadigma

Com o tempo, as linguagens começaram a absorver conceitos umas das outras, a fim de melhorar a sua experiência. As equipes de desenvolvimento começaram a experimentar características exclusivas de paradigmas distintos, surgindo o conceito de linguagens multiparadigma. Com JavaScript, por exemplo, você consegue implementar seguindo paradigmas estruturado, orientado a objeto, funcional, entre outros. Esse é mais um dos motivos pelo sucesso recente da linguagem.

O HTML




Criado pelo físico britânico Tim Bernes-Lee baseado na linguagem SGML na decada de 1990, o HTML é o código padrão e norma internacional desde o ano 2000. É uma linguagem de fácil leitura e grande versatilidade, além de gerar um arquivo simples por qualquer editor de texto. Sua versão mais recente é o HTML5, que permite o auxilio de códigos como PHP, JavaScript
e CSS em sua composição. Graças a esta sinergia é notável o contraste entre as páginas de internet na ultima década, sem falar na criação de aplicativos online.

Uma boa forma de conhecer o HTML é pressionando a tecla F12 e explorar o código-fonte desta página. Deixarei para vocês alguns links nas entrelinhas.
Se gostou, leia também o nosso post sobre Angular JS!
Para quem quer tentar sem muito trabalho, existem sites como CodePen para testar.






Algoritmos de Ordenação

Um algoritmo de ordenação é um algoritmo que põe os elementos de uma lista em uma certa ordem. Os critérios de ordenação mais utilizados são a ordem numérica e a ordem lexicográfica. Uma ordenação eficiente é importante para otimização do uso de outros algoritmos que requerem que a entrada de dados estejam ordenada, e também para exibição de dados ao usuário, oferecendo uma forma organizada de exibição e facilitando o acesso a dados específicos.

Buble Sort

É um algoritmo que repetidamente passa pela lista a ser ordenada, compara cada par de itens adjacentes e os troca se eles estão na ordem errada. A passagem pela lista é repetida até que a troca não seja mais necessária, o que indica que a lista está ordenada.

O algoritmo é bem simples de ser implementado mas muito lento e impraticável em vários problemas.

Insertion Sort


Também um algoritmo simples que constrói a lista final (lista com todos os elementos já ordenados) um item por vez. É bem menos eficiente em listas grandes que outros algoritmos, mas oferece vantagens como: eficiência em pequenos conjuntos de dados, eficiência em listas semi-ordenadas, ordenação listas de acordo com seu recebimento.



Merge Sort

Subdivide a lista em duas novas listas, ordena-as, e as junta novamente colocando os elementos em posição até que a lista final esteja ordenada. Esse algoritmo usa uma chamada recursiva na divisão da lista em sub-listas, ou seja, a lista será dividida várias vezes até que seja ordenada.



Quick Sort

O Quick Sort divide a lista em listas menores, escolhe um elemento chamado "pivô". Então ordena a lista de forma que todos os elementos com valores menores que pivô se posicionem antes dele. Similarmente, os elementos após o pivô serão posicionados depois dele.
Depois desse processo, o pivô estará em sua posição final, e o processo será repetido recursivamente até que a lista esteja completamente ordenada.


Esses são apenas alguns dos algoritmos de ordenação dentre vários outros. Algoritmos estes que variam sua eficiência de acordo com tamanho da lista, tipo de ordenação, e dificuldade de implementação. Confira aqui os vários algoritmos em ação (perceba a diferença dos algoritmos apresentados aqui a algoritmos mais sofisticados/complicados e o tempo que cada um leva):




Isso conclui o post de hoje. Até a próxima o/

Computação Ubíqua

A internet tem evoluído e se tornado acessível ao ponto de que alguns especialistas acreditam que no futuro todos os objetos com os quais interagimos estarão conectados. Um deles é o cientista norte-americano Mark Weiser, que denominou de computação ubíqua a presença absoluta da computação no nosso cotidiano.
Computação ubíqua não se trata precisamente de internet, mas provavelmente será por meio dela que conectaremos todo tipo de dispositivo, seja sua geladeira ou o seu carro. Internet das Coisas, Web 4.0 e Computação Ubíqua são conceitos fortemente relacionados.
O objetivo é tornar a relação homem-computador menos perceptível, de modo a humanizar ou mascarar o lado máquina das interações. Um bom exemplo são as assistentes virtuais Siri e Cortana. Elas são programadas para terem senso de humor e interpretar contextos do cotidiano do usuário, como oferecer sugestões de restaurante baseado na sua localização e gostos pessoais. Imagine então um assistente pessoal presente em todos os dispositivos que usar, onisciente e onipresente, que possa gerenciar todos os aspectos da sua vida. Ao mesmo tempo que impressiona, assusta, não é mesmo?
Não sabemos de que forma as empresas pretendem monetizar em cima disso (o que elas pretendem bisbilhotar), portanto é provável que demore um pouco pra esse conceito estar claramente visível no dia a dia. Espero que muito seja discutido e que a tecnologia realmente melhore a vida das pessoas.

A Maravilhosa Web 2.0

Hoje vamos continuar com o assunto de evolução da web e falar sobre a Web 2.0, o que mudou em sua transição da 1.0 e como isso agora nos ajuda diariamente.

Uma mudança drástica na forma como a internet funciona veio com a Web 2.0


Web 2.0 foi primeiro usado como termo pela empresa O'Reilly Media para designar esse novo conjunto de ferramentas que agora permitem a colaboração para incluir novos conteúdos e também novas melhorias no jeito em que as páginas são criadas. Antes na Web 1.0 as páginas eram completamente estáticas, sem o usuário poder interagir com ela, basicamente a exibição de textos e imagens como explicado no post anterior. Com a Web 2.0 as páginas são muito mais dinâmicas e fluidas, e são abertas a participação dos usuários.
Hoje muitos sites são uma parte diária de nossa vida


Essa mudança permitiu o surgimento de vários novos tipos de páginas, que são utilizadas por milhões de usuários atualmente, e muitas nos possibilitaram melhores comunicações entre as pessoas, mais conteúdo sendo compartilhado por todos, e um mundo mais conectado, são elas por exemplo: O Facebook, Twitter, Youtube, sites de torrent, Wikipedia.

O simples fato de você ser capaz de fazer uma conta em um site, fazer uma página pessoal e poder divulgar praticamente o que você quiser , foi a grande mudança com a Web 2.0. Além de termos agora páginas muito mais eficientes no jeito que trabalham. Com o Facebook por exemplo, temos páginas dedicadas somente a nós que podem ser mudadas para chegar ao nosso gosto, além de podermos compartilhar conteúdos de nosso interesse e interagir com outra pessoas. E também ajudamos a melhorar o software da empresa, pois mostrando nossos gostos, a máquina automaticamente melhora seu algoritmo para recomendar e mostrar coisas que agradem ao seu usuário e tornem a experiência de todos melhor.

Software Livre, é o nome desse tipo de programa em que o usuário pode melhorá-lo. Com isso temos o compartilhamento de códigos-fonte de softwares/páginas que permitem que os usuários possam ver como funciona e utilizarem para desenvolver várias novas aplicações baseadas nesse código-fonte, assim não precisam ser programadas a partir do zero. Além de que vários desenvolvedores podem ser capazes de identificar e corrigir vários bugs em menos tempo, ajudando no aperfeiçoamento do próprio software.

Um exemplo mais conhecido disso é o Firefox, que conta com a ajuda de uma enorme quantidade de colaboradores que ajudam a deixar o browser mais leve, dinâmico e responsivo, e também podem criar novas funcionalidades para ele com as extensões, que permitem uma experiência mais agradável que alcance todas as necessidades de seus usuários.

Vemos a importância que a Web 2.0 teve para revolucionar o uso da internet e o jeito que a comunidade agora pode contribuir e interagir entre si, criando sua própria identidade e seus próprios conteúdos. Ainda temos bastante coisa para falar da evolução da web e o que isso continua a nos proporcionar, mas vai ficar para outro dia, tenham uma boa semana!

Referências:
O'Reilly Media - What is Web 2.0
Wikipedia - Web 2.0
Mozilla
Tecmundo
Infoescola

Web 1.0

Aqui iremos focar na web 1.0, conhecida como a primeira fase da internet, onde "O novo mundo" tomou forma, sendo a internet como ela surgiu. E como ela funcionava?




Bem podemos usar como exemplo, este post, pois neste exato momento você está lendo e não tem interação/alteração com os elementos inseridos (imagens, fundo da página, etc.), você está somente lendo. Sites de conteúdo estático com pouca interatividade dos internautas e diversos diretórios de links, basicamente era isso que se apresentava nesta instância. Porém "isso" já era muita coisa, mesmo sendo muito diferente do que conhecemos hoje, a internet foi uma revolução para todos aqueles que dependeram, toda a vida, de bibliotecas, correios e telefones para trocar informações, aprender ou consultar algo. 





Falando em revolução este gráfico nos ajuda a entender como a velocidade de troca de informação e a quantidade de pessoas atingidas  aumentou progressivamente e assim foram surgindo os principais serviços da época como o Altavista, Geocities, Cadê, Hotmail, DMOZ, Yahoo! e, claro, o Google.

















Outra característica da web 1.0 eram os aplicativos fechados. As empresas desenvolvem aplicativos de software que os usuários podem baixar, porém não podem fazer modificações e nem ver como o programa funciona. Um aplicativo de Web 2.0 é um programa de fonte aberta, o que significa que todos vêem o código-fonte do programa. Os usuários podem ver como o software funciona e modificá-lo, ou até mesmo construir novos aplicativos com base em programas antigos. O Netscape Navigator, por exemplo, era um aplicativo fechado da era da Web 1.0. O Firefox segue a filosofia da Web 2.0 e oferece aos criadores de software todas as ferramentas que eles precisam para criar novos aplicativos para o Firefox. Entretanto o assunto da web 2.0 fica para outro dia.




Referências:
tecnologia.hsw.uol.com.br/
ex2.com.br
descomplicandotecnologia.blogspot.com.br
w3c.br

A ascensão de Javascript

Estamos vivenciando uma revolução na forma como os sites e o front-end das aplicações são desenvolvidos. O termo JavaScript era normalmente e comumente citado como um complemento para outras linguagens de programação. As coisas mudaram, JavaScript amadureceu e está mostrando o seu poder.

Nos últimos cinco anos, houve uma explosão no surgimento de frameworks de JavaScript. Se antes essa linguagem só era empregada de forma auxiliar, hoje ela pode ser usada de diversas maneiras, em diversas camadas de desenvolvimento. Conheça algumas das tecnologias inovadoras que estão usando essa linguagem como base de operações.

AngularJS


Framework de código aberto mantido pelo Google e pela comunidade de desenvolvedores, é hoje o ícone principal quando se trata de aplicações Web utilizando JavaScript. Seu foco é simplificar o desenvolvimento de aplicações usando o conceito de Single Page Applications (SPA). AngularJS estende o código HTML das páginas para poder interagir diretamente com os componentes Web através de suas diretivas.

A Framework JavaScript da Google é tida atualmente como uma tendência de mercado, sendo citada em quase todas as edições do Radar Technology da Thoughtworks, uma espécie de aglomerado de análises de especialistas da área sobre as tecnologias do momento.

Ember.js


Também de código aberto, Ember.js é um dos frameworks para desenvolvimento de aplicações Web. Mesmo sendo um dos frameworks mais novos do mercado, Ember.js chama atenção por conta dos seus clientes e parceiros. Multinacionais de enorme valor, como Yahoo, Twitch e Groupon, já usam essa tecnologia em algumas de suas aplicações. É tida como uma referência para a evolução dos demais frameworks.


Node.js


Outro framework de código aberto e que, surpreendendo toda a comunidade de desenvolvedores, opera no lado do servidor. Utilizando JavaScript como linguagem, Node.js se destaca por ser multi-plataforma, podendo rodar em diversos sistemas operacionais, e por ser independente dos tradicionais Apache e IIS, já que possui suas próprias bibliotecas que permitem que suas aplicações funcionem como Web servers.

Referencias