Saturday, November 20, 2010

The Computer Influences And New Technology



 Computer System has developed a lot from past decades. It’s very long Journey that Computer has passed through. The System we are looking now is Output of past 4-5 decades rigorous research and hardwork of many great scientists. Below is a brief History of Computer System and it’s developmental phases till now.

1951- 55
 Hardware : Vacuum – Tube computers ; mercury delay line memories.
Methods: Assembly languages ; foundation concepts ;subprograms and data structures.
Languages: Experimental use of expression compilers.

1956 - 60

Hardware: Magnetic tape storage ; core memories ; transistor circuits.
Methods: Early compiler technology ; BNF grammars ; code optimization ; interpreters ; dynamic storage methods  and list processing.
Languages: FORTRAN , ALGOL 58, ALGOL 60, LISP


1961 - 65

Hardware: Families of Compatible architectures ; magnetic disk storage's.
Methods: Multiprogramming Operating Systems ; syntax – directed compilers.
Languages: COBOL , ALGOL 60 (revised) , SNOBOL , JOVIAL ,


1966 - 70

Hardware: Increasing Speed , size decreasing cost ; micro programming ; integrated circuits.
Methods: time Sharing systems ; optimizing compilers ; translator writing systems.
Languages: APL , FORTRAN 66,COBOL 65, ALGOL 68,SNOBol 4, BASIC , PL/I , SIMULA 67 , ALGOL - W


1971 - 75

Hardware: Minicomputers ; small mass storage devices ; semiconductor memories.
Methods: Program verification ; structured programming ; software engineering.
Languages: Pascal , COBOL 74, PL/I(standard), C ,scheme , Prolog.


1976 - 80

Hardware: Micro Computers ;mass storage systems ; distributed computing.
Methods: Data Abstraction ; formal semantics ; concurrent, embedded and real time – Programming Techniques.
Languages: Smalltalk , Ada , FORTRAN 77, ML


1981 - 85

Hardware: Personal Computers ; work-stations; video games ; local area networks ; ARPANET.
Methods: object oriented programming; interactive environments ; syntax – directed editors.
Languages: Turbo Pascal , Smalltalk -80, use of Prolog , Ada 83, Postscript.


1986 - 90

Hardware: Ae of microcomputer ; engineering workstation ; RISC architecture ; Internet
Methods: Client / Server Cpmputing.
Languages: FORTRAN 90,C++ ,SML (Standard ML).


1991 - 95

Hardware: Very Fast inexpensive Workstations and microcomputers ;massively parallel Architectures ; voice , video , fax , multimedia.
Methods: Open Systems ; Environment frameworks.
Languages: Ada 95, Process Language (TCL,  PERL) ,HTML.


1996 - 2000

Hardware: Computers as inexpensive appliances ; personal digital assistants ; World Wide web ; Cable – based Home networking , Gigabyte Storage.
Methods: E – commerce.
Languages: Java , Javascript,XML.



2001 - 2010

Hardware: Laptops , Tablet PC’s , Mobiles , Very fast and huge Work Stations , Storage Capacity upto Terabytes.
Methods: Process Threading , .NET frameworks.
Languages: Visual Basic , .NET , C#.

That is a Brief History for Computer Generation .





Wednesday, November 17, 2010

What Makes a Good Programming Language ?


Many new hundreds of languages are being designed and developed Now a days , which are used for a period of Time and then allowed to fall into disuse.

There are many reasons behind success or failure of a language , sometimes the reason may be External to the Language itself. For Example : use of COBOL or Ada in US was forced in certain areas of Programming development industries by Government mandate. So extensive Usage of A particular language by a large amount of people leads to Greater Success and most of the developments are done in the same Language preferably. Likewise there is reason for success of FORTRAN, cause most of the computer manufacturers strongly supported this language . Many more languages are there which are successful due to many External reasons. Though many of them are failures in history, and to indicate their failure level most of us Don’t know the name of languages which have failed to make them self on the long list !!!

Attributes of a Good Language

Due to major importance of some of these external influences, it is the programmer who ultimately decide which language will survive and which will die !!!

There are many reasons for a Language to Survive in this tough competitive world. Some of the important reasons are enlisted here :

1. Clarity Simplicity and Unity

A programming Language provides a medium to conceptual thinking of new algorithms and also a medium to Execute your thought Process into real Coding Statements. For algorithms to be implemented on a Language it’s a basic need is that the language is quite Clear , simple and Unified in structure . Such that the Primitives of language can be utilized to develop algorithms. It is desirable to have a minimum number of different concepts , so that combining multiple concepts won’t be that complex in nature. It should be simple and regular as possible. This attribute of a language is known as conceptual Integrity.

The main concern of a language now a days is its readability. The syntax of language effects the ease with which programs are written , tested and later used for knowledge or research purpose. A complex syntax language may be easy to write program in, but it proves to be difficult to read and debug the code for later sessions. For example APL programs are so complicated that even the own developers find it difficult to understand after 1-2 months. The language should be simple enough to understand or point out errors.

For Example : the syntax like

Printf(“data “);

Is quite clear with the thought that what its going to perform. Exactly Printing a Statement .

Now consider this

P=Malloc(sizeof(int *));

Is a quite hard to get , unless you are familiar with the language.

2. Orthogonality

The term orthogonality refers to the attribute of being able to combine various features of a language in all possible combinations, with every combination being meaningful . For example, Suppose a language provides with a expression lets say an arithmetical calculation operator .Taking Another Expression facilitated by the language like conditional Statement, which has 2 outputs either 0 or 1 (in some cases TRUE or FALSE ). Now the language should support combination of these two expressions. So that new statement can be formed , and this orthogonality helps to develop many new algorithms.

For Example : let us suppose the two expression that a language support

1 . a+b= c(c > 0)

2. if(condition not false or Zero)then

“Code to Execute”

End if

Now if the language supports orthogonality. Then the combination of the Statement below is valid:

If(a+b>0)then

printf(“a+b in non zero”);

end if.

When a language is flexible in nature, it easy to learn and program. But the drawback is that often the coding compiles without errors ,when there are illegal statements used in the Coding Body of the Program.

3. Naturalness for the application

A language needs a Syntax that, when applied properly, allows the program Structure to reflect the logical structure what a programmer wanted it to. Arithmetic Algorithms ,concurrent algorithms , logic Algorithms and other type of statement have differing natural structures , that can be represented by the Program in that language. The language should provide appropriate data structures, operations, control structures and a natural syntax for the problem to be solved.

For Example :

Consider a real life condition of plates being placed above each plate, this structure is known as Stack. This Stack can be implemented into programming world also. This is used as a data Structure in most of the Languages.

4. Support for Abstraction

Many times languages fail to implement many real life problems into Programs. There is always a gap between abstract data structures and operations. Even most natural Programming language fails to bridge the gap. For Example: Consider a situation where a scheduling is to be done for college student for attending a lecture in a class section ,teacher . Suppose the requirement is to assign a student a section lecture and teacher to attend, which are common task for natural application, but are not Provided by C.

The need of point is to design an appropriate abstraction for the problems solution and then implementing these abstraction using most primitive features of a language. Ideally, the language should provide the data structures, data types and operations to maintain such abstractions .C++ is one of the most used language, that provide such facilities.

5. Ease of Program Verification

The reliability of a programming Language written in a language is always a central Concern. There are many techniques which can be used to keep track of correct functionality of a language. Sometimes testing the Program with random values of the inputs and obtaining corresponding outputs. Program verification should be provided by languages to check and minimize the errors.

6. Programming Environment

The environment also play a vital role is success of a Language. The environment which is Technically weak , may get a bad response of Programmer, rather than a language who has less facility than the former but its environment Is Technically Good. Some of the Good featured of an environment are , Special editors and testing packages tailored to the language may greatly speed up the creation and testing of Programs.

7. Portability of Programs

The important criterion for many programming projects is the Transportability of the resulting program from one computer to another systems. A language which is widely available and do not support different features on different computer System, which may have different hardware, is considered a good language. For Example C , C++ and most of the language now days are Portable in nature.

8. Cost of Use

The most tricky point that always matter a lot in any system, that uses resources. It’s a major element to decide the Evaluation of any programming language , but cost means many different things :

(a). Cost of Program Execution

Program Execution cost s total amount which has been used to implement the program . The research work on design , optimizing compilers , data allocation registers etc. This are the basic things which comes under the cost of Program Execution.

(b). Cost of Program Translation

The next concern is program compilation. The program is compiled many times than it is being executed. In such case , it is important to have a speed and efficient compiler to handle this Job.

(c). Cost of Program Creation, Testing and Use

Another aspect of Cost management. This includes the cost which a programmer charges for his work of creating Project with the Specified features , the cost involving the Testing issues.

(d). Cost Of Program Maintenance

After a program is being installed in a System , then after certain intervals It needs maintenance to run smoothly . The maintenance include the rectification of Error propagated in real time , the updation of Program as need of time .

These are many of the Aspects and Features of a Good Programming Language .

Tuesday, November 16, 2010

Why Study Programming Languages



At this Point of time hundreds and thousands of Programming languages have been designed and implemented, and in Future there will be more and more languages that will be developed as far as need and other features are concerned.The Programming World had been moved a lot way ahead from the day when C was was the only well known and Structured language, but still C is being used Now a days also because of its Freedom and Flexibility. C is considered the basic language from which all modern languages have been developed. So many languages also had the basic skeleton and commonly keywords derived from it.


World Of Languages Many Programmers Use multiple languages to develop Software's,however many Programmer prefer to use only one or two languages for developing Software. A little bit Knowledge of Programming is required Now a days,for example very basic knowledge of HTML allows you to insert images in your web page or make a Particular Text as Bold or Italic Format.

There are many excellent Reasons for having Study of Programming Languages.There are several features which attract Programmer towards a Particular Programming Language apart from that their are many underlying design concepts that effect the language implementation .
Primary Six reasons listed below comes into play most of the Times:

1. To improve your ability to develop effective algorithms



Most of the languages now days comes with lot of features which cams as handy Tools for Programmer,when used in a proper manner leads to many good implementation.But when used in improper manner, can lead to many negative results , like large amount of time and coding wastage. Even a Programmer who had used a particular language for years may not understand all its concepts and features. For Example consider looping concept,it is an handy feature of every Programming Language.When this concept used properly,leads to a better algorithm with Less Coding part. When Same Concept used improperly can leads to many Errors and unwanted results. The Loop can fall into an infinite numbers of iteration , which is not desirable aspect of Program. However , a basic Knowledge of its Principle and implementation allows a Programmer to understand the use and need of concept.This helps to unnecessary usage and leads to many cost efficient programs.The best use of Concepts like OOPS(Object Oriented Programming)logical analysis or concurrent programming,For example requires an understanding of languages that implement these concepts. The nature of programming is very dynamic, New technology , such as World Wide Web has changed the way of programming and had set a higher goals and challenges for Future Programmers. For a programmer to survive in this new environment depends on the way of understanding the language and exploiting it to fulfill the needs.


2. To Improve Use of Your Existing Programming Language



By understanding the basic features of your existing Programming Language can simplify things to better. You can write efficient Codes if you know the basic structure of language . For exampleUnderstanding the concept of data Structures , storage classes like Arrays , strings , lists , or records and to know how they are created and manipulated by your Language.This much details can lead to better understanding and better Coding sense. Knowing the implementation of recursion or understanding how object classes are built allows you yo build more efficient programs consisting of such components.


3. To Increase Your Vocabulary Of useful Programming Constructs



Some peoples use Programming languages to express thoughts , but language also serves the to structure how a person thinks and does other works.Programming Languages are replica of things people work daily.for Example The Concept of Stack has evolved from the way we keep a heap of Plates (i.e Keeping one plate Above other ). Recursion evolve from the fact of Doing same work many times (repetition).Many Physical activities like this has been implemented into Programming Objects. By studying the constructs provided by a wide range of languages, a programmer increases hi programming vocabulary.The understanding of implementation of techniques may prove important, because some language do not support all the feature of the Language that you developed the implementation of technique, so in this case you have to develop your own constructs using the basic facilities provided by the language.

For example

Some language like C or FORTRAN do not provide Co routine feature directly, so here you have to design a Program to use a co routine structure and then implement it As C or FORTRAN program .


4. To Allow Better Choice Of Programming Language



Sometimes a same program can be implemented into various languages. But it depends on the Programmer to choose the Language he wants to implement it or in other way we can say the Language he feels he can implement it with ease.He has to Choose the one from a wide option of languages.For example Suppose we have to develop an program which deals with Arithmetic Calculation .There are many languages using them we can implement the Program . It depends on System Requirement and Programmers Choice to Choose from C or C++ . Developing Web pages also there are many languages like Perl ,Java,PHP etc. Its on Totally Programmer to select the option, cause he knows he Strengths and weakness of Language. So basic knowledge every mostly used Language can came handy in situation .


5. To Make It Easier To Learn A New Language



A programmer who is in continuous touch of a particular language can learn new Languages with more ease than a Starter. Most of the Languages share the same structure of common elements like Data Structure, Keywords , logical operators etc.

For Example

If somebody has learned C then he can easily learn C++ the upper version of it. The structure of both Program are 90% similar , so Previous Knowledge is helpful in learning newer one.


6. To Make It Easier To Design a New Language



The Best thing of extensive knowledge of Programming language can lead you to become a language designer.Now a days many Programmer write their own languages to fulfill their goals and features they wanted to have in a Programming language. Many Application Software are nothing but a form of Programming Languages.For making your own language needs lots of thorough Knowledge of language. Compilers and Assemblers play a key Role in Programming languages.

There are many other good reason to Study The Programming Languages. find Out Yourself by studying one.