Trecho de programa na linguagem de programação C. |
Uma linguagem de programação é um método
padronizado para comunicar instruções para um computador. É um conjunto de
regras sintáticas e semânticas usadas para definir um programa de computador.
Permite que um programador especifique precisamente sobre quais dados um
computador vai atuar, como estes dados serão armazenados ou transmitidos e
quais ações devem ser tomadas sob várias circunstâncias. Linguagens de
programação podem ser usadas para expressar algoritmos com precisão.
O conjunto de palavras (lexemas
classificados em tokens), compostos de acordo com essas regras, constituem o
código fonte de um software. Esse código fonte é depois traduzido para código
de máquina, que é executado pelo processador.
Uma das principais metas das
linguagens de programação é permitir que programadores tenham uma maior
produtividade, permitindo expressar suas intenções mais facilmente do que
quando comparado com a linguagem que um computador entende nativamente (código
de máquina). Assim, linguagens de programação são projetadas para adotar uma
sintaxe de nível mais alto, que pode ser mais facilmente entendida por
programadores humanos. Linguagens de programação são ferramentas importantes
para que programadores e engenheiros de software possam escrever programas mais
organizados e com maior rapidez.
Linguagens de programação também
tornam os programas menos dependentes de computadores ou ambientes
computacionais específicos (propriedade chamada de portabilidade). Isto
acontece porque programas escritos em linguagens de programação são traduzidos
para o código de máquina do computador no qual será executado em vez de ser
diretamente executado. Uma meta ambiciosa do Fortran, uma das primeiras
linguagens de programação, era esta independência da máquina onde seria
executada.
INTERPRETAÇÃO E COMPILAÇÃO
Uma linguagem de programação
pode ser convertida, ou traduzida, em código de máquina por compilação ou
interpretada por um processo denominado interpretação. Em ambas ocorre a
tradução do código fonte para código de máquina.
Se o método utilizado traduz
todo o texto do programa (também chamado de código), para só depois executar o
programa, então diz-se que o programa foi compilado e que o mecanismo utilizado
para a tradução é um compilador (que por sua vez nada mais é do que um
programa). A versão compilada do programa tipicamente é armazenada, de forma
que o programa pode ser executado um número indefinido de vezes sem que seja
necessária nova compilação, o que compensa o tempo gasto na compilação. Isso
acontece com linguagens como Pascal e C.
Se o texto do programa é
executado à medida que vai sendo traduzido, como em JavaScript, BASIC, Python
ou Perl, num processo de tradução de trechos seguidos de sua execução imediata,
então diz-se que o programa foi interpretado e que o mecanismo utilizado para a
tradução é um interpretador. Programas interpretados são geralmente mais lentos
do que os compilados, mas são também geralmente mais flexíveis, já que podem
interagir com o ambiente mais facilmente.
Embora haja essa distinção entre
linguagens interpretadas e compiladas, as coisas nem sempre são tão simples. Há
linguagens compiladas para um código de máquina de uma máquina virtual (sendo
esta máquina virtual apenas mais um software, que emula a máquina virtual sendo
executado em uma máquina real), como Java (compila para a plataforma Java) e C♯ (compila para a plataforma CLI). E
também há outras formas de interpretar em que os códigos fontes, ao invés de
serem interpretados linha-a-linha, têm blocos "compilados" para a
memória, de acordo com as necessidades, o que aumenta a performance dos programas
quando os mesmos módulos são chamados várias vezes, técnica esta conhecida como
JIT.
Como exemplo, podemos citar a
linguagem Java. Nela, um compilador traduz o código java para o código
intermediário (e portável) da JVM. As JVMs originais interpretavam esse código,
de acordo com o código de máquina do computador hospedeiro, porém atualmente
elas compilam, segundo a técnica JIT o código JVM para código hospedeiro.
A tradução é tipicamente feita
em várias fases, sendo as mais comuns a análise léxica, a análise sintática, a
geração de código e a otimização. Em compiladores também é comum a geração de
código intermediário.
CONCEITOS
·
PROGRAMAÇÃO ESTRUTURADA
Programação estruturada é uma
forma de programação de computadores que preconiza que todos os programas
possíveis podem ser reduzidos a apenas três estruturas: sequência, decisão e
repetição. Um dos primeiros a preconizar a programação estruturada foi Haskell
B. Curry. Tendo, na prática, sido transformada na Programação modular, a
Programação estruturada orienta os programadores para a criação de estruturas
simples em seus programas, usando as sub-rotinas e as funções. Foi a forma
dominante na criação de software entre a programação linear e a programação
orientada por objetos. Apesar de ter sido sucedida pela programação orientada
por objetos, pode-se dizer que a programação estruturada ainda é marcantemente
influente, uma vez que grande parte das pessoas ainda aprendem programação
através dela. Porém, a orientação a objetos superou o uso das linguagens
estruturadas no mercado.
·
PROGRAMAÇÃO MODULAR
Niklaus Wirth em 2005. Criador da linguagem Pascal entre outras. |
Programação modular é uma forma de
programação no qual o desenvolvimento das rotinas de programação é feito
através de módulos, que são interligados entre si através de uma interface
comum. Foi apresentado originalmente pela Information & Systems Institute,
Inc. no National Symposium on Modular Programming em 1968, com a liderança de
Larry Constantine. Exemplos de linguagens que orientaram seu projeto para este
aspecto estão as linguagens Modula-2, desenvolvida por Niklaus Wirth e a
Modula-3.
PROGRAMAÇÃO ORIENTADA A OBJETOS
Orientação a objetos, também
conhecida como Programação Orientada a Objetos (POO) ou ainda em inglês
Object-Oriented Programming (OOP) é um paradigma de análise, projeto e
programação de sistemas de software baseado na composição e interação entre
diversas unidades de software chamadas de objetos. O extensivo uso de objetos,
particularmente em conjunção com o mecanismo de herança, caracteriza o estilo
de programação orientada a objetos. Em alguns contextos, prefere-se usar
modelagem orientada ao objeto, em vez de programação. De fato, o paradigma
"orientação a objetos" tem bases conceituais e origem no campo de
estudo da cognição, que influenciou a área de inteligencia artificial e da lingüística
no campo da abstração de conceitos do mundo real. Na qualidade de método de
modelagem, é tida como a melhor estratégia, e mais natural, para se eliminar o
"gap semântico", dificuldade recorrente no processo de modelar o
mundo real, no domínio do problema, em um conjunto de componentes de software
que seja o mais fiel na sua representação deste domínio. Facilitaria a
comunicação do profissional modelador e do usuário da área alvo, na medida em
que a correlação da simbologia e conceitos abstratos do mundo real e da
ferramenta de modelagem (conceitos, terminologia, símbolos, grafismo e
estratégias) fosse a mais óbvia, natural e exata possível. A análise e projeto
orientados a objetos tem como meta identificar o melhor conjunto de objetos
para descrever um sistema de software. O funcionamento deste sistema se dá
através do relacionamento e troca de mensagens entre estes objetos. Na
programação orientada a objetos, implementa-se um conjunto de classes que
definem os objetos presentes no sistema de software.
Cada classe determina o
comportamento (definido nos métodos) e estados possíveis (atributos) de seus
objetos, assim como o relacionamento com outros objetos.
PROGRAMAÇÃO LINEAR
Em matemática, problemas de
Programação Linear são problemas de otimização nos quais a função objetivo e as
restrições são todas lineares. Programação Linear é uma importante área da
otimização por várias razões. Muitos problemas práticos em pesquisa operacional
podem ser expressos como problemas de programação linear. Certos casos
especiais de programação linear, tais como problemas de network flow e
problemas de multicommodity flow são considerados importantes o suficiente para
que se tenha gerado muita pesquisa em algoritmos especializados para suas
soluções. Vários algoritmos para outros tipos de problemas de otimização
funcionam resolvendo problemas de PL como sub-problemas. Historicamente, idéias
da programação linear inspiraram muitos dos conceitos centrais de teoria da
otimização, tais como dualidade, decomposição, e a importância da convexidade e
suas generalizações.
Sequência: "Windows VS Linux".
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.