Sunday

Ifá/Afa- A Computer Programmer’s Perspective

CC™ Opinion

By Eyes Sea

For some of us who earn our daily bread from programming computers (I have been doing this for over 2 decades), making the connection between Ifá binary notation and programming is a no brainer.

We programmers write codes/instructions (incantations) on the cpu – made from silicon (sand) to carry out our desires.

The parallel between a Babaláwo and a computer programmer is striking. We write on sand (silicon/cpu), a Babalawo writes on Iyerosun (camwood powder). We chant/write binary codes, a Babaláwo recites Odù Ifá!

In essence, a computer code is àfọ̀ṣẹ par excellence! In Yoruba, àfọ̀ṣẹ means “oun tí a fọ̀ tí ó sì ṣẹ” – something commanded to happen.

Our incantations (computer codes) can animate the entities in the cpu (sand) and make them become whatever we want: a game console, a financial trading system, an air traffic controller, facebook, Google, Twitter, Amazon, Bitcoin etc.

How did this come about? Well, the Binary System makes this possible.

The Binary System of Ifá is based on the Yorùbá philosophical duality of Ibi and Ire (Evil and Good); for several millennia, the Yorùbá had been using the binary system before the German mathematician – Gottfried Leibniz formalised in 1679.

These days, the Binary Numeral System (Base 2) is well known in Mathematics and digital electronics and the system underpins how computers work by representing numeric values using just two digits – zero (0) and one (1)

In Computing, a Bit (i.e. BInary digiT) is the smallest unit of storage and can either be 1 or 0

A Nible (also called half Byte or semi-octet) is the grouping of four Bits e.g 0 1 0 1

In Ifá, Odù signatures are marked with “|” and “||”. Where “|” is the binary number “0” and “||” is “1”.

For example Ogbè (0000) has the following signature:
|
|
|
|

Ọ̀sá (1000) is represented as:
||
|
|
|

Òtúrá (0100) is marked as:
|
||
|
|

We can therefore summarise the representation of the first sixteen Odus as follows:
Decimal == Nibble == Odù
00 == 0000 == Ogbè
01 == 0001 == Ògúndá
02 == 0010 == Ìrẹtẹ̀
03 == 0011 == Ìrosùn
04 == 0100 == Òtúra
05 == 0101 == Ọ̀sẹ́
06 == 0110 == Èdí
07 == 0111 == Ọ̀bàrà
08 == 1000 == Ọ̀sá
09 == 1001 == Ìwòrì
10 == 1010 == Ọ̀̀fún
11 == 1011 == Ìká
12 == 1100 == Ọ̀wọ́nrín
13 == 1101 == Òtúrúpọ̀n
14 == 1110 == Ọ̀kànràn
15 == 1111 == Òyẹ̀kú
́
Since Ifá speaks only in binary (Odu Èjì Ogbè says: “Èjèèji ni mo gbè, n ò gbe ọ̀kan ṣoṣo mọ́” i.e “I will only support two, I will not support one”), each Odu must be paired.

For example, after pairing the main Odu, we get the following (see graphic for the main Odu signature)

Èjì Ogbè (also called Ògbè Méjì): 00000000
Ògúndá Méjì : 00010001
Ìrẹtẹ̀ Méjì : 00100010
Ìrosùn Méjì : 00110011
Òtúrá Méjì : 01000100
Ọ̀sẹ́ Méjì : 01010101
Èdí Méjì : 01100110
Ọ̀bàrà Méjì : 01110111
Ọ̀ṣá Meji: 10001000
Ìwòrì Méjì : 10011001
Ọ̀fún Méjì : 10101010
Ìká Méjì :10111011
Ọ̀wọ́nrín Méjì :11001100
Òtúrúpọ̀n Méjì :11011101
Ọ̀kànràn Méjì :11101110
Ọ̀yẹ̀kú Méjì : 11111111

The other 240 minor Odus are derived from the main 16 Odus.
For example (note: the binary notation and the marks are read from right to left)

Ogbè-Ògúndá : 0001-0000
| |
| |
| |
|| |

Ọ̀yẹ̀kú-Ìrẹtẹ̀ : 0010-1111
| ||
| ||
|| ||
| ||

Computers also speak in binary and binary numbers can be converted to decimal, hexadecimal, octal etc.

Without getting into too much math, below are the decimal values of the 16 main Odu:
00000000 = 00
00010001 = 17
00100010 = 34
00110011 = 51
01000100 = 68
01010101 = 85
01100110 = 102
01110111 = 119
10001000 = 136
10011001 = 153
10101010 = 170
10111011 = 187
11001100 = 204
11011101 = 221
11101110 = 238
11111111 = 255

Below is a computer machine code that adds the numbers from 1 to 10 together and prints out the result:

i.e. 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0
0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0
0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

In Ifa, the patterns of bits above translate to…
ọ̀wọ́nrín-ọ̀sá èjì-ogbè èjì-ogbè
ọ̀wọ́nrín-ọ̀sá ogbè-ọ̀sá ogbè-ọ̀sá
ọ̀wọ́nrín-méjì ogbè-ọ̀sá ogbè-ọtúrá
ọ̀fùn-ọ̀sá ogbè-òtúrùpọ̀n ogbè-ọtúrá
ọtúrá-méjì ogbe-ọtúrá ogbè-ògúndá
ìrẹtẹ̀-ọ̀wọ́nrín ogbè-ọ̀sá èjì-ogbè
ìrẹtẹ̀-ọ̀sá ogbè-ọ̀sá ogbè-ọ̀sá
ọ̀sá-ogbè ogbè-ọtúrá èjì-ogbè
èdì-ọtúrá èjì-ogbè èjì-ogbè

This was how programmers used to write computer programs before high level programming languages like Fortran and Lisp were created in 1957 and 1958 respectively.

For programmers, entering these patterns manually was a laborious, tedious and error-prone task. Even for a seasoned programmer, it could get dizzy and nauseating after assembling a couple of these patterns.

However, a competent Ifá priest can commit to memory 256 of these patterns without breaking a sweat and able to recite close to 4,000 Ifá verses by heart!


Effectively, the meaning of the 1s and 0s in the code above is as follows:

  1. Store the number 0 in memory location 0.
  2. Store the number 1 in memory location 1.
  3. Store the value of memory location 1 in memory location 2.
  4. Subtract the number 11 from the value in memory location 2.
  5. If the value in memory location 2 is the number 0 continue with instruction 9.
  6. Add the value of memory location 1 to memory location 0.
  7. Add the number 1 to the value of memory location 1.
  8. Continue with instruction 3.
  9. Output the value of memory location 0.

Using names in place of numbers for memory and instruction locations, we can do the following:
Set the value of “total” to 0.
Set the value of “count” to 1.
[loop]
Set the value of “compare” to the “count” value.
Subtract 11 from the value of “compare” .
If “compare” is zero, continue at [end].
Add “count” to the value of “total”.
Add 1 to the value of “count”.
Continue at [loop].
[end]
Output “total”.

In a modern programming language like Python, we can write the following:

total = 0
count = 1
while count <= 10:
total = total + count
count = count + 1
print total

In 2017, I wrote series of programming tutorials on this wall using the Python programming language. In the coming series of articles, I will translate the posts into Yoruba so stay tuned.

Ire o.

Credit:Ifá – Olobe Yoyon

SOURCE: rymcitigh