My contribution to the Java question: I am working in go for
the pleasure and not as much as I would like to. Recently, I
was experimenting with the urgency of a shape as a sorting
method for ab-pruning. I needed to rotate 7x7 masks.

I wrote:

Procedure Rotate90cl (var jm    : jeitoMask);
{
           +---+---+---+                      +---+---+---+
           | 4 | 3 | 4 |                      | 23| 01| 01|
       +---+---+---+---+---+              +---+---+---+---+---+
       | 4 | 3 | 2 | 3 | 4 |              | 21| 23| 09| 03| 03|
   +---+---+---+---+---+---+---+      +---+---+---+---+---+---+---+
   | 4 | 3 | 2 | 1 | 2 | 3 | 4 |      | 19| 21| 23| 01| 11| 05| 05|
   +---+---+---+---+---+---+---+      +---+---+---+---+---+---+---+
   | 3 | 2 | 1 | · | 1 | 2 | 3 |      | 19| 21| 07| · | 03| 13| 07|
   +---+---+---+---+---+---+---+      +---+---+---+---+---+---+---+
   | 4 | 3 | 2 | 1 | 2 | 3 | 4 |      | 17| 17| 19| 05| 15| 09| 07|
   +---+---+---+---+---+---+---+      +---+---+---+---+---+---+---+
       | 4 | 3 | 2 | 3 | 4 |              | 15| 15| 17| 11| 09|
       +---+---+---+---+---+              +---+---+---+---+---+
           | 4 | 3 | 4 |                      | 13| 13| 11|
           +---+---+---+                      +---+---+---+
}
begin
   asm
       mov edx, eax        // @jm
       mov eax, [edx + 8]  // jm.mask4
       shl eax, 6
       mov ecx, eax
       and eax, 0ffFFFFh
       rol ecx, 8
       or  al, cl
       mov [edx + 8], eax  // jm.mask4

       mov eax, [edx + 4]  // jm.mask3
       shl eax, 6
       mov ecx, eax
       and eax, 0ffFFFFh
       rol ecx, 8
       or  al, cl
       mov [edx + 4], eax  // jm.mask3

       mov eax, [edx]      // jm.msk12
       mov ecx, eax
       shl eax, 4
       rol cl, 2
       mov al, cl
       mov ecx, eax
       shr ecx, 16
       and eax, 0ffF0FFh
       and ecx, 0000F00h
       or  eax, ecx
       mov [edx], eax      // jm.msk12
   end
end;

I don't even know if it will be part of a program, but it
is already as good as I can write it. If I need it someday,
I only have to cut and paste.

* Is that harder to write? No. At least for me.
* Is that version dependent? No. It didn't change since the
 386 was released (late 80s) and it won't change in 20 years.
* Do I have a nightmare of books/pdfs to find documentation?
 No. Just one paper "x86 Software Development.." @intel.com
* Is that harder to debug in a Borland environment? No.
* Will that code running on a 2007 machine be outperformed
 by the same function written in Java on a 2017 machine?
 (Assuming Java still exists in 2017) Probably not. As that
 code running on a 1997 machine is not outperformed today
 by Java on a 2007 machine.

I write efficient code, because inefficient code hurts my
eyes, and I can't figure out what advantages it may have.
Each time I have suffered it, it has made me loose much
more time than if I had controlled every detail from the
beginning. But returning to the go problem: It is unclear
if someone will write "the killer app" in the next ten
years, but if he/she writes it in Java he/she is giving
an additional "ten year handicap" to those who don't.

And I also try to improve my algorithms, of course. ;-)

Jacques.
_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to