As a starting point for this exploration, I present SCL. The introduction to my article, Introduction to SCL, provides an Executive Summary of SCL:
SCL (Soft-Coded Logic)
is my implementation of Prolog enhanced with a new set of features outfitting it
with the capability of providing malleable logic services for distributed applications.
As the number and variety (embedded devices, RFID, etc) of “nodes” on the Internet
grows, the complexity, evolution (the rules are always changing), and the mix of
factors contributing towards decisions the applications on these devices makes becomes
overwhelming. This creates a need for a mechanism that is geared towards handling
complex and evolving logic.
SCL is such a mechanism.
The Prolog language itself is designed to deduce logical conclusions for a query
by inferring logical relationships from a list of facts. Complementing that purpose
with the capability of locating, aggregating, and refreshing facts from multiple,
diverse sources (other devices/applications/databases) fulfills that need. I call
the new Prolog features providing this capability “MetaFacts”.
Incorporation of SCL
into software applications results in a “separation of logic and procedure”. In
a nutshell, by “logic” I’m referring to the “IF” part of an IF-THEN statement and
“procedure” as the “THEN” part. For example, IF some set of conditions are met,
THEN a traffic light will turn the lights red in one direction and green in the
other. The action taken (changing the color of the lights) is always the same, but
the conditions to trigger that action evolve. Factoring the conditions out of the
software application allows the conditions to evolve without forcing the software
application to change. Such a separation is somewhat analogous in terms of both methodology and value to the separation of data and presentation that XML/XSLT provides
over HTML.
Although this site does place much emphasis on SCL, the intent is for this site is to include all issues related
to the stated goal. For example, as a Lead Database Architect at Microsoft, besides material on SCL, I will contribute
content on related Microsoft technologies, especially the Common Language
Runtime (CLR), SQL Server 2005, and Analysis Services 2005.
My years at Microsoft have taught me that taking
technologies "out of the lab" or the out-of-reach fringes and into the mainstream
is a daunting task. For example, when I worked in the SQL Server 7.0 OLAP product
group in 1998, I really thought that the release of the OLAP into the mainstream
would immediately rock the world. With such software, hundreds of thousands of small
and mid-sized businesses could have access to the same information as the "CXX"
(Chief something or other) folks at the large corporations. Although it is now the
#1 OLAP, it took years to "socialize" the technology in the mainstream audience.
Usage scenarios had to be identified, data integration disconnects had to be bridged,
adequate performance of other mainstream technology (also with great TCO - total
cost of ownership) had to catch up, standards such as XML had to gell to pave a
smoother road. Bringing SCL to the mainstream
presents significant challenges including,
but undoubtedly not limited to:
All of those items will be the subject of upcoming articles.
Upon the release of the SCL SDK (SCL Software Development Kit), I hope the community of developers on the Microsoft platform can begin experimenting with SCL to develop best practices and usage scenarios. As a first in a series of
usage scenarios, I offer
MetaValue Database Columns.
Please feel free to contact me at either eugenea@microsoft.com or eugene@softcodedlogic.com.
Sincerely,
Eugene