[successivo] [precedente] [inizio] [fine] [indice generale]


Sezione 3.   Limitazioni e punti di forza

Le limitazioni principali di Eukleides sono probabilmente:

  1. il basso livello di interattività del programma frontale xeukleides, e

  2. la mancanza di strutture sintattiche più evolute (cicli, sottoprogrammi, ecc...) nel linguaggio vero e proprio.

Per quanto riguarda il primo punto, la questione è complessa e si potrebbe inquadrare più nell'ambito delle scelte metodologiche che in quello dei compromessi tecnologici. In effetti esistono già diversi programmi che permettono di «fare geometria dinamica», nel senso che permettono all'utente di costruire e modificare gli oggetti geometrici essenzialmente «a colpi di mouse»: non è questa la sede per aprire una discussione sulla presunta opportunità didattica di strumenti di questo tipo (basti notare che al riguardo le diverse opinioni dei docenti di matematica sono largamente divergenti); fatto sta che la scelta dell'autore di Eukleides (egli stesso insegnante liceale di matematica in Francia) è stata diversa:

As a mathematics teacher in a French high school, I have to compose a rather large number of documents for my students, containing both text and formulas. In my point of view, LaTeX is the best tool in such a situation, combining efficiency and high quality. Very often, these documents should be illustrated with geometric figures. I first used the excellent pstrick package to draw them. I didn't want to use WYSIWYG software instead, because I wanted to keep following TeX's philosophy, that is: What You Mean Is What You Get. Unfortunately, pstrick isn't designed for geometry at all and is rather inappropriate in many situations.

One night, I wanted to draw a triangle with an inscribed circle, so I had to compute by hand the coordinates of the center and the radius of this circle, which is quite boring. During these calculations, I realized that they could easily be done by a computer, and that gave me the idea to create Eukleides, a geometry drawing language. My goal was to make it as close as possible to what mathematics teachers would say to describe geometric figures.(1)

[...]

Sembra quindi che lo scopo principale di Eukleides sia quello di (facilitare la e) invitare alla descrizione verbale delle figure geometriche, piuttosto che coltivare un'attività semi-ludica di modifica interattiva delle figure stesse (cosa comunque praticamente possibile, anche se «senza mouse», grazie agli assegnamenti interattivi, v. sezione 2.11). Peraltro, avere a che fare con un software orientato alla descrizione offre anche tutta una serie di indiscutibili vantaggi (come si cercherà di dimostrare nel seguito).

Riguardo al secondo punto (fermo restando che le future versioni di Eukleides conterranno dei decisi miglioramenti in questo senso), proprio grazie alla natura descrittivo-testuale del software in oggetto è possibile «estendere» le funzionalità del linguaggio utilizzando la flessibilità offerta dai diversi linguaggi di programmazione. Si consideri ad esempio il seguente enunciato: «Sia dato un segmento e un punto su di esso; si costruiscano - sulle due parti del segmento così definite - due triangoli equilateri dalla stessa parte del piano rispetto al segmento, e si consideri il segmento avente per estremi i vertici non giacenti sul segmento dato; il punto medio di tale segmento descrive - al variare del punto dato - un segmento su una retta parallela al segmento dato». Per tentare di fornire una «dimostrazione dinamica» dell'enunciato, si parta dal caso particolare fornito dal listato 3.1 e dalla figura 3.2.

Listato 3.1.

thickness(3)
H = point(0,3*3^(1/2)/2)
color(red)
style(dotted)
% la retta che dovrebbe contenere il luogo:
draw(line(H,0:))
color(black)
style(full)
A = point(0,0)
AM = 1
MB = 6-AM
A M I equilateral(AM)
M B J equilateral(MB)
draw(A,M,I) ; draw(M,B,J)
color(lightgray)
draw(segment(I,J))
color(black)
draw(AM,"%.1f",segment(A,M),-90:)
draw(MB,"%.1f",segment(M,B),-90:)
color(blue)
% il punto che descrive il luogo:
draw(barycenter(I,J))

Figura 3.2. Eukleides: un problema di luoghi geometrici (un caso particolare).

Un problema di luoghi geometrici (un caso particolare)

Naturalmente, una «dimostrazione dinamica» richiede di poter disegnare un gran numero di casi particolari simili a quello illustrato, mettendo così in evidenza la limitazione di Eukleides legata al non poter definire cicli enumerativi. Tuttavia, utilizzando dei linguaggi di programmazione esterni, è abbastanza semplice arrivare a figure come la 3.3.

Figura 3.3. Eukleides: una «dimostrazione dinamica».

Una dimostrazione dinamica

Per realizzare tale figura, si è utilizzato il programma eukloop.sh (il programma dovrebbe essere disponibile qui: <allegati/xs/eukloop_sh>), a partire dai file 2triloc.eukt e 2triseq.eukt. Ecco come si procede:

echo "frame(-1,-16,28,6,0.5)" > 2tri.euk ; echo "thickness(3)" >> 2tri.euk[Invio]

eukloop.sh[Invio]

create symbolic link `eukloop1.sh' to `eukloop.sh'
create symbolic link `eukloop2.sh' to `eukloop.sh'

cat 2triloc.eukt[Invio]

y = <COUNTER1>
H = point(0,-7*y+3*3^(1/2)/2)
color(red)
style(dotted)
draw(line(H,0:))
color(black)
style(full)

cat 2triloc.eukt | eukloop1.sh 0 1 2 >> 2tri.euk[Invio]

cat 2triseq.eukt[Invio]

x = <COUNTER2>
y = <COUNTER1>
A = point(7*x,-7*y)
AM = 4/11*x+16/11*y+1
MB = 6-AM
A M I equilateral(AM)
M B J equilateral(MB)
draw(A,M,I) ; draw(M,B,J)
color(lightgray)
draw(segment(I,J))
color(black)
draw(AM,"%.1f",segment(A,M),-90:)
draw(MB,"%.1f",segment(M,B),-90:)
color(blue)
draw(barycenter(I,J))
color(black)

cat 2triseq.eukt | eukloop2.sh 0 1 2 0 1 3 >> 2tri.euk[Invio]

Il file 2tri.euk dovrebbe essere disponibile qui: <allegati/xs/2tri_euk>): esso corrisponde esattamente alla figura 3.3.

Il funzionamento del programma eukloop.sh è molto semplice:(2) invocandolo con il suo nome esso crea due collegamenti simbolici a se stesso nella directory corrente, che verranno poi utilizzati nell'invocazione effettiva, ciascuno di essi corrispondendo a una differente modalità di utilizzo; il primo collegamento simbolico realizza una struttura ciclica enumerativa semplice, il secondo una composta da due cicli annidati; in pratica il programma converte un file in cui sia presente del codice Eukleides assieme alle metavariabili <COUNTER1> e <COUNTER2> in un file Eukleides ottenuto ripetendo il codice Eukleides e sostituendo alle metavariabili dei valori specifici ottenuti ciclicamente in conformità agli argomenti passati al programma; nel caso di eukloop1.sh i tre argomenti passati corrispondono rispettivamente al valore iniziale, all'incremento e al valore finale (e analogamente nel caso di eukloop2.sh, solo che in questo caso bisogna passare tre valori per ciascuna metavariabile, per un totale di sei argomenti); nel caso del ciclo doppio, il ciclo esterno corrisponde alla metavariabile <COUNTER1>, quello interno alla metavariabile <COUNTER2>.


Informatica per sopravvivere 2006.02.18 --- Copyright © 2004-2006 Massimo Piai -- <pxam67 (ad) virgilio·it>


1) enfasi mia

2) ... per non dire rudimentale: si invita il lettore volenteroso ad estenderne le funzionalità, magari utilizzando un altro linguaggio di programmazione.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome limitazioni_e_punti_di_forza.html

[successivo] [precedente] [inizio] [fine] [indice generale]

Valid ISO-HTML!

CSS validator!