Archive for luty, 2008

libraries in the Unix sense

środa, luty 20th, 2008
»

RAM sharing can be accomplished by using position independent code as in Unix, which leads to a complex but flexible architecture, or by using position dependent code as in Windows and OS/2. These systems make sure, by various tricks like pre-mapping the address space and reserving slots for each DLL, that code has a great probability of being shared. Windows DLLs are not shared libraries in the Unix sense. The rest of this article concentrates on aspects common to both variants. An important difference between remote procedure calls and local calls is that remote calls can fail because of unpredictable network problems. Also, callers generally must deal with such failures without knowing whether the remote procedure was actually invoked. Idempotent procedures (those which have no additional effects if called more than once) are easily handled, but enough difficulties remain that code which calls remote procedures is often confined to carefully written low-level subsystem. CORBA (more precisely, GIOP) uses binary formats in order to transmit data. This is more efficient than a textual format (such as XML), since the amount of data to be transmitted is smaller and less processing has to be done to encode and decode data. However, it has been difficult to get such binary messages through firewalls. At one time it was difficult even to force implementations to use a single standard port — they tended to pick multiple random ports instead. Due to such difficulties, some users have made increasing use of web services instead of CORBA. These communicate using XML via port 80, which is normally left open for web browsing via HTTP. Recent CORBA implementations, though, support SSL and can be easily configured to work on a single port. Also, more CORBA-friendly firewalls are now commercially available.

The Second Rule of Program Optimization

wtorek, luty 19th, 2008

Since the program counter is (conceptually) just another set of memory cells, it can be changed by calculations done in the ALU.  Fortunately, it is often the case that the greatest improvements come early in the process. Adding 100 to the program counter would cause the next instruction to be read from a place 100 locations further down the program. Instructions that modify the program counter are often known as “jumps” and allow for loops (instructions that are repeated by the computer) and often conditional instruction execution (both examples of control flow).
Higher-order functions are closely related to first-class functions, in that higher-order functions and first-class functions both allow functions as arguments and results of other functions. The distinction between the two is subtle: “higher-order” describes a mathematical concept of functions that operate on other functions, while “first-class” is a computer science term that describes programming language entities that have no restriction on their use (thus first-class functions can appear anywhere in the program that other first-class entities like numbers can, including as arguments to other functions and as their return values). Higher-order functions enable currying, a technique in which a function is applied to its arguments one at a time, with each application returning a new (higher-order) function that accepts the next argument.

Essendo l’andride carbonica

czwartek, luty 14th, 2008
»

Essendo l’andride carbonica il principale prodotto di scarto della decarbossilazione di amminoacidi e chetoacidi e, in quantità maggiori, del ciclo di Krebs come prodotto ultimo dell’ossidazione a fine energetico del carbonio degli zuccheri, dei grassi e delle proteine, ale sottrazione di elettroni può avvenire ad opera di un altro elemento, che subisce così il complementare processo di riduzione, o per applicazione di una corrente continua di segno positivo, come nell’elettrolisi.