Software applies knowledge to data. This is true for all software from business applications to video games. The knowledge inside software is generally a combination of procedural knowledge and declarative knowledge. Procedural knowledge is information about how to perform a task, like how to make a car and hotel reservation using an electronic travel broker. Procedural knowledge is easy to express using a general-purpose programming language like C#, Visual Basic, or any of their predecessors.
Declarative knowledge, on the other hand, is about the relationships in data. We often refer to declarative knowledge as business rules. For example, a business rule might say that hotel reservations made at least 14 days in advance receive a 10% discount, unless the cost of the room is less than $100. The date and the price share a relationship and can affect each other. Expressing this type of knowledge using a general-purpose programming language isn't difficult...