Thursday, July 22, 2010

Computer in 21st Century

The most profound technologies are those that disappear. They weave themselves into the fabric of everyday life until they are indistinguishable from it.

Consider writing, perhaps the first information technology: The ability to capture a symbolic representation of spoken language for long-term storage freed information from the limits of individual memory. Today this technology is ubiquitous in industrialized countries. Not only do books, magazines and newspapers convey written information, but so do street signs, billboards, shop signs and even graffiti. Candy wrappers are covered in writing. The constant background presence of these products of "literacy technology" does not require active attention, but the information to be conveyed is ready for use at a glance. It is difficult to imagine modern life otherwise.

Silicon-based information technology, in contrast, is far from having become part of the environment. More than 50 million personal computers have been sold, and nonetheless the computer remains largely in a world of its own. It is approachable only through complex jargon that has nothing to do with the tasks for which which people actually use computers. The state of the art is perhaps analogous to the period when scribes had to know as much about making ink or baking clay as they did about writing.

The arcane aura that surrounds personal computers is not just a "user interface" problem. My colleagues and I at PARC think that the idea of a "personal" computer itself is misplaced, and that the vision of laptop machines, dynabooks and "knowledge navigators" is only a transitional step toward achieving the real potential of information technology. Such machines cannot truly make computing an integral, invisible part of the way people live their lives. Therefore we are trying to conceive a new way of thinking about computers in the world, one that takes into account the natural human environment and allows the computers themselves to vanish into the background.

Such a disappearance is a fundamental consequence not of technology, but of human psychology. Whenever people learn something sufficiently well, they cease to be aware of it. When you look at a street sign, for example, you absorb its information without consciously performing the act of reading.. Computer scientist, economist, and Nobelist Herb Simon calls this phenomenon "compiling"; philosopher Michael Polanyi calls it the "tacit dimension"; psychologist TK Gibson calls it "visual invariants"; philosophers Georg Gadamer and Martin Heidegger call it "the horizon" and the "ready-to-hand", John Seely Brown at PARC calls it the "periphery". All say, in essence, that only when things disappear in this way are we freed to use them without thinking and so to focus beyond them on new goals.

The idea of integrating computers seamlessly into the world at large runs counter to a number of present-day trends. "Ubiquitous computing" in this context does not just mean computers that can be carried to the beach, jungle or airport. Even the most powerful notebook computer, with access to a worldwide information network, still focuses attention on a single box. By analogy to writing, carrying a super-laptop is like owning just one very important book. Customizing this book, even writing millions of other books, does not begin to capture the real power of literacy.

Furthermore, although ubiquitous computers may employ sound and video in addition to text and graphics, that does not make them "multimedia computers." Today's multimedia machine makes the computer screen into a demanding focus of attention rather than allowing it to fade into the background.

Perhaps most diametrically opposed to our vision is the notion of "virtual reality," which attempts to make a world inside the computer. Users don special goggles that project an artificial scene on their eyes; they wear gloves or even body suits that sense their motions and gestures so that they can move about and manipulate virtual objects. Although it may have its purpose in allowing people to explore realms otherwise inaccessible -- the insides of cells, the surfaces of distant planets, the information web of complex databases -- virtual reality is only a map, not a territory. It excludes desks, offices, other people not wearing goggles and body suits, weather, grass, trees, walks, chance encounters and in general the infinite richness of the universe. Virtual reality focuses an enormous apparatus on simulating the world rather than on invisibly enhancing the world that already exists.

Indeed, the opposition between the notion of virtual reality and ubiquitous, invisible computing is so strong that some of us use the term "embodied virtuality" to refer to the process of drawing computers out of their electronic shells. The "virtuality" of computer-readable data -- all the different ways in which it can be altered, processed and analyzed -- is brought into the physical world.

How do technologies disappear into the background? The vanishing of electric motors may serve as an instructive example: At the turn of the century, a typical workshop or factory contained a single engine that drove dozens or hundreds of different machines through a system of shafts and pulleys. Cheap, small, efficient electric motors made it possible first to give each machine or tool its own source of motive force, then to put many motors into a single machine.

A glance through the shop manual of a typical automobile, for example, reveals twenty-two motors and twenty-five more solenoids. They start the engine, clean the windshield, lock and unlock the doors, and so on. By paying careful attention it might be possible to know whenever one activated a motor, but there would be no point to it.

Most of the computers that participate in embodied virtuality will be invisible in fact as well as in metaphor. Already computers in light switches, thermostats, stereos and ovens help to activate the world. These machines and more will be interconnected in a ubiquitous network. As computer scientists, however, my colleagues and I have focused on devices that transmit and display information more directly. We have found two issues of crucial importance: location and scale. Little is more basic to human perception than physical juxtaposition, and so ubiquitous computers must know where they are. (Today's computers, in contrast, have no idea of their location and surroundings.) If a computer merely knows what room it is in, it can adapt its behavior in significant ways without requiring even a hint of artificial intelligence.

Ubiquitous computers will also come in different sizes, each suited to a particular task. My colleagues and I have built what we call tabs, pads and boards: inch-scale machines that approximate active Post-It notes, foot-scale ones that behave something like a sheet of paper (or a book or a magazine), and yard-scale displays that are the equivalent of a blackboard or bulletin board.

How many tabs, pads, and board-sized writing and display surfaces are there in a typical room? Look around you: at the inch scale include wall notes, titles on book spines, labels on controls, thermostats and clocks, as well as small pieces of paper. Depending upon the room you may see more than a hundred tabs, ten or twenty pads, and one or two boards. This leads to our goals for initially deploying the hardware of embodied virtuality: hundreds of computers per room.

Hundreds of computers in a room could seem intimidating at first, just as hundreds of volts coursing through wires in the walls did at one time. But like the wires in the walls, these hundreds of computers will come to be invisible to common awareness. People will simply use them unconsciously to accomplish everyday tasks.

Tabs are the smallest components of embodied virtuality. Because they are interconnected, tabs will expand on the usefulness of existing inch-scale computers such as the pocket calculator and the pocket organizer. Tabs will also take on functions that no computer performs today. For example, Olivetti Cambridge Research Labs pioneered active badges, and now computer scientists at PARC and other research laboratories around the world are working with these clip-on computers roughly the size of an employee ID card. These badges can identify themselves to receivers placed throughout a building, thus making it possible to keep track of the people or objects to which they are attached.

In our experimental embodied virtuality, doors open only to the right badge wearer, rooms greet people by name, telephone calls can be automatically forwarded to wherever the recipient may be, receptionists actually know where people are, computer terminals retrieve the preferences of whoever is sitting at them, and appointment diaries write themselves. No revolution in artificial intelligence is needed--just the proper imbedding of computers into the everday world. The automatic diary shows how such a simple thing as knowing where people are can yield complex dividends: meetings, for example, consist of several people spending time in the same room, and the subject of a meeting is most likely the files called up on that room's display screen while the people are there.

My colleague Roy Want has designed a tab incorporating a small display that can serve simultaneously as an active badge, calendar and diary. It will also act as an extension to computer screens: instead of shrinking a program window down to a small icon on the screen, for example, a user will be able to shrink the window onto a tab display. This will leave the screen free for information and also let people arrange their computer-based projects in the area around their terminals, much as they now arrange paper-based projects in piles on desks and tables. Carrying a project to a different office for discussion is a simple as gathering up its tabs; the associated programs and files can be called up on any terminal.

The next step up in size is the pad, something of a cross between a sheet of paper and current laptop and palmtop computers. Bob Krivacic at PARC has built a prototype pad that uses two microprocessors, a workstation-sized display, a multi-button stylus, and a radio network that can potentially handle hundreds of devices per person per room.

Pads differ from conventional portable computers in one crucial way. Whereas portable computers go everywhere with their owners, the pad that must be carried from place to place is a failure. Pads are intended to be "scrap computers" (analogous to scrap paper) that can be grabbed and used anywhere; they have no individualized identity or importance.

One way to think of pads is as an antidote to windows. Windows were invented at PARC and popularized by Apple in the Macintosh as a way of fitting several different activities onto the small space of a computer screen at the same time. In twenty years computer screens have not grown much larger. Computer window systems are often said to be based on the desktop metaphor--but who would ever use a desk whose surface area is only 9" by 11"?

Pads, in contrast, use a real desk. Spread many electronic pads around on the desk, just as you spread out papers. Have many tasks in front of you and use the pads as reminders. Go beyond the desk to drawers, shelves, coffee tables. Spread the many parts of the many tasks of the day out in front of you to fit both the task and the reach of your arms and eyes, rather than to fit the limitations of CRT glass-blowing. Someday pads may even be as small and light as actual paper, but meanwhile they can fulfill many more of paper's functions than can computer screens.

Yard-size displays (boards) serve a number of purposes: in the home, video screens and bulletin boards; in the office, bulletin boards, whiteboards or flip charts. A board might also serve as an electronic bookcase from which one might download texts to a pad or tab. For the time being, however, the ability to pull out a book and place it comfortably on one's lap remains one of the many attractions of paper. Similar objections apply to using a board as a desktop; people will have to get used to using pads and tabs on a desk as an adjunct to computer screens before taking embodied virtuality even further.

Boards built by Richard Bruce and Scott Elrod at PARC currently measure about 40 by 60 inches and display 1024x768 black-and-white pixels. To manipulate the display, users pick up a piece of wireless electronic "chalk" that can work either in contact with the surface or from a distance. Some researchers, using themselves and their coleagues as guinea pigs, can hold electronically mediated meetings or engage in other forms of collaboration around a liveboard. Others use the boards as testbeds for improved display hardware, new "chalk" and interactive software.

For both obvious and subtle reasons, the software that animates a large, shared display and its electronic chalk is not the same as that for a workstation. Switching back and forth between chalk and keyboard may involve walking several steps, and so the act is qualitatively different from using a keyboard and mouse. In addition, body size is an issue -- not everyone can reach the top of the board, so a Macintosh-style menu bar may not be a good idea.

We have built enough liveboards to permit casual use: they have been placed in ordinary conference rooms and open areas, and no one need sign up or give advance notice before using them. By building and using these boards, researchers start to experience and so understand a world in which computer interaction casually enhances every room. Liveboards can usefully be shared across rooms as well as within them. In experiments instigated by Paul Dourish of EuroPARC and Sara Bly and Frank Halasz of PARC, groups at widely separated sites gathered around boards -- each displaying the same image -- and jointly composed pictures and drawings. They have even shared two boards across the Atlantic.

Liveboards can also be used as bulletin boards. There is already too much data for people to read and comprehend all of it, and so Marvin Theimer and David Nichols at PARC have built a prototype system that attunes its public information to the people reading it. Their "scoreboard" requires little or no interaction from the user other than to look and to wear an active badge.

Prototype tabs, pads and boards are just the beginning of ubiquitous computing. The real power of the concept comes not from any one of these devices; it emerges from the interaction of all of them. The hundreds of processors and displays are not a "user interface" like a mouse and windows, just a pleasant and effective "place" to get things done.

What will be most pleasant and effective is that tabs can animate objects previously inert. They can beep to help locate mislaid papers, books or other items. File drawers can open and show the desired folder -- no searching. Tabs in library catalogs can make active maps to any book and guide searchers to it, even if it is off the shelf and on a table from the last reader.

In presentations, the size of text on overhead slides, the volume of the amplified voice, even the amount of ambient light, can be determined not by accident or guess but by the desires of the listeners in the room at that moment. Software tools for instant votes and consensus checking are already in specialized use in electronic meeting rooms of large corporations; tabs can make them widespread.

The technology required for ubiquitous computing comes in three parts: cheap, low-power computers that include equally convenient displays, a network that ties them all together, and software systems implementing ubiquitous applications. Current trends suggest that the first requirement will easily be met. Flat-panel displays containing 640x480 black-and-white pixels are now common. This is the standard size for PC's and is also about right for television. As long as laptop, palmtop and notebook computers continue to grow in popularity, display prices will fall, and resolution and quality will rise. By the end of the decade, a 1000x800-pixel high-contrast display will be a fraction of a centimeter thick and weigh perhaps 100 grams. A small battery will provide several days of continuous use.

Larger displays are a somewhat different issue. If an interactive computer screen is to match a whiteboard in usefulness, it must be viewable from arm's length as well as from across a room. For close viewing the density of picture elements should be no worse than on a standard computer screen, about 80 per inch. Maintaining a density of 80 pixels per inch over an area several feet on a side implies displaying tens of millions of pixels. The biggest computer screen made today has only about one fourth this capacity. Such large displays will probably be expensive, but they should certainly be available.

Central-processing unit speeds, meanwhile, reached a million instructions per second in 1986 and continue to double each year. Some industry observers believe that this exponential growth in raw chip speed may begin to level off about 1994, but that other measures of performance, including power consumption and auxiliary functions, will still improve. The 100-gram flat-panel display, then, might be driven by a single microprocessor chip that executes a billion operations per second and contains 16 megabytes of onboard memory along with sound, video and network interfaces. Such a processor would draw, on average, a few percent of the power required by the display.

Auxiliary storage devices will augment the memory capacity. Conservative extrapolation of current technology suggests that match-book size removable hard disks (or the equivalent nonvolatile memory chips) will store about 60 megabytes each. Larger disks containing several gigabytes of information will be standard, and terabyte storage -- roughly the capacity of the Library of Congress -- will be common. Such enormous stores will not necessarily be filled to capacity with usable information. Abundant space will, however, allow radically different strategies of information management. A terabyte of space makes deleting old files virtually unnecessary, for example.

Although processors and displays should be capable of offering ubiquitous computing by the end of the decade, trends in software and network technology are more problematic. Software systems today barely take any advantage of the computer network. Trends in "distributed computing" are to make networks appear like disks, memory, or other non-networked devices, rather than to exploit the unique capabilities of physical dispersion. The challenges show up in the design of operating systems and window systems.

Today's operating sytems, like DOS and Unix, assume a relatively fixed configuration of hardware and software at their core. This makes sense for both mainframes and personal computers, because hardware or operating system software cannot reasonably be added without shutting down the machine. But in an embodied virtuality, local devices come and go, and depend upon the room and the people in it. New software for new devices may be needed at any time, and you'll never be able to shut off everything in the room at once. Experimental "micro-kernel" operating systems, such as those developed by Rick Rashid at Carnegie-Mellon University and Andy Tanenbaum at Vrije University in Amsterdam, offer one solution. Future operating systems based around tiny kernels of functionality may automatically shrink and grow to fit the dynamically changing needs of ubiquitous computing.

Today's window systems, like Windows 3.0 and the X Window System, assume a fixed base computer on which information will be displayed. Although they can handle multiple screens, they do not do well with applications that start out in one place (screen, computer, or room) and then move to another. For higher performance they assume a fixed screen and input mode and use the local computer to store information about the application--if any of these change, the window system stops working for that application. Even window systems like X that were designed for use over networks have this problem--X still assumes that an application once started stays put. The solutions to this problem are in their infancy. Systems for shared windows, such as those from Brown University and Hewlett-Packard Corporation, help with windows, but have problems of performance, and do not work for all applications. There are no systems that do well with the diversity of inputs to be found in an embodied virtuality. A more general solution will require changing the kinds of protocols by which application programs and windows interact.

The network connecting these computers has its own challenges. On the one hand, data transmission rates for both wired and wireless networks are increasing rapidly. Access to gigabit-per-second wired nets is already possible, although expensive, and will become progressively cheaper. (Gigabit networks will seldom devote all of their bandwidth to a single data stream; instead, they will allow enormous numbers of lower-speed transmissions to proceed simultaneously.) Small wireless networks, based on digital cellular telephone principles, currently offer data rates between two and 10 megabits per second over a range of a few hundred meters. Low-power wireless networks transmitting 250,000 bits per second to each station will eventually be available commercially.

On the other hand, the transparent linking of wired and wireless networks is an unsolved problem. Although some stop-gap methods have been developed, engineers must develop new communication protocols that explicitly recognize the concept of machines that move in physical space. Furthermore the number of channels envisioned in most wireless network schemes is still very small, and the range large (50-100 meters), so that the total number of mobile devices is severely limited. The ability of such a system to support hundreds of machines in every room is out of the question. Single-room networks based on infrared or newer electromagnetic technologies have enough channel capacity for ubiquitous computers, but they can only work indoors.

Present technologies would require a mobile device to have three different network connections: tiny range wireless, long range wireless, and very high speed wired. A single kind of network connection that can somehow serve all three functions has yet to be invented.

Neither an explication of the principles of ubiquitous computing nor a list of the technologies involved really gives a sense of what it would be like to live in a world full of invisible widgets. To extrapolate from today's rudimentary fragments of embodied virtuality resembles an attempt to predict the publication of Finnegan's Wake after just having invented writing on clay tablets. Nevertheless the effort is probably worthwhile:

Sal awakens: she smells coffee. A few minutes ago her alarm clock, alerted by her restless rolling before waking, had quietly asked "coffee?", and she had mumbled "yes." "Yes" and "no" are the only words it knows.

Sal looks out her windows at her neighborhood. Sunlight and a fence are visible through one, but through others she sees electronic trails that have been kept for her of neighbors coming and going during the early morning. Privacy conventions and practical data rates prevent displaying video footage, but time markers and electronic tracks on the neighborhood map let Sal feel cozy in her street.

Glancing at the windows to her kids' rooms she can see that they got up 15 and 20 minutes ago and are already in the kitchen. Noticing that she is up, they start making more noise.

At breakfast Sal reads the news. She still prefers the paper form, as do most people. She spots an interesting quote from a columnist in the business section. She wipes her pen over the newspaper's name, date, section, and page number and then circles the quote. The pen sends a message to the paper, which transmits the quote to her office.

Electronic mail arrives from the company that made her garage door opener. She lost the instruction manual, and asked them for help. They have sent her a new manual, and also something unexpected -- a way to find the old one. According to the note, she can press a code into the opener and the missing manual will find itself. In the garage, she tracks a beeping noise to where the oil-stained manual had fallen behind some boxes. Sure enough, there is the tiny tab the manufacturer had affixed in the cover to try to avoid E-mail requests like her own.

On the way to work Sal glances in the foreview mirror to check the traffic. She spots a slowdown ahead, and also notices on a side street the telltale green in the foreview of a food shop, and a new one at that. She decides to take the next exit and get a cup of coffee while avoiding the jam.

Once Sal arrives at work, the foreview helps her to quickly find a parking spot. As she walks into the building the machines in her office prepare to log her in, but don't complete the sequence until she actually enters her office. On her way, she stops by the offices of four or five colleagues to exchange greetings and news.

Sal glances out her windows: a grey day in silicon valley, 75 percent humidity and 40 percent chance of afternoon showers; meanwhile, it has been a quiet morning at the East Coast office. Usually the activity indicator shows at least one spontaneous urgent meeting by now. She chooses not to shift the window on the home office back three hours -- too much chance of being caught by surprise. But she knows others who do, usually people who never get a call from the East but just want to feel involved.

The telltale by the door that Sal programmed her first day on the job is blinking: fresh coffee. She heads for the coffee machine.

Coming back to her office, Sal picks up a tab and "waves" it to her friend Joe in the design group, with whom she is sharing a virtual office for a few weeks. They have a joint assignment on her latest project. Virtual office sharing can take many forms--in this case the two have given each other access to their location detectors and to each other's screen contents and location. Sal chooses to keep miniature versions of all Joe's tabs and pads in view and 3-dimensionally correct in a little suite of tabs in the back corner of her desk. She can't see what anything says, but she feels more in touch with his work when noticing the displays change out of the corner of her eye, and she can easily enlarge anything if necessary.

A blank tab on Sal's desk beeps, and displays the word "Joe" on it. She picks it up and gestures with it towards her liveboard. Joe wants to discuss a document with her, and now it shows up on the wall as she hears Joe's voice:

"I've been wrestling with this third paragraph all morning and it still has the wrong tone. Would you mind reading it?"

"No problem."

Sitting back and reading the paragraph, Sal wants to point to a word. She gestures again with the "Joe" tab onto a nearby pad, and then uses the stylus to circle the word she wants:

"I think it's this term 'ubiquitous'. Its just not in common enough use, and makes the whole thing sound a little formal. Can we rephrase the sentence to get rid of it?"

"I'll try that. Say, by the way Sal, did you ever hear from Mary Hausdorf?"

"No. Who's that?"

"You remember, she was at the meeting last week. She told me she was going to get in touch with you."

Sal doesn't remember Mary, but she does vaguely remember the meeting. She quickly starts a search for meetings in the past two weeks with more than 6 people not previously in meetings with her, and finds the one. The attendees' names pop up, and she sees Mary. As is common in meetings, Mary made some biographical information about herself available to the other attendees, and Sal sees some common background. She'll just send Mary a note and see what's up. Sal is glad Mary did not make the biography available only during the time of the meeting, as many people do...

In addition to showing some of the ways that computers can find their way invisibly into people's lives, this speculation points up some of the social issues that embodied virtuality will engender. Perhaps key among them is privacy: hundreds of computers in every room, all capable of sensing people near them and linked by high-speed networks, have the potential to make totalitarianism up to now seem like sheerest anarchy. Just as a workstation on a local-area network can be programmed to intercept messages meant for others, a single rogue tab in a room could potentially record everything that happened there.

Even today, although active badges and self-writing appointment diaries offer all kinds of convenience, in the wrong hands their information could be stifling. Not only corporate superiors or underlings, but overzealous government officials and even marketing firms could make unpleasant use of the same information that makes invisible computers so convenient.

Fortunately, cryptographic techniques already exist to secure messages from one ubiquitous computer to another and to safeguard private information stored in networked systems. If designed into systems from the outset, these techniques can ensure that private data does not become public. A well-implemented version of ubiquitous computing could even afford better privacy protection than exists today. For example, schemes based on "digital pseudonyms" could eliminate the need to give out items of personal information that are routinely entrusted to the wires today, such as credit card number, social security number and address.

Jim Morris of Carnegie-Mellon University has proposed an appealing general method for approaching these issues: build computer systems to have the same privacy safeguards as the real world, but no more, so that ethical conventions will apply regardless of setting. In the physical world, for example, burglars can break through a locked door, but they leave evidence in doing so. Computers built according to Morris's rule would not attempt to be utterly proof against cracker, but they would be impossible to enter without leaving the digital equivalent of fingerprints.

By pushing computers into the background, embodied virtuality will make individuals more aware of the people on the other ends of their computer links. This development carries the potential to reverse the unhealthy centripetal forces that conventional personal computers have introduced into life and the workplace. Even today, people holed up in windowless offices before glowing computer screens may not see their fellows for the better part of each day. And in virtual reality, the outside world and all its inhabitant effectively ceases to exist. Ubiquitous computers, in contrast, reside in the human world and pose no barrier to personal interactions. If anything, the transparent connections that they offer between different locations and times may tend to bring communities closer together.

My colleagues and I at PARC believe that what we call ubiquitous computing will gradually emerge as the dominant mode of computer access over the next twenty years. Like the personal computer, ubiquitous computing will enable nothing fundamentally new, but by making everything faster and easier to do, with less strain and mental gymnastics, it will transform what is apparently possible. Desktop publishing, for example, is fundamentally not different from computer typesetting, which dates back to the mid 1960's at least. But ease of use makes an enormous difference.

When almost every object either contains a computer or can have a tab attached to it, obtaining information will be trivial: "Who made that dress? Are there any more in the store? What was the name of the designer of that suit I liked last week?" The computing environment knows the suit you looked at for a long time last week because it knows both of your locations, and, it can retroactively find the designer's name even if it did not interest you at the time.

Sociologically, ubiquitous computing may mean the decline of the computer addict. In the 1910's and 1920's many people "hacked" on crystal sets to take advantage of the new high tech world of radio. Now crystal-and-cat's whisker receivers are rare, because radios are ubiquitous. In addition, embodied virtuality will bring computers to the presidents of industries and countries for nearly the first time. Computer access will penetrate all groups in society.

Most important, ubiquitous computers will help overcome the problem of information overload. There is more information available at our fingertips during a walk in the woods than in any computer system, yet people find a walk among trees relaxing and computers frustrating. Machines that fit the human environment, instead of forcing humans to enter theirs, will make using a computer as refreshing as taking a walk in the woods.

Computer Software

Network Software Overview & General System Admin Utilities
This section provides the overview of the network software such as free LAN/WAN tools, tutorials and labs, LAN troubleshooter, WAN optimizer, sniffer, traceroute, IP finder, whois lookup, administration, LAN security, Admin tools & proxy server software, protocol analyzers, remote computing, FTP software and many others.Software or program enables a computer to perform the specified tasks. This includes the application software such as Win word and system software like operating systems.
A network is made up of two ore more computers that are linked together either wired or wireless to share data and resources and network can also be used to transmit information from one computer to another, to play games to talk to a friend and to share a common network resource. Network software is the information, programming or data used to make it possible for a computer to communicate with other computers or devices.
IP Addressing Utilities
If you are on the dial-up connection your IP address usually changes every time when you connect to the internet in case of (dynamic IP) and thus makes it difficult for the people to connect directly to your machine.
Network Administration
Here you will be able to find the tools necessary for the network administrator to manage their networking tasks such as auditing, LAN troubleshooting, deployment and remote control panel tools.
Communication Information
Here you will find various system admin related utilities like Ping, Trace Router, Finger, WhoIs, IP finder and many others.
Communication Monitoring
This is a collection of the best tools to monitor the performance of a network servers, clients or Internet servers and communication device.
Domain Lookup Tools
Here you will find the details about the owner of a website and you can also search for the available domain names by different keywords and other criteria.
Newsreaders/Usenet
The Newsgroups are like the electronic bulletin boards to share the information and the tools in
this category will allow you to connect and manage the contents.
Protocol Analyzers
Protocols analyzers are referred to as Packet Sniffers. The tools in this category will allow you to analyze your network traffic with different graphical overview, monitoring and also troubleshootingof the devices.
Proxy Server Software
The proxy servers allow you to share control and filter the internet connection. Proxy serves also
act as the internet gateway for your LAN.
FTP Programs
FTP is a file transfer protocol, which allows you to connect to other computers and download or upload the files. You can connect to your FTP server, where you have hosted your website through FTP client program such as FTP voyager, AceFTP, CuteFTP and other. In this category
you will find various FTP related .
Traffic Scanner Tools
These tools will allow you to scan your network, open ports and for the possible virus threats,
security breaches and other vulnerabilities. Here you will find a list of the traffic tester software.
Communication Testing
If you want to test your network or web applications, connectivity, check performance and simulate user activities then you can find a list of the software here in this category.
Tools & Suites
The Tool suites that combine a popular computer networking tools such as PING, Finger, Traceroute and many other tools.
Remote Computing
In this list of software you will be able to connect to the remote computer and you can share data, file and documents and even you will software for the remote administration purposes.
Telnet & SSH Clients
Here is a list of the various clients’ software that allows you to connect to a computer using the Telnet protocol.
Time Synchronization Tools
These software will allow your PC’s time to Synchronize with the atomic clocks over the Internet.Trace route Utilities
Traceroute utilities will allow you to determine the origin and path of the connection. Some of the tools even provide the detailed geographical information on a globe map, allowing you to trace the location of a server or user.



Installation of Windows XP







How To Install MS Windows XP Professional?
Here you will learn about windows xp upgrade tutorial, how to install 98, how to update 2000, basic configuration steps and basic Windows basic configuration steps. Most individuals and small or big companies require Windows XP to be installed on a new computer. However large base of the existing computers in most of the organizations run the older version of the Windows XP. An upgrading is a process which makes the operating systems up to date. Before updating you should consider the following things.
• Your computer hardware should support the latest version of the Windows XP.• You should be aware that applications that are running on the older version may be not be compatible with the latest version.• Upgrading process can take significant time, money and resources if the upgrade is required to a number of the network computers.
It is not possible to upgrade any non Windows computers (UNIX, Linux etc) to Windows XP. You have to perform clean installation of Windows XP on these computers.Verification System CompatibilityThe windows XP compatibility tool enables you create compatibility report that identifies any problems with computer hardware or software on a computer. You can find and run this tool from the Windows XP CD-ROM by following steps.
1. Insert the Windows XP CD. 2. Select the check system compatibility link from the welcome screen.3. Select check my system automatically link.
Additionally, you can also check Windows XP compatibility by opening a command prompt and typing this command c:\i386\WINNT32/Checkupgraedeonly. The Microsoft upgrade advisor will enable you to download the updated setup files from the Microsoft website. You must have internet connection to download the updated setup files and if you do not have internet connection available at this time then skip this step and continue installing Windows option and click next. If you selected to download the setup files from the internet you will find a restart option, click this option and then select yes.
After this step Microsoft upgrade advisor display a report of the incompatible hardware and software. If you need detailed information of any incompatible item click “More details” and click next. Incompatible software may require upgrade packs or latest versions. If are unable to find the upgrade packs at this time then you should remove the incompatible software from the Add/Remove programs before you continue with the Windows XP upgrade. You can Windows XP upgrade advisor from the following path.
http://www.microsoft.com/windowsxp/pro/upgrading/advisor.mspx. After you confirm that an upgrade is required, you should perform the following several tasks before update starts.• Backup you critical data before upgrading. The easiest way to backup the data is to copy the data folders to another disk or computer.• Check the available BIOS upgrades from BIOS manufacturer’s website and if upgrade is available for the BIOS, you should upgrade it before you continue upgrading to Windows XP. • Next you should turn off the power management features from the Power options in the control panel.• Your antivirus program should be upgraded to the latest versions and your computer should be virus free.• Your computer’s hardware should be available in the Device Manager in Windows 2000 or XP.• If Microsoft Upgrade Advisor has identified incompatible software, you should remove all these software before you continue upgrade process.• Ensure that no unnecessary program is running during the upgrade process.• Windows XP does not support stripe sets created in Windows NT 4.0 so if you are upgrading from Windows NT 4.0 that contains strips sets, you should back up their contact and delete them before upgrading process.
Generally you will have less compatibility problems when you are going to upgrade from Windows NT/2000 than upgrading to Windows 98/Me. Additionally, your keyboard, mouse should be updated with the latest drivers before upgrading.
Upgrading a Windows NT 4.0 or 2000 Computer
After you have make sure that your computer meets all the hardware and software requirements for the Windows XP Professional then you are ready to perform the actual upgrade. Note: You cannot upgrade Windows NT or Windows 2000 to Windows XP home edition, rather you should upgrade to Windows XP Professional. Additionally, you cannot upgrade a computer that is running Windows 2000 Server.
To upgrade a Windows 2000 Professional computer to Windows XP Professional follow the following steps. Please note that if you want to upgrade from Windows NT, the steps are almost same.
1. Insert the Windows XP Professional CD with SP2 in the CD-ROM.2. Double click the CD-ROM drive and then double click the setup icon. You can also get the installation files from the network computer by mapping the source drive to the distribution share.3. On the Welcome to Microsoft Windows XP screen, click install Windows XP Professional. 4. The welcome screen provides the installation types. Now select the Upgrade (Recommended) to begin the upgrade and click next. 5. The License agreement screen appears, read the license and click I accept this agreement then click Next.6. Next appears the Product Key screen, enter the 25-alpha-numeric product key and then click next. 7. Next Get Updated Setup Files dialog box appears. If you have internet connection then you should select Dynamic Update setup files option and download the updated files from the Microsoft website, otherwise click no, Next to continue.8. Installation files are copied and the computer restarts. Copying of the files takes few minutes and it involves copying of the files to a separate folder. 9. Next Press Enter to accept the default of Windows XP Professional Setup from boot menu.10. Insert the Microsoft Windows XP Professional CD and click next. Insert the Windows SP2 CD and press enter, if you are promoted that setup cannot copy a file during setup.11. Next the Setup examines the system disks and text mode copying step takes 5 to 10 minutes and then computer restarts again.12. Windows XP Setup obtains additional setup information from the older version. You are asked for the additional information is setup is unable to get the information. Here you will be prompted for the original CD-ROM as mentioned in the step # 10. 13. Once the installation is complete the computer reboots and displays the Welcome to Microsoft Windows screen.14. Similar to the option presented during an original installation, enter your name and the name of any other person who will use this computer. Click next and then click finish. J15. After reboot a logon screen will appear, enter your user name to start.After upgrade process is completed and hardware and software upgrading is also completed with the latest versions/packs, you can perform the normal tasks such as installing new software applications, working in MS office applications, browsing the internet etc.

Wednesday, July 21, 2010

Troublingshooting tips

PC Hardware Troubleshooting Techniques
Here you will learn about computer hardware troubleshooting techniques, cable testers, software diagnostic routines, POST cards, error diagnostic methods. Computer hardware is the physical part of a computer and it is frequently changed as compared to the software. Most computer hardware is inside the computer and cannot be seen by normal users. There are a large number of the computer hardware devices including Hard disk, CD-Rom, RAM, Motherboard, Monitor, printer, peripheral devices and other devices. One of the first steps in the troubleshooting is to sort out the hardware and software problems. You can use the event viewer utility in the Windows operating systems to identify the nature and cause of the hardware or software problem. Also you can identify the hardware problems by identifying the initial start up beeps.
Errors that occur before the initial beep shows that there is some kind of hardware problem exists in the system. At the POST stage, only the BIOS of the system and basic hardware is active and operating system does not starts to initialize at this stage until a final beep occurs. If a computer produces an error (“The system has detected Unstable RAM”) or a beep code appears, this means that system and found a problem with the devices and system RAM should be changed. Additionally, if the system starts up process reaches the point where CMOS configuration information is displayed on the screen this means that there is no problem detected with the basic hardware of the system. After this point, the system starts to load the device drivers and operating system.
You can categorize the system configurations errors and components failure errors. Sometimes configurations or setup problems occur when a new hardware is installed and used in the system for the first time. These problems occur due to the mismatches of the CMOS memory information and component's configuration information. It is usually advisable to access the system CMOS when the system is first time prepared, when it is necessary to replace the CMOS battery and when a new device such as hard disk, CD-Rom, RAM, Video adapter etc added to the system. In most of the computers, the BIOS use plug and play techniques to detect most of the devices. These components provide system resources to the newly added device. When you are installing a new devices or software, you may notice some configuration errors.
If you face the configuration errors, you should see the installation manual that comes with the new computer device. If you cannot confirm configuration problems and the device is not working properly, this means that there must be some defect in the hardware. The symptoms and errors can be divided into the three parts such as boot up problems, configurations problems and operational problems. First of all system’s configurations settings are checked. The error messages that occur during or after the end of the POST are reported so it is important to observe that where the problem is actually occurred.
Configuration Error Messages Meanings
Press F1 to continue Invalid configurationCMOS time and date not set CMOS battery errorCMOS memory size mismatches System configuration and setup failureCMOS system option not set CMOS battery failure or CMOS checksum
After the beep tones occur during the startup process, the system now looks and loads the operating system. The errors that occur between the beeps and initializing the operating system can be categorized into the following categories.
• Hardware failure ( due to the physical problem with the booting drive)• General Failure Error Reading Drive x• Bad or Missing Command Interpreter• Non system Disk or Disk Error• Bad File Allocation Table• Corrupted or missing operating system files• Corrupted or missing boot files
The configuration or boot up problems can be occurred to the hardware or operational function’s failure and if the configuration is correct and these error appears this means there is some problems in the hardware and boot up problems are normally linked with the operating system.
PC Hardware Troubleshooting Tools
Due to the low cost of the some of the hardware components, it’s usually not advisable to repair the IC level problems of the components, instead they should be replaced. The repair cost of the component will most likely be high as compared to the actual cost of the component. There are some very excellent hardware problem detection tools that are very helpful in identifying and isolating the problems. These tools included Multi meter, Cable Tester, POST card and software diagnostic disk.
Software Diagnostics Routines
Many disk based diagnostic methods can check the system and identify the problems by running the number of tests on the different areas of the system hardware. These tests produce the visual reports and error messages to identify the nature of the problem. The most common software troubleshooting routines check the computer’s memory, keyboard, monitor, system processor, and hard disk’s speed. If the system CPU, hard disk and system clock is working properly, then you will be able to localize the problem by targeting the other points in the system. If the diagnostic tools/routines identify a number of defective software/hardware then you should replace one defective unit a time.
Troubleshooting with Multimeter
Testing tools can help in isolating the hardware or software problems and digital multimeter is a most important tool for the electronic troubleshooting. Digital Multimeter and other electronic test instruments are available in analog and digital form and these instruments can be used to measure the electrical values of the voltage, current in miliamperes and resistance in ohms. These devices are known as Volt-ohm-milimeters (VOMs) for the analog signals and digital millimeters (DMMs) for the digital types. You can also check the transistors, capacitors, motor windings and diodes with the digital multimeter. In computer troubleshooting, most of the tests of the digital multimeter are to check the DC readings.
Troubleshooting with Cable Testers
The most common hardware related compute networking problem is the bad cabling and RJ-45 connectors. There are a number of devices, designed for testing the network communication cabling. These devices include continuity tester, time domain reflectometer and cabling testers. Data cabling testers are designed to perform a number of different types of tests on the UTP/STP and coaxial cables. The master end of the cable tester is attached to one end of the cable and the load unit of the cable tester is attached to the other end of the cable. The master unit sends the signals through the cable and reads them from the load unit. When testing the cables, these devices normally detect the problems such as crossed-over wiring, broken wires, short connections and the cable connections that are improperly impaired.
Troubleshooting with POST Cards
A POST card is a diagnostic and troubleshooting device that is plugged into the expansion slots and tests the operation of the system as it boots up. These cards can be as direct memory access or they can be complex as ROM BIOS diagnostic tools that perform the advance level diagnostic tests. POST cards are generally used when the computer systems appear to be dead or the system is unable to read from the floppy or hard disk. The POST routines generally report two types of errors fatal and non fatal.
The fatal error stops and system and when the POST card observes non fatal errors, they should be read very carefully because the error code, which is indicated must be coordinated with the timing of the error message or beep code produced by the BIOS routines. Normally POST cards come with the LEDs (light-emitting diodes that produces code error signals and they identify any kind of problem.

Computer Hardware

Introduction to PC Components
Here you will learn computer hardware tutorials introduction, basic pc components, networking devices, ram, vga, monitor and printer etc. Computer hardware is the physical part of the computer including the digital circuits inside the computer as opposed to the software that carry out the computing instructions. The hardware of a computer is unlikely to change frequently unless due to the crash or for upgrading them. The devices that is capable of storing, executing system instructions and controlling other logical outputs.

Hardware comprises all of the physical part of the computer such as Monitor, CPU, motherboard, ram, CD-Rom, printer, scanner, hard disk, flash drive (AKA pen drive), processor, pci buses, floppy disk, power supply, VGA card, sound card, network interface card, peripherals, joystick, mouse, keyboard, foot pedal, computer fan, camera, headset and others.
On the other hard software is a logical part of a computer and is used to carry out the instructions, storing, executing and developing other software programs. A typical PC consists of a case or chassis in the desktop or tower case and these components.
Motherboard• CPU• Computer Fan• RAM• BIOS• Digital Circuitry• Computer Fan• PCI Slots
PC Buses• PCI• USB• Hyper-transport• AGP• ISA• EISA• VLB
Media• CD-Rom• DVD-Rom• Combo box• Joystick• BD-Rom drive
Internal storage• Hard disk (ATA & SATA)• Data array controller• Floppy disk
Other Peripheral Devices• Mouse• Modems• Digital Camera• Sound, Video Cards• Printer
Output Devices• Printer• Scanner• Monitor• Speakers• Headset• Video output devices
CPU (Central Processing Unit): CPU or central processing unit relates to a specific or processor. The performance of the computer is determined by the CPU chip (processor speed) and the other computer circuitry. Currently, the Pentium chip (processor) is the most popular even though there are other chips available in the market today such as AMD, Motorola and others. The clocks speed becomes most important factor in determining the performance of a computer. The motherboard contains the hardware circuitry and connections that allow the different hardware components of the PC to interact and communicate with each other. Most computer software is being developed for the latest processors so it would be difficult to use the older systems.
Hard Disk Drives – Disk drive is the mechanism to run the disks. All disks need a drive to get the information, read it and put it back to the disks. Hard disk is used to store the data permanently. Often the terms disk and drive used to describe the same thing but it should be clear that a disk is a storage device.
Modem – A modem is used for the modulation and demodulation of the data that is transferred through the modem and the telephone lines. Modem translates the data from digital to analog from analog to digital. Because on the telephone lines data can travel in the form of the analog signals and in the computer data transmits in the form of digital signals. Modems are measured by the speed which is called baud rate. The typical baud rate is 56Kb.
Keyboard – The keyboard is used to type something or input information to the computer. There are different designs and models of the keyboards in the market. The most common layout of the keyboard is QWERTY layout. A standard keyboard has 101 keys and embedded keys.
Video cards-Video cards allow computer to display video, graphics and animation. Some video cards allow computers to display television. A video card with a digital video camera allows users to produce live video. A high speed broadband internet connection is required to watch the videos on net.
Network cards: Network interface cards allow PCs to connect with each other and communicate. Every network computer is required to have a NIC card. NIC cards are required both in wired and wireless networking.
Cables: There are two broad types of cables internal cables, which are embedded on the mother board circuit that performs the communication between the devices and CPU. The other types of the cables are the network cables like coaxial cable, CAT 5, Ethernet cables. These cables are used for the communication purposes between the devices or computers.
Memory – Memory is the one of the important piece of the hardware. Sometimes memory chip memory is confused with the hard disk memory. Sometimes unallocated space of the hard disk is used as virtual memory also known as page file. This type of memory is a temporary memory and is used actual memory is less and requires some additional memory to perform a specific task.
RAM (Random Access Memory) RAM is a memory that is being used by the computer to store the information temporarily. For example when some work is performed on some applications that work is temporarily stored in the RAM. More RAM in the computer more faster computer works. Today at least requirement of a modern PC is 64 RAM. RAM is in the form of a chip and different vendors have developed the RAM of different capacities.
Mouse – Every modern computer requires a mouse for faster operations. Generally a mouse has two buttons left and right to perform different functions. One type of the mouse has a round ball under the bottom. Another type of the mouse use optical system to track the movement of the mouse.
Monitors – The monitor is used to display the information on the screen. All the activities of a computer, functions and tasks are seen on the computer screen and this is called outputting information. Monitors come in many sizes and shapes, monochrome or full colors. Today most computers use LCD screens. It is light weight and consumes less power as compared to the monitors.
Printers – The printer takes the information from the PC and transfers it to the paper of different sizes, which are placed in the printer device. There are three basic types of a printer such as dot matrix, inkjet and laser.
Scanners- Scanners allow you to transfer pictures and photographs to your computer. A scanner is used to scan the images and pictures. You can then send the image to someone, modify it or take a print out of it. With optical character recognition software you can convert printed documents into the text that you can use in the word processor. Digital camera- You can take the digital photographs with the digital cameras. The images are stored on the memory chip of the digital cameras and you can transfer them to your computer with the USB drive.
Case – Case or casing covers the whole computer’s circuitry. There are two types of casings desktop and tower casing. There is room inside the casing to add or remove components. Cases come in many sizes like desktop, mini, midi and tower. There are some additional empty slots inside the cases such as IDE, USB, ASI, PCI and firewire slots.
Cards – Cards are the hardware components that are added to the computer to increase their functionalities and capabilities.
Sound cards produce the sound like music and voice. The older cars were 8, 16 and then 32 bits. Color cards allow computers to produce colors. Initially there were 2, 4 and then 16 bits. The main types of the graphic cards are EGA, VGA and SGA. The 32 cards are the standard to display almost billions of the colors on the monitor.

Computer Networkings




Find computer network tutorials, wireless communication guide, LAN/WAN guide, local area network tools, wan introduction, osi layers model and many other advance topics of data communication. This is very informative site for the IT people specially in the field of computer networking. You will also find data communication overview, tech guides , data communication related information, topologies, tech study guide, Router Labs, IT certifications, Ethernet guide, free IT resources, ip addressing tools, telecommunication guide and many other informative resources. Data communication is a process of sharing data and shared resources between two or more connected computers. The shared resources can include printer, Fax modem, Hard disk, CD/DVD Rom, Database and the data files.

A computer network can be divided into a small segments called Local Area Network (LAN), networking between computers in a building of a office, medium sized networks (MAN), communication between two offices in a city and wide area networks (WAN) networking between the computers, one is locally placed and the other can be thousands of miles away in another city or another country in the world.
WAN connectivity is achieved by a device known as “Router”. The internet is the world’s largest WAN, where millions of computers from all over the globe and connected with each other.

Networking is the practice of linking two or more computers or devices with each other. The connectivity can be wired or wireless. A computer network can be categorized in different ways, depends on the geographical area as mentioned above.
There are two main types of the computer networking client-server and peer to peer. In the client server computing, a computer plays a major role known as server, where the files, data in the form of web pages, docs or spread sheet files, video, database & resources are placed.


All the other computers in the client/server networks are called clients and they get the data from the server. In the peer to peer networks all the computers play the same role and no computer act as a centralized server. In the major businesses around the world client-server networks model is in major use.

A network topology defines the structure, design or layout of a network. There are different topologies like bus, ring, star, mesh, hybrid etc. The star topology is most commonly used topology. In the star topology, all the computers in the network are connected with a centralized device such as hub or switch. Thus forms a star like structure. If the hubs/switch fails to work for any reason then all the connectivity and communication between the computers will be halted.

A common communication language is used by the computers and the communication devices is known as protocols. The most commonly used and popular protocol on the internet and in the home and other networks is called TCP/IP. TCP/IP is not a single protocol but it is a suite of several protocols.A computer network can be a wired or wireless and TCP/IP protocol can work both in types of a network.Data flow or communication can be divided into seven logical layers called OSI layers model that was developed by Intel and Xerox Corporation and was standardized by ISO.

1. Application layer
2. Presentation layer
3. Session layer
4. Transport layer
5. Network layer
6. Data Link layer
a. Media access control sub-layer
b. Logical link control sub-layer
7. Physical layer
A network can be divided into different scales and ranges and it depends on the requirement of the organization and the geographical location. Computer Network can be divided into Local Area Network, Personal Area Network, Campus Area Network, Wireless Local Area Network, Metropolitan Area Network and Wide Area Network.

There are several communication connection methods like HomePNA, Power line communication, Ethernet and Wifi connection method.
A network can also be categorized into several different types based on the services it provides like Server farms, Storage area networks, Value control networks, Value-Added networks, SOHO networks, Wireless and Jungle networks.

I have explained the basic and advance data communication technologies, Router commands, communication devices, certifications, IP addressing basics, subnetting, networking tips, networking interview questions, windows networking, mobile technology and wireless computing. I have tried to cover all the hot topics in the area of computer networking so that maximum users can get benefit from this website.

I will warmly welcome any suggestions, tips and unique content from my visitors if they want to share with me.

Before working on this website, I personally visited many networking related websites to updated my knowledge to provide most up-to-date, unique information and best experience to my visitors.
I have tried to add all the good features, how tos and networking related utilities in my website. I am hopeful that my visitors will like this website and find it very useful for the basic and advance data communication topics.

Computer Programming
Computer programming (often shortened to programming or coding) is the process of designing, writing, testing, debugging / troubleshooting, and maintaining the source code of computer programs. This source code is written in a programming language. The code may be a modification of an existing source or something completely new. The purpose of programming is to create a program that exhibits a certain desired behaviour (customization). The process of writing source code often requires expertise in many different subjects, including knowledge of the application domain, specialized algorithms and formal logic.

Contents [hide]
1 Overview
2 History of programming
3 Modern programming
3.1 Quality requirements
3.2 Algorithmic complexity
3.3 Methodologies
3.4 Measuring language usage
3.5 Debugging
4 Programming languages
5 Programmers
6 See also
7 References
8 Further reading
9 External links

[edit] Overview
Wikiversity has learning materials about programming

Within software engineering, programming (the implementation) is regarded as one phase in a software development process.

There is an ongoing debate on the extent to which the writing of programs is an art, a craft or an engineering discipline.[1] In general, good programming is considered to be the measured application of all three, with the goal of producing an efficient and evolvable software solution (the criteria for "efficient" and "evolvable" vary considerably). The discipline differs from many other technical professions in that programmers, in general, do not need to be licensed or pass any standardized (or governmentally regulated) certification tests in order to call themselves "programmers" or even "software engineers." However, representing oneself as a "Professional Software Engineer" without a license from an accredited institution is illegal in many parts of the world.[citation needed] However, because the discipline covers many areas, which may or may not include critical applications, it is debatable whether licensing is required for the profession as a whole. In most cases, the discipline is self-governed by the entities which require the programming, and sometimes very strict environments are defined (e.g. United States Air Force use of AdaCore and security clearance).

Another ongoing debate is the extent to which the programming language used in writing computer programs affects the form that the final program takes. This debate is analogous to that surrounding the Sapir-Whorf hypothesis [2] in linguistics, that postulates that a particular language's nature influences the habitual thought of its speakers. Different language patterns yield different patterns of thought. This idea challenges the possibility of representing the world perfectly with language, because it acknowledges that the mechanisms of any language condition the thoughts of its speaker community.

Said another way, programming is the craft of transforming requirements into something that a computer can execute.

[edit] History of programming
See also: History of programming languages

Wired plug board for an IBM 402 Accounting Machine.The concept of devices that operate following a pre-defined set of instructions traces back to Greek Mythology, notably Hephaestus, the Greek Blacksmith God, and his mechanical slaves.[3] The Antikythera mechanism from ancient Greece was a calculator utilizing gears of various sizes and configuration to determine its operation.[4] Al-Jazari built programmable Automata in 1206. One system employed in these devices was the use of pegs and cams placed into a wooden drum at specific locations. which would sequentially trigger levers that in turn operated percussion instruments. The output of this device was a small drummer playing various rhythms and drum patterns.[5][6] The Jacquard Loom, which Joseph Marie Jacquard developed in 1801, uses a series of pasteboard cards with holes punched in them. The hole pattern represented the pattern that the loom had to follow in weaving cloth. The loom could produce entirely different weaves using different sets of cards. Charles Babbage adopted the use of punched cards around 1830 to control his Analytical Engine. The synthesis of numerical calculation, predetermined operation and output, along with a way to organize and input instructions in a manner relatively easy for humans to conceive and produce, led to the modern development of computer programming. Development of computer programming accelerated through the Industrial Revolution.

In the late 1880s, Herman Hollerith invented the recording of data on a medium that could then be read by a machine. Prior uses of machine readable media, above, had been for control, not data. "After some initial trials with paper tape, he settled on punched cards..."[7] To process these punched cards, first known as "Hollerith cards" he invented the tabulator, and the keypunch machines. These three inventions were the foundation of the modern information processing industry. In 1896 he founded the Tabulating Machine Company (which later became the core of IBM). The addition of a control panel (plugboard) to his 1906 Type I Tabulator allowed it to do different jobs without having to be physically rebuilt. By the late 1940s, there were a variety of plug-board programmable machines, called unit record equipment, to perform data-processing tasks (card reading). Early computer programmers used plug-boards for the variety of complex calculations requested of the newly invented machines.


Data and instructions could be stored on external punched cards, which were kept in order and arranged in program decks.The invention of the von Neumann architecture allowed computer programs to be stored in computer memory. Early programs had to be painstakingly crafted using the instructions (elementary operations) of the particular machine, often in binary notation. Every model of computer would likely use different instructions (machine language) to do the same task. Later, assembly languages were developed that let the programmer specify each instruction in a text format, entering abbreviations for each operation code instead of a number and specifying addresses in symbolic form (e.g., ADD X, TOTAL). Entering a program in assembly language is usually more convenient, faster, and less prone to human error than using machine language, but because an assembly language is little more than a different notation for a machine language, any two machines with different instruction sets also have different assembly languages.

In 1954, FORTRAN was invented; it was the first high level programming language to have a functional implementation, as opposed to just a design on paper.[8][9] (A high-level language is, in very general terms, any programming language that allows the programmer to write programs in terms that are more abstract than assembly language instructions, i.e. at a level of abstraction "higher" than that of an assembly language.) It allowed programmers to specify calculations by entering a formula directly (e.g. Y = X*2 + 5*X + 9). The program text, or source, is converted into machine instructions using a special program called a compiler, which translates the FORTRAN program into machine language. In fact, the name FORTRAN stands for "Formula Translation". Many other languages were developed, including some for commercial programming, such as COBOL. Programs were mostly still entered using punched cards or paper tape. (See computer programming in the punch card era). By the late 1960s, data storage devices and computer terminals became inexpensive enough that programs could be created by typing directly into the computers. Text editors were developed that allowed changes and corrections to be made much more easily than with punched cards. (Usually, an error in punching a card meant that the card had to be discarded and an new one punched to replace it.)

As time has progressed, computers have made giant leaps in the area of processing power. This has brought about newer programming languages that are more abstracted from the underlying hardware. Although these high-level languages usually incur greater overhead, the increase in speed of modern computers has made the use of these languages much more practical than in the past. These increasingly abstracted languages typically are easier to learn and allow the programmer to develop applications much more efficiently and with less source code. However, high-level languages are still impractical for a few programs, such as those where low-level hardware control is necessary or where maximum processing speed is vital.

Throughout the second half of the twentieth century, programming was an attractive career in most developed countries. Some forms of programming have been increasingly subject to offshore outsourcing (importing software and services from other countries, usually at a lower wage), making programming career decisions in developed countries more complicated, while increasing economic opportunities in less developed areas. It is unclear how far this trend will continue and how deeply it will impact programmer wages and opportunities.

[edit] Modern programming
[edit] Quality requirements
Whatever the approach to software development may be, the final program must satisfy some fundamental properties. The following properties are among the most relevant:

Efficiency/performance: the amount of system resources a program consumes (processor time, memory space, slow devices such as disks, network bandwidth and to some extent even user interaction): the less, the better. This also includes correct disposal of some resources, such as cleaning up temporary files and lack of memory leaks.
Reliability: how often the results of a program are correct. This depends on conceptual correctness of algorithms, and minimization of programming mistakes, such as mistakes in resource management (e.g., buffer overflows and race conditions) and logic errors (such as division by zero or off-by-one errors).
Robustness: how well a program anticipates problems not due to programmer error. This includes situations such as incorrect, inappropriate or corrupt data, unavailability of needed resources such as memory, operating system services and network connections, and user error.
Usability: the ergonomics of a program: the ease with which a person can use the program for its intended purpose, or in some cases even unanticipated purposes. Such issues can make or break its success even regardless of other issues. This involves a wide range of textual, graphical and sometimes hardware elements that improve the clarity, intuitiveness, cohesiveness and completeness of a program's user interface.
Portability: the range of computer hardware and operating system platforms on which the source code of a program can be compiled/interpreted and run. This depends on differences in the programming facilities provided by the different platforms, including hardware and operating system resources, expected behaviour of the hardware and operating system, and availability of platform specific compilers (and sometimes libraries) for the language of the source code.
Maintainability: the ease with which a program can be modified by its present or future developers in order to make improvements or customizations, fix bugs and security holes, or adapt it to new environments. Good practices during initial development make the difference in this regard. This quality may not be directly apparent to the end user but it can significantly affect the fate of a program over the long term.
[edit] Algorithmic complexity
The academic field and the engineering practice of computer programming are both largely concerned with discovering and implementing the most efficient algorithms for a given class of problem. For this purpose, algorithms are classified into orders using so-called Big O notation, O(n), which expresses resource use, such as execution time or memory consumption, in terms of the size of an input. Expert programmers are familiar with a variety of well-established algorithms and their respective complexities and use this knowledge to choose algorithms that are best suited to the circumstances.

[edit] Methodologies
The first step in most formal software development projects is requirements analysis, followed by testing to determine value modeling, implementation, and failure elimination (debugging). There exist a lot of differing approaches for each of those tasks. One approach popular for requirements analysis is Use Case analysis.

Popular modeling techniques include Object-Oriented Analysis and Design (OOAD) and Model-Driven Architecture (MDA). The Unified Modeling Language (UML) is a notation used for both the OOAD and MDA.

A similar technique used for database design is Entity-Relationship Modeling (ER Modeling).

Implementation techniques include imperative languages (object-oriented or procedural), functional languages, and logic languages.

[edit] Measuring language usage
It is very difficult to determine what are the most popular of modern programming languages. Some languages are very popular for particular kinds of applications (e.g., COBOL is still strong in the corporate data center, often on large mainframes, FORTRAN in engineering applications, scripting languages in web development, and C in embedded applications), while some languages are regularly used to write many different kinds of applications.

Methods of measuring programming language popularity include: counting the number of job advertisements that mention the language,[10] the number of books teaching the language that are sold (this overestimates the importance of newer languages), and estimates of the number of existing lines of code written in the language (this underestimates the number of users of business languages such as COBOL).

[edit] Debugging

A bug, which was debugged in 1947.Debugging is a very important task in the software development process, because an incorrect program can have significant consequences for its users. Some languages are more prone to some kinds of faults because their specification does not require compilers to perform as much checking as other languages. Use of a static analysis tool can help detect some possible problems.

Debugging is often done with IDEs like Visual Studio, NetBeans, and Eclipse. Standalone debuggers like gdb are also used, and these often provide less of a visual environment, usually using a command line.

[edit] Programming languages
Main articles: Programming language and List of programming languages
Different programming languages support different styles of programming (called programming paradigms). The choice of language used is subject to many considerations, such as company policy, suitability to task, availability of third-party packages, or individual preference. Ideally, the programming language best suited for the task at hand will be selected. Trade-offs from this ideal involve finding enough programmers who know the language to build a team, the availability of compilers for that language, and the efficiency with which programs written in a given language execute.

Allen Downey, in his book How To Think Like A Computer Scientist, writes:

The details look different in different languages, but a few basic instructions appear in just about every language:
input: Get data from the keyboard, a file, or some other device.
output: Display data on the screen or send data to a file or other device.
arithmetic: Perform basic arithmetical operations like addition and multiplication.
conditional execution: Check for certain conditions and execute the appropriate sequence of statements.
repetition: Perform some action repeatedly, usually with some variation.
Many computer languages provide a mechanism to call functions provided by libraries. Provided the functions in a library follow the appropriate run time conventions (e.g., method of passing arguments), then these functions may be written in any other language.