Monday, March 5, 2012

Lesson01 : Introduction to Computer Programming


A.    What is computer programming?
The set of statements, people used to communicate with computers these are similar to human language.  The results of the statements are translated into machine code, which computers understand.
Programming languages fall into three broad categories:
  1. Machine languages
  2. Assembly languages
  3. Higher-level languages

B.    The Evolution of Programming Languages

1.       Machine Languages - (first-generation languages :1GL)

          Machine languages are the most basic type of computer languages, consisting of strings of numbers the computer's hardware can use.
          Different types of hardware use different machine code.  For example, IBM computers use different machine language than Apple computers.
2.       Assembly Languages - (second-generation languages :2GL)

          Assembly languages are only somewhat easier to work with than machine languages.
          To create programs in assembly language, developers use cryptic English-like phrases to represent strings of numbers.
The code is then translated into object code, using a translator called an assembler.



        3.   Higher-Level Languages – (Third-generation languages, Fourth-generation languages, Fifth-generation languages)

Higher-level languages are more powerful than assembly language and allow the programmer to work in a more English-like environment.
Higher-level programming languages are divided into three "generations," each more powerful than the last:
                                I.            Third-generation languages (3GL)
                              II.            Fourth-generation languages (4GL)
                            III.            Fifth-generation languages (5GL)
Third-generation languages
          Third-generation languages (3GLs) are the first to use true English-like phrasing, making them easier to use than previous languages.
         3GLs are portable; meaning the object code created for one type of system can be translated for use on a different type of system.
The following languages are 3GLs:
FORTAN                       C
COBOL                                    C++
BASIC                           Java
Pascal                          ActiveX

A Typical C Program Development Environment:




Fourth-Generation Languages:
         Fourth-generation languages (4GLs) are even easier to use than 3GLs.
         4GLs may use a text-based environment (like a 3GL) or may allow the programmer to work in a visual environment, using graphical tools.
         The following languages are 4GLs:
Visual Basic (VB)
VisualAge
Authoring environments
Fifth-Generation Languages:
         Fifth-generation languages (5GLs) are an issue of debate in the programming community – some programmers cannot agree that they even exist.
         These high-level languages would use artificial intelligence to create software, making 5GLs extremely difficult to develop.
         Solve problems using constraints rather than algorithms, used in Artificial Intelligence
E.g.: Prolog

A.    Overall Description

How do you plan on programming a computer? Are you going to create a simple calculator? a document editing application? a multi-functional interactive game? Or something else? Whatever your plans, the road ahead is an interesting one. Computer programming is a challenging and rewarding discipline.
Computer programming is defined as telling a computer what to do through a special set of instructions which are then interpreted by the computer to perform some task(s). These instructions can be specified in one or more programming languages including C#.net, Java, C, and C++.
A computer goes through a set of steps whose purpose is to achieve something. These steps are instructed to the computer by computer programs. Essentially, computer programming is the process by which these programs are designed and implemented.
There are many advantages to learning computer programming such as gaining new skills, being able to tell the computer what to do, and becoming better acquainted with computers. Whether you are a computer hobbyist, a student, an IT professional, or are just curious about the subject, learning how to program a computer will be highly beneficial.
While computer programming can be a great tool used to achieve many things, there are a few misconceptions about it. Let's clear them up!

• You need to have some kind of special software to write programs
It does help, but such software is not required, and for beginners it is better to work without it for the purpose of gaining experience.
To be a computer programmer, you must have vast technical knowledge
While it is true that some computer programming languages are highly technical, most do not require you to have vast technical knowledge. So don’t worry, you don't have to be an expert to write code.
With computer programming, you tell the computer what to do. The more you master the subject, the more power to you!

B.    Computer programming Artifacts (Basically key parts each part will be discuss later with full detail)

The concepts discussed on this page are essential knowledge to anyone who wants to become skilled in computer programming. While some are not universal, these concepts are present in the majority of computer programming languages and/or are a fundamental part of the programming process.
• Algorithm
A set of steps for carrying out a specific task. Algorithms are used extensively in computer programming to arrive at a solution for a problem. The process of creating an algorithm involves documenting all the necessary steps needed to arrive at the solution and how to perform each step. A real world example of an algorithm would be a recipe. The instructions of a typical recipe (add ingredients, mix, stir, etc.) are an algorithm.
• Source code
The actual text used to write the instructions for a computer program. This text is then translated into something meaningful the computer can understand.
• Compiler
A software tool that translates source code into data that the computer can understand. Specifically, a compiler is used to turn source code into object code. The object code is then passed through a program called a linker which turns it into an executable program.
• Data type
The classification of pieces of information in a program. The amount of different data types varies between languages. Typically, there are data types for integers (whole numbers), floating-point numbers (numbers with a decimal part), and single characters. To distinguish between different data types, a computer uses special internal codes.


• Variable
A container which represents a value in a program. Variables can store different types of data including numeric values, single characters, and text strings. The value of a variable can change all throughout a program.
• Constant
The same thing as a variable with one major difference - the value of a constant does not change, while the value of a variable can change all throughout a program.
• Conditional
A set of code that will execute only if a certain condition is true. Conditionals are used to test expressions and perform certain operations accordingly. For example, you could test a number input by the user and if it is too high print the message "The number entered is to high" and the program exits. Thanks to conditionals, a program can work differently every time it runs.
• Array
A special type of variable used in many programming and web languages including PHP, Javascript, and Java that contains a list of related values. For example, a colors array would contain a list of colors.
• Loop
A segment of code that executes repeatedly based on a certain condition. Loops are used to perform tasks repeatedly a certain amount of times. For example, if you needed to print the numbers 1 to 10. You can use a loop for this task instead of manually printing all the numbers.
• Function
A set of code used to carry out specific tasks. A function can take parameters which will affect its output as well as return values. Functions prevent unnecessary redundancy because you can use them as much as needed instead of retyping some code over and over. For example, if you need to multiply two numbers, instead of doing the calculation manually every time, you can supply the data to a function through some parameters which will do it for you.
• Class
A template for a real world objects to be used in a program. For example, a programmer can create a car class which represents a car. This class can contain the properties of a car (color, model, year, etc.) and functions that specify what the car does (drive, reverse, stop, etc.). Classes are used in object-oriented programming.


C.     Programming Languages

1.       Web Languages
Used for creating and editing pages on the web. You can do anything from putting plain text on a webpage, to accessing and retrieving data from a database. Vary greatly in terms of power and complexity.
                                I.            HTML
Hyper Text Markup Language. The core language of the World Wide Web is used to define the structure and layout of web pages by using various tags and attributes. Although a fundamental language of the web, HTML is static - content created with it does not change. HTML is used to specify the content a webpage will contain, not how the page functions.
                              II.            XML
Extensible Markup Language. A language developed by the W3C which works like HTML, but unlike HTML, allows for custom tags that are defined by programmers. XML allows for the transmission of data between applications and organizations through the use of its custom tags.
                            III.            Javascript
A language developed by Netscape used to provide dynamic and interactive content on webpages. With Javascript it is possible to communicate with HTML, create animations, create calculators, validate forms, and more. Javascript is often confused with Java, but they are two different languages.
                            IV.            VBScript
Visual Basic Scripting Edition. A language developed by Microsoft that works only in Microsoft's Internet Explorer web browser and web browsers based on the Internet Explorer engine such as FlashPeak's Slim Browser. VBScript Can be used to print dates, make calculations, interact with the user, and more. VBScript is based on Visual Basic, but it is much simpler.
                              V.            PHP
Hypertext Preprocessor (it's a recursive acronym). A powerful language used for many tasks such as data encryption, database access, and form validation. PHP was originally created in 1994 By Rasmus Lerdorf.
                            VI.            Java
A powerful and flexible language created by Sun MicroSystems that can be used to create applets (a program that is executed from within another program) that run inside webpages as well as software applications. Things you can do with Java include interacting with the user, creating graphical programs, reading from files, and more. Java is often confused with Javascript, but they are two different languages.

2.       Software Languages
                                      
Used for creating executable programs. You can create anything from simple console programs that print some text to the screen to entire operating systems. Vary greatly in terms of power and complexity.

                                            I.            C
An advanced programming language used for software application development. Originally developed by Dennis Ritchie at Bell Labs in the 1970's and designed to be a systems programming language but since then has proven itself to be able to be used for various software applications such as business programs, engineering programs, and even games. The UNIX operating system is written in C.

                                          II.            C++
Descendant of the C language. The difference between the two languages is that C++ is object-oriented. C++ was developed by Bjarne Stroustrup at Bell Labs and is a very popular language for graphical applications.




                                        III.            Visual Basic
A language developed by Microsoft based on the BASIC language. Visual Basic is used for creating Windows applications. The VBScript language (also developed by Microsoft) is based on Visual Basic.

                                        IV.            Java
A powerful and flexible language created by Sun Micro Systems that can be used to create applets (a program that is executed from within another program) that run inside webpages as well as software applications. Things you can do with Java include interacting with the user, creating graphical programs, reading from files, and more. Java is often confused with JavaScript, but they are two different languages.

D.    Basic Programming Concepts

1.       Procedure-oriented programming
A type of programming, where a structured method of creating programs is used. With procedure-oriented programming, a problem is broken up into parts and each part is then broken up into further parts. All these parts are known as procedures. They are separate but work together when needed. A main program centrally controls them all.
Some procedure-oriented languages are COBOL, FORTRAN, and C.

2.       Object oriented programming
A type of programming where data types representing data structures are defined by the programmer as well as their properties and the things that can be done with them. With object-oriented programming, programmers can also create relationships between data structures and create new data types based on existing ones by having one data type inherit characteristics from another one.
In object-oriented programming, data types defined by the programmer are called classes (templates for a real world object to be used in a program). For example, a programmer can create a data type that represents a car - a car class. This class can contain the properties of a car (color, model, year, etc.) and functions that specify what the car does (drive, reverse, stop, etc.)
Some object-oriented languages are C++, Java, and PHP.

E.     Phases Of Execution Of Computer Programming

1.       Source Code

2.       Parsing source code
To 'parse' means to break up into smaller parts. Before source code can be converted into meaningful data for the computer, it has to be parsed. Once this happens, source code is ready for the next step which is compilation.
3.       Compiling source code
Compiling source code refers to turning it into an actual program.When source code is compiled, it is turned into an actual program (machine code) through a series of steps:
4.       Source code is turned into object code by a compiler
Object code is the machine code that is actually executed by the computer. A compiler turns source code into object code, but it is not yet ready to become a program. Before object code can become a program, it has to pass through a linker.
5.       Object code is passed through a linker
A linker is a program that combines various modules and object code files into an executable program. Once the data is passed through a linker, an executable program comes into existence.
NOTE: Machine code is platform specific. So for example, a program that is compiled on Windows will not work on Linux.
6.       Interpreting source code
Interpreting source code refers to turning it into an intermediate form which is executed by a program called an interpreter instead of turning source code directly into machine code like a compiler does.An interpreter interprets the source code into something that the computer can understand.
Which languages go through which process and why
While code written in any programming language must be parsed, some code is compiled, and some code is interpreted.
Code written in languages used for software development such as C, C++, C#, and Delphi is compiled. These languages are designed to create executable programs, so code written in them needs to be compiled.
Code written in languages used for web development such as Javascript, VBScript, PERL, and PHP is interpreted. These languages are designed to create web applications and display data on web pages, not to create executable programs. So code is written in them needs to be interpreted.
It is actually possible to either compile or interpret code written in some high level languages if the circumstances require it. For example, an interpreter is sometimes used during the development stage of a program because the process of compiling a program (if it is a large program) can be time consuming.
F.     Summery
Computer programming is defined as telling a computer what to do through a special set of instructions which are then interpreted by the computer to perform some task(s). These instructions can be specified in one or more programming languages including Java, C, and C++.
A computer goes through a set of steps whose purpose is to achieve something. These steps are instructed to the computer by computer programs. Essentially, computer programming is the process by which these programs are designed and implemented.
The advantages to learning computer programming include gaining new skills, being able to tell the computer what to do, and becoming better acquainted with computers. Computer programming is a challenging and rewarding discipline. Whatever you plan on building, the road ahead of you is an interesting one.