Gil (discussão | contribs)
 
(27 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
= Conceito =
[[Arquivo:Frameworks-Examples.png]]
*Uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade específica, por configuração durante a programação de uma aplicação.[1]
 
*Definir exatamente o que é um  framework não é uma tarefa tão fácil, muitos são os conceitos criados por profissionais da área, mas em conceitos gerais seria um conjunto de códigos abstratos e/ou genéricos, geralmente classes implmentadas em uma linguagem de programação, que são usadas para modelar e construir as partes de uma aplicação que são comuns à um domínio de problemas específicos.[2]
= Introdução =
*Como programador, você não precisa começar do zero quando tem ferramentas projetadas para ajudá-lo em seus projetos. Frameworks são softwares desenvolvidos e usados ​​por desenvolvedores para construir aplicações.
<br>
 
= O que não é um framework =
*Uma das grandes confusões que profissionais iniciantes ou que não conhecem os frameworks costumam fazer é achar que eles são bancos de dados. Na realidade, um framework pode possuir integração com um banco de dados, mas ele não é o banco de dados, como por exemplo o Laravel (framework php).
*Alguns podem presumir que um framework é uma coleção de bibliotecas, assim como as bibliotecas são uma coleção de rotinas pré-compiladas. No entanto, isso não é verdade, pois nem todos frameworks usam ou dependem de bibliotecas.
<br>
<br>


= Características básicas =
= O que é um framework =
*Um framework diferentemente de uma biblioteca, tem módulos estruturados seguindo algum padrão de projeto (como o MVC por exemplo) sendo praticamente impossível construir a aplicação sem seguir os padroẽs especificados pelo framework.
*Um framework é um conjunto de código básico genérico usado como um pacote pelos desenvolvedores que criam um programa. Dessa forma, quando um projeto é iniciado pelo profissional, este pacote de códigos prontos é um suporte que facilita o trabalho, evitando a necessidade de iniciar o site do zero, partindo de uma base comum para qualquer desenvolvimento.
*Esses frameworks podem ser baixados das comunidades de desenvolvedores, normalmente de graça, e em sua maioria open-sources. O pacote de códigos é normalmente criado por vários desenvolvedores, mas com a proposta de criar algo uniforme e padronizado que possa ser usado no máximo de cenários possíveis.
<br>
<br>


= Classificação =
= O que há de mais novo sobre frameworks?​ =
*Frameworks verticais – mais comummente chamados frameworks especialistas, são criados através da experiência obtida em projetos anteriores de um determinado contexto específico[1], geralmente tem as funçoẽs mais comuns de uma aplicação de um determinado escopo (como Web por exemplo) já implementadas (ou pelo menos parte delas) de maneira que o desenvolvedor não precisara recriar do zero toda a estrutura da aplicação uma vez que a maior parte dos sistemas de um determinado domínio tem requisítos funcionais comuns em todos eles. O desenvolvedor então só terá que personalizar os módulos de maneira que atendam aos requisítos específicos do seu sistema.
*'''Frameworks para aplicações web:'''
*Frameworks horizontais – Esse tipo de framework não depende do domínio da aplicação e pode ser usado para resolver problemas de diferentes domínios. Exemplos: interfaces gráficas.[1]
*React: React utiliza a linguagem de programação typescript ou javascript, é open-source, feito pelo facebook, utiliza o método de programação declarativa, componentização e tem como um de seus principais objetivos o "Aprenda uma vez, codifique em qualquer lugar", pois o React pode não apenas ser usado para sites, e sim, também, para outras plataformas.


Alguns sites populares utilizando React:
- Facebook
- Instagram
- Whatsapp Web
- Netflix
- Twitter
<br>
<br>
*Wordpress: Utiliza a linguagem php, é o construtor de sites mais popular do mundo (cerca de 42% da internet é composta por wordpress), tem como proposito simplificar a construção de sites através da utilização de plugins e templates, de modo que possibilita que até mesmo pessoas sem conhecimento de programação possam usá lo e desenvolvedores com conhecimento mais avançado possam lucrar com a criação de templates e plugins.
Alguns exemplos de sites que usam wordpress:
- O blog oficial de Star Wars
- BBC America
- New York Times
*'''Data Science Frameworks:'''
*PyTorch: É um framework de código aberto que acelera o processo de pesquisa, prototipagem e deploy. Desenvolvido principalmente pelo grupo de pesquisa de IA do Facebook, o PyTorch pode ser usado tanto com Python quanto com C ++. PyTorch é usado para visão computacional e processamento de linguagem natural (PNL).
Empresas que usam PyTorch:
- NVIDIA
- Qualcomm
- Lucid Motors
*TensorFlow: É um framework para machine learning. Ele tem um ecossistema abrangente e flexível de ferramentas, bibliotecas e recursos da comunidade que permite que os pesquisadores mergulhem no ML e os desenvolvedores criem e implantem rapidamente aplicativos baseados no ML. Ele utiliza javascript e Node.js como linguagens de programação. Existem  principais casos de usos para o TensorFlow: reconhecimento de imagens, modelos lineares em grande escala para análise de dados e previsões comportamentais simples e modelos de sequência a sequência (Seq2Seq) para recursos relacionados à linguagem humana.
*'''Frameworks para desenvolvimento mobile:'''
* Flutter: Flutter é o kit de ferramentas de IU do Google para a construção de aplicativos bonitos e compilados de forma nativa para celular, web e desktop a partir de uma única base de código. Possui uma interface de usuário expressiva e flexível e oferece um desempenho nativo nas plataformas iOS e Android, utiliza a linguagem de programação Dart.
* React Native: Combina as melhores partes do desenvolvimento nativo com React, a melhor biblioteca JavaScript da classe para construir interfaces de usuário. Com ele você tem acesso ao código nativo, tanto IOS quanto Android e pode fazer alterações diretas. É um concorrente do Flutter.
Apps famosos que usam React Native: - Uber Eats - Airbnb - Discord - Instagram - Pinterest


= Benefícios =
= Benefícios =
Linha 24: Linha 60:
= Desafios =
= Desafios =
*O framework não é a linguagem – por ser uma abstração da linguagem o desenvolvedor terá que passar um tempo aprendendo as peculiariedades do framework.
*O framework não é a linguagem – por ser uma abstração da linguagem o desenvolvedor terá que passar um tempo aprendendo as peculiariedades do framework.
*Códigos desnecessários – Dependendo do tamanho da aplicação um framework mais robusto pode ter funcionalidades que serão desnecessárias para aquele sistema o que pode tornar a aplicação desnecessariamente mais pesada.[2]
*Códigos desnecessários – Dependendo do tamanho da aplicação um framework mais robusto pode ter funcionalidades que serão desnecessárias para aquele sistema o que pode tornar a aplicação desnecessariamente mais pesada.
<br>
<br>


= Referências =
= Referências =
*[1] https://pt.wikipedia.org/wiki/Framework
* https://hackr.io/blog/what-is-frameworks
<br>
* https://whatis.techtarget.com/definition/framework
*[2] http://www.phpit.com.br/artigos/o-que-e-um-framework.phpit
* https://techmonitor.ai/what-is/what-is-a-framework-4945801
<br>
*[3] https://pt.wikipedia.org/wiki/Framework_para_aplicações_web
<br>

Edição atual tal como às 00h15min de 18 de setembro de 2021

Introdução

  • Como programador, você não precisa começar do zero quando tem ferramentas projetadas para ajudá-lo em seus projetos. Frameworks são softwares desenvolvidos e usados ​​por desenvolvedores para construir aplicações.


O que não é um framework

  • Uma das grandes confusões que profissionais iniciantes ou que não conhecem os frameworks costumam fazer é achar que eles são bancos de dados. Na realidade, um framework pode possuir integração com um banco de dados, mas ele não é o banco de dados, como por exemplo o Laravel (framework php).
  • Alguns podem presumir que um framework é uma coleção de bibliotecas, assim como as bibliotecas são uma coleção de rotinas pré-compiladas. No entanto, isso não é verdade, pois nem todos frameworks usam ou dependem de bibliotecas.


O que é um framework

  • Um framework é um conjunto de código básico genérico usado como um pacote pelos desenvolvedores que criam um programa. Dessa forma, quando um projeto é iniciado pelo profissional, este pacote de códigos prontos é um suporte que facilita o trabalho, evitando a necessidade de iniciar o site do zero, partindo de uma base comum para qualquer desenvolvimento.
  • Esses frameworks podem ser baixados das comunidades de desenvolvedores, normalmente de graça, e em sua maioria open-sources. O pacote de códigos é normalmente criado por vários desenvolvedores, mas com a proposta de criar algo uniforme e padronizado que possa ser usado no máximo de cenários possíveis.


O que há de mais novo sobre frameworks?​

  • Frameworks para aplicações web:
  • React: React utiliza a linguagem de programação typescript ou javascript, é open-source, feito pelo facebook, utiliza o método de programação declarativa, componentização e tem como um de seus principais objetivos o "Aprenda uma vez, codifique em qualquer lugar", pois o React pode não apenas ser usado para sites, e sim, também, para outras plataformas.

Alguns sites populares utilizando React: - Facebook - Instagram - Whatsapp Web - Netflix - Twitter

  • Wordpress: Utiliza a linguagem php, é o construtor de sites mais popular do mundo (cerca de 42% da internet é composta por wordpress), tem como proposito simplificar a construção de sites através da utilização de plugins e templates, de modo que possibilita que até mesmo pessoas sem conhecimento de programação possam usá lo e desenvolvedores com conhecimento mais avançado possam lucrar com a criação de templates e plugins.

Alguns exemplos de sites que usam wordpress: - O blog oficial de Star Wars - BBC America - New York Times

  • Data Science Frameworks:
  • PyTorch: É um framework de código aberto que acelera o processo de pesquisa, prototipagem e deploy. Desenvolvido principalmente pelo grupo de pesquisa de IA do Facebook, o PyTorch pode ser usado tanto com Python quanto com C ++. PyTorch é usado para visão computacional e processamento de linguagem natural (PNL).

Empresas que usam PyTorch: - NVIDIA - Qualcomm - Lucid Motors

  • TensorFlow: É um framework para machine learning. Ele tem um ecossistema abrangente e flexível de ferramentas, bibliotecas e recursos da comunidade que permite que os pesquisadores mergulhem no ML e os desenvolvedores criem e implantem rapidamente aplicativos baseados no ML. Ele utiliza javascript e Node.js como linguagens de programação. Existem principais casos de usos para o TensorFlow: reconhecimento de imagens, modelos lineares em grande escala para análise de dados e previsões comportamentais simples e modelos de sequência a sequência (Seq2Seq) para recursos relacionados à linguagem humana.
  • Frameworks para desenvolvimento mobile:
  • Flutter: Flutter é o kit de ferramentas de IU do Google para a construção de aplicativos bonitos e compilados de forma nativa para celular, web e desktop a partir de uma única base de código. Possui uma interface de usuário expressiva e flexível e oferece um desempenho nativo nas plataformas iOS e Android, utiliza a linguagem de programação Dart.
  • React Native: Combina as melhores partes do desenvolvimento nativo com React, a melhor biblioteca JavaScript da classe para construir interfaces de usuário. Com ele você tem acesso ao código nativo, tanto IOS quanto Android e pode fazer alterações diretas. É um concorrente do Flutter.

Apps famosos que usam React Native: - Uber Eats - Airbnb - Discord - Instagram - Pinterest

Benefícios

  • Eficiência – Como as rotinas mais comuns de uma aplicação já terão sido implementadas, o tempo total de desenvolvimento do sistema será menor.
  • Segurança – Muitas das falhas de segurança comuns à uma aplicação já terão sido tratadas pois a maioria dos frameworks são desenvolvidos por comunidades e diversas pessoas reportando erros de forma colaborativa.
  • Custo – A maioria dos frameworks são gratuitos, não gerando custos maiores ao desenvolvimento.
  • Documentação – A maioria possui uma vasta documentação, explicando os detalhes e funcionamento de suas ferramentas.
  • Padrões de codificação – por seguir um padrão de código, além de melhorar a legibilidade do código, pode tornar a manutenção mais simples.


Desafios

  • O framework não é a linguagem – por ser uma abstração da linguagem o desenvolvedor terá que passar um tempo aprendendo as peculiariedades do framework.
  • Códigos desnecessários – Dependendo do tamanho da aplicação um framework mais robusto pode ter funcionalidades que serão desnecessárias para aquele sistema o que pode tornar a aplicação desnecessariamente mais pesada.


Referências