Em que circunstâncias são linguagens dinâmicas não apropriado? [fechadas]

StackOverflow https://stackoverflow.com/questions/142223

  •  02-07-2019
  •  | 
  •  

Pergunta

Que fatores indicam que a solução de um projeto não deve ser codificado em uma linguagem dinâmica?

Foi útil?

Solução

A velocidade é tipicamente a resposta primária. Embora isso está se tornando um problema menor nos dias de hoje.

Outras dicas

A familiaridade e a disposição dos programadores para trabalhar com a linguagem.

A sua linguagem dinâmica é provavelmente a minha linguagem estática.

nível de desenvolvimento do sistema é um grupo-chave de software que normalmente não deve ser em linguagens dinâmicas. (Motoristas, kernel do material de nível, etc).

Basicamente tudo o que precisa ter o máximo de desempenho ou acesso de hardware de baixo nível, deve estar em uma linguagem de nível mais baixo.

Outro indicador é se é altamente processamento de números, como o número de dados científicos trituração. Isto é, se ele precisa correr rápido e fazer processamento de números.

Eu acho que um tema comum é o processador problemas intensivos ... caso em que você vai ver facilmente as diferenças de desempenho, e você vai achar que a linguagem dinâmica simplesmente não pode dar-lhe o poder de usar o hardware de forma eficaz.

Dito isto, se você está fazendo processador de trabalho intensivo e você não se importa o sucesso no desempenho, então você ainda poderia potencialmente utilizar uma linguagem dinâmica.


Update:

Note que, para processamento de números, eu quero dizer realmente longa duração Phyton no panorama científico onde o processo está sendo executado por horas ou dias ... neste caso um ganho de desempenho 2x é GINORMOUS ... se ele está em um muito menor escala, em seguida, linguagens dinâmicas ainda pode ser de uso.

Em grande medida, a linguagem de programação é uma escolha de estilo. Use o idioma que deseja usar e você vai ser maximamente produtiva e feliz. Se por algum motivo isso não for possível, então espero que a sua decisão final será baseada em algo significativo, como uma plataforma que você tem que correr contra ou real, números de desempenho empíricos, em vez de outra pessoa escolha de estilo arbitrária.

Vídeo drivers de dispositivo cartão

quando a velocidade é crucial. linguagens dinâmicas estão ficando mais rápidos, mas ainda não perto do desempenho do que uma linguagem compilada é.

Interop é absolutamente possível com linguagens dinâmicas. (Lembre-se clássico Visual Basic, que tem "ligação preguiçoso"?) Ela exige que o componente COM para ser compilado com alguns extras embora para ajudar seus chamadores chamada pelo nome.

Eu não acho que esse número crunching tem de ser compilado estaticamente, na maioria das vezes é uma questão de como você resolver. Matlab é um bom exemplo feita para processamento de números, e tem uma linguagem não-compilado. Matlab, no entanto, tem um tempo de execução muito específica para os números e matrizes.

Eu acredito que você deve sempre optar por linguagem estaticamente digitada sempre que possível. Eu não estou dizendo C # ou Java têm sistemas estáticos bons, mas C # está se aproximando. Boa inferência de tipos é a chave porque ele vai te dar benefícios observados em linguagens dinâmicas enquanto ainda dando-lhe segurança e recursos de uns estaticamente tipado. Problema resolvido - não mais flamewars

.

código de nível de sistema para sistemas embarcados. Um possível problema é que as linguagens dinâmicas, por vezes, esconder as implicações de uma única instrução fácil à procura de desempenho.

Como dizer esta declaração Perl:

@contents = <FILE>;

Se ARQUIVO é de alguns megabytes, em seguida, que é uma declaração de consumo de recursos -. Você pode esgotar sua pilha, ou causar um tempo limite watchdog, ou geralmente abrandar a resposta do sistema embarcado

Se você quiser "programa mais perto do metal", você provavelmente vai querer estar usando uma linguagem de tipagem estática e "nível médio".

interoperabilidade Que tal? É possível chamar um componente COM a partir de Ruby ou Python?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top