Wednesday, 19 August 2015

Generations Of Computer

Generations Of Computer



The history of computer development is often in reference to the different generations of computing devices. Each of the five generations of computers is characterized by a major technological development that fundamentally changed the way computers operate. Most developments resulted in increasingly smaller, cheaper, more powerful and more efficient computing devices.

Each of the five generations of computers is characterized by a major technological development that fundamentally changed the way computers operate.





What Are the Five Generations of Computers?



In this Webopedia reference article you'll learn about each of the five generations of computers and the technology developments that have led to the current devices that we use today. Our journey starts in 1940 with vacuum tube circuitry and goes to the present day -- and beyond --  with artificial intelligence.



First Generation (1940-1956) Vacuum Tubes

The first computers used vacuum tubes for circuitry and magnetic drums for memory, and were often enormous, taking up entire rooms. They were very expensive to operate and in addition to using a great deal of electricity, generated a lot of heat, which was often the cause of malfunctions.
First generation computers relied on machine language, the lowest-level programming language understood by computers, to perform operations, and they could only solve one problem at a time. Input was based on punched cards and paper tape, and output was displayed on printouts.
The UNIVAC and ENIAC computers are examples of first-generation computing devices. The UNIVAC was the first commercial computer delivered to a business client, the U.S. Census Bureau in 1951.
A UNIVAC computer at the Census Bureau

A UNIVAC computer at the Census Bureau.


Second Generation (1956-1963) Transistors

Transistors replaced vacuum tubes and ushered in the second generation of computers. The transistor was invented in 1947 but did not see widespread use in computers until the late 1950s. The transistor was far superior to the vacuum tube, allowing computers to become smaller, faster, cheaper, more energy-efficient and more reliable than their first-generation predecessors. Though the transistor still generated a great deal of heat that subjected the computer to damage, it was a vast improvement over the vacuum tube. Second-generation computers still relied on punched cards for input and printouts for output.
Second-generation computers moved from cryptic binary machine language to symbolic, or assembly, languages, which allowed programmers to specify instructions in words. High-level programming languageswere also being developed at this time, such as early versions of COBOL and FORTRAN. These were also the first computers that stored their instructions in their memory, which moved from a magnetic drum to magnetic core technology.
The first computers of this generation were developed for the atomic energy industry.

Third Generation (1964-1971) Integrated Circuits

The development of the integrated circuit was the hallmark of the third generation of computers. Transistors were miniaturized and placed on silicon chips, called semiconductors, which drastically increased the speed and efficiency of computers.
Instead of punched cards and printouts, users interacted with third generation computers through keyboards andmonitors and interfaced with an operating system, which allowed the device to run many different applications at one time with a central program that monitored the memory. Computers for the first time became accessible to a mass audience because they were smaller and cheaper than their predecessors.

Fourth Generation (1971-Present) Microprocessors

The microprocessor brought the fourth generation of computers, as thousands of integrated circuits were built onto a single silicon chip. What in the first generation filled an entire room could now fit in the palm of the hand. The Intel 4004 chip, developed in 1971, located all the components of the computer—from the central processing unit and memory to input/output controls—on a single chip.
In 1981 IBM introduced its first computer for the home user, and in 1984 Apple introduced the Macintosh. Microprocessors also moved out of the realm of desktop computers and into many areas of life as more and more everyday products began to use microprocessors.
As these small computers became more powerful, they could be linked together to form networks, which eventually led to the development of the Internet. Fourth generation computers also saw the development ofGUIs, the mouse and handheld devices.

Fifth Generation (Present and Beyond) Artificial Intelligence


Fifth generation computing devices, based on artificial intelligence, are still in development, though there are some applications, such asvoice recognition, that are being used today. The use of parallel processing and superconductors is helping to make artificial intelligence a reality.
Fifth generation computing devices, based on artificial intelligence, are still in development, though there are some applications, such as voice recognition, that are being used today. The use of parallel processing and superconductors is helping to make artificial intelligence a reality. Quantum computation and molecular andnanotechnology will radically change the face of computers in years to come. The goal of fifth-generation computing is to develop devices that respond to natural language input and are capable of learning and self-organization.

Thursday, 16 July 2015

Software as a Product vs. Software as a Service

Software as a Product vs. Software as a Service

“Software as a Service”, or SaaS, is a concept you will be hearing more and more about in the coming months and years. It is an alternative to the more established, yet increasingly less popular software as a product solution. SaaS solutions come in all shapes and sizes, yet if you are looking to invest in such a solution for your organization it is in your benefit to make sure that the product is extensible, scalable, and integratable based on the user experience you are looking to attain. After all, frequent software upgrades, easy integration with third party applications, and easy accommodations for growth are the key benefits of SaaS over software as a product (SaaP).
Software as a Service
SaaS solutions deliver applications over the Internet, and charge a regular fee for its use. A SaaS solution is in essence a web-based software that is hosted exclusively by the provider, as opposed to being downloaded upon purchase and subsequently hosted by the client. The provider in turn furnishes the client with access to the application in accordance with agreed-upon security, availability, and performance standards. As such, SaaS applications run exclusively on the provider’s servers. All a client needs in order to access the software is an Internet connection. An example of a SaaS solution is a solution like Prezi and, of course, Bynder.
Software as a Product
Software as a product solutions, on the other hand, require you to purchase a license to use a solution that you will then have to host yourself. An example of this would be Microsoft Office 2011, or any on-premise digital asset management solution. Software as a product solutions are an expensive one-time purchase, with no monthly usage fees but extensive maintenance and update costs.
Generally, you do need Internet access to run a software as a product solution, but rather can use offline or with an intranet connection. However, whenever a software update is released, users generally have to purchase it at an additional cost, although it is usually less than the cost of the original purchase. Although upgrades are usually not strictly necessary (the software works offline, independently), it is recommended to purchase them anyway as they allow users to enjoy fixes and new features. Moreover, upgrading may be a good idea if you want to work with materials created on the new version of the software. Although Microsoft is very good at supporting older, outdated software versions, not all companies are as understanding. Some will even stop support for some, if not all, services as soon as a new version is released, leaving users with an expensive solution that is no longer usable.
Future-Proof
With a SaaS solution, however, you purchase a hosting service and the rights to use a software that is future-proof. As a result, the provider is responsible for maintaining the hardware (which obviously falls fully under the jurisdiction of the provider), upgrades which are rolled out system-wide as soon as they are released (and usually tend to be free), and secure data backups. In short, with a SaaS solution the burden of making sure that services remain operational and at peak performance levels lies squarely on the vendor. A software as a product solution will give you the tools the companies feels you need to manage your solution on purchase, but no technical support, access to future updates, or a guarantee that your software is future-proof.

Wednesday, 8 April 2015

Copy Constructor in C++

  1. COPY CONSTRUCTOR
  2. A copy constructor is a special constructor in the C++ programming language for creating a new object as a copy of an existing object.
The copy constructor is a constructor which creates an object by initializing it with an object of the same class, which has been created previously. The copy constructor is used to:Initialize one object from another of the same type.
  • Copy an object to pass it as an argument to a function.
  • Copy an object to return it from a function.
  • Don't write a copy constructor if shallow copies are ok
  • If the object has no pointers to dynamically allocated memory, a shallow copy is probably sufficient. Therefore the default copy constructor, default assignment operator, and default destructor are ok and you don't need to write your own.

    If you need a copy constructor, you also need a destructor and operator=

    If you need a copy constructor, it's because you need something like a deep copy, or some other management of resources. Thus is is almost certain that you will need a destructor and override the assignment operator.

    Copy constructor syntax

    The copy constructor takes a reference to a const parameter. It is const to guarantee that the copy constructor doesn't change it, and it is a reference because a value parameter would require making a copy, which would invoke the copy constructor, which would make a copy of its parameter, which would invoke the copy constructor, which ...
    Here is an example of a copy constructor for the Point class, which doesn't really need one because the default copy constructor's action of copying fields would work fine, but it shows how it works.
    //=== file Point.h =============================================
    class Point {
        public:
            . . .
            Point(const Point& p);   // copy constructor
            . . .
    //=== file Point.cpp ==========================================
    . . .
    Point::Point(const Point& p) {
        x = p.x;
        y = p.y;
    }
        . . .
    //=== file my_program.cpp ====================================
    . . .
    Point p;            // calls default constructor
    Point s = p;        // calls copy constructor.
    p = s;              // assignment, not copy constructor.
    

    Difference between copy constructor and assignment

    A copy constructor is used to initialize a newly declared variable from an existing variable. This makes a deep copy like assignment, but it is somewhat simpler:
    1. There is no need to test to see if it is being initialized from itself.
    2. There is no need to clean up (eg, delete) an existing value (there is none).
    3. A reference to itself is not returned.

Tuesday, 3 March 2015

Open Source Projects Released By Google

Google has released over 20 million lines of code and over 900 projects. Many engineers work on open source projects full time, and even more use their 20% time to create new projects or contribute to their favorite existing projects. See the full list of released projects on Google Project Hosting.
  • Android

    Android is a software stack for mobile devices that includes an operating system, middleware, and key applications.
  • Chromium

    The Chromium Projects include Chromium and Chromium OS, the open-source projects behind the Google Chrome browser and Google Chrome OS, respectively.
  • Closure Tools

    The Closure tools help developers to build rich web applications with JavaScript that is both powerful and efficient. The Closure tools include:Closure Complier, Closure Library, Closure Templates, and Closure Linter.
  • Ganeti

    Ganeti is a cluster virtual server management software tool built on top of existing virtualization technologies such as Xen or KVM and other Open Source software.
  • Gerrit

    Gerrit is a web based code review system, facilitating online code reviews for projects using the Git version control system.
  • Go

    The Go programming language is an open source project to make programmers more productive. Go is expressive, concise, clean, and efficient. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.
  • Google Web Toolkit

    The Google Web Toolkit (GWT) is a development toolkit for building and optimizing complex browser-based applications. GWT is used by many products at Google, including Google AdWords and Orkut.
  • Guava

    The Guava project contains several of Google's core libraries that we rely on in our Java-based projects: collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.
  • LiquidFun

    LiquidFun is a 2D rigid-body and fluid simulation C++ library for games based upon Box2D. It provides support for procedural animation of physical bodies to make objects move and interact in realistic ways.
  • Native Client

    Native Client is an open-source technology for running native code in web applications, with the goal of maintaining the browser neutrality, OS portability, and safety that people expect from web apps.
  • Tesseract OCR

    Tesseract is considered one of the most accurate free software OCR engines currently available.
  • V8 JavaScript Engine

    V8 is Google's open source, high performance JavaScript engine. It is written in C++ and is used in Google Chrome, Google's open source browser.
  • WebM

    The WebM project is dedicated to developing high-quality video compression technology that is freely available to everyone.
  • ZXing

    ZXing (pronounced "zebra crossing") is an open-source, multi-format 1D/2D barcode image processing library implemented in Java.

10 Programming Languages You Should Learn Right Now

1. Java

Java

IMAGE: MASHABLE COMPOSITE. IMAGE: WIKIMEDIA COMMONS
What it is: Java is a class-based, object-oriented programming language developed by Sun Microsystems in the 1990s. It's one of the most in-demand programming languages, a standard for enterprise software, web-based content, games and mobile apps, as well as the Androidoperating system. Java is designed to work across multiple software platforms, meaning a program written on Mac OS X, for example, could also run on Windows.
Where to learn it: Udemy, Lynda.com, Oracle.com, LearnJavaOnline.org.

2. C Language

C Language

IMAGE: MASHABLE COMPOSITE. IMAGE: WIKIMEDIA COMMONS
What it is: A general-purpose, imperative programming language developed in the early '70s, C is the oldest and most widely used language, providing the building blocks for other popular languages, such as C#, Java, JavaScript and Python. C is mostly used for implementing operating systems and embedded applications.
Because it provides the foundation for many other languages, it is advisable to learn C (and C++) before moving on to others.

3. C++

C Plus Plus

IMAGE: MASHABLE COMPOSITE. IMAGE: WIKIMEDIA COMMONS
What it is: C++ is an intermediate-level language with object-oriented programming features, originally designed to enhance the C language. C++ powers major software like Firefox, Winampand Adobe programs. It's used to develop systems software, application software, high-performance server and client applications and video games.

4. C#

C Sharp

IMAGE: MASHABLE COMPOSITE. IMAGE: WIKIMEDIA COMMONS
What it is: Pronounced "C-sharp," C# is a multi-paradigm language developed by Microsoft as part of its .NET initiative. Combining principles from C and C++, C# is a general-purpose language used to develop software for Microsoft and Windows platforms.

5. Objective-C

Objective-C

IMAGE: MASHABLE COMPOSITE. IMAGE: WIKIMEDIA COMMONS
What it is: Objective-C is a general-purpose, object-oriented programming language used by theApple operating system. It powers Apple's OS X and iOS, as well as its APIs, and can be used to create iPhone apps, which has generated a huge demand for this once-outmoded programming language.

6. PHP

PHP

IMAGE: MASHABLE COMPOSITE. IMAGE: WIKIMEDIA COMMONS
What it is: PHP (Hypertext Processor) is a free, server-side scripting language designed for dynamic websites and app development. It can be directly embedded into an HTML source document rather than an external file, which has made it a popular programming language for web developers. PHP powers more than 200 million websites, including Wordpress, Digg andFacebook.

7. Python

Python

IMAGE: MASHABLE COMPOSITE. IMAGE: WIKIMEDIA COMMONS
What it is: Python is a high-level, server-side scripting language for websites and mobile apps. It's considered a fairly easy language for beginners due to its readability and compact syntax, meaning developers can use fewer lines of code to express a concept than they would in other languages. It powers the web apps for Instagram, Pinterest and Rdio through its associated web framework, Django, and is used by Google, Yahoo! and NASA.
Where to learn it: Udemy, Codecademy, Lynda.com, LearnPython.org, Python.org.

8. Ruby

Ruby

IMAGE: MASHABLE COMPOSITE. IMAGE: WIKIMEDIA COMMONS
What it is: A dynamic, object-oriented scripting language for developing websites and mobile apps, Ruby was designed to be simple and easy to write. It powers the Ruby on Rails (or Rails) framework, which is used on Scribd, GitHub, Groupon and Shopify. Like Python, Ruby is considered a fairly user-friendly language for beginners.
Where to learn it: Codecademy, Code School, TryRuby.org, RubyMonk.

9. JavaScript

JavaScript

IMAGE: MASHABLE COMPOSITE. IMAGE: WIKIMEDIA COMMONS
What it is: JavaScript is a client and server-side scripting language developed by Netscape that derives much of its syntax from C. It can be used across multiple web browsers and is considered essential for developing interactive or animated web functions. It is also used in game development and writing desktop applications. JavaScript interpreters are embedded in Google's Chrome extensions, Apple's Safari extensions, Adobe Acrobat and Reader, and Adobe's Creative Suite.
Where to learn it: Codecademy, Lynda.com, Code School, Treehouse, Learn-JS.org.

10. SQL

SQL

What it is: Structured Query Language (SQL) is a special-purpose language for managing data in relational database management systems. It is most commonly used for its "Query" function, which searches informational databases. SQL was standardized by the American National Standards Institute (ANSI) and the International Organization for Standardization (ISO) in the 1980s.