Algumas das falácias e más impressões sobre o PHP

Documentos relacionados
UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: LINGUAGENS PARA APLICAÇÃO COMERCIAL

Curso 500 Desenvolvimento

Lógica de Programação

Clique para editar o estilo do subtítulo mestre

Mestrado em Engenharia Física Tecnológica

Bianca Hahn Lucas Manassés Vitor Sabbi

Prof. Esp. Fabiano Taguchi PHP. Como surgiu o PHP? PHP

Curso Online de E-commerce. Plano de Estudo

Gestão de Conteúdo com Plone. Luiz Ferreira

CONTEÚDO PROGRAMÁTICO

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS

qwertyuiopasdfghjklzxcvbnmqwer tyuiopasdfghjklzxcvbnmqwertyuio pasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjk

Conhecendo um pouco mais sobre WordPress. Equipe de tecnologia da coordenação de Cultura Digital do Ministério da Cultura.

envolvidos numa comunicação

PHP Histórico. Linguagens Server-side Professor Fábio Luís da Silva Santos

PREFÁCIO. Como ganhar dinheiro em casa, sem precisar investir quase nada ou nada. 6 Passos para você ter uma renda extra no final do mês

PROGRAMAÇÃO EM AMBIENTE WEB I

Software: na visão da ES

Cassio Greco. Fundador da Conta Simples

Desenvolvimento Web. Versão 2 Jan/2019. Professor Emiliano S. Monteiro

SQL INJECTION: ENTENDENDO E EVITANDO. MAGALHÃES, Felipe. B. ¹, BASTOS, Rafael. R² RESUMO

nossa história (e porque você é parte dela)

MERCADO DE TRABALHO DE TI E O IMPACTO DO ANGULAR 7

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS

VALORES Site Pronto 700,00 Site Semipersonalizado 1.600,00. FORMA DE PAGAMENTO À vista com 10% 03 x cartão ou boleto site pronto somente á vista

Sistema Gerenciador de Conteúdo. Maria de Fátima de Freitas Bueno Marcílio

Salesforce vs NetSuite

Introdução ao Zend Framework 2

PERSISTÊNCIA DE DADOS EM JAVA UTILIZANDO HIBERNATE: Mapeamento Objeto / Relacional

Introdução a Programação

Quem somos? Seleção de Talentos CLP Área de Comunicação tel./fax:

Gestão Estratégica da Informação ECI/UFMG Disciplina: Sistemas de Gestão de Conteúdo Prof. Marcello Bax Integrantes: Júnio César, Luciana Bicalho,


Engenharia de Software

Juliana Gonçalves da Costa

Lidando com Armazenamento de Dados

Sites de candidatos políticos servem para alguma coisa?

EDITAL N.º 145/2013 SELEÇÃO CANDIDATO AO PROGRAMA DE ESTÁGIO

Curso online de. Formação em Front-End. Plano de Estudo

Gestão de Pessoas. Professor: Itair Pereira da Silva

Desenvolvimento Web II

A diferença entre um site que implementa CSS e outro que não o usa é gigantesca e notável.

Dicas & truques é uma iniciativa InnoDev com o foco na divulgação e promoção do Talento Angolano e fundamentalmente a partilha do conhecimento com

Divulgação Massiva De Qualidade

RESUMO DA PROGRAMAÇÃO - Minicursos

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

COMO DESENVOLVER UM SITE PARA EVENTOS COM

Desenvolvimento de Aplicações Distribuídas

Qual a diferença entre SEO On Page e SEO Off Page

10º ENTEC Encontro de Tecnologia: 28 de novembro a 3 de dezembro de 2016 ESTUDO VIRTUAL: AMBIENTE DE ENSINO E APRENDIZAGEM ONLINE

COMO DIVULGAR SUA EMPRESA NA INTERNET

Visão Geral do CMS e Framework Joomla

Tudo o que Você Sempre Quis Saber Sobre Linguagens de Programação* (*Mas Tinha Medo de Perguntar) Diego Padilha Rubert FACOM

WEBDESIGN. Professor: Paulo Marcos Trentin - Escola CDI de Videira

As cinco escolhas que você deve fazer para ter uma produtividade extraordinária

BLOG DO MAGNATA 5 PASSOS PARA CRIAR UM NEGÓCIO DE SUCESSO

As 10 melhores maneiras de conseguir clientes pelo Google

Principais Motivos para Usar o MySQL

EDITAL DE SELEÇÃO DE PESSOAL Nº 07/2018

Introdução ao Desenvolvimento de

Desenvolvimento Web II

APP WORK - SISTEMA DE GERENCIAMENTO DE HORÁRIO PONTO E GEOLOCALIZAÇÃO 1 APP WORK - POINT AND GEOLOCALIZATION SCHEME MANAGEMENT SYSTEM

Programação Orientada a Objetos Prof. Fábio Kon. Sistema Petrolimpa. Leonardo Macedo ( ) Rodrigo Siqueira ( ) 22 de Março de 2016

Antecedentes da Web 2.0

COMO O MARKETING DIGITAL PODE AJUDAR SEU NEGÓCIO? Marco Andrei Kichalowsky

Você possui um site seguro?

REYNALDO PÉREZ SÁNCHEZ

PHP - Orientação a Objeto MVC. Éderson T. Szlachta {Tecnólogo em Análise e Desenv. de Sistemas} - edersonszlachta@gmail.com

MANUTENÇÃO E EVOLUÇÃO DO SOFTWARE PBL-VSII

Instrutor: Cleber Semensate

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador

Grupo: Diogo Furtado Phellipe Perin Stephan Hebeda

Weby - O Gerenciador de Conteúdo Web para IFES

PCI CONCURSOS 2016: Abertos, Previstos

Introdução à Computação Parte 2

arquitetura shared-nothing em 3 camadas

CURSO MASTER EBAY FUNCIONA? VENDEDOR PROFISSIONAL [ Trabalhe em casa ]

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

PARA QUEM É ESTE CURSO?

Edital De processo Seletivo da Empresa Júnior Next Step Edital nº001/2016

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

Petter Anderson Lopes Arbitragem, Desenvolvimento Seguro, Segurança Ofensiva e Forense Computacional

REST RESTfulWeb Services JAX-RS

Programa gratuito de formação de devs

O que é o PostgreSQL?

MILLENNIUM NETWORK. Millennium ECO Documentação Técnica 05/2017

Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza Antonio Vasconcellos

Carta de apresentação

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Instituto Federal Catarinense, Araquari/SC. Aluno do Curso Técnico em Informática Instituto Federal Catarinense Araquari/SC 2

Como evitar folhas em branco nos arquivos PDF gerados com o Calc

Projeto Disciplinar de Infra-Estrutura de Software WEBZINE MANAGER REVISTA ELETRÔNICA INTERAÇÃO NEWS

Expressões Numéricas Expressões com Adições e Subtracções

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

DESENVOLVIMENTO DO JOGO DE DAMAS UTILIZANDO A BIBLIOTECA ALLEGRO

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Transcrição:

Algumas das falácias e más impressões sobre o PHP 07/fev/2018 "O PHP só serve para sites pessoais." O PHP, desde sua gênese, nasceu para Web e desde então, nunca a mudou. Ele se reinventou algumas vezes durante as décadas (sim, é uma linguagem nascida nos anos 90) e se estabeleceu com uma completa "plataforma web". É utilizado pelas principais empresas de tecnologia do mercado e em grandes projetos. Algumas das grandes empresas que usam o PHP: Facebook, Google, Baidu, Wikipedia, Spotify, Uber etc. Sim, o PHP foi criado despretensiosamente com o nome de "Personal Home Page Tools". Rasmus Lerdorf, o seu criador, o desenvolveu para cuidar da sua página pessoal. A plataforma foi ficando interessante, recebendo incrementos, até que, depois de algumas versões, Zeev e Andi Gutmans (co-fundadores da Zend Technologies) reescreveram todo o core e lançaram a versão PHP 4. Nessa época que começou uma grande adoção da linguagem. Nos anos seguintes o PHP teve uma completa (nos seus termos e características) adição do paradigma de orientação a objetos, entre outras melhorias estruturais, até chegarmos no ponto em que estamos hoje, na versão PHP 7 e não muito distantes da versão 8. Veja esse relato, o Uber arrecadou as suas primeiras "moedas" utilizando PHP e a versão de um Framework que hoje é legada (a versão): E vale lembrar que a escalabilidade ( indica sua capacidade de manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para crescer) de uma aplicação vai muito além da linguagem que ela utiliza.

"PHP é inseguro." Nenhuma linguagem é estritamente segura. A segurança da informação não se restringe a apenas algumas linhas de código. Ela envolve redes e seus protocolos, sistema operacional, serviços externos que são utilizados e, claro, a parte que nos "toca" (como desenvolvedores), que é a "programação segura" e, na maioria dos casos, a insegurança de uma codificação se dá pela limitação de conhecimento técnico do desenvolvedor e não necessariamente por causa da tecnologia que ele está utilizando. Alguns dos macro tópicos que deveriam ser de domínio de todo desenvolvedor web (não importando a linguagem utilizada): Conhecer o básico do protocolo HTTP; Validar e sanitizar inputs (nunca confiar no que receber do cliente), isso já previne futuros ataques e também escapar os dados ao imprimir na tela para o cliente; Sempre utilizar queries parametrizadas nas operações com o banco de dados. Isso elimina a possibilidade de SQL Injection; Utilizar um moderno algoritmo de hashing para passwords (como o bcrypt ou, melhor ainda, Argon2 que tem ganhado adeptos na comunidade de segurança); Utilizar https em todos os domínios; Criar cookies seguros, que só funcionem via HTTPS e que não sejam acessados por JavaScript; É importante buscar por esse tipo de conhecimento. Como desenvolvedores web não precisamos criar soluções para segurança, devemos apenas entender e utilizar as existentes. Não cabe a nós criarmos, por exemplo, uma library para criptografia, não é da nossa alçada, tem gente muito mais preparada para isso. Agora, é muito importante que conheçamos as opções disponíveis e como elas podem nos ajudar em nossos projetos. Pelo fato de o PHP ser o motor de alguns dos maiores CMS's do mercado como: WordPress, Drupal, Joomla, Magento etc, é comum ler e notar vulnerabilidades que são encontradas nessas plataformas. E isso não é problema, desde que você se preocupe em sempre a utilizar as últimas versões e desde que elas se mantenham atualizadas (que é o caso). Algumas vulnerabilidades não são especificamente do PHP e sim de algum módulo externo como OpenSSL ou algo relacionado ao sistema operacional. Sim, o PHP, como qualquer outra plataforma, possui vulnerabilidades, sempre teve, sempre vai ter, por isso é sempre importante utilizar as últimas versões estáveis das tecnologias que você trabalha (e isso vale para tudo, desde a linguagem, uma simples library ou até mesmo o seu sistema operacional). É razoavelmente comum sistemas legados rodando em versões antigas do PHP. Não dá pra cravar que tais sistemas precisam ser reescritos e migrados, tudo depende da criticidade das informações que eles trabalham e como é feita a auditoria de segurança neles.

Vale o destaque: A próxima minor version do PHP, a 7.2, fará dele a primeira linguagem a adicionar criptografia moderna.

"PHP é uma linguagem defasada." Por muitos anos o PHP trabalhou com a idéia de "estabilidade" em detrimento à novas features, no entanto, a partir da versão 5.3 tivemos significativas alterações na linguagem, inclusão de novos recursos e estruturas. É plausível não gostar do PHP, da sintaxe dele etc, cada qual com seus conhecimentos tácitos, preferências etc. Linguagens são como círculos sociais, elas possuem uma cultura, uma essência, algo que não se "quebra", intangível. Ou seja, se eu adoro a forma com que Ruby faz alguma coisa, não devo achar que o PHP é defasado por conta disso, ou que ele deveria fazer da mesma forma. São culturas diferentes, formas de aplicar e pensar diferentes. E toda pluralidade é positiva.

"Mas o PHP não é uma linguagem orientada a objetos..." Realmente, o PHP não é uma linguagem orientada a objetos, ele implementa o paradigma de orientação a objetos. O PHP é multiparadigma. Não existe demérito algum nisso. Não é o fato de uma linguagem ser (em essência) orientada a objetos que a faz ser a solução para todos os problemas. Por exemplo, atualmente é notório um movimento e uma grande adoção por linguagens funcionais. A implementação de orientação a objetos no PHP é robusta e esse paradigma é o mais utilizado em todos os principais frameworks dele provindos.

Por que aprender PHP é um grande negócio? 1). É a linguagem mais utilizada para web, cerca de ~82% de todos os sites a utilizam:

2). Ela foi desenvolvida para a Web (isso é um fator de vantagem e competitividade para se manter no topo entre mais utilizadas);

3). O suporte à linguagem é constante. Todo ano teremos uma nova minor version até a chegada de alguma nova major version. Pode ser que demore um pouco menos ou um pouco mais de um ano, tudo vai depender da estabilidade das alterações. Mas essa é a ideia principal. E para cada nova minor version, têm-se dois anos de suporte (bugs e segurança). O panorama atual das versões do PHP e o suporte concedido a elas:

4). O PHP é amplamente documentado na Web Há documentação, artigos, dicas, discussões, fóruns, recursos etc. O PHP não nasceu "hoje". Muitos problemas com suas soluções estão disponíveis na Web, muitos deles no Github.

5). O PHP possui excelentes e estabelecidos frameworks. Alguns dos maiores expoentes do mercado e que estão andando junto com a evolução da linguagem: Laravel 5 Symfony 3 (Em breve Symfony 4) Zend Framework 3 Zend Expresive 2 CakePHP 3 Silex 2 Slim 3 CodeIgniter 3 O Symfony, Laravel e Zend Framework elevaram o nível do desenvolvimento com PHP. Há cases de aplicações com milhares de requisições por segundo e que utilizam algum desses frameworks.

Qual o real objetivo aqui? A ideia de "melhor linguagem" cai muito no terreno da "relatividade". A melhor é que resolve o problema do seu projeto e que a sua equipe consegue trabalhar bem com ela. Algo muito importante que devemos ter em mente é: Uma linguagem de programação deve ser tratada como o "meio"para resolver um problema, não o "fim". Isso quer dizer que, não importa que linguagem você venha a escolher, desde que ela consiga entregar o valor final do seu produto. A escolha de uma linguagem / plataforma, principalmente em um ambiente corporativo, em um grande projeto, se passa por muitas decisões que vão além da nossa opinião e gosto pessoal.