BASIC: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
bot: revertidas edições de 89.155.162.154 ( modificação suspeita : -20), para a edição 46945246 de Darwinius
m ajustes usando script
Linha 12:
|influenciou = [[DarkBASIC]], [[Euphoria (linguagem de programação)|Euphoria]], [[Logic Basic]], [[Perl]], [[REXX]], [[VBScript]], [[Visual Basic]], [[Visual Basic .NET]]
}}
'''BASIC''' (acrônimo para '''''B'''eginner's '''A'''ll-purpose '''S'''ymbolic '''I'''nstruction '''C'''ode''; em [[Língua portuguesa|português]]: Código de Instruções Simbólicas de Uso Geral para Principiantes), é uma [[linguagem de programação]], criada com fins didáticos, pelos professores [[John George Kemeny]] e [[Thomas Eugene Kurtz]] em [[1964]] no [[Dartmouth College]].<ref name=back>{{citar livro|autor=Kemeny, John G.; Kurtz, Thomas E.|ano=1985|título=Back To BASIC: The History, Corruption, and Future of the Language|local=|editora=Addison-Wesley|páginas=145|página=1-53|isbn=0-201-13433-0 }}</ref> BASIC também é o nome genérico dado a uma grande família de linguagens de programação derivadas do BASIC original. Provavelmente existem mais variações de BASIC do que de qualquer outra linguagem de programação.{{Carece de fontes|data=abril de 2017}}
 
== Caracterização da linguagem ==
BASIC é uma linguagem imperativa de alto nível, pertencente à terceira geração, originalmente compilada (apesar de suas implementações em microcomputadores ter disseminado a versão interpretada) e não estruturada, por ter sido fortemente baseada em [[Fortran II]].{{Carece de fontes|data=abril de 2017}} O fato de sua versão original ser compilada se explica por ter sido implementada num sistema de tempo compartilhado, o que faz bastante sentido.
 
Com o tempo, BASIC evoluiu, criando condições para a [[programação estruturada]] e até mesmo para a [[Orientação a objetos|programação orientada a objetos]], como é o caso das últimas versões do [[Visual Basic]].
Linha 23:
 
<source lang="FreeBasic">
10 INPUT A,B
20 FOR I=A TO B STEP 1
30 IF MOD(I,2)>0 THEN 50
Linha 33:
O programa demonstra a falta de estruturação da linguagem original, pois o '''IF''' funciona como um '''GOTO''' condicional, o que favorece o [[código espaguete]].
 
Com o tempo os números das linhas sumiram (ou se tornaram opcionais) e as instruções estruturadas foram aparecendo, com várias outras modificações. O mesmo programa poderia ser escrito como:{{Carece de fontes|data=abril de 2017}}
 
<source lang="FreeBasic">
INPUT A,B
FOR I=A TO B
IF MOD(I,2)=0 THEN PRINT I
NEXT
</source>
 
Linha 57:
 
=== Aprendizagem ===
Todas as versões de BASIC são geralmente fáceis de aprender, principalmente por serem muito permissivas quando comparadas a linguagens fortemente estruturadas e tipadas, como [[Pascal (linguagem de programação)|Pascal]]. Porém, a aprendizagem de BASIC é muitas vezes informal e é por muitos considerado ''prejudicial'', por não reforçar as regras tradicionais de programação estruturada e outros cuidados de programação que se tornaram prática quase que obrigatória com o tempo.{{Carece de fontes|data=abril de 2017}}
 
Por sua extrema simplicidade, o BASIC permitia a implementação de [[interpretador]]es razoavelmente poderosos em memórias mínimas, o que era uma vantagem enorme em relação aos micro-computadores.{{Carece de fontes|data=abril de 2017}}
 
Um interpretador BASIC pode ser escrito com 25 linhas de código C (intencionalmente compactado).<ref>{{Citar web |url=http://www.nicholson.com/rhn/files/dds_basic.c |título=DDS-BASIC Interpreter (Version 1.00) |língua=inglês |publicado=Diomidis Spinellis |acessodata=20 de novembro de 2010}}</ref> Um código em [[Pascal (linguagem de programação)|Pascal]] que interpreta [[Tiny Basic]], bem estruturado e comentado tem apenas 1300 linhas.<ref>{{Citar web |url=http://www.moorecad.com/standardpascal/basics.pas |título=TINY PASCAL BASIC |língua=inglês |publicado=S. A. Moore |acessodata=20 de novembro de 2010}}</ref>
 
Um computador [[Sinclair ZX80]], por exemplo, possuía 1K de RAM e 4K de ROM, que continha um interpretador BASIC, um editor de programação e o ''sistema operacional''. O uso de compactação permitia que o programa a seguir contivesse apenas 39 bytes.{{Carece de fontes|data=abril de 2017}}
 
<source lang="FreeBasic">
Linha 74:
== A linguagem ==
=== Sintaxe ===
Cada instrução em BASIC ocupa uma linha. Para usar mais de uma linha é necessário usar um caractere de continuação. Um dos aspectos mais conhecidos de BASIC era a utilização de numeração para as linhas. A maioria dos interpretadores possui um comando RENUMBER que permite renumerar todas as linhas de acordo com um intervalo pré-determinado (como em '''RENUMBER 10'''). Alguns, mas não todos, dialetos mais modernos abandonaram os números e suportam a maioria, ou todas, as instruções de controle estruturada e declaração de dados, permitindo a construção de programas estruturados como em [[Pascal (linguagem de programação)|Pascal]].{{Carece de fontes|data=abril de 2017}}
 
Variantes recentes, como Visual Basic, introduziram características de orientação a objeto. A gerência de memória é mais fácil que na maioria das linguagens de procedimentos, pois normalmente existe um [[coletor de lixo]].{{Carece de fontes|data=abril de 2017}}
 
=== Procedimentos e controle de fluxo ===
Ao contrário de outras linguagens, como [[C (linguagem de programação)|C]], a biblioteca de funções de BASIC não é externa, mas considerada parte intrínseca da linguagem.{{Carece de fontes|data=abril de 2017}}
 
=== Tipos de dado ===
No BASIC original existem apenas dois tipos de variáveis, as textuais e as numéricas. Para declarar uma variável numérica você precisa escrever uma caractere alfabético seguido ou não de um numérico. E para as variáveis textuais você deve escrever caracteres alfabéticos e no final o símbolo “$”.{{Carece de fontes|data=abril de 2017}} O BASIC, mesmo o original, oferece bons recursos para a manipulação de "strings" (variáveis alfanuméricas, de tipo texto) e esta é uma facilidade prevista no projeto da linguagem. A evolução da linguagem, entretanto, possibilitou que novos tipos de dados fossem acrescentados, como a manipulação de ponto flutuante.
 
== Criação ==
Linha 98:
 
=== Precursores ===
A linguagem foi criada a partir de [[Fortran II]] e parcialmente inspirada em [[ALGOL 60]], com adições para torná-la adequada ao ''time-sharing'', tendo sido consideradas características de outros sistemas como [[JOSS]], [[CORC]] e até mesmo [[LISP]].{{Carece de fontes|data=abril de 2017}}
 
Em [[Dartmouth]], a linguagem foi precedida de outros experimentos destinados ao ensino de programação, como as implementações de [[SAP (Linguagem de programação)|SAP]] e [[DART]] (um [[Fortran|Fortran II]] simplificado) [[DARSIMCO]] e [[DOPE]].{{Carece de fontes|data=abril de 2017}}
 
Inicialmente a linguagem se concentrava apenas em trabalho matemático, incluindo uma extensão para aritmética de matrizes, sendo que o suporte completo a manipulação de cadeias de caracteres em [[ASCII]] foi adicionado em [[1965]].{{Carece de fontes|data=abril de 2017}}
 
Sua primeira implementação foi em um [[mainframe]] [[GE-265]], que suportava múltiplos terminais. Ao contrário do que se tornaria mais tarde comum, sua primeira versão era compilada, sendo bastante eficiente e mais rápida que [[Fortran|Fortran II]] e [[ALGOL 60]] no [[GE-265]] em muitas tarefas razoáveis de programação, como maximizar a [[regra de Simpson]].{{Carece de fontes|data=abril de 2017}}
 
Os projetistas da linguagem decidiram que ela devia permanecer em domínio público, para que pudesse se espalhar. Também a tornar disponível para escolas de ensino médio (''high schools'') na região de [[Darthmouth]], e fizeram um esforço considerável para promover a linguagem. Como resultado, o conhecimento de BASIC se tornou razoavelmente comum para uma linguagem de programação da época e ela passou a ser implementada por vários fabricantes, sendo bastante popular nos [[minicomputadores]] mais novos como os [[PDP]]s da [[Digital Equipment Corporation|DEC]] e o [[Nova (computador)|Nova]] da [[Data General]]. Nesses computadores era normal a linguagem ser interpretada em vez de compilada.{{Carece de fontes|data=abril de 2017}}
 
=== O BASIC original ===
Linha 143:
* REM, para comentários.
 
Um programa em BASIC é composto de linhas numeradas, possivelmente com intervalos entre os números. Era normal numerar as linhas dos programas de 10 em 10. Além disso, a linguagem fornecia funções como SIN ([[seno]]) e ABS ([[valor absoluto]]). O próprio manual já apresenta algumas extensões, como a capacidade de manipular matrizes em [[CARDBASIC]].{{Carece de fontes|data=abril de 2017}}
 
==== Típico programa em BASIC ====
Linha 169:
</source>
 
Note que o BASIC original não tinha uma instrução de entrada de dados (que mais tarde seria nomeada de INPUT), e que o READ, ao não encontrar mais dados para ler (em uma declaração DATA), considerava o programa terminado. Além disso, note que a forma de programar escolhida para esse exemplo é típica de um programa BASIC, o que leva à questão do [[código espaguete]].{{Carece de fontes|data=abril de 2017}} O comando INPUT foi acrescentado à linguagem em sua versão 4, conforme o manual<ref name="basic4th">http://www.bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf </ref> de 1968.
 
==== Cálculos matemáticos em BASIC ====
Linha 176:
<source lang="FreeBasic">
1000 INPUT "DIGITE UM NUMERO"; N%
1010 LET D1%=1
1020 LET Ni%=0
1030 LET D2%=1
Linha 186:
1100 IF D2%<D1% THEN GOTO 1050
1110 IF S1%=D1% AND D1%<>1 THEN Ni%=Ni%+1 : PRINT "N"Ni%":" D1%
1120 D1%=D1%+1
1130 IF Ni%<N% THEN GOTO 1030
1140 END
Linha 192:
 
== A era de ouro do BASIC ==
Apesar do uso da linguagem em vários minicomputadores, foi a introdução do [[Altair 8800]] e a posterior explosão dos computadores pessoais a partir de 1975 que iniciou a disseminação do BASIC. Praticamente todo microcomputador fornecia um ambiente de programação BASIC residente já em suas [[ROM]]s.{{Carece de fontes|data=abril de 2017}}
 
A maioria das linguagens de programação é muito grande para caber na pequena memória que a maioria dos usuários tinha condição de comprar para suas máquinas. Além disso, as baixíssimas velocidades da [[memória secundária]] utilizadas, fitas de papel e cassetes de áudio, faziam com que uma linguagem pequena como BASIC fosse uma boa opção.{{Carece de fontes|data=abril de 2017}}
 
Esse BASIC, acrescido de comandos típicos de sistemas operacionais (mesmo que simplíssimos) e de edição, residente em [[ROM]], funcionava como uma espécie de linguagem própria do computador, o mais próximo existente do que hoje chamamos de sistema operacional, e a maioria das aplicações da época seria escrita no dialeto de BASIC específico da máquina.{{Carece de fontes|data=abril de 2017}}
 
Outra vantagem da linguagem é que ela era razoavelmente bem conhecida pelos jovens projetistas que se interessaram pelos microcomputadores naquela época, como resultado do proselitismo de Kemeny e Kurtz.{{Carece de fontes|data=abril de 2017}}
 
Um dos primeiros interpretadores a aparecer para o [[Altair 8800]] foi o [[Tiny Basic]], uma implementação simples originalmente escrita por Doutor [[Li-Chen Wang]], e portada para o [[Altair 8800|Altair]] por [[Dennis Allison]] sob pedido de [[Bob Albrecht]] (que mais tarde fundaria o [[Dr. Dobb's Journal]]. Em [[1976]] o projeto e código completo de Tiny Basic foram publicados nessa revista.{{Carece de fontes|data=abril de 2017}}
 
Companhias mais novas tentaram seguir o sucesso da [[MITS]], [[IMSAI]], [[North Star]] e [[Apple Inc.]], criando então a revolução dos microcomputadores. Simultaneamente, várias firmas lançaram outras versões de BASIC, além das empresas de computadores, algumas empresas de software apresentavam interpretadores com melhorias sobre as versões que vinham com as máquinas, e outras para algumas máquinas que vinham sem o apoio da linguagem, como as versões baseadas em [[CP/M-80]]. Breve, havia muitos milhões de máquinas rodando BASIC no mundo, certamente com mais programadores do que todas as outras linguagens somadas.{{Carece de fontes|data=abril de 2017}} No Brasil o Basic ficou bastante conhecido (na segunda metade da década de 80) pelos usuários do MSX da Gradiente, que foi um dos primeiros computadores acessíveis ao público.
 
== Exemplos de códigos ==
Linha 219:
INPUT "Quantas estrelas você quer"; NumStars
Stars$ = ""
Stars$ = REPEAT$("*", NumStars)
REM em MS BASIC a instrução seria Stars$ = STRING$(NumStars, "*")
PRINT Stars$
DO
Linha 235:
 
== Críticas ==
Muitos anos após seu lançamento, profissionais respeitados da computação, especialmente [[Edsger W. Dijkstra]], expressaram a opinião que o uso da expressão GOTO, que existia em várias linguagens além de BASIC, promovia práticas não desejáveis de programação. Alguns também acusaram BASIC de ser muito simples ou muito lenta.{{Carece de fontes|data=abril de 2017}}
 
Um dos principais problemas com as versões originais de BASIC era a falta de uma estrutura re-entrante de chamada de sub-rotinas ou funções, como acontece [[ALGOL]], Pascal e na maioria das linguagens modernas de programação (mesmo em versões mais modernas de BASIC). Isso é uma propriedade similar a dos [[Fortran]] originais e um grande entrave à modularização de programas.{{Carece de fontes|data=abril de 2017}}
 
Durante algum tempo, BASIC foi a linguagem de escolha para ensinar programação, porém hoje em dia é considerada uma linguagem pouco adequada para o ensino, pois a facilidade e permissividade da linguagem permitia a construção de programas que não seguem princípios básicos de programação, o que se reflete mais tarde na construção de programas mais complexos por aqueles que foram ensinados com BASIC. Como linguagem de aprendizado, BASIC foi substituída principalmente por Pascal.{{Carece de fontes|data=abril de 2017}}
 
== {{Bibliografia}} ==
* ''[http://www.bitsavers.org/pdf/dartmouth/BASIC_Oct64.pdf BASIC version 2 manual]''. Dartmouth College Computation center, 1964. ([[Portable Document Format|PDF]])
* ''[http://www.bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf BASIC version 4 manual]''. Dartmouth College Computation center, 1968. ([[Portable Document Format|PDF]])