Machine language is in a format that the computer’s processor can understand and work with directly.
An assembly language is considered a low-level programming language and is the symbolic representation of machine-level instructions.
Third-generation programming languages are known as high-level languages due to their refined programming structures. High-level languages use abstract statements.
Fourth-generation programming languages focus on highly abstract algorithms that allow straightforward programming implementation in specific environments.
The early 1990s saw the conception of the fifth generation of programming languages (natural languages).
Assemblers, Compilers, Interpreters
Assemblers are tools that convert assembly language source code into machine code.
Compilers are tools that convert high-level language statements into the necessary machine-level format (.exe, .dll, etc.) for specific processors to understand.
A tool called an interpreter does the last step of transforming high-level code to machine-level code.
The greatest advantage of executing a program in an interpreted environment is that the platform independence and memory management functions are part of an interpreter. The major disadvantage with this approach is that the program cannot run as a stand-alone application, but requires the interpreter to be installed on the local machine.
A garbage collector identifies blocks of memory that were once allocated but are no longer in use and deallocates the blocks and marks them as free.
OOP works with classes and objects.
The following breaks down the benefits of OOP:
Modularity The building blocks of software are autonomous objects, cooperating through the exchange of messages.
Deferred commitment The internal components of an object can be redefined without changing other parts of the system.
Reusability Classes are reused by other programs, though they may be refined through inheritance.
Naturalness Object-oriented analysis, design, and modeling map to business needs and solutions.
An object is encapsulated, meaning the data structure (the operation’s functionality) and the acceptable ways of accessing it are grouped into one entity.
Polymorphism takes place when different objects respond to the same command, input, or message in different ways.
Object-oriented analysis (OOA) is the process of classifying objects that will be appropriate for a solution.
Object-oriented design (OOD) creates a representation of a real-world problem and maps it to a software solution using OOP.
Other Software Development Concepts
Data modeling considers data independently of both the way the data is processed and the components that process the data. A data model follows an input value from beginning to end and verifies that the output is correct.
A data structure is a representation of the logical relationship between elements of data.
Cohesion and Coupling
Cohesion reflects how many different types of tasks a module can carry out. If a module carries out only one task (i.e., subtraction) or tasks that are very similar (i.e., subtract, add, multiply), it is described as having high cohesion, which is a good thing. The higher the cohesion, the easier it is to update or modify and not affect other modules that interact with it.
Coupling is a measurement that indicates how much interaction one module requires to carry out its tasks. If a module has low (loose) coupling, this means the module does not need to communicate with many other modules to carry out its job.
Objects should be self-contained and perform a single logical function, which is high cohesion. Objects should not drastically affect each other, which is low coupling.
Application Programming Interfaces
An application programming interface (API) specifies the manner in which a software component interacts with other software components.