Jumat, 23 Mei 2008

History Of Programming

The earliest programmable machine (that is a machine whose behavior can be controlled by changes to a "program") was Al-Jazari's programmable humanoid robot in 1206. Al-Jazari's robot was originally a boat with four automatic musicians that floated on a lake to entertain guests at royal drinking parties. His mechanism had a programmable drum machine with pegs (cams) that bump into little levers that operate the percussion. The drummer could be made to play different rhythms and different drum patterns by moving the pegs to different locations.

The Jacquard Loom, developed in 1801, is often quoted as a source of prior art. The machine used 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. The use of punched cards was also adopted by Charles Babbage around 1830, to control his Analytical Engine.

This innovation was later refined by Herman Hollerith who, in 1896 founded the Tabulating Machine Company (which became IBM). He invented the Hollerith punched card, the card reader, and the key punch machine. These inventions were the foundation of the modern information processing industry. The addition of a plug-board to his 1906 Type I Tabulator allowed it to do different jobs without having to be rebuilt (the first step toward programming). By the late 1940s there were a variety of plug-board programmable machines, called unit record equipment, to perform data processing tasks (card reading). The early computers were also programmed using plug-boards.

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 of the particular machine, often in binary notation. Every model of computer would be likely to need different instructions 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). In 1954 Fortran, the first higher level programming language, was invented. This allowed programmers to specify calculations by entering a formula directly (e.g. Y = X*2 + 5*X + 9). The program text, or source, was converted into machine instructions using a special program called a compiler. Many other languages were developed, including ones for commercial programming, such as COBOL. Programs were mostly still entered using punch 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 so 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 punch cards.

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 more abstracted languages require additional overhead, in most cases the huge increase in speed of modern computers has brought about little performance decrease compared to earlier counterparts. The benefits of these more abstracted languages is that they allow both an easier learning curve for people less familiar with the older lower-level programming languages, and they also allow a more experienced programmer to develop simple applications quickly. Despite these benefits, large complicated programs, and programs that are more dependent on speed still require the faster and relatively lower-level languages with todays hardware. (The same concerns were raised about the original Fortran language.)

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.

Read More - History Of Programming

Computer Architecture


In computer engineering, computer architecture is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements (especially speeds and interconnections) and design implementations for the various parts of a computer — focusing largely on the way by which the Central Processing Unit (CPU) performs internally and accesses addresses in memory.

It may also be defined as the science and art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals.

Computer architecture comprises at least three main subcategories:

  • Instruction Set Architecture, or ISA, is the abstract image of a computing system that is seen by a machine language (or assembly language) programmer, including the instruction set, memory address modes, processor registers, and address and data formats.
  • Microarchitecture, also known as Computer organization is a lower level, more concrete, description of the system that involves how the constituent parts of the system are interconnected and how they interoperate in order to implement the ISA. The size of a computer's cache for instance, is an organizational issue that generally has nothing to do with the ISA.
  • System Design which includes all of the other hardware components within a computing system such as:
  1. system interconnects such as computer bases and switches
  2. memory controllers and hierarchies
  3. CPU off-load mechanisms such as direc
  4. issues like multi-processing.

Once both ISA and microarchitecture has been specified, the actual device needs to be designed into hardware. This design process is often called implementation. Implementation is usually not considered architectural definition, but rather hardware design engineering. Implementation can be further broken down into three pieces:

  • Logic Implementation/Design - where the blocks that were defined in the microarchitecture are implemented as logic equations.
  • Circuit Implementation/Design - where speed critical blocks or logic equations or logic gates are implemented at the transistor level.
  • Physical Implementation/Design - where the circuits are drawn out, the different circuit components are placed in a chip floor-plan or on a board and the wires connecting them are routed.

For CPUs, the entire implementation process is often called CPU design.

More specific usages of the term include more general wider-scale hardware architectures, such as cluster computing and Non-Uniform Memory Access (NUMA) architectures.

Read More - Computer Architecture

Sabtu, 17 Mei 2008

Google AdSense

Google AdSense is an ad serving program run by Google. Website owners can enroll in this program to enable text, image and, more recently, video advertisements on their sites. These ads are administered by Google and generate revenue on either a per-click or per-thousand-impressions basis. Google is also currently beta-testing a cost-per-action based service.

Google uses its search technology to serve ads based on website content, the user's geographical location, and other factors. Those wanting to advertise with Google's targeted ad system may sign up through AdWords. AdSense has become a popular method of placing advertising on a website because the ads are less intrusive than most banners, and the content of the ads is often relevant to the website.

Currently, AdSense uses JavaScript code to incorporate the advertisements into a participating site. If it is included on a site which has not yet been crawled by the Mediabot, it will temporarily display advertisements for charitable causes known as public service announcements (PSAs). (The Mediabot is a separate crawler from the Googlebot that maintains Google's search index.)

Many sites use AdSense to monetize their content. AdSense has been particularly important for delivering advertising revenue to small sites that do not have the resources for developing advertising sales programs and salespeople. To fill a site with ads that are relevant to the topics discussed, webmasters implement a brief script on the sites' pages. Sites that are content rich have been very successful with this advertising program, as noted in a number of publisher case studies on the AdSense site.

Some webmasters work hard to maximize their own AdSense income. They do this in three ways:
They use a wide range of traffic generating techniques including but not limited to online advertising.
They build valuable content on their sites which attracts AdSense ads which pay out the most when they get clicked.
They use copy on their websites that encourage clicks on ads. Note that Google prohibits people from using phrases like "Click on my AdSense ads" to increase click rates. Phrases accepted are "Sponsored Links" and "Advertisements".

The source of all AdSense income is the AdWords program which in turn has a complex pricing model based on a Vickrey second price auction, in that it commands an advertiser to submit a sealed bid (not observable by competitors). Additionally, for any given click received, advertisers only pay one bid increment above the second-highest bid.

The underlying technology behind AdSense was derived originally from WordNet, Simpli (a company started by the founder of Wordnet, George A. Miller) and a number of professors and graduate students from Brown University, including James A. Anderson, Jeff Stibel and Steve Reiss. A variation of this technology utilizing Wordnet was developed by Oingo, a small search engine company based in Santa Monica founded in 1998.Oingo changed its name to Applied Semantics in 2001, which was then bought by Google for $102 million in April 2003.

AdSense for feeds

In May 2005, Google announced a limited-participation beta version of AdSense for feeds, a version of AdSense that runs on RSS and Atom feeds that have more than 100 active subscribers. According to the Official Google Blog, "advertisers have their ads placed in the most appropriate feed articles; publishers are paid for their original content; readers see relevant advertising — and in the long run, more quality feeds to choose from".

AdSense for feeds works by inserting images into a feed. When the image is displayed by the reader/browser, Google writes the ad content into the image that it returns. The ad content is chosen based on the content of the feed surrounding the image. When the user clicks the image, he or she is redirected to the advertiser's site in the same way as regular AdSense ads.

AdSense for feeds has remained in its beta state ever since its original announcement. Only selected AdSense users have been allowed to sign up for it, and no more users are being admitted to the program.

AdSense for search

A companion to the regular AdSense program, AdSense for search lets website owners place Google search boxes on their pages. When a user searches the web or the site with the search box, Google shares any ad revenue it makes from those searches with the site owner. However the publisher is paid only if the ads on the page are clicked: Adsense does not pay publishers for mere searches.

AdSense for Mobile Content

AdSense for mobile content allows publishers to generate earnings from their mobile webpages using targeted Google ads. Just like AdSense for content, with AdSense for mobile content Google matches ads to the content of your site -- in this case, your mobile website.

How AdSense Works

To put ads on a web page, the webmaster inserts JavaScript code into the page.
Each time a page with an AdSense tag is visited, the JavaScript creates an iframe and sets its "src" attribute to the page's URL.
For contextual advertisements, Google's servers use a cache of the page to determine a set of high-value keywords. If keywords have been cached already, ads are served for those keywords based on the AdWords bidding system. More details are described in the AdSense patent.
For site-targeted ads, the advertiser chooses the page(s) to display ads on and pays based on CPM (cost-per-thousand-impressions, or the price advertisers choose to pay for every thousand ads displayed).
For referrals, Google adds money to the advertiser's account when visitors either download the referred software or subscribe to the referred service.
Search ads are added to the list of results after a user performs a search.
Since the JavaScript is sent to the web browser when the page is requested, it is possible for other site owners to copy the JavaScript into their own web pages. To protect against this type of fraud, AdSense customers can specify the pages on which ads should be shown. AdSense then ignores clicks from pages other than those specified.
Read More - Google AdSense