It is quite difficult to model the game in procedural-oriented languages.
#Free pascal file time resolution software
The OOP languages (such as Java, C++, C#) let you think in the problem space, and use software objects to represent and abstract entities of the problem space to solve the problem.Īs an example, suppose you wish to write a computer soccer games (which I consider as a complex application). memory bits and bytes, array, decision, loop) rather than thinking in terms of the problem you are trying to solve. The traditional procedural language (such as C and Pascal) forces you to think in terms of the structure of the computer (e.g. OOP languages permit higher level of abstraction for solving real-life problems.In other words, OOP combines the data structures and algorithms of a software entity inside the same box. Since the class is well-encapsulated (compared with the function), it is easier to reuse these classes. The basic unit of OOP is a class, which encapsulates both the static attributes and dynamic behaviors within a "box", and specifies the public interface for using these boxes.Object-oriented programming (OOP) languages are designed to overcome these problems. Subsequently, DoD replaces over 450 computer languages, which were then used to build DoD systems, with an object-oriented language called Ada. The task force proposed to make software behave like hardware OBJECT. Software faults could affect other programs running in computers. Software procedures were often non-sharable and not reusable.(Hardware can share and reuse! Hardware faults are isolated!) Hardware components could be applied to various products, and their integrity normally did not affect other products.More than 80% of the software budget went to maintenance (only the remaining 20% for new software development).80% of the budget went to the software (while the remaining 20% to the hardware).In the early 1970s, the US Department of Defense (DoD) commissioned a task force to investigate why its IT budget always went out of control but without much to show for. In brief, the traditional procedural-languages separate the data structures and algorithms of the software entities. (Imagine using assembly codes, which is a very low level code, to write a computer soccer game. For example, C programs uses constructs such as if-else, for-loop, array, function, pointer, which are low-level and hard to abstract real problems such as a Customer Relationship Management (CRM) system or a computer soccer game. The procedural languages are not suitable of high-level abstraction for solving real life problems.In other words, functions are not well-encapsulated as a self-contained reusable unit. It is very difficult to copy a function from one program and reuse in another program because the the function is likely to reference the headers, global variables and other functions. The programs are made up of functions.Traditional procedural-oriented languages (such as C and Pascal) suffer some notable drawbacks in creating reusable software components: Why re-invent the wheels? Traditional Procedural-Oriented languagesĬan we do this in traditional procedural-oriented programming language such as C, Fortran, Cobol, or Pascal? However, for each new application, we have to re-invent the wheels and write the program from scratch. Since the advent of computer 60 years ago, we have written tons and tons of programs. How about software? Can you "assemble" a software application by picking a routine here, a routine there, and expect the program to run? The answer is obviously no! Unlike hardware, it is very difficult to "assemble" an application from software components. Hardware, such as computers and cars, are assembled from parts, which are reusable components. The components are reusable, e.g., a wheel can be used in many cars (of the same specifications). Similarly, a car is assembled from parts and components, such as chassis, doors, engine, wheels, brake, and transmission. Nevertheless, it is not difficult to set up a machine from hardware components. Of course, you have to make sure that you have the correct interfaces, i.e., you pick an IDE hard disk rather than a SCSI hard disk, if your motherboard supports only IDE you have to select RAMs with the correct speed rating, and so on. You simply put the hardware components together and expect the machine to run. You need not worry whether the motherboard is a 4-layer or 6-layer board, whether the hard disk has 4 or 6 plates 3 inches or 5 inches in diameter, whether the RAM is made in Japan or Korea, and so on. Suppose that you want to assemble your own PC, you go to a hardware store and pick up a motherboard, a processor, some RAMs, a hard disk, a casing, a power supply, and put them together.