Fortran

## Historia

Com a década de 50 veio o surgimento das primeiras linguagens modernas  de programação, nessa década nomes como LISP, COBOL, ALGOL 60 e principalmente  FORTRAN deram as caras em suas versões iniciais e rudimentares, pois qualquer ideia de paradigma só foram surgir a  alguns anos depois.

Segundo a Wikipédia Fortran e uma das primeiras linguagens de programação modernas, Foi desenvolvido por John Backus e mais alguns outros envolvidos no projeto. O nome Fortran vem de  FORmula TRANslator e  teve seu surgimento por volta de 1954, é uma uma linguagem de programação imperativa compilada de propósito geral. Seu principal uso é especialmente para computação numérica e científica. Originalmente foi desenvolvido pela IBM na década de 50 para ser utilizado em aplicações científicas e de engenharia, o Fortran passou a dominar essa área de programação por muito tempo e ficou  em uso contínuo por mais de meio século em áreas computacionais intensivas, tais quais  previsão numérica de tempo, análise de elementos finitos , dinâmica de fluidos computacional, física computacional, cristalografia e química computacional. Foi uma linguagem popular para computação de alto desempenho e também foi  usada em  programas que comparam e classificam os supercomputadores mais rápidos do mundo. Fortran engloba várias linhagem de suas versões, que foram  evoluindo com o tempo porém ainda  mantendo a compatibilidade com versões anteriores. Versões sucessivas adicionaram suporte para programação estruturada e processamento de dados baseados em caracteres ou  programação de matrizes, programação modular e programação genérica  ou  programação orientada a objetos além de outras melhorias. A estrutura do Fortran foi utilizado como base  base para muitas outras linguagens de programação. Entre  as linguagens que se baseiam no Fortran podermos dizer que a mais  conhecida  e o BASIC, que é baseado no Fortran II com uma série de limpezas de sintaxe, notavelmente melhores estruturas lógicas, e outras mudanças para trabalhar mais facilmente em um ambiente interativo.

Por conta das enormes dificuldades em se programar em assembly,  no final de 1953, John W. Backus submeteu uma proposta aos seus superiores na IBM para desenvolver uma alternativa mais prática à linguagem assembly. O primeiro compilador Fortran  só foi entregue em abril de 1957. Este Acabou sendo o primeiro compilador otimizador, pois  os clientes estavam muito  relutantes em usar uma linguagem de programação de alto nível a menos que seu compilador pudesse gerar códigos com um desempenho comparados ao que conseguiam utilizando a linguagem assembly. A linguagem por fim foi amplamente adotada por cientistas para escrever programas intensivos numericamente, o que por sua vez acabou por  incentivar a produção  de compiladores que pudessem gerar um código mais rápido e eficiente. A  crescente popularidade obtida  pelo  Fortran estimulou os fabricantes de computadores a fornecer compiladores Fortran para suas máquinas, por conta disso por volta de 1963 existiam mais de 40 tipos compiladores Fortran. Com isso o Fortran foi considerado a primeira linguagem de programação amplamente utilizada e suportada em várias arquiteturas de computadores. O desenvolvimento do Fortran acompanhou a evolução inicial dos compiladores, e muitos avanços na teoria e nas estruturas foram feitas com o passar dos anos, gerando assim várias versões do Fortran que vemos hoje.

A versão inicial do Fortran que tinha sido liberada  para o IBM 704 continha 32 instruções, tais como: DIMENSION, IF, GO TO, FORMAT, CONTINUE entre outras . Em 1958 surgiu o Fortran II lançado pela IBM, tendo como principal aprimoramento a capacidade de suportar a programação procedural,  permitindo assim  que as sub-rotinas escritas pelo usuário e as funções pudessem  retornar  valores ou receber valores com parâmetros passados ​​por referência. A instrução COMMON forneceu uma maneira para que  as sub-rotinas acessarem variáveis . Novos tipos de declarações também foram adicionadas ao compilador: SUBROUTINE, FUNCTION, END, CALL,  RETURN e  COMMON. Em 1958 Foi desenvolvido porém nunca lançado o Fortran III que permitiria utilização de código  assembly em conjunto com a linguagem. Entre 1961 por conta das grandes demandas dos clientes  a IBM iniciou o desenvolvimento do compilador que resultou no Fortran IV esse acabou por  remover vários recursos que eram dependente de hardware que existiam no Fortran II (como o recurso  READ ou o recurso  INPUT), e  adicionar novos recursos. O Fortran IV foi apenas lançado em 1962.

Por decisão da American Standards Association (Atualmente conhecida como  ANSI - American National Standards Institute) o Fortran possivelmente teve o desenvolvimento mais significativo no início da  sua história que foi o de formar um comitê patrocinado pela BEMA(Business Equipment Manufacturers Association) para assim desenvolver uma versão padronizada do Fortran, isso resultou em dois padrões que foram aprovados em 1966, Fortran (que tinha sido baseado na versão IV e considerado o padrão ) e Fortran basic que era baseado no Fortran II porém livre de suas dependências de hardware. O Fortran que se baseava na versão IV que era oficialmente nomeado de X3.9-1966 passou a ser conhecido como Fortran 66, essa versão ficou conhecida também como a primeira versão do Fortran padrão de indústria.  Depois de algum tempo  do lançamento do padrão Fortran 66, os  fornecedores de compiladores introduziram várias extensões ao padrão  Fortran,  fazendo assim que  o comitê ANSI X3J3 em 1969   começarem  a trabalhar na revisão do padrão de 1966, sob o patrocínio do CBEMA, fazendo assim a  aprovação formal de um novo  novo padrão Fortran em abril de 1978. O novo padrão, chamado Fortran 77 e oficialmente denotado X3.9-1978. Esse  padrão adicionou uma série de características significativas para resolver muitos dos problemas que existiam no Fortran 66. O sucessor do Fortran 77, conhecido como Fortran 90  foi lançado como padrão  ANSI em 1992,  esta grande revisão adicionou alguns  novos recursos que conseguiam  refletir  as várias mudanças na forma que eram feitos programas e na própria linguagem de programação que  foram evoluindo  com o passar dos anos. Fortran 95, que foi lançado  oficialmente em 1997 foi apenas uma pequena revisão para resolver alguns problemas da versão anterior, no entanto o mesmo melhorou alguns pontos de sua performance.  Em 2003 e 2008 houve outras pequenas versões do Fortran que corrigiam determinado problema ou adicionavam novas funcionalidades.

## Legibilidade

Por ser uma linguagem desenvolvida nos primórdios da programação e tendo como principal objetivo  construir uma sintaxe mais fácil que assemble porém mantendo uma velocidade semelhante é linguagem por mais que seja de alto nível se assemelha muito com uma linguagem de máquina perdendo assim sua simplicidade por esse ponto  ao possuir a  tantas definições para sua estrutura e sintaxe Fortran não pode ser considerado uma linguagem simples. Novamente por ser uma linguagem que vem de origem das linguagens de máquinas e em que em seus primórdios possuía compiladores muito dependentes de hardware fortran pode ser considerado como muito ortogonal pois existem pouquíssimas exceções nas regras definidas em sua sintaxe. Fortran te capaz de utilizar vários tipos de dados assim como as linguagens mais atuais.  Na Wikipédia as primeiras versões dos compiladores da linguagem dependia de  uma formatação precisa do código-fonte e do uso extensivo de  números de instruções GOTO, Com o passar do tempo houve algumas melhorias em sua sintaxe e diversas atualizações acabaram por introduzir alguns conceitos que existiam nas linguagens “modernas“ de programação tais como comentários, porém como a linguagem foi desenvolvida antes do surgimento de muitos paradigmas e foi se adaptando a elas com o passar dos anos seu design de sintaxe não é bom, sendo confuso em algumas partes ou como definido por vários programadores que utilizam linguagem mais modernas como arcaico. Algumas das versões anteriores do Fortran  não possuem  facilidades que seriam tidas como úteis nas atuais  máquinas modernas, Entanto Deve-se,ter em conta que a sintaxe de Fortran foi projetada e polida  para o uso em trabalhos numéricos e científico. Um possível  exemplo e que o   Fortran 95 possui comandos muito breves capazes de  facilitar  as operações matemáticas com matrizes e as  disposições de tipos, o que  de muitas formas não só melhora a forma que a leitura do programa e feita  como também oferece  informações muito  úteis ao compilador. Tendo em vista sua grande foco o Fortran não é muito utilizado fora dos campos da ciência da computação e da análise numérica, porém é uma boa linguagem a se escolher quando se precisa desempenhar tarefas da área da computação numérica tendo como objetivo obter um  alto rendimento.

## Capacidade de Escrita

Fortran possui suporte para abstração em versões mais atuais tais como interfaces, polimorfismo e  classes abstratas  assim como o  suporte para orientação a objetos. No quesito expressividade Fortran fica muito para trás em relação a outras linguagem, Fortran tende a uma verbosidade em sua sintaxe deixando a expressividade de lado um quase todos os quesitos.  A implementação fortran inclui centenas de funções, várias das quais possuem argumentos que não estão em conformidade com nenhum tipo de dados específico. Possivelmente por ser uma das primeiras tentativas de desenvolver uma linguagem de programação de alto nível a sintaxe do  Fortran,  e de certa forma  vista hoje em dia como uma forma arcaica e defasada de programação  por muitos programadores que aprenderam linguagens mais atuais como python ou javascript. Fortran tem como principais pontos negativos a difícil forma de escrever um loop.

Fortran não é Case Sensitive  logo o mesmo não faz qualquer distinção entre letras minúsculas ou maiúsculas. quando se deseja fazer um comentário deve-se colocar um “c” no início da linha. outro conceito essencial e como deve ser escrito o início  de cada programa. todo programa escrito em Fortran deve iniciar com “program nomedoprograma”  e finalizar com “end”, variáveis sempre deve ser declarada antes de ser usada. e podem ser de vários tipos como visto anteriormente na imagem 3. As declarações de matrizes e vetores precisam que sejam  indicados  suas dimensões logo após o nome da variável. A linguagem possui diversos operadores que podem ser vistos na imagem 4 com suas respectivas ordem de prioridades.

## Confiabilidade

Nas versões mais antigas do compilador não havia um mecanismo de verificação de tipos disponível em tempo de compilação. No entanto, começando com o Fortran 90, o padrão Fortran introduziu suporte para módulos. Um módulo é um tipo de unidade de programa que pode fornecer instruções para declarar e definir interfaces.Seguindo relatado por usuários do Stackoverflow, usando um módulo para definir a interface, um programador pode impor os tipos de dados que uma função pode aceitar. Dessa forma é possível fazer uma checagem de tipo no Fortran porém este método de checagem de tipos não é uma forma simples de ser feito e nem totalmente eficiente além de não estar presente  na maioria dos compiladores da linguagem. Se com verificação de tipos já não se tem muito suporte por parte do Fortran em relação a tratamento de exceção não a suporte algum disponível pelo compilador, a formas de simular esse tratamento de erros entretanto. A  também o fato de que  alguns erros na escrita de apenas um caractere podem acabar levando para de tempo de execução em vez de erros de compilação.  Por fim  em Fortran, os argumentos de procedimento e outras variáveis podem não ter aliasing entre si (a menos que sejam ponteiros ou tenham o atributo target). Isso permite excelente otimização e é um dos principais motivos para a reputação do Fortran como uma linguagem rápida.