IBM’s new semantic technology enables companies to make better use of their information by enabling software to be more intelligent, adaptive, and efficient.It consists of three major areas; Ontology Specification Languages, Ontology Management Systems and Ontology Query Languages. The following semantic technologies are from IBM research labs from around the world:
IBM Integrated Ontology Development Toolkit
- Ontology Management System
- Ontology-based Web Services for Business Integration
- Emerging Technologies Toolkit
- Agent Building and Learning Environment (ABLE)
Here’s a related article that shows how to perform root-cause analysis with the Autonomic Management Engine and ABLE components.
I guess we need the database file system first, and than the landscape will open up for this kind of new software solution.
It’ll be nice when all software is based off semantics and database driven.
The examples they provide don’t compile in *nix until you rename the bin/com/ibm/jobc/ob2/inferencing/ABLE/rdf.arl file to RDF.arl for case sensitive filesystems
Would someone knowledgeable in this field (Rayiner, Bascule, anyone?) mind providing more information on the types of programming languages (dare I say the different paradigms of programming), and a basic summary of some other useful terminology used when comparing languages.
I don’t really know where to start, so I guess I’ll just post some of what I do and don’t know, and request clarifications/corrections.
Various “paradigms” of programming:
Object oriented programming: Abstraction/encapsulation, code reusability through objects, subtype polymorphism. Objects – data types with functions and associated instance/static variables.
Procedural programming: I would only hesitate a wild guess since I have never read a formal definition that this is similar to C, Basic, and other languages that do not support objects in a meaningful way.
Functional programming: (paraphrased) “Where the evaluation of expressions is emphasized, rather than the execution of commands”. No idea what that means to me as a programmer.
Intentional programming: Not the slightest idea.
Concurrent programming: Ditto.
Dynamic typing/binding: I believe this means that the correct method is always called even when an object has been cast to a parent class, or other special cases of subtype polymorphism.
Static/Dynamic type checking: Not 100% sure. Does this mean that the language has the ability to change the type of an already instantiated variable? Or something completely different?
Thanks to anyone who takes the time to respond. Programming languages, as with anything technical, have lots of terminology and I’m not quite up to date. I won’t be offended if someone says RTFM, but I would appreciate any info.
Declarative programming: Declarative programming describes a set of conditions, and lets the system figure out how to fulfill them. The SQL statement SELECT COUNT(*) FROM XYZ is an example for the declarative approach.
Reflective programming: Extensability of the language through self-modifiaction. ie. every command, object etc. can be referenced/modified actually in the language.
Imperative/Procedural programming: Imperative programming gives a list of instructions to execute in a particular order — Java program that counts the number of words in a text file is an example of the imperative approach.
Intentional programming: see http://c2.com/cgi/wiki?IntentionalProgramming
Concurrent programming: The idea is that the language allows parallelisation intrinsically by detailing in the language which parts of the code can be executed in parallel, and which parts have to be serial. eg. x+7=y and y*y=z have to be executed in serial fashion, x+7=y, x*x=z can be parallel.
Dynamic typing/binding: The distinction is when the code assigns the type of an object. In C it is at compile time, in other languages it can be at runtime, this runtime ability is useful as…
Static/Dynamic type checking: an object can change it’s type after it has been assigned (instantiated), eg. changing a variable from a real to an integer if user input is an integer number.
btw, this article is way behind the bleeding edge of programming, reflection and provability need to feature highly in any language evaluation, not just static metadata definitions as is talked about above.