what is the differences between assembler, compiler, interpreter, nonprocedural language, structured software, and object-oriented software?
OK here it goes:
Assembler- A computer program that takes computer instructions and converts them into a pattern of bits that the computer can understand and perform by it certain operations.
Compiler- This is a special program that processes statements written in a programming language and turns them into machine language that a computer's processor uses.
Here is an article that explains the difference between a compiler and an interpreter.
Structured Programing- a subset of procedural programming that enforces a logical structure on the program being written to make it more efficient and easier to understand and modify.
I will TRY to give short answers to a very multifaceted question.
Assemblers and compilers both convert code into machine language which is a series of ones and zeros, yeses and nos, or ons and offs (they all mean the same thing) that your computer can understand - but you cannot.
An assembler converts low level (assembly) language which consists of readable, or almost readable English-like words.
A compiler converts high level language directly into machine language. A high level language is usually structured even more like English but it also combines low level language commands to get more complicated things done in one step. For example - using a high level language a programmer might be able to amortize loan payments just by entering loan amounts, interest and months that is collected from a user. With a low level language you have to tell the computer the entire formula and how to use it to calculate payments.
Compiling and assembling are done before the software is run. An interpreted language is one that is not converted to machine language until it is actually run on you computer. It is interpreted into machine as it is run, every time it is run. There are pluses and minuses to this but with computers being as fast as they are now they run just about as fast as compiled or assembled code plus they are much more portable. Meaning they can be used on more operating systems etc. without having to be re-written for each system.
Structural software is procedural. In the old days when you wrote a program it ran from beginning to end using every line. If there were lines you wanted to skip at certain times you had to figure out how to tell the computer to skip those lines at that time. This made for what was called "spaghetti code" which was very hard to understand, keep track of and fix.
A procedural language executes code in blocks (procedures) and executes only the blocks you tell it to execute.
Let's say you are writing a progam that performs math calculations for a user. With a non-procedural language if the user entered two numbers and wanted them added together it was easier adding them together than it was telling the program NOT do multiply them together, divide one by the other, get the square roots of the numbers, etc.
With a procedural language the user makes his choices and you execute only the blocks of code you want without having to specifically skip over needless code. Each block of code, or procedure, is kept on a separate page so to speak and the programmer can look at each procedure by itself without all the other code there to cause confusion.
Object oriented programming (OOP) uses objects for programming. I know - a circular definition. Software objects represent real life objects. If you are writing a game program involving cars and using OOP you might define an object called "car". Then you could define the things this car can do such as accelerate, turn left, honk horn, stop.
Now you can set up a new object that is a specific car and give it more definition. Your game player might want to drive a blue 1957 Chevy. Once you give your new car the characteristics of a blue 1957 Chevy you do not have to re-tell it how to accelerate, turn left, etc. it already knows how to do all of that since it is already a "car"
There is more to OOP than this but that example really gives a good idea of what it means. OOP has three characteristics. They are inheritance, polymorphism and encapsulation. You can Google those if you want to know more.
is assembler required to be present in memory all the times ?
compiler - converts the whole program to machine language
interpreter - interprets the code by line by line i.e interprets the high level language line by line as it runs
assembler - collects the required information and converts into the bits and then performs the tasks
can you just asked one question and then asked another?
compiler-converts high level language into low level language.
Assembler-converts the computer instructions into pattern of bits.
Other people asked questions on similar topics, check out the answers they received:
Other people asked questions on various topics, and are still waiting for answer. Would be great if you can take a sec and answer them