Principalmente isso é uma coincidência.
As linguagens de programação evoluíram com o tempo e a tecnologia de compiladores e intérpretes melhorou. A eficiência do processamento subjacente (ou seja, o tempo de compilação, a sobrecarga de interpretação, o tempo de execução etc.) também é menos importante, pois as plataformas de computação convencionais cresceram em força.
A sintaxe da linguagem faz ter um impacto - por exemplo, Pascal foi cuidadosamente projetado para que ele pudesse usar um único compilador passagem - ou seja, passar um sobre a fonte e você tem o código de máquina excutable. Ada, por outro lado, não deu atenção a isso, e os compiladores Ada são notoriamente difíceis de escrever - a maioria exige mais de uma passagem. (Um compilador Ada muito bom que eu usei há muitos anos foi um compilador de 8 passagens. Como você pode imaginar, era muito lento.)
Se você olhar para idiomas antigos como Fortran (compilado) e BASIC (interpretado ou compilado), eles têm / tinham regras muito rígidas de sintaxe e semântica. [No caso do BASIC, isso não é o faturamento do BASIC antigo, você precisa voltar antes do original.]
Por outro lado, olhando para outras coisas mais antigas, como APL (um monte de diversão), isso teve digitação dinâmica. Também foi geralmente interpretado, mas também pode ser compilado.
A sintaxe indulgente é difícil - se isso significa que você tem coisas opcionais ou que podem ser deduzidas, significa que o idioma possui riqueza suficiente para ser descartado. Por outro lado, a BASIC tinha isso há muitos anos, quando a declaração "LET" se tornou opcional!
Muitas das idéias que você vê agora (por exemplo, datilografia ou digitação dinâmica) são realmente muito antigas - aparecendo pela primeira vez nos anos 70 ou no início dos anos 80. A maneira como são usadas e os idiomas em que essas idéias são usadas mudaram e cresceram. Mas, fundamentalmente, muito do que há de novo é realmente coisas velhas, vestidas com roupas novas.
Aqui estão alguns exemplos em cima da minha cabeça:
- APL: digitação dinâmica. Geralmente interpretado. Veio da década de 1960/70.
- BÁSICO: digitação forte ou dinâmica. Interpretado ou compilado. 1970 e muitos outros.
- Fortran: digitação forte. Compilado. 1960 ou anterior.
- Algol68: digitação forte. Compilado. 1960's.
- PL / 1: digitação forte. Compilado. 1960's.
- Pascal: digitação forte. Compilado. 1970's. (Mas na década de 1980 havia compiladores P-System muito parecidos com os compiladores JIT!)
- Algumas implementações do Fortran e outras do DEC nos primeiros dias foram parcialmente compiladas e parcialmente interpretadas.
- Smalltalk: digitação dinâmica. Compilado no bytecode que é interpretado. Anos 80.
- Prolog: mais estranheza. Funcional. Compilado (Turbo Prolog, alguém?). Anos 80.
- C: digitação forte (ha ha). Compilado. 1960. hoje.
- Ada: digitação super forte. Compilado. Anos 80.
- Perl: digitação dinâmica. (Sintaxe forte). Interpretado. Anos 90 (?).
Eu poderia continuar.
- Nitpickers corner: Muitos idiomas interpretados são tokenizados ou "compilados em bytes" no momento em que a fonte é carregada / lida. Isso simplifica muito a operação subseqüente do intérprete. Às vezes, você pode salvar a versão compilada em bytes do código. Às vezes você não pode. Ainda é interpretado.
Atualização: porque eu não estava suficientemente claro.
A digitação pode variar bastante.
A digitação estática fixa em tempo de compilação é comum (por exemplo, C, Ada, C ++, Fortan, etc etc). É aqui que você declara COISA de TIPO e é assim para sempre.
Também é possível ter uma digitação dinâmica, onde a coisa escolhe o tipo que está atribuído a ela. Por exemplo, PHP e alguns BASIC e APL antigos, nos quais você atribuiria um número inteiro a uma variável e, a partir de então, era um tipo inteiro. Se você posteriormente atribuiu uma string a ela, era um tipo de string. E assim por diante.
E há digitação livre, por exemplo, PHP, onde você pode fazer coisas realmente bizarras, como atribuir um número inteiro numérico (entre aspas, portanto é uma string) a uma variável e depois adicionar um número a ela. (por exemplo, '5' + 5 resultaria em 10). Esta é a terra dos bizarros, mas também às vezes muito, muito útil.
No entanto, esses são recursos projetados em um idioma. A implementação apenas faz isso acontecer.