Você já viu pequeno código javascript trosos
Nesta seção, eu falo sobre o que conecta o mundo
com o código de máquina na CPU
Portanto, este será geralmente sobre o tema das linguagens de computador.
Portanto, um programador trabalhando em algumas linguagens de programação.
Diz-se que as linguagens de programação são funções de alto nível.
E isso significa coisas como loops (ciclos), e se o "se" declarações
e strings (cordas) e as instalações que são mais complicados
e estão em um código de máquina única na CPU.
Assim que o desenvolvedor escreve o que é chamado de código fonte
em qualquer linguagem de programação que você está escrevendo
Aqui é um exemplo de um código-fonte C + +.
Isso aloca uma string (string), uma variável e, em seguida, coloca uma
ponto de exclamação (!) no final da cadeia.
Isto é algo semelhante ao código javascript que temos visto.
Todas essas línguas ao nível da sintaxe
são um tanto semelhante.
Então, hum, como você obter o código fonte para C + +, por exemplo, em execução no CPU?
estratégia usa o que é chamado de compilador.
o compilador é um programa separado e que a
compilador é olhar para todo o código fonte
e faz com que uma tradução grande para criar uma grande corpo de código de máquina.
Por exemplo, pode haver uma parte da fonte,
onde há um "if" e não
instruções específicas para uma instrução de código de máquina "se"
mas pode haver uma sequência de instruções máquina 5
que é na verdade um "se"
Assim, o compilador faz esse tipo de expansão.
Assim, apenas como exemplo, o Firefox é escrito em C + +.
Portanto, para fazer uma nova versão do Firefox, alguém está
o C + + e ele lê em diversos arquivos de fontes,
o "corpo grande" do código-fonte que está em conformidade com o Firefox,
e produz basicamente firefox.exe
Firefox.exe é a saída do compilador para
traduzir todo o código fonte.
Algumas coisas a se notar é que,
compilar basta passar uma vez.
Assim, um corpo de código-fonte, alguém faz firefox.exe
e, em seguida, ser enviado firefox.exe
Os usuários finais não precisa do código-fonte e
não exigir que o compilador. Ele realmente faz a compilação
fábrica, na verdade. Outra característica é
não funciona em sentido inverso. Para que eu possa distribuir firefox.exe
Todo o código desta máquina, mas não algo que
pode ler e voltar a dar-me um grande corpo de código-fonte.
Pelo menos não perfeitamente, você pode fazê-lo de modo imperfeito.
Idealmente, para produzir um investimento realmente quer
o código-fonte. Então vamos falar sobre o código fonte.
Portanto, se você deseja adicionar funcionalidade ou corrigir um bug no firefox, realmente
o caminho é de volta para o código-fonte,
e revê-lo, só que eu fiz em java script.
Então adicione uma linha ou um comando if para alterar algumas
comportamento de alguma forma, no código fonte e depois executar
o compilador mais uma vez, na verdade, para fazer uma nova versão do
Firefox tem esta pequena alteração tem
no código fonte. Uma vez que estamos tendo em código-fonte,
Isso também dá uma boa noção de como aberto
software de código significa. Um software de código aberto é um
formato que distribui o programa, mas também
sem acesso à fonte original, o
o programa. Isso normalmente vem com uma licença,
dizendo: 'Ei, aqui está o código fonte. Se você quiser
fazer sua própria versão ou corrigir um erro ou qualquer outra coisa, este programa
Sinta-se livre. "Isso dos 2 principais características do software de código aberto
uma distribuição normal de graça, para você saber, o seu barato. Mas
Outra característica é que ele vem com um tipo de liberdade.
Porque se o software é de código fechado e
quero uma característica diferente, houve algumas falhas
necessário aplicar, você realmente depende do provedor, que tem a
código fonte, bem, eles se sentem como a aplicação
Será que esse recurso? Em contraste com o software de fonte aberta,
é como não esposas. O código fonte está disponível,
e se há algo que você realmente quer fazer,
ou dizer que o fornecedor original sai do negócio, em seguida,
porque você tem o código-fonte, você sabe, você pode ser
pagar alguém para fazer uma mudança e produzir sua própria
versão personalizada. Para o que vem com esse tipo de profundidade, uh-
pode ser considerado como uma apólice de seguro.
Muitas vezes, há muitos tipos diferentes de termos de licença
para software de código aberto, mas mais frequentemente
necessária em alguns casos, se você levar o seu
código-fonte e adicionar um recurso, em seguida, ele deve oferecer
essas alterações para a comunidade. Assim, no mesmo
forma se beneficiaram de um outro emprego, você pode se beneficiar de seu trabalho.
Os detalhes de como você pode fazer é complicado.
Existem muitas formas diferentes da mesma.
Eu vou falar sobre um software de código aberto
pouco mais tarde, eu só mencionei isso agora,
porque nos dá a idéia do que é o código fonte
programa contra apenas ter o algo. exe.
Até agora eu falei sobre C + +, assim é esta
qualquer outra grande categoria de línguas que
Eu vou chamar, ou linguagens dinâmicas, por vezes,
Interpretador da linguagem. E esta é uma espécie de um grande teste
estratégia e há muitas línguas diferentes, com
muitas qualidades diferentes e eu estou indo só para classificar de caroço,
tumor são nesta classe grande.
Exemplos de linguagens dinâmicas estão atualmente Java,
Java Script, e Python. Por conseguinte, vai para uma forma que estes são
trabalho é para ser aplicado pelo que é chamado
um intérprete. Eu acho que o compilador se você estivesse tomando antes.
Um intérprete é um programa que leva o código escrito em qualquer idioma
e tipo de [inaudível] é executado. O melhor exemplo é
é a linguagem de computador chamado java script,
na verdade, têm vindo a utilizar e navegadores web são
inclui programas como uma parte deles, um java
shell. E quando vem para o navegador web
através de uma página com código java script
pode usar o shell para executar esse código a ser
fazer tudo o que vai fazer. Assim, a forma como o interpretador
obras estão lidando com a agenda da linha 1 de cada vez.
Então aqui está algum código java script,
Se o jogador queria correr esse bem
ser visto na primeira linha e para procurar
que diz que linha e, em seguida, o intérprete
Eu o faria. Assim, neste caso, o intérprete dizer,
UH-Então eu acho que preciso de uma variável chamada A, e
Eu preciso colocar um 1 na mesma. Assim, uma vez feito com que a linha
em seguida, indo para a frente, e assim que faz a linha seguinte.
E assim por diante. O mesmo se aplica para o compilador do grande volume
tradução de código fonte em código de máquina
Mas isso realmente está executando o código, apenas a sua
fazendo a tradução para executar no futuro.
Por outro lado intérprete realmente viver o momento.
Somente através do código linha por linha e só
fazer. Então deixe-me falar um pouco sobre as diferenças
entre estes dois. Devo dizer que como um aviso legal,
Existem muitas linguagens de programação, não há melhor
a velha piada sobre a linguagem é que realmente sabe,
quando você está no seminário e quando você
discutindo sobre os prós e contras de algo,
finalmente, a resposta é simples, depende.
Como não há melhor linguagem, mas sim o que é
Melhores idiomas esta situação, todos os
características. Então, em termos gerais, apenas o código compilador
tende a correr mais rápido. Quando você compilar um código C + +
e produzir isso. exe é um tipo de carne magra em uma direção,
muitos detalhes e decisões tem sido despojado
, tanto quanto possível. Além disso dinâmico ou
intérprete de linguagem, tendem a ter mais recursos.
Mais recursos do que faz o trabalho de um programador
pouco mais fácil. Ou dito de outra forma, amplamente
falando, o programador pode tendem a fazer mais trabalho
por hora, linguagens dinâmicas, que fazem na compilação
Idiomas. Entretanto, não há almoço grátis, é
também o caso que o código de linguagem dinâmica tende a
ficar mais lento do que o CPU em termos de apenas ficando apenas
o trabalho realizado, em comparação com as línguas do compilador.
Código-fonte do compilador vai fazer o mesmo.
Então, um exemplo disso é um grande exemplo disso,
Gerenciamento de memória. Por meio do qual a gestão de memória refere-se à
problema no código de quantos bytes são
¿Necessário para armazenar algo em particular e por quanto tempo?
Bem, eu preciso desses bytes para a linha 6, você sabe, mas
talvez na linha 20, e não precisa mais
e realmente eu possa reutilizar por outra coisa.
E na verdade é um tipo de problema complicted.
Em C e C + +, gerenciamento de memória é um grau
Handbook. e isso apenas significa que o programador
estão ocorrendo todas estas linhas de código para as coisas
e será, por vezes, quando você pode ter um
adicionar algumas linhas para fazer algum pensamento, para ajudar a orientar
o gerenciamento de memória. Portanto, há alguns
esforço programador necessário. Em contraste, a maioria
Linguagens dinâmicas têm o que é chamado automático
Gerenciamento de memória. E isto significa que,
Entrada programador é necessário. A linguagem vai
automaticamente notar quando a memória é necessária,
Quando a memória não é necessário porque,
podem ser reciclados e tomar a este conjunto
problema. Portanto, se encaixa no interior da tendência dos
linguagens dinâmicas foi mencionando anteriormente,
Portanto, este é um exemplo de como, bem, você sabe, porque
o programador tem menos a ver, eles podem apenas
fazer as coisas um pouco mais rápido. Como o gerenciamento de memória
é um grande exemplo. No entanto também pode imaginar
Esta é uma das coisas que torna dinâmica
código de idioma correr um pouco mais lento. Porque,
o CPU agora tem livro suggestional mantendo problema
olhando para onde a sua memória e tentar
descobrir quando ele pode ser reutilizado. Por conseguinte, muito amplo
falando, a tendência para a equipe de programação de hoje
é para linguagens dinâmicas. A característica de que o
programador conseguir algumas coisas Liitle rápidas
à custa da utilização de uma CPU ou mais bits
memória é um equilíbrio muito atraente
muitos dos problemas. Este pode ser um pouco intuitivo,
mas você pode pensar que a má qualidade
para um programa de computador e é muitas vezes o
programador, que tem programador experiente trabalhando
que, você sabe, a trabalhar neste campo, muito
das vezes são difíceis de encontrar. E assim
suas horas, ou seja, usando algumas de suas horas,
tem uma aparência atraente, em contraste, a CPU sempre
Eu quero trabalhar o mais rapidamente possível, mas
CPUs são muito barato e bastante eficaz
e este efeito é ainda curioso onde este Moore
Lei, é cada vez mais certo, onde a CPU fica mais barato a cada ano
e se pensarmos o equilíbrio entre o programador
custo e CPU custo de obter algo,
Isto significa em termos de fatia do bolo,
o programador se tornar cada vez mais caro
cada ano um pouco mais escassos. Então, esses ajustes
no padrão. Em todas as linguagens dinâmicas
estão se tornando populares. A última coisa que será
mencionar é que existe algo chamado "JIT"
Just In compilador Time. E este tipo de
o compilador síntese natural e intérprete
estratégias, tentando obter o melhor dos dois mundos.
Assim, seu gosto, bem, nós gostaríamos de uma linguagem dinâmica
com todas estas características, todos estes programador favorável
características, mas queremos correr rápido. E assim
Este JIT assumir o código e teste
e compilar na mosca. Por isso, é uma espécie de
se casar com duas delas. Ele funciona
bastante bem. Assim, todos os navegadores têm agora
EIC para código Java script. Então, realmente quando você
O código JavaScript executado nesta classe,
dentro do navegador era um JIT que estava no
voar, tendo aqueles pedaços de código e Java Script
compilar em tempo real, em código de máquina.
De qualquer forma, não será exatamente formatos compilador
código, mas você chegar muito perto. OS. Isto é realmente
Como as linguagens mais dinâmicas. Ele é um ativo
área de pesquisa. Mas parece funcionar muito bem.