<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Code Brothers &#187; basic principle</title>
	<atom:link href="http://www.codebrothers.org/tag/basic-principle/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codebrothers.org</link>
	<description></description>
	<lastBuildDate>Tue, 07 Feb 2012 21:21:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>History of the Computer &#8211; Codes For Data Transfer &#8211; Part 2 of 3</title>
		<link>http://www.codebrothers.org/history-of-the-computer-codes-for-data-transfer-part-2-of-3/</link>
		<comments>http://www.codebrothers.org/history-of-the-computer-codes-for-data-transfer-part-2-of-3/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 18:33:24 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[american standard code for information interchange]]></category>
		<category><![CDATA[basic principle]]></category>
		<category><![CDATA[bit byte]]></category>
		<category><![CDATA[code ascii]]></category>
		<category><![CDATA[column card]]></category>
		<category><![CDATA[history of the computer]]></category>
		<category><![CDATA[proprietary computer system]]></category>
		<category><![CDATA[punch card]]></category>
		<category><![CDATA[punched cards]]></category>
		<category><![CDATA[rectangular holes]]></category>

		<guid isPermaLink="false">http://www.codebrothers.org/history-of-the-computer-codes-for-data-transfer-part-2-of-3/</guid>
		<description><![CDATA[Continuing our look at codes for communicating with the computer. We check out paper tape, punch cards, and magnetic tape.]]></description>
			<content:encoded><![CDATA[<p>COMPUTER CODES</p>
<p>Various codes have been used in computing, EBCDIC, Fieldata etc., with various bit combination&#8217;s, and total bits between 5 and 8. This often depended on which proprietary computer system you were using, and what type of device you were using. Punched cards had a different code again. A standard code, ASCII, was eventually introduced. The American Standard Code for Information Interchange has 8 bits, and is used interchangeably on almost all systems today.</p>
<p>PAPER TAPE CODES</p>
<p>Paper tape was upgraded to 8 bits across, plus the sprocket, and used to boot computers, and to transfer data from one machine to another. For instance a NC, or Numerical Control, could use paper tape to relay instructions to a machine for cutting steel sheet shapes.</p>
<p>PUNCH CARD CODES</p>
<p>Punch cards had been used since the 19th century, and a couple of different formats had emerged, round holes, rectangular holes, 80 per card, 90 per card, different codes, etc. Once again it depended on whose computer you were using IBM, Univac, Control Data etc. However, the basic principle was the same. The &#8216;standard&#8217; came to be the 80-column card, with 12 rows for each character. The 1 to 9 rows were numbers 1-9, with the 0, 11 and 12 rows being used for various special characters, shifts etc.</p>
<p>MAGNETIC TAPE CODES</p>
<p>Magnetic tape, initially on 10 inch reels of half inch wide tape, 2400 ft long, used variations of the computer codes. Initially 6 bits plus parity (7) were written across the tape. With the introduction of bytes this increased to 9 bits to incorporate the 8-bit byte plus parity.</p>
<p>Most variations here have been in the recording system, that is how the data is written to and read from the tape. These include NRZ (Non Return to Zero), PE (Phase Enabled) and, latterly GCR (Group Controlled Recording). The density possible has increased, so that the capacity of the tapes even in the present day small cassettes has greatly increased.</p>
<p>Transport methods, initially &#8216;Stop-Start&#8217;, to record each character, now more commonly &#8216;Streaming&#8217;, have developed in parallel. The tape has normally been written in blocks of various lengths with codes being required to control these, such as &#8216;Start of Block&#8217;, &#8216;Start of Data&#8217; etc. Other codes are used to verify the data. The DAT (Digital Audio Tape) tapes used today use a different form of digital coding, but data codes are much the same.</p>
<p>As well as the parity bit in each character, there can be a parity bit, for example, for all the &#8217;3&#8242; bits in a block. This is known as &#8216;longitudinal parity&#8217;, or parity along the tape, a bit for each &#8216;row&#8217; of bits in the block. You can also have a CRC or, cyclic redundancy check, which considers all the bits in the block, in a complicated formula.</p>
<p>All these check codes are necessary because magnetic tape is an inherently unreliable medium, as you probably know from listening to your old cassettes! This has caused ECC or error correction codes to be developed, similar to those used in memory. In fact there are so many extra codes on the tape you wonder if there is enough room for data.</p>
<p>In part 3 we look at data transmission, disk, and printer codes.</p>
<p>Author: <a href="http://EzineArticles.com/?expert=Tony_Stockill">Tony Stockill</a><br />Article Source: <a href="http://ezinearticles.com/?History-of-the-Computer---Codes-For-Data-Transfer---Part-2-of-3&amp;id=153354">EzineArticles.com</a><br />Provided by: <a href="http://neohdtv.com/">Digital TV, HDTV, Satellite TV</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codebrothers.org/history-of-the-computer-codes-for-data-transfer-part-2-of-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiler Design &#8211; Choosing Intermediate Code</title>
		<link>http://www.codebrothers.org/compiler-design-choosing-intermediate-code/</link>
		<comments>http://www.codebrothers.org/compiler-design-choosing-intermediate-code/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 17:32:54 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[basic principle]]></category>
		<category><![CDATA[code generator]]></category>
		<category><![CDATA[compiler design]]></category>
		<category><![CDATA[control flow]]></category>
		<category><![CDATA[high level language]]></category>
		<category><![CDATA[intermediate code]]></category>
		<category><![CDATA[internal representation]]></category>
		<category><![CDATA[optimization algorithms]]></category>
		<category><![CDATA[target code]]></category>
		<category><![CDATA[target microprocessor]]></category>

		<guid isPermaLink="false">http://www.codebrothers.org/compiler-design-choosing-intermediate-code/</guid>
		<description><![CDATA[In theory, it is possible to directly translate each source code statement to a sequence of microprocessor instructions which will perform the desired result. However, in practice it is better to perform the compilation in two steps. The first step is to process the source code and generate an intermediate code, and in the second step to process this intermediate code to generate the final executable code for our target microprocessor. There are many advantages in this approach.]]></description>
			<content:encoded><![CDATA[<p>The basic principle of any compiler is to read the source file and to generate compiled code. In practice the compilation process is not so simple. There is a huge leap between the source code written in a high-level language and the desired target code for a particular platform. In general, each high-level statement will be translated to many low-level instructions for our target microprocessor.</p>
<p>In theory, it is possible to directly translate each source code statement to a sequence of microprocessor instructions which will perform the desired result. However, in practice it is better to perform the compilation in two steps. The first step is to process the source code and generate an intermediate code, and in the second step to process this code to generate the final executable code for our target microprocessor. There are many advantages in this approach.</p>
<p>It is a very good idea to have a target-independent intermediate code. This code is usually a description of the high-level statements with some simpler instructions that accurately represent the operations of the source code statements. This code will not execute in a real processor, it is only an internal representation of our high-level program. Since it uses simpler constructs than the high-level language it is much easier to determine the data and control flow. This is very important for optimization algorithms.</p>
<p>Target-independent intermediate code means that for each high-level language that needs to be supported we only have to write the first part of the compiler, the code generator is already written for the intermediate code which does not change. The same applies to the second part, the code generator. If we need to port our compiler to another platform, we only need to write a new code generator for the new processor.</p>
<p>The choice for intermediate code representation is not a simple task. We need to define a language that will be platform independent, will support all the features of desired processor families and will be easy to analyze for code optimizations.</p>
<p>Author: <a href="http://EzineArticles.com/?expert=Igor_Funa">Igor Funa</a><br />Article Source: <a href="http://ezinearticles.com/?Compiler-Design---Choosing-Intermediate-Code&amp;id=3075104">EzineArticles.com</a><br />Provided by: <a href="http://hippestphone.com/">Latest trends in mobile phone</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codebrothers.org/compiler-design-choosing-intermediate-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
