Comparison of programming paradigms

This article attempts to set out the various similarities and differences between the various programming paradigms as a summary in both graphical and tabular format with links to the separate discussions concerning these similarities and differences in extant Wikipedia articles.
Main paradigm approaches.
There are two main approaches to programming:
The following are widely considered the main programming paradigms, as seen when measuring programming language popularity:
The following are common types of programming that can be implemented using different paradigms:
The subroutines that implement OOP methods may be ultimately coded in an imperative, functional, or procedural style that may, or may not, directly alter state on behalf of the invoking program. There is some overlap between paradigms, inevitably, but the main features or identifiable differences are summarized in this table:
Differences in terminology.
Despite multiple (types of) programming paradigms existing in parallel (with sometimes apparently conflicting definitions), many of the underlying "fundamental components" remain more or less the same (constants, variables, datafields, subroutines, calls etc.) and must somehow thus inevitably be incorporated into each separate paradigm with equally similar attributes or functions. The table above is not intended as a guide to precise similarities, but more of an index of where to look for more information, based on the different naming of these entities, within each paradigm. Further complicating matters are non-standardized implementations of each paradigm, in many programming languages, especially languages supporting multiple paradigms, each with its own jargon.
Language support.
Syntactic sugar is the "sweetening" of program functionality by introducing language features that facilitate a given usage, even if the end result could be achieved without them. One example of syntactic sugar may arguably be the classes used in object-oriented programming languages. The imperative language C can support object-oriented programming via its facilities of function pointers, type casting, and structures. However, languages such as C++ aim to make object-oriented programming more convenient by introducing syntax specific to this coding style. Moreover, the specialized syntax works to emphasize the object-oriented approach. Similarly, functions and looping syntax in C (and other procedural and structured programming languages) could be considered syntactic sugar. Assembly language can support procedural or structured programming via its facilities for modifying register values and branching execution depending on program state. However, languages such as C introduced syntax specific to these coding styles to make procedural and structured programming more convenient. Features of the language C# (C Sharp), such as properties and interfaces, similarly enable no new functions, but are designed to make good programming practices more prominent and natural.
Some programmers feel that these features are unimportant or even frivolous. For example, Alan Perlis once quipped, in a reference to bracket-delimited languages, that "syntactic sugar causes cancer of the semicolon" (see Epigrams on Programming).
An extension of this is the syntactic saccharin, or gratuitous syntax that does not make programming easier.
Performance comparison.
In total instruction path length only, a program coded in an imperative style, using no subroutines, would have the lowest count. However, the binary size of such a program may be larger than the same program coded using subroutines (as in functional and procedural programming) and would reference more "non-local physical" instructions that may increase cache misses and instruction fetch overhead in modern processors.
The paradigms that use subroutines extensively (including functional, procedural, and object-oriented) and do not also use significant inline expansion (inlining, via compiler optimizations) will, consequently, use a larger fraction of total resources on the subroutine linkages. Object-oriented programs that do not deliberately alter program state directly, instead using mutator methods (or "setters") to encapsulate these state changes, will, as a direct consequence, have more overhead. This is because message passing is essentially a subroutine call, but with three added overheads: dynamic memory allocation, parameter copying, and dynamic dispatch. Obtaining memory from the heap and copying parameters for message passing may involve significant resources that far exceed those needed for the state change. Accessors (or "getters") that merely return the values of private member variables also depend on similar message passing subroutines, instead of using a more direct assignment (or comparison), adding to total path length.
Managed code.
For programs executing in a "managed code" environment, such as the .NET Framework, many issues affect performance that are significantly affected by the programming language paradigm and various language features used.
Pseudocode examples comparing various paradigms.
A pseudocode comparison of imperative, procedural, and object oriented approaches used to calculate the area of a circle (πr²), assuming no subroutine inlining, no macro preprocessors, register arithmetic, and weighting each instruction 'step' as only 1 instruction – as a crude measure of instruction path length – is presented below. The instruction step that is conceptually performing the state change is highlighted in bold typeface in each case. The arithmetic operations used to compute the area of the circle are the same in all three paradigms, with the difference being that the procedural and object-oriented paradigms wrap those operations in a subroutine call that makes the computation general and reusable. The same effect could be achieved in a purely imperative program using a macro preprocessor at only the cost of increased program size (only at each macro invocation site) without a corresponding pro rata runtime cost (proportional to "n" invocations – that may be situated within an inner loop for instance). Conversely, subroutine inlining by a compiler could reduce procedural programs to something similar in size to the purely imperative code. However, for object-oriented programs, even with inlining, messages still must be built (from copies of the arguments) for processing by the object-oriented methods. The overhead of calls, virtual or otherwise, is not dominated by the control flow alteration – but by the surrounding calling convention costs, like prologue and epilogue code, stack setup and argument passing (see here for more realistic instruction path length, stack and other costs associated with calls on an x86 platform). See also here for a slide presentation by Eric S. Roberts ("The Allocation of Memory to Variables", chapter 7) – illustrating the use of stack and heap memory use when summing three rational numbers in the Java object-oriented language.
The advantages of procedural abstraction and object-oriented-style polymorphism are poorly illustrated by a small example like the one above. This example is designed mainly to illustrate some intrinsic performance differences, not abstraction or code re-use.
Subroutine, method call overhead.
The presence of a (called) subroutine in a program contributes nothing extra to the functionality of the program regardless of paradigm, but may contribute greatly to the structuring and generality of the program, making it much easier to write, modify, and extend. The extent to which different paradigms use subroutines (and their consequent memory requirements) influences the overall performance of the complete algorithm, although as Guy Steele pointed out in a 1977 paper, a well-designed programming language implementation "can" have very low overheads for procedural abstraction (but laments, in most implementations, that they seldom achieve this in practice - being "rather thoughtless or careless in this regard"). In the same paper, Steele also makes a considered case for automata-based programming (using procedure calls with tail recursion) and concludes that "we should have a healthy respect for procedure calls" (because they are powerful) but suggested "use them sparingly"
In the frequency of subroutine calls:
Allocation of dynamic memory for message and object storage.
Uniquely, the object-oriented paradigm involves dynamic memory allocation from "heap storage" for both object creation and message passing. A 1994 benchmark - "Memory Allocation Costs in Large C and C++ Programs" conducted by Digital Equipment Corporation on a variety of software, using an instruction-level profiling tool, measured how many instructions were required per dynamic storage allocation. The results showed that the lowest absolute number of instructions executed averaged around 50 but others reached as high as 611. See also "Heap:Pleasures and pains" by Murali R. Krishnan that states "Heap implementations tend to stay general for all platforms, and hence have heavy overhead". The 1996 IBM paper "Scalability of Dynamic Storage Allocation Algorithms" by Arun Iyengar of IBM demonstrates various dynamic storage algorithms and their respective instruction counts. Even the recommended MFLF I algorithm (H.S. Stone, RC 9674) shows instruction counts in a range between 200 and 400. The above pseudocode example does not include a realistic estimate of this memory allocation pathlength or the memory prefix overheads involved and the subsequent associated garbage collection overheads. Suggesting strongly that heap allocation is a nontrivial task, one open-source software microallocator, by game developer John W. Ratcliff, consists of nearly 1,000 lines of code.
Dynamically dispatched message calls v. direct procedure call overheads.
In their Abstract "Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis", Jeffrey Dean, David Grove, and Craig Chambers of the Department of Computer Science and Engineering, at the University of Washington, claim that "Heavy use of inheritance and dynamically-bound messages is likely to make code more extensible and reusable, but it also imposes a significant performance overhead, relative to an equivalent but non-extensible program written in a non-object-oriented manner. In some domains, such as structured graphics packages, the performance cost of the extra flexibility provided by using a heavily object-oriented style is acceptable. However, in other domains, such as basic data structure libraries, numerical computing packages, rendering libraries, and trace-driven simulation frameworks, the cost of message passing can be too great, forcing the programmer to avoid object-oriented programming in the “hot spots” of their application."
Serializing objects.
Serialization imposes large overheads when passing objects from one system to another, especially when the transfer is in human-readable formats such as Extensible Markup Language (XML) and JavaScript Object Notation (JSON). This contrasts with compact binary formats for non-object-oriented data. Both encoding and decoding of the objects data value and its attributes are involved in the serializing process, which also includes awareness of complex issues such as inheriting, encapsulating, and data hiding.
Parallel computing.
Carnegie-Mellon University Professor Robert Harper in March 2011 wrote: "This semester Dan Licata and I are co-teaching a new course on functional programming for first-year prospective CS majors... Object-oriented programming is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum. A proposed new course on object-oriented design methodology will be offered at the sophomore level for those students who wish to study this topic."


Ralph Abraham (mathematician)

Ralph Herman Abraham (born July 4, 1936) is an American mathematician. He has been a member of the faculty of the University of California, Santa Cruz (where he is currently professor emeritus of mathematics) since 1968.
Life and work.
Abraham earned his B.S.E. (1956), M.S. (1958) and Ph.D. (1960) from the University of Michigan. Prior to joining Santa Cruz, he held positions at the University of California, Berkeley (research lecturer in mathematics; 1960-1962), Columbia University (postdoctoral fellow and assistant professor of mathematics; 1962-1964) and Princeton University (assistant professor of mathematics; 1964-1968). He has also held visiting positions in Amsterdam, Paris, Warwick, Barcelona, Basel, and Florence.
He founded the Visual Math Institute at Santa Cruz in 1975; at that time, it was called the "Visual Mathematics Project". He is editor of "World Futures" and for the "International Journal of Bifurcations and Chaos". Abraham is a member of cultural historian William Irwin Thompson's Lindisfarne Association.
Abraham has been involved in the development of dynamical systems theory since the 1960s and 1970s. He has been a consultant on chaos theory and its applications in numerous fields, such as medical physiology, ecology, mathematical economics, psychotherapy, etc.
Another interest of Abraham's concerns alternative ways of expressing mathematics, for example visually or aurally. He has staged performances in which mathematics, visual arts and music are combined into one presentation.
Abraham developed an interest in "Hip" activities in Santa Cruz in the 1960s and has a website gathering information on the topic. He credits his use of the psychedelic drug DMT for "swerv[ing his] career toward a search for the connections between mathematics and the experience of the Logos".


Curse of Turan

The Curse of Turan () is a belief that Hungarians have been under the influence of a malicious spell for many centuries. The "curse" manifests itself as inner strife, pessimism, misfortune and several historic catastrophes.
Origin.
There are different theories of origin. It is important to note, that the name for the imagined "turanian people" came into existence and spread in Hungary only after the second half of the 19th century. The first written mention of the phrase: "Turáni átok" was found in the publications of Ferenc Herczeg.
Saint Stephen and Christianity.
Perhaps the most popular origin theory is that the curse resulted from Hungary's conversion to Christianity in the year AD 1000 under King Stephen. The vanquished adherents of the old Hungarian religion cast a curse upon Christian Hungary to last either forever or perhaps for 1,000 years.
1848 revolution.
Another theory is that the curse was created as legend during the 1850s in the aftermath of the failed Hungarian Revolution of 1848, and reflected the overwhelming pessimism of this repressive decade.
National catastrophes.
Some tragic events of Hungarian history are traditionally seen as national catastrophes, manifestations of the Curse of Turan:
Personal troubles.
The curse has also been blamed for causing many troubles on a personal level. Among them are Hungary's high rate of suicide. Currently, Hungary is 25th in the world in suicide rate. In the mid 1980s, Hungary led this indicator. Hungarians have the third shortest life expectancy in Europe outside the countries of the former USSR.
Etymology.
Turan (Hungarian: "Turán") derives from the Persian توران and refers to the steppes of Central Asia, land of the Tur. This root word is likely derived from the name of an ancient king, and may also be the root of "Turk". Traditionally Magyars were considered Turkic people until the end of the 18th century.
In the 19th century, when the Curse of Turan was a very popular concept, artists searched for Asian characteristics in Hungarian folk art and called them "Turanic motifs".
Literature.
The curse became a favourite theme in Hungarian literature. A poem written in 1832 by the great 19th century Romantic poet, Mihály Vörösmarty, explains the origin of the curse as the bloody wars fought for the territory of Hungary in ancient times:
The Curse
"“Men!” said the Pannon god of bane in olden times
"
"“I bestow to you a happy land; you should fight for, if you want her.”
"
"So great, brave nations fought dauntlessly for her,
"
"And the Magyar won a bloody victory at last.
"
"Oh, but contention remained on the souls of the peoples: the land
"
"Can never become happy under this curse.
"
Az átok
""Férfiak!" így szólott Pannon vészistene hajdan,
"
""Boldog földet adok, víjatok érte, ha kell."
"
"S víttanak elszántan nagy bátor nemzetek érte,
"
"S véresen a diadalt végre kivítta magyar.
"
"Ah de viszály maradott a népek lelkein: a föld
"
"Boldoggá nem tud lenni ez átok alatt.
"


History of shogi

This article details the history of shogi. Shogi is a two-player strategy board game in the same family as Western chess, chaturanga, and Chinese xiangqi, and is the most popular of a family of chess variants native to Japan.
Arrival in Japan.
It is not clear when the ancestral chess-type game that later developed into shogi was brought to Japan. This is in contrast to the game of go, which was almost certainly brought to Japan in or around the Nara period, since a go board is stored in the treasury of . There are tales that relate that it was invented by Yuwen Yong of Northern Zhou, and that brought it back after visiting the country of Tang, but both these tales are likely to have been invented at the start of the Edo period by those keen to make a name for themselves as authorities on shogi.
There are several theories about when shogi spread to Japan, but the earliest plausible date is around the 6th century. It is thought that the pieces used in the shogi of the time were not the current five-sided pieces, but three-dimensional figures, as were used in chaturanga. This parallels the changes in chess pieces, which are more representational and less abstract than those made earlier. However, a large problem with this theory is that as pieces in this form have never been found, let alone stored in the treasury of Shōsōin, there is little physical evidence supporting it.
Another theory gives a later date, stating that shogi was brought to Japan after the start of the Nara period. However, serious doubts about this theory remain as these games are different from shogi – for example, in that pieces are placed on the intersections of lines. The games of makruk from Thailand and Cambodia and sittuyin from Myanmar have an elephant which moves in the same way as the silver general. Sittuyin also has the practice of dropping pieces. From the Song Dynasty through the Ming Dynasty, China sent great trade convoys through the southern islands and all around the Indian Ocean and also traded with Japan, so elements of South Asian chess could have reached Japan.
See also the history of chess.
Shogi in the Heian period.
One of the oldest documents indicating the existence of shogi is , written by (972 - 1027), a seven-volume work which contains a description of how to write the characters used for shogi pieces, but the most generally accepted opinion is that this section was added by a writer from a later generation. (1058–1064), written by Fujiwara Akihira also has passages relating to shogi, and is regarded as the earliest document on the subject.
The oldest archaeological evidence is a group of 16 shogi pieces excavated from the grounds of Kōfuku-ji in Nara Prefecture, and as a wooden writing plaque written on in the sixth year of Tenki (1058) was found at the same time, the pieces are thought to be of the same period. The pieces of the time appear to have been simple ones made by cutting a writing plaque and writing directly on the surface, but they have the same five-sided shape as modern pieces. As "Shin Saru Gakuki", mentioned above, is of the same period, this find is backed up by documentary evidence.
The dictionary of common folk culture, , which it is estimated was created between 1210 and 1221, a collection based on the two works and , thought to have been written by , describes two forms of shogi, large (dai) shogi and small (shō) shogi. So as not to confuse these with later types of shogi, in modern times these are called Heian shogi (or Heian small shogi) and Heian dai shogi. Heian shogi is the version on which modern shogi is based, but it is written that one wins if one's opponent is reduced to a single king, apparently indicating that at the time there was no concept of pieces in the hand.
The pieces used in these variants of shogi consist of those used in Heian shogi: the king, gold general, silver general, knight, lance, and pawn, and those used only in Heian great shogi: the copper general, iron general, side mover, tiger, flying dragon, free chariot and go between. According to Kōji Shimizu, chief researcher at the Archaeological Institute of Kashihara, Nara Prefecture, the names of the Heian shogi pieces keep those of chaturanga (general, elephant, horse, chariot and soldier), and add to them the five treasures of Buddhism (jewel, gold, silver, katsura tree, and incense). There is also a theory by Yoshinori Kimura that while chaturanga was from the start a game simulating war, and thus pieces were discarded once captured, Heian shogi involved pieces kept in the hand.
Development of medieval shogi.
Around the 13th century, the game of dai shogi, created by increasing the number of pieces in Heian shogi, was played, and the game of sho shogi, which adds the rook, bishop and drunken elephant from dai shogi to Heian shogi. Around the 14th century, as the rules of dai shogi had come to be considered too complicated, they were simplified, creating the game of chu shogi. Nevertheless, dai shogi was remembered, as known from a by Kobayashi Kiyochika of two players of dai shogi. Chu shogi, like its parent dai shogi, contains many distinct pieces, such as the queen (identical with Western chess) and the lion (which moves like a king, but twice per turn, potentially being able to capture twice, among other idiosyncrasies). Chu shogi rivalled sho shogi in popularity until the introduction of drops in the latter, upon which standard shogi became ascendant, although chu shogi was still commonly played until about World War II, especially in Kyoto.
It is thought that the rules of modern shogi were fixed in the 16th century, when the drunken elephant was removed from the set of pieces. According to , a set of shogi rules published in 1696, during the Genroku period, it states that the drunken elephant piece was removed from the game of sho shogi by Emperor Go-Nara during the Tenmon period (1532–1555), but whether or not this is true is not clear.
As many as 174 shogi pieces have been excavated from the Ichijōdani Asakura Family Historic Ruins, which are thought to be from the latter half of the 16th century. Most of these pieces are pawns, but there is also one drunken elephant, leading to the hypothesis that in this period variations of shogi with and without the drunken elephant existed side by side.
One point of note in the history of this family of games is that it was during this period that the unique rule in Japanese shogi was developed whereby captured pieces (pieces in the hand) could be returned to the board. It is thought that the rule of pieces in the hand was proposed around the 16th century, but there is also a theory that this rule existed from the time of Heian sho shogi.
In the Edo period, more shogi variants with yet more pieces were proposed: tenjiku shogi, dai dai shogi, maka dai dai shogi, tai shogi (also called "dai shogi", but termed "tai shogi" to avoid confusing the two) and taikyoku shogi. However, it is thought that these forms of shogi were only played to a very limited extent.
Modern shogi.
Modern shogi (hon shogi), like go, was officially approved by the Tokugawa shogunate. In 1612, the shogunate passed a law giving endowments to shogi players including () and (who was given the name after his death). These iemotos (families upholding the tradition of go or shogi) gave themselves the title of (literally, places of go) and , places of shogi. The first O-hashi Shu-kei received fifty koku of rice and five men. In the Kan'ei period (around 1630), the tournament, where games were played before a shōgun, was held. During the time of the eighth shōgun, Tokugawa Yoshimune, a system was established where the castle shogi tournament was held once a year on the 17th day on Kannazuki, and today the corresponding day in the modern calendar, November 17, has been designated Shogi Day.
The , who were the iemotos of shogi, were paid endowments. Over the reign of the shogunate, the title of meijin became a hereditary title of the Ōhashi family and one of its branches, and the Itō family. Today the title of meijin is still used, for the winner of the Meijin-sen competition. It became a tradition for shogi players inheriting the title of meijin to present a collection of shogi puzzles to the shogunate government.
A number of genius shogi players emerged who were not hereditary meijin. was born in the mid-Edo period, and showed promise as a potential meijin, but died young and never inherited the title (which was bestowed on him posthumously). Kanju was a skilled composer of shogi puzzles, and even today his collection of puzzles is well known as one of the greatest works of its kind. In the late Edo period, came to prominence. As he was one of the "Arino group" of amateur shogi players, the rank of meijin was out of his reach, but he was feared for his skill, being said to have "the ability of a 13-dan player", and was later termed a (literally, wise man or master of shogi). More than a few count Sōho as one of the greatest shogi players in history.
Newspaper shogi and the formation of shogi associations.
After the fall of the Tokugawa shogunate, the three shogi families were no longer paid endowments, and the iemoto system in shogi lost its power. The lines of the three families ended, and the rank of meijin came to be bestowed by recommendation. The popularity of amateur shogi continued in the Meiji period, with shogi tournaments and events held all over Japan, and , played wherever people gathered, in bath houses or barber's shops. However, it is thought that, with the exception of a handful of high-ranking players at the end of the 19th century, it was impossible to make a living as a professional shogi player during this period.
From around 1899, newspapers began to publish records of shogi matches, and high-ranking players formed alliances with the aim of having their games published. In 1909, the was formed, and in 1924, the was formed, with , the thirteenth-generation Meijin, at its head. This was an early incarnation of the modern , founded in 1947.
The "meijin" system and title matches.
In 1935, Kinjiro Sekine stepped down from the rank of meijin, which then came to be conferred based on ability in the short term, rather than recommendation as before. The first (known officially at the time as the ) was held over two years, with Yoshio Kimura (木村義雄) becoming the first Meijin in 1937. This was the start of the (see titleholder system).
Later, in 1950, the (9-dan title match) (renamed the (10-dan title match) in 1962) and the (King title match) were founded.
The tournament was started in 1953 and became a title match in 1983. In 1960 the was founded, and later the in 1962, and the in 1974. The Jūdan-sen was changed to become the in 1988, completing the modern line-up of seven title matches.
The ages of Ōyama and Habu.
After the Second World War, SCAP (occupational government mainly led by US) tried to eliminate all "feudal" factors from Japanese society and shogi was included in the possible list of items to be banned along with Bushido (philosophy of samurai) and other things. The reason for banning shogi for SCAP was its exceptional character as a board game seen in the usage of captured pieces. SCAP insisted that this could lead to the idea of prisoner abuse. But Kozo Masuda, then one of the top professional shogi players, when summoned to the SCAP headquarters for an investigation, criticized such understanding of shogi and insisted that it is not shogi but western chess that potentially contains the idea of prisoner abuse because it just kills the pieces of the opponent while shogi is rather democratic for giving prisoners the chance to get back into the game. Masuda also said that chess contradicts the ideal of gender equality in western society because the king shields itself behind the queen and runs away. Masuda's assertion is said to have eventually led to the exemption of shogi from the list of items to be banned.
It was considered to be nearly impossible to hold all the titles at once, but in 1957, Kōzō Masuda took all three of the titles which existed at the time (Meijin, Kudan and Ōshō), to become a . However, another player later took these three titles from Masuda, and went on in 1959 to take the newly founded titles of Ōi and Kisei, to become a - . Ōyama went on to defend these titles for six years, a golden age which became known as the "Ōyama age". Ōyama reached a total of 80 title holding periods, an unprecedented achievement at the time, when there were fewer titles than at present.
After the number of titles increased to seven in 1983, it was believed to be impossible to hold all of them at once, but in 1996, Yoshiharu Habu became the first , beginning an age known as the "Habu age". Since then, there has never been a time when he was without a title, and on July 5, 2012, Habu surpassed Ōyama's record, achieving a total of 81 title holding periods.
The birth of the women's game.
While there are both men and women among the ranks of professional shogi players, no woman player has yet won through the pro qualifier leagues (新進棋士奨励会 "shinshin kishi shōreikai)" to become an officially certified professional player (棋士 "kishi)." This served to slow the spread of the game among women, and to overcome the problem, the system of professional woman shogi players (女流棋士 "joryū kishi)" was introduced.
In 1966, Akiko Takojima (蛸島彰子) left the pro-qualifier leagues at the 1-dan level and became the first professional woman shogi player. However, at the time women's contests were not held, and so her only work as a professional was giving shogi lessons. In 1974, the first women's contest, the Women's Meijin Title Match (女流名人位戦 "joryū meijin-sen)," was held, which Takojima won, becoming the first woman "meijin." 1974 is often considered to be the year in which women's shogi began, and indeed the Ladies Shogi Professional Organization (女流棋士会 "joryū kishi kai)" celebrates "anniversary parties" counting from this year.
As of 2014 there are more than 50 professional women players, and as well as the Universal Cup Women's Meijin Title Match　(ユニバーサル杯女流名人戦), there is also the Mynabi Women's Open (マイナビ女子オープン),　the Ricoh Cup Women's Ōza Title Match (リコー杯女流王座戦), the Women's Ōi Title Match (女流王位戦), the Kirishima Shuzo Cup Women's Ōshō Title Match (女流王将戦), the Ōyama Meijin Cup Kurashiki–Tōka Title Match (大山名人杯倉敷藤花戦), a total of six competitions. In addition, some standard professional tournaments has a women's section, in which the top women in each tournament compete.
Trends in the world of amateur shogi.
Shogi is also well known among the general public (amateurs). Two different rating systems based dan and kyu ranks are used, one for amateurs and one for professionals, with the highest ranks at amateur level, 4-dan or 5-dan, being equivalent to 6-kyu at the professional level. In the past, there were games between amateurs and professionals, but these were generally special match-ups organised by newspapers or magazines, or instructional games at events or shogi courses.
However, sometimes there are amateurs with an ability to rival professionals, some of whom earn a living as , gamblers playing for stakes. made enough to live on as a shinken-shi, before taking the entrance exam and turning professional in 1944. He later challenged Yasuharu Ōyama in the Meijin-sen, but did not manage to take the title of meijin from him. was another shinken-shi, who beat one professional after another in special matches, and won the title of amateur meijin twice in a row, putting him ahead of the crowd in the amateur world. Later, due in part to the instigation of Ōyama, the then chairman of the , a vote was held on whether to accept Koike among their ranks, but there were concerns about his behaviour, and the vote went against him. Although he never became a professional, after his death, television programmes and books telling his story were produced, and he now has more fans all over Japan than when he was alive.
In recent times, the gap in ability between strong amateurs and professionals continues to diminish, and there are even official professional tournaments in which those with the best results in can take part. Some amateurs, including , , , , , and have been called "pro killers", and recently two young players, and have been making waves in the amateur world.
The number of players who have left the pro qualifier leagues and gone on to have success as amateurs has increased. retired from the qualifier leagues due to age restrictions, but went on to compete as an amateur in professional matches. His performance in the was particularly notable, and at one point he won over 70% of his matches with professionals. Segawa submitted a petition requesting entry to the professional ranks to the Japan Shogi Association, and was granted exceptional permission to take the entrance exam. He is the first person to become a professional after retiring from the pro qualifier leagues.
In 2006, the Shogi Association officially admitted the entrance of amateurs and women professionals to the ranks of , and announced details of an entrance exam for the 4-dan level (entering the level of the ) and the . Unless exceptional permission is granted, applicant normally need to have experience in the pro qualifier leagues, and cannot become professionals if they have retired from the leagues, but given the reforms taking place in the Association, it would be by no means unlikely if another Shōji Segawa were to appear.
The spread of shogi outside Japan.
The game of shogi has developed independently inside Japan, and its pieces are differentiated by Japanese characters written on them, factors which have impeded the spread of the game outside Japan. By way of comparison, the game of go has spread internationally for a combination of many reasons, including the facts that it originated in China, its rules are (more or less) unified at an international level, it is played using black and white stones, and that it does not resemble games unique to another country (as is the case with shogi, which is one of many games resembling chess).
An early, detailed description of the game in English appears in the Narrative of the Perry Expedition, in a report by Dr. Daniel S. Green who chanced upon the game a rainy night in Hakodate, and learned to play the game. The first shogi game played in the United States was in June 1860 in Philadelphia during the first visit to the country by a Japanese diplomatic delegation.
However, in the 1990s, efforts to make shogi popular outside Japan began in earnest. It has grown to be particularly popular in the People's Republic of China, and especially Shanghai. The January 2006 edition of states that Shanghai has a shogi population of 120,000 people. The game has been relatively slow to spread to countries where Chinese characters are not in common use, although attempts have been made to aid adoption by replacing the names of pieces with symbols indicating how they move.
Changes in the shogi population.
According to the by the , the "shogi population" (the number of people of 15 years or over who play at least one game of shogi a year) fell from 16.8 million in 1985 to 9 million in 2004, and 8.4 million in 2006, and is continuing to fall gradually.
During the above period, in which the shogi population fell by a half, shogi has often appeared in the general media, for example Yoshiharu Habu's achievement of taking all seven titles in one year (1996), the airing of the NHK TV novel (1996), the reporting of the affair between and , Shōji Segawa taking the professional entrance exam (2005), and the debate about the management of the meijin-sen being passed to a different body (2006). However, none of these led to the birth of a "shogi boom", and in some cases unfavourable media reports accelerated the decline in the number of shogi fans.
The number of 10- to 19-year-olds playing go is said in the "Leisure White Paper" above to have increased due to the story "Hikaru no Go", serialised in Weekly Shōnen Jump. (The overall go population is decreasing.) However, the 2006 Leisure White Paper reports that go is most popular among those in their 60s, while shogi is most popular between those aged 10 to 19.
From around 1996, internet shogi programs such as and , which allow users to play games over the internet without the need for an actual shogi set, grew to be widely used. At present, many games are played using services such as , and Yahoo! Japan Games.
Computer shogi.
Computers have steadily improved in playing shogi since the 1980s. Champion Habu estimated the strength of the 2006 world computer shogi champion Bonanza at the level of 2 dan shoreikai. Tools to help shogi programmers are Shogidokoro, annual computer tournaments and the Floodgate shogi server. The Japan Shogi Association restricts professionals from playing computers.


Random-access stored-program machine

In theoretical computer science the random-access stored-program (RASP) machine model is an abstract machine used for the purposes of algorithm development and algorithm complexity theory.
The RASP is a random-access machine (RAM) model that, unlike the RAM, has its program in its "registers" together with its input. The registers are unbounded (infinite in capacity); whether the number of registers is finite is model-specific. Thus the RASP is to the RAM as the Universal Turing machine is to the Turing machine. The RASP is an example of the von Neumann architecture whereas the RAM is an example of the Harvard architecture.
The RASP is closest of all the abstract models to the common notion of computer. But unlike actual computers the RASP model usually has a very simple instruction set, greatly reduced from those of CISC and even RISC processors to the simplest arithmetic, register-to-register "moves", and "test/jump" instructions. Some models have a few extra registers such as an accumulator.
Together with the register machine, the RAM, and the pointer machine the RASP makes up the four common sequential machine models, called this to distinguish them from the "parallel" models (e.g. parallel random-access machine) [cf. van Emde Boas (1990)].
Informal definition: random-access stored-program model (RASP).
Nutshell description of a RASP:
The reader will remember that the UTM is a Turing machine with a "universal" finite-state table of instructions that can interpret any well-formed "program" written on the tape as a string of Turing 5-tuples, hence its universality. While the classical UTM model expects to find Turing 5-tuples on its tape, any program-set imaginable can be put there given that the Turing machine expects to find them—given that its finite-state table can interpret them and convert them to the desired action. Along with the program, printed on the tape will be the input data/parameters/numbers (usually to the program's right), and eventually the output data/numbers (usually to the right of both, or intermingled with the input, or replacing it). The "user" must position the Turing machine's head over the first instruction, and the input must be placed in a specified place and format appropriate to both the program-on-tape and the finite-state machine's instruction-table.
The RASP mimics this construction: it places the "program" and "data" in the holes (registers). But unlike the UTM the RASP proceeds to "fetch" its instructions in a sequential manner, unless the conditional test sends it elsewhere.
A point of confusion: two sets of instructions: Unlike the UTM, the RASP model has two sets of instructions – the state machine table of instructions (the "interpreter") and the "program" in the holes. The two sets do not have to be drawn from the same set.
An example of a RAM working as a RASP.
The following example of a program will move the contents of register (hole) #18 to register (hole) #19, erasing contents of #18 in the process.
 5: 03 18 15 JZ 18,15 ; if [18] is zero, jump to 15 to end the program
 02 18 DEC 18 ; Decrement [18]
 01 19 INC 19 ; Increment [19]
 03 15 05 JZ 15, 5 ; If [15] is zero, jump to 5 to repeat the loop (use Halt to simulate unconditional jump)
 15: 00 H ; Halt
 18: n ; Source value to copy
 19: ; Destination for copy
The "program"-instructions available in this RASP machine will be a simple set to keep the example short:
To ease the example we will equip the "state machine" of the RAM-as-RASP with the primitive instructions drawn from the same set, but augmented with two indirect copy instructions:
As the RASP machine's state machine interprets the program in the registers, what exactly will the state machine be doing? The column containing the exclamation mark ! will list in time sequence the state machine's actions as it "interprets" converts to action the program:
Tradition divides the state-machine's actions into two major "phases" called "Fetch" and "Execute". We will observe below that there are "sub-phases" within these two major phases. There is no agreed-to convention; every model will require its own precise description.
Fetch phase.
The state machine has access to all the registers, both directly and indirectly. So it adopts #1 as "the program counter" PC. The role of the "program" counter will be to "keep the place" in the program's listing; the state machine has its own state register for its private use.
Upon start, the state machine expects to find a number in the PC—the first "Program-Instruction" in the program (i.e. at #5).
The point of the above detour is to show that life is much easier when the state machine has access to two kinds of indirect copy:
The following example shows what happens during the state-machine's "fetch" phase. The state-machine's operations are listed on the column labelled "State machine instruction ↓". Observe that at the end of the fetch, register #2 contains the numerical value 3 of the "operation code" ("opcode") of the first instruction JZ:
Parse phase.
Now that the number of the program-instruction (e.g. 3 = "JZ") is in register #2 -- the "Program-Instruction Register" PIR—the state machine proceeds to decrement the number until the IR is empty:
If the IR were empty before decrement then the program-instruction would be 0 = HALT, and the machine would jump to its "HALT" routine. After the first decrement, if the hole were empty the instruction would be INC, and the machine would jump to instruction "inc_routine". After the second decrement, the empty IR would represent DEC, and the machine would jump to the "dec_routine". After the third decrement, the IR is indeed empty, and this causes a jump to the "JZ_routine" routine. If an unexpected number were still in the IR, then the machine would have detected an error and could HALT (for example).
Execute phase, JZ_routine.
Now the state machine knows what program-instruction to execute; indeed it has jumped to the "JZ_routine" sequence of instructions. The JZ instruction has 2 operands (i) the number of the register to test, and (ii) the address to go to if the test is successful (the hole is empty).
(i) Operand fetch which register to test for empty?: Analogous to the fetch phase, the finite state machine moves the contents of the register pointed to by the PC, i.e. hole #6, into the Program-Instruction Register PIR #2. It then uses the contents of register #2 to point to the register to be tested for zero, i.e. register #18. Hole #18 contains a number "n". To do the test, now the state machine uses the contents of the PIR to indirectly copy the contents of register #18 into a spare register, #3. So there are two eventualities (ia), register #18 is empty, (ib) register #18 is not empty.
(ia): If register #3 is empty then the state machine jumps to (ii) Second operand fetch fetch the jump-to address.
(ib): If register #3 is not empty then the state machine can skip (ii) Second operand fetch. It simply increments twice the PC and then unconditionally jumps back to the instruction-fetch phase, where it fetches program-instruction #8 (DEC).
(ii) Operand fetch jump-to address. If register #3 is empty, the state machine proceeds to use the PC to indirectly copy the contents of the register it points to (#8) into "itself". Now the PC holds the jump-to address 15. Then the state machine unconditionally goes back to the instruction fetch phase, where it fetches program-instruction #15 (HALT).
Execute phase INC, DEC.
The following completes the RAM's state-machine interpretation of program-instructions, INC h, DEC h and thus completes the demonstration of how a RAM can "impersonate" a RASP:
Without indirect state-machine instructions INCi and DECi, to execute the INC and DEC "program"-instructions the state machine must use indirect copy to get the contents of the pointed-to register into spare register #3, DEC or INC it, and then use indirect copy to send it back to the pointed-to register.
Alternate instructions: Although the demonstration resulted in a primitive RASP of only four instructions, the reader might imagine how an additional instruction such as "ADD " or "MULT ,⟪h>might be done.
Self-Modifying RASP programs.
When a RAM is acting as a RASP, something new has been gained: unlike the RAM, the RASP has the capacity for self-modification of its "program"-instructions (the state-machine instructions are frozen, unmodifiable by the machine). Cook-Reckhow (1971) (p. 75) comment on this in their description of their RASP model, as does Hartmanis (1971) (pp. 239ff)
An early description of this notion can be found in Goldstine-von Neumann (1946):
Such an ability makes the following possible:
RASP program-instruction set of Cook and Reckhow (1973).
In an influential paper Stephen A. Cook and Robert A. Reckhow define their version of a RASP:
Their purpose was to compare execution-times of the various models: RAM, RASP and multi-tape Turing machine for use in the theory of complexity analysis.
The salient feature of their RASP model is no provision for indirect program-instructions (cf their discussion p. 75). This they achieve by requiring the program to modify itself: if necessary an instruction can modify the "parameter" (their word, i.e. "operand") of a particular instruction. They have designed their model so each "instruction" uses two consecutive registers, one for the "operation code" (their word) and the parameter "either an address or an integer constant".
Their RASP's registers are unbounded in capacity and unbounded in number; likewise their accumulator AC and instruction counter IC are unbounded. The instruction set is the following:
References.
Often both the RAM and RASP machines are presented together in the same article. These have been copied over from Random-access machine; with a few exceptions, these references are the same as those at Register machine.


Graham Brightwell

Graham Brightwell is a British mathematician working in the field of discrete mathematics.
Currently a professor at the London School of Economics, he has published nearly 100 papers in pure mathematics, including over a dozen with Béla Bollobás. His research interests include random combinatorial structures; partially ordered sets; algorithms; random graphs; discrete mathematics and graph theory. (Bollobás supervised his PhD on "Linear Extensions of Partially Ordered Sets" at Cambridge, awarded 1988.)
Othello.
Brightwell started playing Othello in 1985, after finding himself sharing an apartment with fellow mathematician and Othello player Imre Leader. He has finished three times as runner-up in the World Othello Championship and is a 5-time British Champion, and has served as chairman of the British Othello Federation and as editor of the British Othello Newsletter.
He created the Brightwell Quotient, often used in Othello tournaments, to resolve ties.


Higher order message

A higher order message (HOM) in a computer programming language is a form of higher-order programming that allows messages that have other messages as arguments. The concept was introduced at MacHack 2003 by Marcel Weiher and presented in a more complete form in 2005 by Marcel Weiher and Stéphane Ducasse. Loops can be written without naming the collections looped over, higher order messages can be viewed as a form of point-free or tacit programming.
Examples.
In ordinary Smalltalk code, without using HOM, obtaining a collection of the employees that have a salary of 1000 would be achieved with the following code:
 salaried := employees select: [ :each | each hasSalary: 1000 ]
However, using HOM, it can be expressed as follows:
 salaried := employees select hasSalary: 1000.
Here, codice_1 is a higher order message, and codice_2 is understood to be called on the select message itself, rather than on its result. The Smalltalk language was not modified to implement this feature. Instead, codice_1 returns a message that reifies the codice_1 send, which then interprets the codice_2 message.
Another example is the use of future message sends in the Croquet Project:
 (cube future:1000) addRotationAroundY:10.
In this example, the codice_6 message causes the codice_7 message to be sent to the cube object after 1 second.
Adoption.
The reference implementation in Objective-C leverages the trait that in Objective-C, objects that don't understand a message sent to them, still get it delivered in a special hook method, called codice_8. Higher order messaging was implemented in a number of languages that share this feature including Ruby and Smalltalk.
ECMAScript Harmony's Proxies documentation specifically mentions higher order messages as an application for their Catchall Proxies.
Similar concepts in other languages.
The programming language J distinguishes between verbs and adverbs. Adverbs modify the functioning of verbs. This is similar to higher order messages (the adverbs) modifying the messages that follow (the verbs). In the Croquet example above, the codice_9. message is still sent and has its normal meaning, but its delivery is modified by the codice_10 message, it will be sent sometime in the future.


Ladislas Kijno

Ladislas Kijno (June 27, 1921 – November 27, 2012) was a French painter. Born in Warsaw, he moved with his family to France in 1925, settling in the community of Nœux-les-Mines in the Pas-de-Calais. Before becoming a painter he studied philosophy with Jean Grenier.
In 1991, the French magazine "L'Amateur d'Art" was devoted to him, with an interview with Jean-Pierre Thiollet entitled "Ladislas Kijno: 'Je suis un moine de l'Art!'" (I'm an Art Monk!)


Che Baraka

""My work is your inspiration and your inspiration is my work."
Che Baraka (born 1953) is an American mixed media artist whose conceptional and abstract paintings have been exhibited across the United States. Baraka was born in Chicago, Illinois. His work has been included in numerous exhibitions and collections throughout the United States, Canada, and Mexico.
Early life.
Baraka moved to Jackson, Mississippi, when he was six. He later lived in San Antonio, Texas, and New Orleans, Louisiana. In Mississippi, Baraka "was exposed to the profound beginnings of America's Civil rights movement that in Birmingham Alabama with the young Baptist minister, Martin Luther King." Exeter Academy showed interest in the young artist and sent a scholar to recruit him.
His spiritual guide and first mentor was a young civil rights activist, Jesse Morris. Thanks to him, Baraka developed his creativity and expanded his views of the world.
Education.
Baraka attended the School of Visual Arts in Manhattan, New York, graduating with honors and a BFA. He received an MFA in Arts Administration at New York University.


Dorothy Heller

Dorothy Heller (1917 – 2003) was an American painter.
Born in New York City, Heller was an Abstract Expressionist who studied at the Art Students League of New York and was a pupil of Hans Hoffman. She worked in acrylic, and exhibited widely during her career in solo and group shows throughout the United States. Three of her drawings, two nudes and a figure study, are owned by the Metropolitan Museum of Art, and her work may also be found in the collections of the Wadsworth Athenaeum, the Allen Memorial Art Museum, and the Herbert F. Johnson Museum of Art. A collection of her papers and other miscellany is held by the Archives of American Art of the Smithsonian Institution.


Robert Shaw (physicist)

Robert Stetson Shaw (born 1946) is an American physicist who was part of Eudaemonic Enterprises in Santa Cruz in the late 1970s and early 1980s. In 1988 he was awarded a MacArthur Fellowship for his work in chaos theory.
Chaos theory.
Shaw was one of the pioneers of chaos theory and his work at University of California, Santa Cruz on the subject was among the first research into the relationship between predictable motion and chaos in a landmark PhD thesis.
He was part of the Dynamical Systems Collective with J. Doyne Farmer, Norman Packard, and James Crutchfield. The collective, also known as the Santa Cruz Chaos Cabal, was best known for its work in probing chaotic systems for signs of order.
A documentary is being made about Shaw's life, his art, and his science, entitled "Strange Attractors: a movie for curious people".
Roulette.
While at the University of California, Santa Cruz, Shaw also worked briefly with the Eudaemons, a group of physicists attempting to create a computer capable of predicting the outcome of a game of roulette.
Illustrations.
Shaw's younger brother, Chris, an artist and filmmaker, produced illustrations for Shaw's papers and thesis, and also for those of Shaw's PhD advisers Ralph Abraham and William Burke. One cosmological painting of consecutive universes exploding and imploding in alternating Big Bangs and Big Crunches in Burke's cosmology textbook hangs on a wall at the American Center for Physics.


Fritz Bultman

Fritz Bultman (April 4, 1919 – July 20, 1985) was an American abstract expressionist painter, sculptor, and collagist and a member of the New York School of artists.
Biography.
A. Fred Bultman was the second child and only son of A. Fred and Pauline Bultman. His family was prominent in New Orleans, where his father owned a Catholic funeral company. By the age of thirteen he was interested in art, and worked with Morris Graves, who was a family friend. As a high school junior in 1935 Fritz went to study in Munich for two years, and there boarded with Maria Hofmann, the wife of artist and teacher Hans Hofmann. After returning to the United States he studied with Hofmann in New York City and Provincetown, Massachusetts. Despite his father's wishes that he become an architect, with Hofmann's encouragement he decided instead to continue his study of art. In 1944 he bought a house in Provincetown, and thenceforth Bultman and his wife Jeanne divided their time between Cape Cod and New York City.
His early paintings have been described as "rough and painterly", an amalgam of symbolism and geometry.
Bultman was exhibiting with other abstract expressionists by the late 1940s, and in 1950 was aligned with the group of New York School artists, nicknamed the "Irascibles" in an article in Life magazine, who signed a letter to the Metropolitan Museum of Art protesting the institution's conservative policies. With the assistance of a grant from Italy he studied bronze casting in Florence in 1951; subsequently he was the sole abstract expressionist to fully integrate sculpture into his oeuvre.
Affected by anxiety and depression, Bultman worked little between 1952 and 1956, and resumed painting and sculpting after undergoing Freudian analysis. At a time when African Americans were prohibited from visiting white museums in the south, in 1963 Bultman and his wife led a group of prominent New York artists and writers in the creation of a collection of modern art for Tougaloo College, a black institution in Jackson, Mississippi. Bultman was awarded a Fulbright Scholarship in 1964-5 to work in Paris. In the 1960s Bultman began to make large collages, using pre-painted paper cut or torn and assembled into shapes reminiscent of his figurative drawings and more abstract sexual symbolism. In 1976 he started making stained glass windows with the aid of his wife. Bultman died of cancer in 1985.
Assessment.
To Robert Motherwell, Bultman was "one of the most splendid, radiant and inspired painters of my generation.", and David Houston, curator of the Ogden Museum of Southern Art in New Orleans called him "an important artist from the South who was part of that great moment that changed the American cultural landscape."
It has been suggested that Bultman's career and subsequent reputation suffered from the vagaries of chance: he was not available for inclusion in the now iconic photo shoot for Life magazine that helped establish the reputations of the New York School painters; another possibility, according to Motherwell, was Bultman's lack of interest in "art world politics".


Ranks and insignia of Organisation Todt

Ranks and insignia of Organisation Todt show the pay grades, wage groups and paramilitary ranks used by the Organisation Todt.
Ranks and Pay Grades of OT Organic Staff.
Source:
Ranks and Wage Groups of OT Contractor Staff.
Sources:
Wage groups for front workers and OT legionaries.
Source:


Jean McEwen

Jean Albert McEwen (1923 – 1999) was a Canadian painter known for his abstract paintings.
Early life.
McEwen was born in 1923 Montreal to a Scottish father and French-Canadian mother. He began his working life as a pharmacist, having received a degree in pharmacy from the University of Montreal in 1947.
Art career.
McKewen was self-taught as a painter. His first exhibition, was the 1949 "Annual Spring Exhibition", a group show Montreal Museum of Fine Arts. Following the positive reception of his work as a painter in Montreal, he quit his job as a pharmacist and left Montreal for Paris. In Paris, he visited museums and was introduced to the painters Jean-Paul Riopelle and Sam Francis.
From 1982 to 1994, he was professor at Concordia University.
In 1998, he received the Prix Paul-Émile-Borduas from the Government of Quebec.
In 1987, McEwen's work was the subject of a retrospective Musée des beaux-arts de Montréal, and a second commemorative exhibition in 2019.
Collections.
His work is included in the collections of the Musée national des beaux-arts du Québec, the Museum of Modern Art, New York the National Gallery of Canada, and the Art Gallery of Ontario.


List of bad luck signs

Bad luck is an unpredictable outcome that is unfortunate. This is a list of signs believed to bring bad luck according to superstitions:


Edward Kelly (painter)

Edward Kelly (born 1946) is a contemporary English painter.
He was born in Liverpool, England in 1946. He studied at Liverpool College of Art between 1963–67, during which time he studied in Italy under a John Moores Travel Scholarship. He took a Higher Diploma at Birmingham College of Art between 1967–68, and taught at Chelsea College of Art from 1974 to 1996.
His solo exhibitions include the Bootle Art Gallery, Liverpool (1969), the Camden Arts Centre, London (1982), Air Gallery, London (1985), Kapil Jariwala Gallery, London (1987, 1991), Arts in Mann Gallery, Isle of Man (1991), Smith Janwala Gallery, London (1994), Courtyard, Hereford (2005), Martin's Gallery, Cheltenham (2006), House of Manannan and Manx Museum, Isle of Man (2012)
, Artwave West, Dorset (2012).
In 1969 he exhibited with Sylvia Goth at the Bluecoat Gallery, Liverpool as a John Moores scholar. In 1980 he exhibited with Simon Willis at Bedford Way Gallery in London. In 1999 to 2001 he exhibited in group shows at Culture Gallery, Broadway, New York. In 2012 he filmed an interview with playwright Peter Terson, excerpts of which were screened at the British Film Institute.
Ken Kiff praised his "hard won images" in 1987.
Environmental campaigner.
Edward Kelly moved from London to an Area of Outstanding Natural Beauty in the Wye Valley in the mid 1980s. During the late 1990s increasing trend towards use of agricultural polytunnels have come to dominate the landscape in some parts of the Wye Valley, and in particular near the artist's residence. He launched the Campaign for Polytunnel Control which seeks that erection of polytunnels should be controlled by planning permission, owing to their massive scale and visual impact. In relation to the campaign Edward Kelly has been interviewed by national press and has appeared in national newspapers and on TV and presented at various government hearings and government reports.
He was portrayed as a character in Pentabus Theatre Company's play "Strawberry Fields" that dealt with the issues associated with migrant workers in industrial scale strawberry farms.


MDY (date)


Joseph Hertzberg

Joseph Hertzberg (; 1870) was a Russian Jewish writer and translator.
Biography.
Hertzberg was born in Mogilev in the Pale of Settlement at the beginning of the nineteenth century. There he received a sound education, and mastered the Russian, German, French, and English languages.
He contributed largely to Hebrew periodicals, and wrote a popular Hebrew translation of Jacques-Henri Bernardin de Saint-Pierre's "Harmonie de la Nature", published in Vilna as "Sefer sulem ha-teva" (1850) with an approbation by Isaac Baer Levinsohn. Hertzberg also translated into Hebrew Moses Mendelssohn's "Morgenstunden, oder Vorlesungen über das Dasein Gottes", Immanuel Kant's "Critique of Pure Reason", Salomon Munk's "Palestine", and some volumes of Heinrich Graetz's "Geschichte der Juden". He left in manuscript a volume of poems entitled "Alummat Yosef".


Michael Schultheis

Michael Schultheis (born October 10, 1967) is an American painter trained in mathematics and economics. He paints geometric forms and their corresponding real equations to conceptually render the geometry through an art style termed "analytical expressionism”. His work is part of collections at the Tacoma Art Museum, the National Academy of Sciences and Washington State University.
Schultheis grew up in Washington state and holds advanced degrees in economics from Washington State University and Cornell University, and spent a year abroad in Siena, Italy studying history and Italian.
During his early years working in software development, Schultheis said he was captivated and inspired by the beauty of the half-erased chalkboards and whiteboards, with its many layers of mathematical formulas, equations and ghost-like erasures and shapes. He said his paintings are a visually expressive approach to analytical ideas, expanding the definition of conceptual geometry in art. Schultheis says he likens the canvas to chalkboard and paints math equations, their geometric forms that visually render in his mind, and the relationships that develop into geometric models describing narratives about the human condition. His paintings present these geometric equations and forms through a visual mathematical process, language and rendering.
Schultheis has lectured at Washington State University, Seattle University and The Wentworth Institute of Technology with regards to his art and its relation to mathematics.
Collections.
Schultheis' work can be found in the collections of:


Tatsuya Futakami

 is a deceased Japanese professional shogi player who achieved the rank of 9-dan. He is a former president of the Japan Shogi Association as well as a former Kisei and Ōshō title holder.


Metaprogramming

Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyze or transform other programs, and even modify itself while running. In some cases, this allows programmers to minimize the number of lines of code to express a solution, in turn reducing development time. It also allows programs greater flexibility to efficiently handle new situations without recompilation.
Metaprogramming can be used to move computations from run-time to compile-time, to generate code using compile time computations, and to enable self-modifying code. The ability of a programming language to be its own metalanguage is called reflection. Reflection is a valuable language feature to facilitate metaprogramming.
Metaprogramming was popular in the 1970s and 1980s using list processing languages such as LISP. LISP hardware machines were popular in the 1980s and enabled applications that could process code. They were frequently used for artificial intelligence applications.
Approaches.
Metaprogramming enables developers to write programs and develop code that falls under the generic programming paradigm. Having the programming language itself as a first-class data type (as in Lisp, Prolog, SNOBOL, or Rebol) is also very useful; this is known as "homoiconicity". Generic programming invokes a metaprogramming facility within a language by allowing one to write code without the concern of specifying data types since they can be supplied as parameters when used.
Metaprogramming usually works in one of three ways.
Lisp is probably the quintessential language with metaprogramming facilities, both because of its historical precedence and because of the simplicity and power of its metaprogramming. In Lisp metaprogramming, the unquote operator (typically a comma) introduces code that is evaluated at program definition time rather than at run time; see Self-evaluating forms and quoting in Lisp. The metaprogramming language is thus identical to the host programming language, and existing Lisp routines can be directly reused for metaprogramming, if desired. This approach has been implemented in other languages by incorporating an interpreter in the program, which works directly with the program's data. There are implementations of this kind for some common high-level languages, such as RemObjects’ Pascal Script for Object Pascal.
Usages.
Code generation.
A simple example of a metaprogram is this POSIX Shell script, which is an example of generative programming:
echo '#!/bin/sh' > program
for i in $(seq 992)
do
 echo "echo $i" » program
done
chmod +x program
This script (or program) generates a new 993-line program that prints out the numbers 1–992. This is only an illustration of how to use code to write more code; it is not the most efficient way to print out a list of numbers. Nonetheless, a programmer can write and execute this metaprogram in less than a minute, and will have generated over 1000 lines of code in that amount of time.
A quine is a special kind of metaprogram that produces its own source code as its output. Quines are generally of recreational or theoretical interest only.
Not all metaprogramming involves generative programming. If programs are modifiable at runtime or if incremental compilation is available (such as in C#, Forth, Frink, Groovy, JavaScript, Lisp, Elixir, Lua, Perl, PHP, Python, REBOL, Ruby, Rust, SAS, Smalltalk, and Tcl), then techniques can be used to perform metaprogramming without actually generating source code.
One style of generative approach is to employ domain-specific languages (DSLs). A fairly common example of using DSLs involves generative metaprogramming: lex and yacc, two tools used to generate lexical analyzers and parsers, let the user describe the language using regular expressions and context-free grammars, and embed the complex algorithms required to efficiently parse the language.
Code instrumentation.
One usage of metaprogramming is to instrument programs in order to do dynamic program analysis.
Behavioral changes.
Metaprogramming can be used to weave behavioral changes in a program, as done in aspect-oriented programming. For instance, metaprogramming can be used to inject feature flags or to explore possible patches for fixing bugs.
Challenges.
Some argue that there is a sharp learning curve to make complete use of metaprogramming features. Since metaprogramming gives more flexibility and configurability at runtime, misuse or incorrect use of the metaprogramming can result in unwarranted and unexpected errors that can be extremely difficult to debug to an average developer. It can introduce risks in the system and make it more vulnerable if not used with care. Some of the common problems which can occur due to wrong use of metaprogramming are inability of the compiler to identify missing configuration parameters, invalid or incorrect data can result in unknown exception or different results. Due to this, some believe that only high-skilled developers should work on developing features which exercise metaprogramming in a language or platform and average developers must learn how to use these features as part of convention.
Uses in programming languages.
Macro assemblers.
The IBM/360 and derivatives had powerful macro assembler facilities that were often used to generate complete assembly language programs or sections of programs (for different operating systems for instance). Macros provided with CICS transaction processing system had assembler macros that generated COBOL statements as a pre-processing step.
Other assemblers, such as MASM, also support macros.
Metaclasses.
Metaclasses are provided by the following programming languages:
Dependent types.
Usage of dependent types allows proving that generated code is never invalid. However, this approach is bleeding-edge and is rarely found outside of research programming languages.
Implementations.
The list of notable metaprogramming systems is maintained at List of Program Transformation Systems.


Michael Loew

Michael Loew (May 8, 1907 — November 14, 1985) was an American Abstract Expressionist artist who was born in New York City.
Career.
In the late 1920s, Loew studied at the Art Students League with the Ashcan School and was a recipient of a Sadie A. May Fellowship which allowed Loew to continue his studies in France. Michael worked for New Deal art projects from 1933–37 and during this time painted murals for U.S. post offices, high schools and the Hall of Pharmacy for the 1939 New York World's Fair. Loew chose to share his private commission with close friend and fellow artist, Willem de Kooning.
From 1939 to 1940 Loew traveled to Mexico and the Yucatán, gathering inspiration for his future work. Joining the U.S. Navy Seabees in 1943 as a Battalion Painter, Loew documented the work being done on the airbase on Tinian Island. It was from this airbase that the Enola Gay would later take off from to drop the atomic bombs. Loew captured much of the work done on the island by the Navy in dozens of watercolors.
Returning to New York after the war, having lost much of his hearing, Loew started over with his art studies. He studied with Hans Hofmann in New York and Provincetown, and with Fernand Léger in Paris. Loew became a member of the American Abstract Artists and The Artist's Club as well as The Spiral Group. His works were shown at the Stable Gallery Annuals of 1951–1955.
In 1960 and again in 1966, Loew was hired to teach at the University of California, Berkeley. He also spent nearly three decades as a teacher at the School of Visual Arts. In 1976 he won a fellowship grant from the National Endowment for the Arts and in 1979 he was awarded a grant from the Guggenheim Foundation.
Over the course of his life, Michael's work was exhibited extensively in galleries, museums and other cultural institutions including: The Solomon R. Guggenheim Museum, The Dallas Museum of Art, The Whitney Museum of American Art, The Philadelphia Museum of Art and The Hirshhorn Museum and Sculpture Garden. The Michael Loew Papers are located in the Archives of American Art at the Smithsonian Institution. His works have been exhibited in galleries including the Anita Shapolsky Gallery in New York City and the Thomas McCormick Gallery.
In 1997 his estate was awarded the Judith Rothschild Foundation Grant.


Luis Merino

Luis Merino (born September 17, 1942 in Mexico City, Mexico) is a Mexican/Canadian painter. His work can be found in numerous public and private collections in Canada, Mexico, and the United States. Some of his most notable work is on display in the Maltwood Art Museum and Gallery, at the University of Victoria in Greater Victoria, British Columbia, Canada.
Biography.
Luis Merino was born in Mexico City, Mexico in 1942. At an early age, Luis knew he wanted to be a painter. When he was 16, he studied at the prestigious Academy of San Carlos in Mexico City. During this time, Merino intensified his study in oil painting. Following visits to various museums and exhibits throughout the city, he developed an affinity for Mexican, American, and European modernism.
In 1968, Luis Merino attended the Instituto Allende in San Miguel de Allende, Guanajuato, Mexico. While in school, he was taught by American/Yugoslavian abstract painter James Pinto. In his final semester, Merino accepted Pinto's invitation to teach life-drawing at the institute.
Upon immigrating to Canada in 1970, Merino began to reveal influences of cubism in his paintings, which can still be seen in his work to this day.
In 1972, Merino moved to Victoria, British Columbia with his wife, Sandra, and became a prominent member of the arts community. Luis remained active in the community by painting murals inside of public buildings, displaying his art in local galleries, and regularly organizing exhibitions for fellow artists.
Influences.
Merino's earliest influences were from Mexican muralism in particular Diego Rivera. He also places an emphasis on "peaceable content" that resonates with the post-revolution painters Pedro Coronel and Rufino Tamayo. Additionally, Luis cites the "humanism which had underlain much existential discourse in the 1960s" as a significant influence. Since the 1970s, Merino's work has been largely influenced by his affinity for the early, analytic cubism of Braque and Picasso. In the 1980s, he began to incorporate the "female form in expressions of sensuality, harmony, complexity and inner mystery", which has remained a consistent theme in most of his work to this day. In this regard Merino's work has parallels with that of Modigliani. This combination of abstraction from cubism with the figure results in a style of painting best described as Figurative Abstraction.
Work.
Currently, Luis Merino has a number of his paintings on display in the Maltwood Art Museum and Gallery at the University of Victoria in Greater Victoria, British Columbia, Canada. The most notable of these pieces are "Bar Maids III" (1990) and "Frida" (1990-1991).


Lazarus Goldschmidt

Lazarus Goldschmidt (born at Plungė, December 17, 1871; died in England, April 18, 1950) was a Lithuanian-born German Jewish writer and translator. He translated the Babylonian Talmud into German, and was the first to translate the entire Babylonian Talmud.
He received his rabbinical education at the Talmudic school in Slobodki, near Kovno. In 1888 he went to Germany, and in 1890 entered the Berlin University, where, under the guidance of Professors Dillmann and Schrader, he devoted himself to the study of Oriental languages, especially Ethiopic.
By 1903, Goldschmidt, living at the time in Berlin, had published the following works: ""Das Buch Henoch"," retranslated from the Ethiopic into Hebrew, and edited with introduction, notes, and explanations (Berlin, 1892); ""Bibliotheca Aethiopica"," a list and description of all the known Ethiopic prints (Leipsic, 1893); ""Das Buch der Schöpfung" (ספר יצירה)," critical text, translation notes, etc. (Frankfort-on-the-Main, 1894); ""Baraita de-Ma'ase Bereshit"," the story of the Creation, ascribed to Arzelai bar Bargelai (Strasburg, 1894; this supposed Midrash is an Aramaic translation of the Ethiopic "Hexaemeron" of Pseudo-Epiphanias, edited by Trumpp in Ethiopic with a German translation, Munich, 1882, and the name of the supposed author is an anagram of Goldschmidt's Hebrew name, Eliezer ben Gabriel); ""Vita do Abba Daniel"," Ethiopic text, published, translated, and annotated in collaboration with F. M. E. Pereira (Lisbon, 1897); ""Die Aethiopischen Handschriften der-Stadtbibliothek zu Frankfurt a. M." (Berlin, 1897). In the year 1896 Goldschmidt commenced the publication of the Babylonian Talmud (from the editio princeps), with German translation, variants, and explanations. By 1903, the sections Zera'im and Mo'ed have been published, together with a part of the section Neziḳin. Both the edition of the text and the translation have been severely criticized by David Hoffmann in Brody's "Zeitschrift für Hebräische Bibliographie"," i. 67-71, 100-103, 152-155, 181-185. Goldschmidt replied in a pamphlet, ""Die Recension des Herrn Dr. D. Hoffmann über Meine Talmudausgabe im Lichte der Wahrheit"," Charlottenburg, 1896. See also ""Theologische Literaturzeitung"," 1896, pp. 477-479, and 1897, pp. 631-633.
His translation of the Babylonian Talmud appeared from Leipzig 1897 to completion in London 1935.


Hirotaka Kajiura

 is a Japanese professional shogi player ranked 7-dan.
Early life.
Kajiura was born in the Shinjuku ward of Tokyo, Japan on July 6, 1995. He learned how to play shogi from his father when he was about five years old, and eventually entered the Japan Shogi Association's apprentice school at the rank of 6-kyū under the tutelage of shogi professional Daisuke Suzuki in 2008. He was promoted to the rank of 3-dan in 2012 and then obtained full professional status and the rank of 4-dan after finishing in second place in the 56th 3-dan League with a record of 13 wins and 5 losses.
Promotion history.
The promotion history for Kajiura is as follows.


Marika Nakamura

 is a Japanese women's professional shogi player ranked 3-dan.
Promotion history.
Nakamura's promotion history is as follows.
Note: All ranks are women's professional ranks.
Titles and other championships.
Nakamura has appeared in women's major title match three times, but has yet to win a major title. She was the challenger for the 17th title in 2009, the 34th in 2012 and the 40th in 2013.


Evelyn Buff-Segal

Evelyn Buff-Segal (1913-2000) was an abstract expressionist painter who lived and worked in Rochester, NY.
Early life.
Evelyn E. Buff was born as a twin in 1915, in Lowville, Lewis County, New York to Fannie (née Landsman) and Louis R. Buff.
Originally a student of architect Fritz Traut, she began studying under Vanclive Vitleture after meeting him during a visit to Martha's Vineyard in the late 1940s. He encouraged her to move to NYC and attend the prestigious Arts Students League on 57th Street, where she met Robert Rauschenberg. In a 1975 interview for the Rochester Oral History Project, Buff-Segal recalls that Robert Rauschenberg "had the easel to my right." and that among her other classmates at the time were both Paul Jenkins and Robert Cartwright.
As a mature artist she split her time between New York and Paris and was known for her compositions inspired by visits to Nigeria with her husband Dr. Harry J. Segal. In 1951 a special exhibition of these works entitled "Home to Nigeria" was featured at the College of Visual Arts in Syracuse, NY. That same year she founded the Rochester Arts Council (one of only three such groups in the country at the time) and served as its president until 1959. She also founded Rochester's 'Arena Arts Group' and served as director and co-founder of The Little Gallery.
Her work has been displayed at the Corcoran Gallery of Art in Washington, DC and the former Greer Gallery in NYC. Several pieces reside as part of the permanent collection of Emily Lowe Gallery at Syracuse University as well as in numerous private collections both in America and Europe.


Binary heap

A binary heap is a heap data structure that takes the form of a binary tree. Binary heaps are a common way of implementing priority queues. The binary heap was introduced by J. W. J. Williams in 1964, as a data structure for heapsort.
A binary heap is defined as a binary tree with two additional constraints:
Heaps where the parent key is greater than or equal to (≥) the child keys are called "max-heaps"; those where it is less than or equal to (≤) are called "min-heaps". Efficient (logarithmic time) algorithms are known for the two operations needed to implement a priority queue on a binary heap: inserting an element, and removing the smallest or largest element from a min-heap or max-heap, respectively. Binary heaps are also commonly employed in the heapsort sorting algorithm, which is an in-place algorithm because binary heaps can be implemented as an implicit data structure, storing keys in an array and using their relative positions within that array to represent child-parent relationships.
Heap operations.
Both the insert and remove operations modify the heap to conform to the shape property first, by adding or removing from the end of the heap. Then the heap property is restored by traversing up or down the heap. Both operations take O(log "n") time.
Insert.
To add an element to a heap, we can perform this algorithm:
Steps 2 and 3, which restore the heap property by comparing and possibly swapping a node with its parent, are called "the up-heap" operation (also known as "bubble-up", "percolate-up", "sift-up", "trickle-up", "swim-up", "heapify-up", or "cascade-up").
The number of operations required depends only on the number of levels the new element must rise to satisfy the heap property. Thus, the insertion operation has a worst-case time complexity of O(log "n"). For a random heap, and for repeated insertions, the insertion operation has an average-case complexity of O(1).
As an example of binary heap insertion, say we have a max-heap
and we want to add the number 15 to the heap. We first place the 15 in the position marked by the X. However, the heap property is violated since , so we need to swap the 15 and the 8. So, we have the heap looking as follows after the first swap:
However the heap property is still violated since , so we need to swap again:
which is a valid max-heap. There is no need to check the left child after this final step: at the start, the max-heap was valid, meaning the root was already greater than its left child, so replacing the root with an even greater value will maintain the property that each node is greater than its children (; if , and , then , because of the transitive relation).
Extract.
The procedure for deleting the root from the heap (effectively extracting the maximum element in a max-heap or the minimum element in a min-heap) while retaining the heap property is as follows:
Steps 2 and 3, which restore the heap property by comparing and possibly swapping a node with one of its children, are called the "down-heap" (also known as "bubble-down", "percolate-down", "sift-down", "sink-down", "trickle down", "heapify-down", "cascade-down", "extract-min" or "extract-max", or simply "heapify") operation.
So, if we have the same max-heap as before
We remove the 11 and replace it with the 4.
Now the heap property is violated since 8 is greater than 4. In this case, swapping the two elements, 4 and 8, is enough to restore the heap property and we need not swap elements further:
The downward-moving node is swapped with the "larger" of its children in a max-heap (in a min-heap it would be swapped with its smaller child), until it satisfies the heap property in its new position. This functionality is achieved by the Max-Heapify function as defined below in pseudocode for an array-backed heap "A" of length "length"("A"). Note that "A" is indexed starting at 1.
 // Perform a down-heap or heapify-down operation for a max-heap
 // "A": an array representing the heap, indexed starting at 1
 // "i": the index to start at when heapifying down
 Max-Heapify("A", "i"):
 "left" ← 2×"i"
 "right" ← 2×"i" + 1
 "largest" ← "i"
 if "left" ≤ "length"("A") and "A"["left"] > A["largest"] then:
 "largest" ← "left"
 if "right" ≤ "length"("A") and "A"["right"] > "A"["largest"] then:
 "largest" ← "right"
 if "largest" ≠ "i" then:
 swap "A"["i"] and "A"["largest"]
 Max-Heapify("A", "largest")
For the above algorithm to correctly re-heapify the array, no nodes besides the node at index "i" and its two direct children can violate the heap property. The down-heap operation (without the preceding swap) can also be used to modify the value of the root, even when an element is not being deleted.
In the worst case, the new root has to be swapped with its child on each level until it reaches the bottom level of the heap, meaning that the delete operation has a time complexity relative to the height of the tree, or O(log "n").
Insert then extract.
Inserting an element then extracting from the heap can be done more efficiently than simply calling the insert and extract functions defined above, which would involve both an upheap and downheap operation. Instead, we can do just a downheap operation, as follows:
Python provides such a function for insertion then extraction called "heappushpop", which is paraphrased below. The heap array is assumed to have its first element at index 1.
 // Push a new item to a (max) heap and then extract the root of the resulting heap.
 // "heap": an array representing the heap, indexed at 1
 // "item": an element to insert
 // Returns the greater of the two between "item" and the root of "heap".
 Push-Pop("heap": List<T>, "item": T) -> T:
 if "heap" is not empty and heap[1] > "item" then: // < if min heap
 swap "heap"[1] and "item"
 _downheap("heap" starting from index 1)
 return "item"
A similar function can be defined for popping and then inserting, which in Python is called "heapreplace":
 // Extract the root of the heap, and push a new item
 // "heap": an array representing the heap, indexed at 1
 // "item": an element to insert
 // Returns the current root of "heap"
 Replace("heap": List<T>, "item": T) -> T:
 swap "heap"[1] and "item"
 _downheap("heap" starting from index 1)
 return "item"
Search.
Finding an arbitrary element takes O(n) time.
Delete.
Deleting an arbitrary element can be done as follows:
Decrease or increase key.
The decrease key operation replaces the value of a node with a given value with a lower value, and the increase key operation does the same but with a higher value. This involves finding the node with the given value, changing the value, and then down-heapifying or up-heapifying to restore the heap property.
Decrease key can be done as follows:
Increase key can be done as follows:
Building a heap.
Building a heap from an array of input elements can be done by starting with an empty heap, then successively inserting each element. This approach, called Williams’ method after the inventor of binary heaps, is easily seen to run in time: it performs insertions at cost each.
However, Williams’ method is suboptimal. A faster method (due to Floyd) starts by arbitrarily putting the elements on a binary tree, respecting the shape property (the tree could be represented by an array, see below). Then starting from the lowest level and moving upwards, sift the root of each subtree downward as in the deletion algorithm until the heap property is restored. More specifically if all the subtrees starting at some height formula_4 have already been “heapified” (the bottommost level corresponding to formula_5), the trees at height formula_6 can be heapified by sending their root down along the path of maximum valued children when building a max-heap, or minimum valued children when building a min-heap. This process takes formula_7 operations (swaps) per node. In this method most of the heapification takes place in the lower levels. Since the height of the heap is formula_8, the number of nodes at height formula_4 is formula_10. Therefore, the cost of heapifying all subtrees is:
This uses the fact that the given infinite series formula_12 converges.
The exact value of the above (the worst-case number of comparisons during the heap construction) is known to be equal to:
where is the sum of all digits of the binary representation of and is the exponent of in the prime factorization of .
The average case is more complex to analyze, but it can be shown to asymptotically approach comparisons.
The Build-Max-Heap function that follows, converts an array "A" which stores a complete
binary tree with "n" nodes to a max-heap by repeatedly using Max-Heapify (down-heapify for a max-heap) in a bottom-up manner.
The array elements indexed by
, , ..., "n"
are all leaves for the tree (assuming that indices start at 1)—thus each is a one-element heap, and does not need to be down-heapified. Build-Max-Heap runs
Max-Heapify on each of the remaining tree nodes.
 Build-Max-Heap ("A"):
 for each index "i" from "floor"("length"("A")/2) downto 1 do:
 Max-Heapify("A", "i")
Heap implementation.
Heaps are commonly implemented with an array. Any binary tree can be stored in an array, but because a binary heap is always a complete binary tree, it can be stored compactly. No space is required for pointers; instead, the parent and children of each node can be found by arithmetic on array indices. These properties make this heap implementation a simple example of an implicit data structure or Ahnentafel list. Details depend on the root position, which in turn may depend on constraints of a programming language used for implementation, or programmer preference. Specifically, sometimes the root is placed at index 1, in order to simplify arithmetic.
Let "n" be the number of elements in the heap and "i" be an arbitrary valid index of the array storing the heap. If the tree root is at index 0, with valid indices 0 through "n − "1, then each element "a" at index "i" has
Alternatively, if the tree root is at index 1, with valid indices 1 through "n", then each element "a" at index "i" has
This implementation is used in the heapsort algorithm, where it allows the space in the input array to be reused to store the heap (i.e. the algorithm is done in-place). The implementation is also useful for use as a Priority queue where use of a dynamic array allows insertion of an unbounded number of items.
The upheap/downheap operations can then be stated in terms of an array as follows: suppose that the heap property holds for the indices "b", "b"+1, ..., "e". The sift-down function extends the heap property to "b"−1, "b", "b"+1, ..., "e".
Only index "i" = "b"−1 can violate the heap property.
Let "j" be the index of the largest child of "a"["i"] (for a max-heap, or the smallest child for a min-heap) within the range "b", ..., "e".
By swapping the values "a"["i"] and "a"["j"] the heap property for position "i" is established.
At this point, the only problem is that the heap property might not hold for index "j".
The sift-down function is applied tail-recursively to index "j" until the heap property is established for all elements.
The sift-down function is fast. In each step it only needs two comparisons and one swap. The index value where it is working doubles in each iteration, so that at most log2 "e" steps are required.
For big heaps and using virtual memory, storing elements in an array according to the above scheme is inefficient: (almost) every level is in a different page. B-heaps are binary heaps that keep subtrees in a single page, reducing the number of pages accessed by up to a factor of ten.
The operation of merging two binary heaps takes Θ("n") for equal-sized heaps. The best you can do is (in case of array implementation) simply concatenating the two heap arrays and build a heap of the result. A heap on "n" elements can be merged with a heap on "k" elements using O(log "n" log "k") key comparisons, or, in case of a pointer-based implementation, in O(log "n" log "k") time. An algorithm for splitting a heap on "n" elements into two heaps on "k" and "n-k" elements, respectively, based on a new view
of heaps as an ordered collections of subheaps was presented in. The algorithm requires O(log "n" * log "n") comparisons. The view also presents a new and conceptually simple algorithm for merging heaps. When merging is a common task, a different heap implementation is recommended, such as binomial heaps, which can be merged in O(log "n").
Additionally, a binary heap can be implemented with a traditional binary tree data structure, but there is an issue with finding the adjacent element on the last level on the binary heap when adding an element. This element can be determined algorithmically or by adding extra data to the nodes, called "threading" the tree—instead of merely storing references to the children, we store the inorder successor of the node as well.
It is possible to modify the heap structure to allow extraction of both the smallest and largest element in formula_14formula_15 time. To do this, the rows alternate between min heap and max-heap. The algorithms are roughly the same, but, in each step, one must consider the alternating rows with alternating comparisons. The performance is roughly the same as a normal single direction heap. This idea can be generalized to a min-max-median heap.
Derivation of index equations.
In an array-based heap, the children and parent of a node can be located via simple arithmetic on the node's index. This section derives the relevant equations for heaps with their root at index 0, with additional notes on heaps with their root at index 1.
To avoid confusion, we'll define the level of a node as its distance from the root, such that the root itself occupies level 0.
Child nodes.
For a general node located at index formula_1 (beginning from 0), we will first derive the index of its right child, formula_17.
Let node formula_1 be located in level formula_19, and note that any level formula_20 contains exactly formula_21 nodes. Furthermore, there are exactly formula_22 nodes contained in the layers up to and including layer formula_20 (think of binary arithmetic; 0111...111 = 1000...000 - 1). Because the root is stored at 0, the formula_24th node will be stored at index formula_25. Putting these observations together yields the following expression for the index of the last node in layer l.
Let there be formula_27 nodes after node formula_1 in layer L, such that
Each of these formula_27 nodes must have exactly 2 children, so there must be formula_31 nodes separating formula_1's right child from the end of its layer (formula_33).
As required.
Noting that the left child of any node is always 1 place before its right child, we get formula_35.
If the root is located at index 1 instead of 0, the last node in each level is instead at index formula_22. Using this throughout yields formula_37 and formula_38 for heaps with their root at 1.
Parent node.
Every node is either the left or right child of its parent, so we know that either of the following is true.
Hence,
Now consider the expression formula_42.
If node formula_1 is a left child, this gives the result immediately, however, it also gives the correct result if node formula_1 is a right child. In this case, formula_45 must be even, and hence formula_46 must be odd.
Therefore, irrespective of whether a node is a left or right child, its parent can be found by the expression:
Related structures.
Since the ordering of siblings in a heap is not specified by the heap property, a single node's two children can be freely interchanged unless doing so violates the shape property (compare with treap). Note, however, that in the common array-based heap, simply swapping the children might also necessitate moving the children's sub-tree nodes to retain the heap property.
The binary heap is a special case of the d-ary heap in which d = 2.


Academic ranks in Kenya

Academic ranks in Kenya are the titles, relative importance and power of professors, researchers, and administrative personnel held in academia.
Overview.
Kenya’s Universities Act of 2012 defines an "academic staff'” as a "person appointed to teach, train or to do research at a university and any other employee designated as such by the university council". The definition of professor is left to each individual university. Professors are primarily senior members of university teaching and/or research faculty. Generally, there is no clear distinction between research and academic. However, the University of Nairobi has a tradition of appointing faculty in both the research and academic streams, thus, Junior Research Fellow =Assistant Lecturer, Research Fellow=Lecturer, Associated Professorial Research Fellow=Associate Professor and the Professorial Research Fellow=Professor.
Both the associate and full professors must have PhDs or a qualification considered equivalent. In the Moi University and University of Nairobi where they have a longer history offering medical qualifications, a post medical qualification Masters of Medicine (M Med.) is considered an equivalent of a PhD in other fields. So a holder of an M.Med who has been a senior lecturer for three years, together with requisite publications and supervisions may be appointed associate professor, then full professor. In Moi University again, there is an example of a senior legal scholar and practitioner who was appointed full Professor based on a personal evaluation. His long teaching experience, myriad academic and technical publications and his two LL Ms were considered as equivalents. Generally lower degree holders can not go beyond the senior lecturer level, however this is left for each university to decide. To be a full Professor in all the Kenyan Universities, one ought to have served as an associate professor for four year and at least three peer reviewed publications in international journals or similarly considered technical publications. Technical patents too are considered. Post graduate research supervision and outreach are also crucial.
Outside of the appointive tenures, some very senior academic staff in the Kenyan Universities do get baptized "professor" by their students or colleagues. This is because they are usually very senior, have mentored many, or they have achieved a lot of academic grounding without the benefit of promotions which can get gruesomely political. A lot of victims are those with solid research credentials combined with great teaching and outreach experience but have not acquired a PhD or equivalent for one reason or the other. The same also applies to some extremely productive young academics that have not attained the right longevity for appointment as professors. Many people from outside of the university fraternity might also just refer to any long serving academic staff as professor. All these are usually acceptable without any question.
Many people rightly argue that professorial appointments should not be based on longevity, loyalty or sheer availability of vacancies to be filled, but rather on prowess as evidenced by ground breaking research, teaching and outreach. Professorship should not be a reward for loyalty. Whatever the criteria of appointment, it should remain a mark of highest academic and research pedigree, they assert.