Citations par auteur


La première qualité du style, c’est la clarté. — Poétique

Rien dans notre intelligence qui ne soit passé par nos sens. — Métaphysique

Emil Ernerfeldt

There is also a very worrying problem: Many languages do not support proper arrays. Languages like Java and most scripting languages store all objects on the heap which means an object array is actually an array of pointers. If you are iterating through an array of pointers and following each pointer, you are no better off than if you were using a linked list. Iterating through an array of objects in Java is O(K√N). This can be mitigated by allocating all the objects in order right after each other, in which case the allocator will hopefully put them next to each other in memory. But if you are going to be allocating the objects at different times or shuffling them around, then you are out of luck.

The Myth of RAM

James O Coplien

Unit testing was a staple of the FORTRAN days, when a function was a function and was sometimes worthy of functional testing. Computers computed, and functions and procedures represented units of computation. In those days the dominant design process composed complex external functionality from smaller chunks, which in turn or chestrated yet smaller chunks, and so on down to the level of well-understood primitives.

Each layer supported the layers above it. You actually stood a good chance that you could trace the functionality of the things at the bottom, called functions and procedures, to the requirements that gave rise to them out at the human interface. There was hope that a good designer could understand a given function’s business purpose. And it was possible, at least in well-structured code, to reason about the calling tree. You could mentally simulate code execution in a code review.

Object orientation slowly took the world by storm, and it turned the design world upside-down. First, the design units changed from things-that-computed to small heterogeneous composites called objects that combine several programming artefacts, including functions and data, together inside one wrapper. The object paradigm used classes to wrap several functions together with the specifications of the data global to those functions. The class became a cooki e cutter from which objects were created at run time. In a given computing context, the exact function to be called is determined at run-time and cannot be deduced from the source code as it could in FORTRAN. That made it impossible to reason about run-time behaviour of code by inspection alone. You had to run the program to get the faintest idea of what was going on.

So, testing became in again. And it was unit testing with a vengeance.

Why Most Unit Testing is Waste


La victoire sur soi est la plus grande des victoires. — Le banquet

Richard Hugo

But for almost all writers, the act of discovery is mixed up with the act of perfecting the presentation, because the actual words and the need to select and prune act as triggers and forces on the material in ways that can both require more discovery and cause it whether required or not. And so while each writer may always start with an act of discovery and always end with an act of perfecting, the proportion of each type of act and the order in which they appear will be otherwise as varied as possible. We might be able to say that the statistical behavior of writers shows that more acts of discovery take place near the beginning and more acts of perfecting take place at the end, but this is unimportant information for any particular writer. It can be argued that all writing is creative writing, since if one is writing the way one should, one does not know what will be on the page until it is there. Discovery remains the ideal.

The Triggering Town