Esse nome deriva, é claro, da linguagem Modula-2, criada por Niklaus Wirth, também inventor do Pascal. A linguagem Modula-2 é fortemente modular, Mas o que quer dizer isso ? O meu conceito temporário de módulo é o seguinte:
“Módulo é um conjunto de dados e sub-rotinas que podem ser exportados para um programa para ser usado por ele.”
Bom, isso não parece uma grande definição, já que pode coincidir com “biblioteca”, por exemplo. Mas o ponto específico a notar é que linguagens modulares possuem o conceito embutido em sua sintaxe. Existem, inclusive, declarações de implementação e de definição de módulos. Há um bom exemplo em [1] no comentário:
MODULE LocMod1;
FROM Terminal2 IMPORT WriteString, WriteCard, WriteLn;
VAR Index : CARDINAL;
MODULE LocalStuff; EXPORT GetNumber; (* Nothing else is visible outside *) (* Nothing outside is visible here *) VAR Counter : CARDINAL;
PROCEDURE GetNumber() : CARDINAL; BEGIN Counter := Counter + 3; RETURN Counter; END GetNumber;
BEGIN Counter := 4; (* This is only run at load time *) END LocalStuff;
BEGIN (* Main program *) FOR Index := 1 TO 8 DO WriteString("The count is now "); WriteCard(GetNumber(),8); WriteLn; END; (* Do loop *) END LocMod1. |
Observe que a linguagem tem comandos específicos para lidar com módulos e suas variáveis, por exemplo:
-
MODULE
-
IMPORT
-
EXPORT
-
IMPLEMENTATION MODULE
Em relação ao EXPORT é importante notar que é um comando que define a interface do módulo com o exterior. Note também que se eu não usar o EXPORT, as variáveis do módulo não ficarão visíveis para as outras partes do programa. Isso é uma boa prática de programação, pois evita erros de reuso de uma variável.
Ainda de nossa referência [1] no comentário, vem uma importante observação que vai substituir o meu conceito anterior de módulo:
“Devemos divagar um pouco para ver a diferença nesses dois tópicos importantes em Modula-2. Uma procedure é uma seção executável de código, enquanto um módulo é um agrupamento de variáveis, constantes, tipos e procedures. Um módulo nunca é executado, pois é simplesmente um identificador de agrupamento.”
Note que geralmente existem módulos locais e globais, no que se refere à disponibilidade. MODULE LocalStuff é local, no exemplo.
A linguagem Pascal evoluiu para incorporar também o conceito de módulo. Isso pode ser visto na outrora popular linguagem Delphi.
Comentários
Referências
[1] https://www.modula2.org/tutor/chapter12.php
[2] https://www.nap.edu/read/5463/chapter/3#14
[3] https://pt.wikipedia.org/wiki/Pascal_(linguagem_de_programa%C3%A7%C3%A3o)