# Front-end e back-end

Em ciência da computação, front-end, interface frontal ou parte frontal e back-end, parte secundária, parte de suporte ou parte de retaguarda são termos generalizados que se referem às etapas inicial e final de um processo. O front-end é responsável por coligir a entrada do usuário em várias formas e processá-la para adequá-la a uma especificação em que o back-end a possa utilizar.

## Desenvolvimento de software

Em arquitetura de software há muitas camadas entre o hardware e o usuário final. Cada uma pode ser dita como tendo um front-end e um back-end. O front-end é uma abstração, simplificando o componente subjacente pelo fornecimento de uma interface amigável, como por um exemplo um navegador de Internet, ou um formulário para um determinado usuário.
Em projetos de software, por exemplo, a arquitetura modelo-visão-controlador fornece o -end e o back-end para o banco de dados, o usuário e para os componentes de processamento. A separação de sistemas de software em front-end e back-end simplifica o desenvolvimento e separa a manutenção. Uma regra de ouro é que o lado frontal (ou "cliente") é qualquer componente manipulado pelo usuário. O código do lado do servidor (ou back-end) reside no servidor. A confusão surge quando alguém tem que fazer edições na parte frontal para arquivos do lado servidor. Muitos projetistas HTML, por exemplo, não precisam estar no servidor quando eles estão desenvolvendo o HTML. Reciprocamente, engenheiros do lado servidor, por definição, nunca estão em qualquer coisa, mas num servidor. Considera-se os dois para, finalmente, fazer um site web funcional e interativo.
Para subsistemas de computação maiores, um gerenciador de arquivos gráfico é um front-end para o sistema de arquivos do computador e um shell faz a interface com o sistema operacional. O front-end reveste o usuário e o back-end executa os programas do sistema operacional em resposta.
Usar a interface de linha de comando (ILC) exige a aquisição de terminologia especial e memorização de comandos, desta forma uma interface gráfica do usuário (IGU) age como um ambiente desktop de front-end, em vez disso. No ambiente Unix, ncurses é um front-end semi-gráfico simples para a ILC. No nível de ILC do Unix, propriamente dito, muitos programas orientados a stream de bytes (isto é, usando stdin/stdout/stderr como suas interfaces) agem como filtros - programas standalone que também podem servir como front-ends e back ends para outros programas. (Eles funcionam canalizando dados entre eles mesmos, muitas vezes para processamento de texto. Por exemplo: $ grep palavra ~usuario/dir/arquivodeentrada | sort | tee ~usuario/dir/arquivodesaida)
Em alguns sistemas, tais como aqueles baseados em Unix chama-se front-end às interfaces gráficas que permitem ao usuário interagir com programas que trabalham originalmente em modo texto.
A título de exemplo temos o comando mkfs pertencente à construção de vários sistemas de ficheiros.

## Redes de computadores

Em redes de computadores, front-end pode se referir a qualquer hardware que otimiza ou protege o tráfego de rede. Ele é chamado de hardware front-end de aplicação devido ser localizado na fronteira da rede. O tráfego de rede passa através do hardware do front-end antes de entrar na rede.

## Outros usos

Em sistemas de gerenciamento de conteúdo os termos front-end e back-end podem se referir às visões do usuário final do SGC e às visões administrativas, respectivamente.
Em compiladores, o front-end traduz um código fonte de programa de computador em uma representação intermediária e o back-end trabalha com a representação intermediaria para produzir código em uma linguagem de saída. O back-end normalmente otimiza-se para produzir código que execute mais rápido. A distinção de front-end/back-end pode separar a seção parser que lida com o código fonte e o back-end que gera código e o otimiza. Alguns projetos, como o GCC, oferecem escolhas entre vários front-ends (analisando linguagens fonte diferentes) ou back-ends (gerando código para processadores de alvo diferentes).
Em síntese de voz, o front-end refere-se à parte do sistema de síntese que converte o texto de entrada em uma representação fonética simbólica e o back-end converte a representação fonética simbólica em sons reais.
No contexto de aplicações WWW, um mediador é um serviço que funciona simultaneamente como um servidor em seu front-end e como um cliente em seu back-end.

## Algumas tecnologias para web front-end e back-end
### Front-end

* React
* XHTML
* HTML5
* CSS
* Javascript
* AJAX
* jQuery
* CFML
* AngularJS
* Angular
* Vue

### Back-end

* PHP
* C
* C++
* Node.js
* Ruby on Rails
* Python
* Java
* JSP
* .NET
* C♯
* VB
* Perl Catalyst