quarta-feira, 31 de março de 2010

2. Qual a diferença entre código fonte e código objeto ? E programa open source ? Qual a importância desses conceitos na hora de contratar o desenvolv

Código fonte (código-fonte, ou até source code em inglês) é o conjunto de palavras ou símbolos escritos de forma ordenada, contendo instruções em uma das linguagens de programação existentes, de maneira lógica. Existem linguagens que são compiladas e as que são interpretadas. As linguagens compiladas, após ser compilado o código fonte, transformam-se em software, ou seja, programas executáveis. Este conjunto de palavras que formam linhas de comandos deverá estar dentro da padronização da linguagem escolhida, obedecendo critérios de execução.

Já o Código objeto é o nome dado ao código resultante da compilação do código fonte. Para cada arquivo de código fonte é gerado um arquivo com código objeto, que posteriormente é "ligado" aos outros, resultando num arquivo executável ou biblioteca.

A definição do Open Source foi criada pela Open Source Iniciative (OSI) a partir do texto original da Debian Free Software Guidelines (DFSG) e determina que um programa de código aberto deve garantir:

1. Distribuição livre
A licença não deve restringir de nenhuma maneira a venda ou distribuição do programa gratuitamente, como componente de outro programa ou não.
2. Código fonte
O programa deve incluir seu código fonte e deve permitir a sua distribuição também na forma compilada. Se o programa não for distribuído com seu código fonte, deve haver algum meio de se obter o mesmo seja via rede ou com custo apenas de reprodução. O código deve ser legível e inteligível por qualquer programador.
3. Trabalhos Derivados
A licença deve permitir modificações e trabalhos derivados, e deve permitir que eles sejam distribuídos sobre os mesmos termos da licença original.
4. Integridade do autor do código fonte
A licença pode restringir o código fonte de ser distribuído em uma forma modificada apenas se a licença permitir a distribuição de arquivos patch (de atualização) com o código fonte para o propósito de modificar o programa no momento de sua construção. A licença deve explicitamente permitir a distribuição do programa construído a partir do código fonte modificado. Contudo, a licença pode ainda requerer que programas derivados tenham um nome ou número de versão diferentes do programa original.
5. Não discriminação contra pessoas ou grupos
A licença não pode ser discriminatória contra qualquer pessoa ou grupo de pessoas.
6. Não discriminação contra áreas de atuação
A licença não deve restringir qualquer pessoa de usar o programa em um ramo específico de atuação. Por exemplo, ela não deve proibir que o programa seja usado em um empresa, ou de ser usado para pesquisa genética.
7. Distribuição da Licença
Os direitos associados ao programa devem ser aplicáveis para todos aqueles cujo o programa é redistribuído, sem a necessidade da execução de uma licença adicional para estas partes.
8. Licença não específica a um produto
Os direitos associados ao programa não devem depender que o programa seja parte de uma distribuição específica de programas. Se o programa é extraído desta distribuição e usado ou distribuído dentro dos termos da licença do programa, todas as partes para quem o programa é redistribuído devem ter os mesmos direitos que aqueles que são garantidos em conjunção com a distribuição de programas original.
9. Licença não restrinja outros programas
A licença não pode colocar restrições em outros programas que são distribuídos juntos com o programa licenciado. Isto é, a licença não pode especificar que todos os programas distribuídos na mesma mídia de armazenamento sejam programas de código aberto.
10. Licença neutra em relação a tecnologia
Nenhuma cláusula da licença pode estabelecer uma tecnologia individual, estilo ou interface a ser aplicada no programa.

Exemplos são:

Linux
: Sistema Operacional
Apache, o servidor Web mais utilizado no mundo
Sendmail, o servidor de e-mail mais robusto e seguro
BIND, servidor de DNS responsável pela quase totalidade dos servidores de nomes da Internet
jBoss, servidor de aplicações compatível com JavaEE
PostgreSQL, servidor de base de dados SQL
GCC, o melhor compilador "C" que existe


É NECESSÁRIO O CONHECIMENTO DE TAIS TERMOS PARA PODER USUFRUIR DETERMINADOS BENEFÍCIOS COMO:

Experimentar várias tecnologias na fase inicial de um ciclo de avaliação sem terem de assinar uma ordem de compra;

O fato da nao existência de vinculação à empresa que forneceu o código;

A capacidade de aproveitar tecnologias de múltiplos fornecedores, de participar na comunidade e tirar partido de uma poupança significativa nos custos;

Outro beneficio é a flexibilidade e interoperabilidade entre plataformas para possibilitar aos clientes a fusão de sistemas e introduzir eficiência nos seus centros de dados.

Nenhum comentário:

Postar um comentário