Saturday, March 17, 2063

Warning

Tuesday, June 24, 2014

Programming Pearls

Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.
--- Donald Knuth, "Structured Programming with go to Statements" (http://dl.acm.org/citation.cfm?id=356640)


Rule 1.  You can't tell where a program is going to spend its time.  Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you've proven that's where the bottleneck is.

Rule 2.  Measure.  Don't tune for speed until you've measured, and even then don't unless one part of the code overwhelms the rest.

Rule 3.  Fancy algorithms are slow when n is small, and n is usually small.  Fancy algorithms have big constants. Until you know that n is frequently going to be big, don't get fancy.  (Even if n does get big, use Rule 2 first.)   For example, binary trees are always faster than splay trees for workaday problems.

Rule 4.  Fancy algorithms are buggier than simple ones, and they're much harder to implement.  Use simple algorithms as well as simple data structures.

The following data structures are a complete list for almost all practical programs:

array 
linked list 
hash table 
binary tree

Of course, you must also be prepared to collect these into compound data structures.  For instance, a symbol table might be implemented as a hash table containing linked lists of arrays of characters.

Rule 5.  Data dominates.  If you've chosen the right data structures and organized things well, the algorithms will almost always be self­evident.  Data structures, not algorithms, are central to programming.  (See Brooks p. 102.)

Rule 6.  There is no Rule 6.
--- Rob Pike, "Notes on Programming in C" (http://www.lysator.liu.se/c/pikestyle.html)


Representation Is the Essence of Programming - Very often, strategic breakthroughs will come from redoing the representation of data or tables. The programmer at wit's end for lack of space can often do best by disentangling from code, rearing back, and contemplating the data.
--- Frederick P. Brooks, Jr, "The Mythical Man-Month" (http://javatroopers.com/Mythical_Man_Month.html)


Sunday, May 11, 2014

La palma (The Palm Tree)

Abderramán I (Abd al-Rahman I) (731-788)

Tú también eres ¡oh palma!
en este suelo extranjera.
Llora, pues; mas siendo muda,
¿cómo has de llorar mis penas?
Tú no sientes, cual yo siento,
el martirio de la ausencia.
Si tú pudieras sentir,
amargo llanto vertieras.
A tus hermanas de Oriente
mandarías tristes quejas,
a las palmas que el Éufrates
con sus claras ondas riega.
Pero tú olvidas la patria,
a par que me la recuerdas;
la patria de donde Abbas
y el hado adverso me alejan.



A palm tree stands in the middle of Rusafa
Born in the West, far from the land of palms
I said to it, “How like me you are, far away and in exile!
In long separation from family and friends
You have sprung from soil in which you are a stranger
And I, like you, am far away from home”


In the midst of my garden
Grows a palm-tree;
Born in the West,
Away from the country of palm-trees.
 
I cried: You are like me,
For you resemble me
In wandering and peregrination,
And the long separation from kith and kin.
 
You also
Grew up on a foreign soil;
Like me,
You are far from the country of your birth.
 
May the fertilizing clouds of morning
Water you in exile,
May the beneficent rains besought by the poor
Never forsake you.


Thursday, May 1, 2014

Sennacherib

Ozymandias, king of kings, meet Sennacherib, king of the world.

About 700 years before the birth of Christ, the restless Assyrian listed his deeds on palace walls and artifacts.

"I led vast armies," Sennacherib writes. "I made the desert bloom and built splendid palaces in Nineveh. Best of all, when the king of Judea misbehaved, I stuck him in a birdcage for a while."

Sunday, April 13, 2014

Homenaje a Claudio Ptolomeo

Octavio Paz

Soy hombre: duro poco
y es enorme la noche.
Pero miro hacia arriba:
las estrellas escriben.
Sin entender comprendo:
También soy escritura.
A esta misma hora
alguien me deletrea.



Monday, March 24, 2014

El destino

Jorge Luis Borges

En 1869 fue nombrado sargento de la policía rural. Había corregido el pasado; en aquel tiempo debió de considerarse feliz, aunque profundamente no lo era. (Lo esperaba, secreta en el porvenir, una lúcida noche fundamental: la noche en que por fin vio su propia cara, la noche que por fin oyó su nombre. Bien entendida, esa noche agota su historia; mejor dicho, un instante de esa noche, un acto de esa noche, porque los actos son nuestro símbolo.) Cualquier destino, por largo y complicado que sea, consta en realidad de un solo momento: el momento en que el hombre sabe para siempre quién es.
--- Biografía de Tadeo Isidoro Cruz.


¿Quién es el mar, quién soy? Lo sabré el día
Ulterior que sucede a la agonía.
--- El mar



Llego a mi centro, 
a mi álgebra y mi clave, 
a mi espejo. 
Pronto sabré quién soy.
--- Elogio de la sombra


Al fin me encuentro 
con mi destino sudamericano. 
A esta ruinosa tarde me llevaba 
el laberinto múltiple de pasos 
que mis días tejieron desde un día 
de la niñez. Al fin he descubierto 
la recóndita clave de mis años, 
la suerte de Francisco de Laprida, 
la letra que faltaba, la perfecta 
forma que supo Dios desde el principio. 
En el espejo de esta noche alcanzo 
mi insospechado rostro eterno. El círculo 
se va a cerrar. Yo aguardo que así sea.
--- Poema conjetural