User loginNavigation |
archivesLimitations of Prolog-style clausal programsBeginning in the 1970’s, Japan took the DRAM market (and consequently most of the integrated circuit industry) away from the previous US dominance. This was accomplished with the help of the Japanese VLSI project that was funded and coordinated in good part by the Japanese government Ministry of International Trade and Industry (MITI) [Sigurdson 1986]. MITI hoped to repeat this victory by taking over the computer industry. However, Japan had come under criticism for “copying†the US. One of the MITI goals for ICOT was to show that Japan could innovate new computer technology and not just copy the Americans. ICOT tried to go all the way with Prolog-style clause programs. Kowalski later recalled “Having advocated LP [Logic Programs] as a unifying foundation for computing, I was delighted with the LP [Logic Program] focus of the FGCS [Fifth Generation Computer Systems] project.†[Fuchi, Kowalski, Ueda, Kahn, Chikayama, and Tick 1993] By making Prolog-style clause programs(which was mainly being developed outside the US) the foundation, MITI hoped that the Japanese computer industry could leapfrog the US. “The [ICOT] project aimed to leapfrog over IBM, and to a new era of advanced knowledge processing applications†[Sergot 2004] However, it proved difficult to implement clause invocation in these languages as efficiently as message-passing in object-oriented program languages. Simula-67 originated a hierarchical class structure for objects so that message handling procedures (methods) and object instance variables could be inherited by subclasses. Ole-Johan Dahl [1967] invented a powerful compiler technology using dispatch tables that enabled message handling procedures in subclasses of objects to be efficiently invoked. Going beyond object-oriented program languages to concurrent program languages, ICOT encountered further difficulties dealing with concurrency, e.g., readers-writers concurrency. Concurrency control for readers and writers in a shared resource is a classic problem. The fundamental constraint is that multiple writers are not allowed to operate concurrently. Below is an implementation of a reading priority guardian that encapsulates a shared resource: CreateReadingPriority.[theResource:ReadersWriter] ≡ Actor with writing:=False, numberReading:(Integer thatIs ≧0):=0◊ queues readersQ, writersQ◊ implements ReadersWriter using Read[query]→ Enqueue (writing or not IsEmpty writersQ) ¿ True ↠readersQ; False ↠NullQueue ? Prep numberReading:=numberReading+1◊ RequirePre not writing◊ Permit readersQ◊ hole theResource.Read[query] always permit (IsEmpty writersQ) ¿ True ↠readersQ; False ↠(numberReading = 1) ¿ True ↠writersQ; False ↠NullQueue ? ? also RequirePre numberReading≧1◊ numberReading:=numberReading–1◊¶ Write[update]→ Enqueue (numberReading>0 or not IsEmpty readersQ or writing or not IsEmpty writersQ) ¿ True ↠writersQ; False ↠NullQueue ? RequirePre not writing◊ Prep writing:=True◊ RequirePre numberReading=0◊ Hole theResource.Write[update] always permit (IsEmpty readersQ) ¿ True ↠writersQ; False ↠readersQ ? also RequirePre writing◊ writing:=False◊§▮ Implementations of the above kind procedure in the Prolog-style clausal languages used by ICOT were both verbose and inefficient. The technical managers at ICOT were aware of some of the pitfalls that had tripped up previous Artificial Intelligence (AI) researchers. So they deliberately avoided calling ICOT an AI Project. Instead they had the vision of an integrated hardware/software system [Uchida and Fuchi 1992]. However, the Prolog-style clause program languages turned not to be a suitable foundation because of poor modularity and lack of efficiency by comparison with direct message passing [Hewitt and Agha 1988]. Another problem was that multi-processors found it difficult to compete because at the time single processors were rapidly increasing in speed and connections between multiple processors suffered long latencies. The MITI strategy backfired because Japanese companies refused to productize ICOT hardware. However, the architects of ICOT did get some things right: The architectural reliance on Prolog-style clausal programs was a principle contributing cause for the failure of ICOT to achieve commercial success. For more information see Inconsistency Robustness in Logic Programs. |
Browse archivesActive forum topics |
Recent comments
22 weeks 3 days ago
22 weeks 3 days ago
22 weeks 3 days ago
44 weeks 5 days ago
49 weeks 1 hour ago
50 weeks 4 days ago
50 weeks 4 days ago
1 year 1 week ago
1 year 5 weeks ago
1 year 5 weeks ago