Monday, 28 July 2014

Kick Start to OpenSource


Following article gives you on how you can introduce yourself to open-source environment. 
The first mandatory requirement is to get a open-source Operating system installed on your machine. Or alternatively, find a problem and set up an suitable environment to deploy.

Firstly, all open source contributors share their code. Where and How?

The famous open-source repositories where you can find open-source projects are: SourceForge and GitHub. 1000's of code repo are available from distinct domains. You can download, install, run and add an improvement.
Follow the links:
You can go to a specific project and download all available resource. Most of the codes also have manual on how to run them and required environment set up. 
Example: New Command for Xen Scheduler
And there are some really interesting applications having thousand of weekly downloads. That should give a good kick start. Remember, you will have to be the one to explore the requirements. Open-source comes with less documentation, more challenges and hyper learning. You should be ready to explore the environment and really understand how system around us works.

There are numerous ways you can contribute to the open-source community. It could be a patch, code, documentation, theme design, art work etc. 
Find out more details from "Wiki How" .

There are numerous open source tools available. Can you build your own new API or a tool? Here is a exhaustive list of more than required number of tools.

However, to be more specific, your problems should look like:
I want to translate Notepad++ to Kannada and and i got the source Here. Am planning to contribute something to programming language "go" from google. Like report a bug or resolve an issue etc. and Here is where i found the documentation. I want to build my own new mathematical equation editor and Here is my reference.

Well, Enjoy Coding!

Sunday, 27 July 2014

Cloud Services - Are They Coming With A Silver Lining?

(Image reference: 

“software : from pay-use to pay-for-use ” - Prakash B. Hegade

1. Introduction
Software and the line of lane
During the 1960s software started getting separated from hardware [1]. Until then there was no such distinction between hardware and software. It was Von Neuman architecture of memory, which Von Neuman learned accidently by American Army’s ENIAC project led to the birth of software. It gave a new option of programming solutions through software.

It was necessary to give opportunities to software service companies and vendors to develop and market the same product to many users in various fields. The IBM System 360 family of computers which came with the concept of a compatible family opened up an account for this at the beginning of 1964. Furthermore IBM separated the sale of hardware and software from 1969 enabling software developers to develop software compatible with IBM products. The advent of the minicomputer industry made it possible for smaller organizations to purchase their own computers, which needed very different software to run on them. These were the major events which led to the reorganization of the computer hardware and software industries. And it was during this time of 1970s with the development of computer technology and diverse applications, many software service firms started to gain prominence.

With time the process of software being built started to evolve and improve. Software development started to follow a process. The first conference of software engineering was organized in 1968 by NATO science committee [2]. The goal of this conference was “the establishment and use of sound engineering principles in order to obtain reliable, efficient and economically viable software”.  This means there was necessity of proper techniques to build reliable, efficient and economically feasible software.  In 1970 Royce proposed water-fall life cycle process for development of software which was inspired by established engineering principles.  The model had separation of phases of software development activity which was too strict and inflexible. In later seventies came better evolutionary model change mini-cycle. Also Manny Lehman started to formulate, his now famous laws of software evolution.

It was in nineties software evolution gained acceptance and became popular. This led to many other process models[G1] like evolutionary development, staged model, spiral model etc. And today many other crucial activities like testing, impact analysis, cost estimation, software quality, software configuration management, software measurement, re-engineering have become part of software development activity.

Software, As Classified Today
Today’s dictionary defines software as the “programs used to direct the operation of a computer, as well as documentation giving instructions on how to use them and anything that is not hardware but is used with hardware”.  Amy Nutt of Articlebase says today the term 'computer software' means written programs, rules, or codes, along with related documentation regarding the operation of a computer system that is stored in read/write memory. Software directs the operation and tells the computer what to do. They can be broadly classified into two categories: system software[G2] and application software[G3]. The following sections talk about business software like reports, invoice; collaboration software like documents, mails; software used in companies or organizations to develop applications etc. or to say in short; about application software rather than system software.

Software as a Service
As explained in the traditional way in which application is being deployed into company undergoes a time consuming process. The application is first being installed. It is then configured as per the company requirements and environment. The configured application is tested to check if it runs as expected. It is secured and then put into use. Then it undergoes the periodic updations. This process happens for every application that needs to be deployed, provided company has required hardware and software.

Above mentioned is not the only way to get application software running., Software as a Service company that distributes business software on subscription basis says open the browser, log in, customize the application which we provide according to need and start using it. At the end of the day, pay for what you have used. No need to manage any hardware or software or no need to worry about any upgrades. And most importantly the resources can be scaled up and down very easily.

And this new way of using applications is what defined as “cloud computing.” Just like electricity, telephone or water service where we get a bill of usage periodically, the same happens with the software application that we want to use. Gallaugher says “when folks talk about cloud computing they’re really talking about replacing computing resources—either an organization’s or an individual’s hardware or software—with services provided over the internet”. He also adds “the name actually comes from the popular industry convention of drawing the internet or other computer network as a big cloud”.

Cloud resembles the good old main frame systems where all the processing used to happen on mainframes and delivered to dumb terminals. Even in cloud there is a work load shift from user’s local machine to cloud that is hosting the application. The networks of computers which form the cloud take away the processing from local machine. The following section explains the evolution of cloud.

How new is this concept of cloud?
“The interesting thing about Cloud Computing is that we’ve redefined Cloud Computing to include everything that we already do. . . . I don’t understand what we would do differently in the light of Cloud computing other than change the wording of some of our ads.”
-          Larry Ellison, quoted in the Wall Street Journal, September 26, 2008
As described by many, cloud is just a new term but not new as a concept. According to Vouk (2008:235-246) cloud computing builds upon decades of research in distributed computing[G4], grid computing [G5], utility computing [G6], and more recently, networking, web and software services.

Armbrust, Fox, et. al (2009) explain the different related terminologies of cloud. According to them cloud covers to both application delivered as services over internet and the software that provide these services. The services from past long time have been referred to as Software as a Service (SaaS). The software in the data centre is part of what we call as a cloud. If the cloud is made available for ‘pay as you use’ to general public, it is a Public Cloud. The service that is being sold is the Utility Computing.  The internal datacenter of a business which is not made available to public is termed as Private Cloud. So cloud computing includes Software as a Service and Utility Computing but does not include Private clouds. The advantage of cloud is that it gives application providers the choice of deploying their product as SaaS and scaling on demand without building or provisioning a data center[G7]. The way SaaS allows the user to offload some problems to the SaaS provider; the SaaS provider can now offload some of his problems to the cloud computing provider.

How did the cloud form?
The first to give prominence to the term cloud computing (and maybe to coin it) was Google’s CEO Eric Schmidt, in late 2006 [3]. The term refers to an important and long term trend: computing over the Internet. It all started with cluster based computing paradigm. The evolution of cluster computing is grid computing. The main difference between both is the way geographically distributed computational resources are managed. Grid offered better productivity and security, better Quality of service and optimal system throughput. It also offered new and highly innovative services to the customer.

The large computing and storage capacity offered by grid technology led to development of another service category which included services like web-mail, web-office, images and videos in web etc, which came be known as cloud services. Subsequently the cloud computing paradigm was defined as a hybrid model of exploiting the resources provided by computer networks. So cloud is natural evolution of grid computing which conceived to satisfy the new demands of users who wanted to move much of their data onto the web. Both grid and cloud maintain the key concepts of distributed computing paradigm. In this transition towards cloud computing new kind of IT services were created for all kinds of applications. One of the main categories happened to be Software as a Service!

2. Software Trend Today and Cloud Services
Customers today expect cheaper software
According to David and Clemens (2003: 04, 49) software is about people. Software is really an expression of the behavior defined by a programmer in much the same way that a novel is the expression of plot and emotion. And an important issue with software is that what value it offers to the customers.

With time the requirements from the software with respect to a user has evolved. “The Consumer Software Buying Trends August 2010” by Elastic Path Research Inc. a survey conducted in U.S. reports that most customers opt for free or cheaply priced software. It reports three out of four (desktop/laptop) software consumers spent less than $100 on software last year, and 22% opted for free or open source software choices. Only a minority (11%) of software consumers spent more than $200.

Cheap software is result of standardization. According to Carr (2004: 35-40) during 1990s there was a huge demand for low cost software solutions. Low cost intends the software solutions which are cheaper to buy, cheaper to upgrade and cheaper to maintain. This in turn resulted in increasing pressure to standardize. Eventually, as the technology continued to advance, the performance of the cheaper versions came to satisfy the needs of most customers, and the basis of competition shifted from specification to prices. As was rightly said by Michael Dell, founder and CEO of Dell that “In the long run all technology tends toward low-cost standard”, it has turned out to be very much true.

Another aspect of Elastic Path Research is free/open source software[G8]. Open source software is available today which are of low cost and have no license fees and they also come with open standards so that they can easily work or integrate with other systems. The findings of Forrester Research by Jeffery Hammond in his “Open Source Software Goes Mainstream,” says from a list of 16 items asked of 2,000 software decision makers for 2009, the use of open-source software has risen to the top. These decision makers are looking for anything, especially in this economy, that can help them “go faster, cheaper, better”. Open source software stands as a low cost alternative for the companies moving from proprietary solutions to open source software solutions.

By all above analysis it is clear that today customers expect low cost or open source software. According to Web 2.0 journal which has listed out 6 benefits from cloud computing, the first one happens to be that cloud gives “reduced cost”. Cloud service is paid incrementally, saving organizations money.

Reduced cost from cloud
Whenever we purchase software, it also requires purchase of software licenses. And it is not always the case that one license allows usage of application for more than one user. The company or the user may not have enough finance to support all software facilities that is needed.  It is risky to buy all the needed resources to run an application when we are not sure if it is the right product needed. Startups may not have enough finance to support with the resources. At all such times using a cloud service could be one possible solution.

We have already talked about open source or free source where user need not pay for software of license. They do come with other disadvantages. According to Murrain (2008) we should not only consider the purchase cost, but also the full cost of using that application over time. Low cost packages can come with setup woes, training costs and processes that just don’t fit the organization. Other than purchase cost, the cost of evaluating software includes many other things like the time spent looking at the application and trying it out to make sure it works for organization i.e. does it come with proper documentation? How much are we paying to get the software? How much does downloading and installation cost? Does it need any new hardware? How much time will customization of software will take in the organization? What is the training time? What is the support cost? What is the maintenance cost? Is the software buggy or not meeting the needs? What of that software goes out of business? Etc. we have such other questions to be answered. Clearly cloud users will not have to face any such situations. Paying for what you use is a better option rather than having cheap or open source software and incurring all above charges.

Consider the startups, researches by the U.S. Bureau of Labor Statistics shows that nearly six in ten businesses shut down within the first four years of operation. As listed by one of the top reasons is running out of cash. To reduce the expense on the resources one possible solution is using the cloud resources. Start ups can reduce the expense by not buying the required software but instead using some available cloud service.

Cloud offers a cost reduced way of running an application along with the provision of easy scaling up or down of the resources. As pointed out by Vaquero, Rodero-Merino, Caceres and Lindner (2009) it shifts the location of the infrastructure to the network to reduce the costs associated with the management of software resources. It provides us an alternative to locally running the applications.

Cloud enables innovation
This is another advantage which falls under benefits listed out by web 2.0 journal. Cloud users no longer have to worry about constant updates and other computing issues. They can concentrate on innovation. According to Aymerich, Fenu and Surcis (2008) cloud computing infrastructure accelerates and fosters the adoption of innovations. It alleviates the need of innovators to find resources to develop, test, and make their innovations available to the user community. Innovators are free to focus on the innovation rather than the logistics of finding and managing resources that enable innovation.

Employees today want to access information from wherever they are
Users of online software applications are growing. Users prefer online applications because they can access information from wherever they are. They need not carry the data along in drives when moving between computers.

According to Kwik of web 2.0 journal (2008) 56% of computer users access to services like web-based email, nearly 40% of computer users store personal photos or videos online. And nearly 30% use online application software, like Google Documents. It is easier to share and collaborate when data is on-line.

Cloud gives Mobility
As said by Kwik, the usage of online application software is nothing but cloud computing. The user may not be aware of the term cloud computing, but they are constantly using it. The data documents, email messages, photographs, applications like word processing and spreadsheets etc which are stored in cyberspace and not on an individual’s computer are all making use of cloud services.

As explained by Aymerich, Fenu and Surcis (2008) storing data in the cloud has some distinct advantages over client-based access. The traditional software applications cannot give the processing power as that when compared to cloud. For instance, users can instantly search over GBs of e-mail online, which is practically impossible to do on a desktop.

Vinter (2009) says cloud computing opens new opportunities for greater collaboration and accessibility, especially among small businesses. Online software applications help people work more productively together and share information in ways that haven’t been previously possible. Team members being at different locations can chat in a same spreadsheet at the same time. Cloud is transforming how business operates. He also adds with the help of cloud computing businesses are discovering new ways to become more agile, flexible, competitive, and innovative.

Consider for example, which provides cloud service and claims to have 3 million users at a time. It provides collaboration applications like chats, docs, discussions, mails, meetings, share, wiki etc. Business applications like assist, business, invoice, reports, recruit etc. Productivity applications like calendar, notebook, sheet, planner etc.

3. Challenges, Platform and Predictions of Cloud service
Cloud services do come with drawbacks. The following section describes some of the major issues related to cloud services.

National Data Protectionism and Application security
According to Thomas (2009:37-41) for social and economic reasons national governments around the world are increasingly concerned about hosting of national data outside or their boundaries. Making use of cloud resources is definitely not their solution. With respect to applications security, beyond authorization is the responsibility of the application and this has always been an area where application developers need help and support. Client side security is improving but remains a challenge largely due to the state of browsers. Applications need to ensure that critical security is performed outside the browser. However these issues have been dealt by the cloud owners. IBM research published some work to address this concern. has demonstrated that using SSL and other best practices they can meet the needs of major enterprises. And many other more companies are tackling with the security issues.

Availability and support
Kim (2009: 65-72) explains about availability issues of cloud. He starts with quoting the examples of the Amazon S3 which suffered two outages in 2008 (2 hours in February and 8 hours in August). Google Gmail was unavailable for 2 hours twice in August. Citrix's GoToMeeting and GoToWebinar were out for a while. RIM's BlackBerry service was out for 18 hours. Even though these outages received wide coverage, availability of cloud is rather high.  Besides having service level agreement users for 100 percent availability can keep an on-premise version of the application, so that they can work offline while cloud is down. It is also necessary for user to select the viable vendors as he may become unable to deliver the service or go out of business. Users also need support for problem resolution. Users may not get adequate support as they are accustomed to with on-premise computing.

Difficulty in application Integration and limited application pattern, model and framework
Forrester report says integration of cloud apps will also be difficult and expensive. Cloud applications will have to be integrated with other applications, user interfaces, services, and databases and is expensive.  Application pattern, model and framework[G9] options will be limited. The very standardization that gives cloud computing its economies of scale may limit how much one can customize applications to meet particular needs.

Cloud platforms
Today there are many cloud service providers. Many of them also initially offer free service for some definite time period. Buyya, Yeo, Venugopal, Broberg, Brandi (2008) discuss about some of the emerging cloud platforms. Amazon Elastic Compute Cloud (EC2) provides a virtual computing environment that enables a user to run Linux-based applications. Amazon, which is considered as poster child and pioneer of cloud computing services by Goia (2008), is also up with many other clouds offering different kinds of services. Google App Engine allows a user to run web applications written using the Python programming language. Microsoft Azure aims to provide an integrated development, hosting, and control Cloud computing environment so that software developers can easily create, host, manage, and scale both Web and non-web applications through Microsoft data centers. Sun (Sun Grid) enables the user to run Solaris OS, Java, C, C++, and FORTRAN based applications. Joyent provides cloud computing infrastructure and services to Web 2.0 developers and Fortune 500 companies.

Cloud Predictions
There are many positive predictions made by experts regarding influence of cloud services for near future. A September 2009 study published by Aberdeen Group revealed top performing companies that have adopted cloud computing have reduced IT costs 18% and data center power consumption by 16%. Gartner Inc. predicts that by 2012, 80 percent of Fortune 1000 enterprises will pay for some cloud-computing service, while 30 percent of them will pay for cloud-computing infrastructure. Gartner report also says Cloud computing will become so pervasive that by 2012, one out of five businesses will own no IT assets at all. According to Renub Research Worldwide Cloud Computing market is growing at a rapid rate and it is expected to cross US$ 25 Billion by the end of 2013. A survey released in March from Sand Hill Group, which provides investment and management advice to companies in the enterprise software, services and solutions market, found that, while 70% of companies it polled spend only 3% of their IT budgets on the cloud, by 2013, 80% will spend between 7% and 30%. All these predictions show a positive way ahead for cloud services.

4. Conclusion

Software need not only be purchased and used; it can also be used like yet another service. User will have to pay only for what he uses. The new trend in usage of software as a service provides many benefits to the users like easy provisioning of resources, easy sharing of data, access from anywhere etc. Along with the benefits it also comes with challenges like security of data, availability and support, integration problems, etc. The managers of companies or users can now take all these issues into consideration and evaluate if the new software to the company has to be bought or rented. It is also a major evolution in the way software is being delivered. Software developers will also have to think the new environment in which software is going to be deployed; i.e. in cloud. There are various cloud platforms from Amazon, Google, SalesForce etc who provide almost every kind of application software services like business, productivity, collaboration etc. Though there are positive future predictions for growth of cloud services and applications being used as a service, it’s only left to time to wait and see what is awaited in near future.


(The definitions are taken from web where sources are mentioned at the end of the document)

Glossary of terms:
[G1] Process model is an iterative, milestone-based approach to the development process. The way in which activities in a systems development life cycle are sequenced, and the time and formality committed to each life-cycle stage. It is the combination of clearly defined life cycle model, project team roles, delivery milestones, and solution development principles.

[G2] System software is the controller of a computer. They help in running the computer hardware and manage the resources of a computer system. Its main purpose is to keep internal details of the system away from the programmer.  The main tasks include controlling the execution of program, perform memory management, processing the resources, provide routine services through libraries, assist in development of applications etc. Operating systems, device drivers, diagnostic tools, servers, utilities etc are few examples to name a few.

[G3] Application software is a user written program to do a specific task. They automate the applications, be it the general applications like spreadsheets, word documents etc which can be used for various purposes or specific applications like industrial software, educational, bank systems etc which get customized according to the needs. The system software controls the execution of the application software.

[G4] Distributed computing in general is any computing that involves multiple computers remote from each other that each have a role in a computation problem or information processing.

[G5] Grid computing (or the use of a computational grid) is applying the resources of many computers in a network to a single problem at the same time - usually to a scientific or technical problem that requires a great number of computer processing cycles or access to large amounts of data.

[G6] Utility computing is a service provisioning model in which a service provider makes computing resources and infrastructure management available to the customer as needed, and charges them for specific usage rather than a flat rate.

[G7] Data center is computer facility designed for continuous use by several users, and well equipped with hardware, software, peripherals, power conditioning and backup, communication equipment, security systems, etc.

[G8] Free and open-source software is freely downloadable, has no cost to purchase, and you have freedom to alter, copy, and redistribute the software to others. Freeware is also freely downloadable, but it's owned by a company or individual and you can't alter, copy, or redistribute it.

[G9] Framework is a real or conceptual structure intended to serve as a support or guide for the building of something that expands the structure into something useful. In computer systems, a framework is often a layered structure indicating what kind of programs can or should be built and how they would interrelate.


Vernon W. Ruttan. Technology, Growth, and Development: An Induced Innovation Perspective. New York: Oxford University Press, Inc. 2001.

Langlois, R.N., and D.C. Mowery. The International Computer Software Industry: A Comparative Study of Industry Evolution and Structure, D.C. Mowery ed., pp. 8-10. New York: Oxford University Press, 1996.

David G. Messerschmitt and Clemens Szyperski. Software Ecosystem: Understanding an Indispensible Technology and Industry. Massachusetts Institute of Technology. 2003.

Tom Mens and Serge Demeyer. Software Evolution. ACM computing classification. Springer - Verlag Berlin Heidelberg 2008.

Jeffery S Hammond. Open Source Software Goes Mainstream: Convert Your Cost-Cutting Crisis Into AN OSS Opportunity. Forrester Research.  April 2009.

Luis M. Vaquero, Luis Rodero-Merino , Juan Caceres, Maik Lindner. A Break in the Clouds: Towards a Cloud Definition. ACM SIGCOMM Computer Communication Review.  Volume 39, Number 1, January 2009.

Francesco Maria Aymerich, Gianni Fenu, Simone Surcis. An Approach to a Cloud Computing Network. IEEE. 2008.

Dave Thomas. Cloud Computing – Benefits and Challenges!  Journal of Object Technology, vol. 8 no. 3. pp. 37-41. May - June 2009.

Won Kim. Cloud Computing – Today and Tomorrow. Journal of Object Technology, vol. 8, no. 1. pp. 65-72. January-February 2009.

Mladen A. Vouk. Cloud Computing – Issues, Research and Implementations. Journal of Computing and Information Technology - CIT 16, 4. pp 235–246. 2008.

Michael Armbrust, Armando Fox, Rean Griffith, Anthony D. Joseph, Randy Katz, Andy Konwinski, Gunho Lee, David Patterson, Ariel Rabkin, Ion Stoica, and Matei Zaharia. Above the Clouds: A Berkeley View of Cloud Computing. UC Berkeley Reliable Adaptive Distributed Systems Laboratory. February 2009.

Rajkumar Buyya, Chee Shin Yeo, Srikumar Venugopal, James Broberg, Ivona Brandi. Cloud computing and emerging IT platforms: Vision, hype, and reality for delivering computing as the 5th utility. ScienceDirect : Future Generation Computer Systems. 2008.

Luis M. Vaquero, Luis Rodero-Merino , Juan Caceres, Maik Lindner. A Break in the Clouds: Towards a Cloud Definition. ACM SIGCOMM Computer Communication Review Volume 39, Number 1, January 2009.

Cloud news desk. 6 Benefits of Cloud Computing. Web 2.0 Journals.
<>. 3 November 2008.
Last visited on July 2014 Unabridged. <>. Random House, Inc. 2010.
Last visited on: July 2014

Ivertech. Open Source Software vs. Proprietary Software.

< >.
Last visited on: July 2014

SQUIDOO. The top 10 reasons startups fail. <>. 2010.
Last visited on: July 2014

Amy Nutt. What is the definition of the computer software?
<>. 17 July 2009.
Last visited on: July 2014

Michelle Murrain. The True Costs of Free and Low-Cost Software: Is that bargain really a bargain?
<>. 15 January 2008.
Last visited on: July 2014

Phillip Kwik.  The Rise and Rise of Cloud Computing: The Majority of Computer Users Now Store Data On-line. <>. 13 September 2008.
Last visited on: July 2014

Steve Vinter. The 'cloud' improves collaboration, saves costs.
<>. 23 January 2009.
Last visited on: July 2014 <>.
Last visited on: July 2014

Stephen E. Arnold. Who Has the Industry Lead in Cloud Computing?
<>. 17 November 2008.
Last visited on: July 2014

David Linthicum. Provocative predictions for cloud computing: How realistic?
<>. 19 January 2010.
Last visited on: July 2014

Fredric Paul. Forrester Asks: Why NOT Run In The Cloud?
<>. 26 August 2009.
Last visited on: July 2014

Hovhannes Avoyan. Stats Show Improving Numbers for Cloud Services.
<>. 6 April 2010.
Last visited on: July 2014

Mircea Goia. Cloud computing, Grid computing, Utility computing - list of top providers.
<>. 22 September 2008.
Last visited on: July 2014

Appendix References:
Career Gears. <>. 2010.
Last visited on: July 2014

Babylon Online Dictionary. <>. 2009.
Last visited on: July 2014

Whatis?com. <,,sid9_gci760724,00.html>. 2008.
Last visited on : July 2014

Whatis?com. < >. 2010.
Last visited on : July 2014

searchDataCenter. < >. 2010.
Last visited on : July 2014

BusinessDictionary. < >.
Last visited on : July 2014

Whatis?com. <,,sid9_gci1103696,00.html>. 2008.
Last visited on : July 2014

[1] The following paragraphs are summarized from Ruttan (2001: 338-340)
[2] The following paragraphs are summarized from Mens, Demeyer (2008: 3-5)
[3] The following paragraphs are summarized from Aymerich, Fenu, Surcis (2008)

Saturday, 26 July 2014

Bird Eye View of Programming Languages - Then and Now

You start browsing over the classification and evolution of programming languages and .....wait!

 Fig 0:  The Various Programming Languages (Image Reference: )

There is so much to take in! How do I perceive them all? 

Here is what I did. Read them all, looked upon the time line and put them in buckets and arranged them in order. Though the order is not perfectly in flow, matches the most. However, the programming languages have greatly changed over time and classification has found versatile differentiation. The progress is so rapid that this article may need several updates in near 05 years. However this article gives the bird eye view and explains how we can put them all together.

Fig 1: Bird Eye View

It all begins with Von Neumann architecture consisting of ALU, memory, input, output and the initiation of programming. Programming began in 1940's. The classification began with machine, assembly and higher level languages.

The Birth Era

Fig 2: Birth Era (Image Reference: )

It was the beginning of programming and classification looked:
  •     Machine Level Languages
  •     Assembly Level Languages
  •     High Level Languages

A machine level language is a binary program which a machine understands. Definitely not human friendly. We dont use it anymore. Why would some one remember and code in 0's and 1's?

Assembly level language is a low level programming language. An assembly instruction consists of an op-code mnemonic along with a list of data, arguments or parameters. There is a very strong correspondence between the language and the architecture's machine code instructions.

To make programming more user friendly came Higher level languages. They are programming languages with strong abstraction from the details of the computer. Makes the process of developing a program simpler and more understandable relative to a lower-level language. Its all we are used to now.


Compiler Era


 Fig 3: Compiler Era (Image Reference: )

Next improvement happened over models of execution in around 1950's for the higher level languages. We hence have classification as interpreted, compiled and translated languages.

Interpreted languages are read and then executed directly, with no compilation stage.

Compiled languages are transformed into an executable form before running. Either they get converted to machine code or intermediate representation which may be further optimized.

Translated or Trans-compiled languages are those where a language may be translated into a lower-level programming language for which native code compilers are already widely available.


The Paradigm Era

 Fig 4: Paradigm Era (Image Reference: )

With advancements in programming came paradigm era in 1970's. There are four major classifications: Imperative, Functional, Logical and Object oriented. It is because we wanted to structure our program and pick the best suited for environment.

Imperative observes incremental change of the program state as a function of time. Execution of computational steps are in an order governed by control structures. It is nothing but procedural programming. Ex: Fortran, Algol, Pascal, Basic, C etc.

Functional originates from mathematics. It is formal way of expressing a language. Here time plays a minor role. Evaluation and using the resulting value is a highlighted concern. Ex: Haskel, Scheme etc.

Logical refers to languages built on axioms, inference rules, queries or more aptly artificial intelligence. Ex: Prolog, Datalog etc.

Yet another paradigm is Object oriented. It models the human interaction with real world phenomenon. It employs the concept of objects to send messages between objects to simulate the temporal evolution of a set of real world phenomena. Ex: C++, Java etc.


Productivity Era


Fig 5: Productivity Era (Image Reference:

From late 90's and 2000, the "Era of Productivity" began. Programming languages started turning out to be specific to every domain. Each domain demanded a constraint and to fulfill came a new set of language. Application size and complexity increased over time and started with various classifications like web, system, software, application, scripting etc.

It started with optimizing one problem with specific language and today we are confused on which one to pick to solve the problem. A Web language is used for creating and editing web pages (HTML, XML, JavaScript) and Software languages for creating executable programs (C, C++, Java). System languages are more concerned with managing a system resources and Application languages for building an application to solve a problem.

Scripting languages are used for wiring together systems and applications at a very high level. They are almost always extremely expressive (they do a lot with very little code) and usually dynamic (the compiler does little, the run-time system does almost everything). 

There hasn't remained today any major classifying criteria for the existing languages to put under a category.

Well, what I can say is, its all a "HYBRID".