August 22, 2004 7:19 PM
First the important news: Corrected a critical bug in
Footnote fixes. The version of the fix I was using
works perfectly. Tried using the one on the page and found it wasn't
working (due to lack of a (goto-char 0)
) for more than one footnote
<embarrassed grin>. My email box has been swallowing all my
mails (aliases are evil). So, if I haven't replied to anyone, then
it's because I haven't gotten the email in the first place.
Added an interactive function that counts the number of words in an EmacsWiki buffer. Read emacs-wiki-count-words.el.
Boy, the exams were something. Consider this question for our System Programming paper:
Write an algorithm for a one pass microprocessor and explain the data structures used by the microprocessor.
Yeah, you read it right, a one pass microprocessor1. After the exam commenced, some of the teachers sheepishly announced to there being some minor spelling mistakes in the question paper.
Another interesting question was about resolution of deadlocks2. The Ostrich algorithm3, employing the famous stick your head in the sand and pretend there is no problem at all solution is of course, the easiest of all deadlock resolution algorithms to implement.
Solutions to classical interprocess communication problems like the
Dining Philosopher's problem, the Readers and Writers problem and the
Sleeping Barber problem are hard to implement in DOS where the only
way to simulate multitasking is via TSRs4. But it isn't
impossible. All you have to do is write a scheduler that mimics a
process scheduler. This can be done using setjmp
and longjmp
calls
hooked into functions that are going to act as your individual
processes. My implementation, designed before I was familiar with any
of the Unix operating systems, is too Turbo C++ and x86 dependent
using its asm
directive to embed assembly code which saves and
restores critical register values before the setjmp
and longjmp
calls.
Some of the textbooks reminded me of the stuff that I had wanted to make a note of and forgot; like the 91 function attributed to John McCarthy:
(defun func-91 (x) (if (> x 100) (setq x (- x 10)) (func-91 (func-91 (+ x 11)))))
Another is about Artificial Intelligence (AI). An interesting trend in AI technologies is that once they are developed, they become standard tools. Therefore, AI has also gained the expansion, "Almost Implemented." Rodney Brooks describes this as the AI effect.
[1] The correct word is macroprocessor.
[2] A set of processes is deadlocked if each process in the set is
waiting for an event that only another process in the set can
cause.
[3] Implemented by Windows and certain UNIX versions.
[4] Terminate but Stay Resident programs.