<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1123201753695266522</id><updated>2011-11-28T05:07:15.055+05:30</updated><category term='C++'/><category term='Windows XP'/><category term='Resume Preparation'/><category term='Download'/><category term='Shortcut Keys'/><category term='C'/><category term='OOP'/><category term='Pointers'/><category term='PowerPoint'/><category term='Computer Networks'/><category term='Quiz C++'/><category term='Java'/><category term='Tricks'/><category term='Interview'/><category term='DBMS'/><category term='JDBC'/><category term='ASP.NET'/><category term='EJB 3.0'/><category term='Job'/><title type='text'>Unique But United - Students with great minds</title><subtitle type='html'>Roy Antony Arnold G - This blog is created to share my knowledge and resources with my students</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-8013028900223742811</id><published>2011-06-30T14:11:00.001+05:30</published><updated>2011-06-30T14:12:30.477+05:30</updated><title type='text'>first time use this blog</title><content type='html'>hai&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-8013028900223742811?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/8013028900223742811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=8013028900223742811&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8013028900223742811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8013028900223742811'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2011/06/first-time-use-this-blog_30.html' title='first time use this blog'/><author><name>S.Gnanavel</name><uri>http://www.blogger.com/profile/09266440352310917987</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/-464m7nL_v8c/ThFNyLhL-NI/AAAAAAAAAQs/uq5WhIcXp1s/s220/my%2Bphoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-1910346736492926737</id><published>2011-06-30T14:11:00.000+05:30</published><updated>2011-06-30T14:12:26.793+05:30</updated><title type='text'>first time use this blog</title><content type='html'>hai&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-1910346736492926737?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/1910346736492926737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=1910346736492926737&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1910346736492926737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1910346736492926737'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2011/06/first-time-use-this-blog.html' title='first time use this blog'/><author><name>S.Gnanavel</name><uri>http://www.blogger.com/profile/09266440352310917987</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/-464m7nL_v8c/ThFNyLhL-NI/AAAAAAAAAQs/uq5WhIcXp1s/s220/my%2Bphoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-407351462633628955</id><published>2009-06-28T15:31:00.001+05:30</published><updated>2009-06-28T15:31:24.733+05:30</updated><title type='text'>What is the "Chief Executive Officer"?</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='color:yellow; font-family:Times New Roman; font-size:13pt'&gt;&lt;strong&gt;A "Definition"&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:#f2dbdb; font-family:Times New Roman; font-size:12pt'&gt;The definition of "chief executive officer" (almost always) depends on whether a business is a corporation or not, that is, whether it (usually) has a board of directors or not. In an organization that has a board of directors, the "chief executive officer" is (usually) the singular organizational position that is primarily responsible to carry out the strategic plans and policies as established by the board of directors. In this case, the chief executive reports to the board of directors. In a form of business that is usually without a board of directors (sole proprietorship, partnership, etc.), the "chief executive officer" is (usually) the singular organizational position (other than partnerships, etc.) that sets the direction and oversees the operations of an organization.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style='color:#eaf1dd'&gt;Major Roles of the Position of Chief Executive Officer&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style='color:yellow'&gt;&lt;strong&gt;LEADER &lt;/strong&gt;&lt;/span&gt;&lt;span style='color:#eaf1dd'&gt;&lt;br/&gt;· Advises the Board&lt;br/&gt;· Advocates / promotes organization and stakeholder change related to organization mission&lt;br/&gt;· Supports motivation of employees in organization products/programs and operations&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style='color:yellow'&gt;&lt;strong&gt;VISIONARY / INFORMATION BEARER&lt;/strong&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style='color:#eaf1dd'&gt;· Ensures staff and Board have sufficient and up-to-date information&lt;br/&gt;· Looks to the future for change opportunities&lt;br/&gt;· Interfaces between Board and employees&lt;br/&gt;· Interfaces between organization and community&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style='color:yellow'&gt;&lt;strong&gt;DECISION MAKER&lt;/strong&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style='color:#eaf1dd'&gt;· Formulates policies and planning recommendations to the Board &lt;br/&gt;· Decides or guides courses of action in operations by staff&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style='color:yellow'&gt;&lt;strong&gt;MANAGER&lt;/strong&gt;&lt;/span&gt;&lt;span style='color:#eaf1dd'&gt;&lt;br/&gt;· Oversees operations of organization&lt;br/&gt;· Implements plans&lt;br/&gt;· Manages human resources of organization&lt;br/&gt;· Manages financial and physical resources&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style='color:yellow'&gt;&lt;strong&gt;BOARD DEVELOPER&lt;/strong&gt;&lt;/span&gt;&lt;span style='color:#eaf1dd'&gt;&lt;br/&gt;· Assists in the selection and evaluation of board members&lt;br/&gt;· Makes recommendations, supports Board during orientation and self-evaluation&lt;br/&gt;· Supports Board's evaluation of Chief Executive&lt;strong&gt;&lt;br /&gt;					&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-407351462633628955?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/407351462633628955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=407351462633628955&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/407351462633628955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/407351462633628955'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2009/06/what-is-executive-officer.html' title='What is the &amp;quot;Chief Executive Officer&amp;quot;?'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-4523435924439317620</id><published>2009-06-28T15:28:00.001+05:30</published><updated>2009-06-28T15:28:24.056+05:30</updated><title type='text'>WHY EMPLOYEES LEAVE ORGANISATIONS? - Azim Premji, CEO- Wipro</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='color:#c6d9f1; font-family:Verdana'&gt;Every company faces the problem of people leaving the company for better pay or profile. &lt;br/&gt;&lt;br/&gt;Early this year, Mark, a senior software designer, got an offer from a prestigious international firm to work in its India operations developing specialized software. He was thrilled by the offer. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='color:#c6d9f1; font-family:Verdana'&gt;&lt;br/&gt;He had heard a lot about the CEO. The salary was great. The company had all the right systems in place employee-friendly human resources (HR) policies, a spanking new office, and the very best technology, even a canteen that served superb food. &lt;br/&gt;&lt;br/&gt;Twice Mark was sent abroad for training. "My learning curve is the sharpest it's ever been," he said soon after he joined. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='color:#c6d9f1; font-family:Verdana'&gt;&lt;br/&gt;Last week, less than eight months after he joined, Mark walked out of the job. &lt;strong&gt;&lt;br/&gt;&lt;br/&gt;Why did this talented employee leave? &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;br /&gt; &lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Verdana'&gt;&lt;span style='color:#c6d9f1'&gt;The answer lies in one of the largest studies undertaken by the Gallup Organization. The study surveyed over a million employees and 80,000 managers and was published in a book called "First Break All The Rules". It came up with this surprising finding: &lt;strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style='color:red'&gt;If you're losing good people, look to their &lt;/span&gt;&lt;span style='color:yellow'&gt;manager&lt;/span&gt;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;span style='color:red'&gt; ....&lt;/span&gt;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;span style='color:red'&gt;manager&lt;/span&gt;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;span style='color:red'&gt;is the reason people stay and thrive in an organization. And he 's the reason why people leave. When people leave they take knowledge, experience and contacts with them, straight to the competition. &lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Verdana'&gt;&lt;span style='color:#333333'&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style='color:yellow'&gt;"&lt;strong&gt;People leave managers not companies&lt;/strong&gt;,"&lt;/span&gt;&lt;span style='color:#c6d9f1'&gt; write the authors Marcus Buckingham and Curt Coffman. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='color:#c6d9f1; font-family:Verdana'&gt;&lt;br/&gt;&lt;strong&gt;Mostly manager drives people away? &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='color:#c6d9f1; font-family:Verdana'&gt;&lt;br/&gt;HR experts say that of all the abuses, employees find &lt;span style='text-decoration:underline'&gt;humiliation&lt;/span&gt; the most intolerable. The first time, an employee may not leave, but a thought has been planted. The second time their thought gets strengthened. The third time, he looks for another job. &lt;br/&gt;&lt;br/&gt;When people cannot retort openly in anger, they do so by passive aggression. By digging their heels in and slowing down. By &lt;span style='text-decoration:underline'&gt;doing only what they are told to do and no more&lt;/span&gt;. By omitting to give the boss crucial information. Dev says: &lt;span style='text-decoration:underline'&gt;"If you work for a jerk, you basically want to get him into trouble. You don 't have your heart and soul in the job." &lt;/span&gt;&lt;br/&gt;&lt;br/&gt;Different managers can &lt;span style='text-decoration:underline'&gt;stress out employees&lt;/span&gt; in different ways - by being too controlling, too suspicious, too pushy, too critical, but they forget that workers are not fixed assets, they are free agents. When this goes on too long, an employee will quit - often over a trivial issue. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='color:red; font-family:Verdana'&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style='color:#fabf8f'&gt;&lt;span style='font-family:Verdana; font-size:14pt; text-decoration:underline'&gt;Talented men leave. Dead wood doesn't&lt;/span&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt; &lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;					&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-4523435924439317620?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/4523435924439317620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=4523435924439317620&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/4523435924439317620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/4523435924439317620'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2009/06/why-employees-leave-organisations-azim_678.html' title='WHY EMPLOYEES LEAVE ORGANISATIONS? - Azim Premji, CEO- Wipro'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-8939069653977152291</id><published>2009-06-28T15:16:00.003+05:30</published><updated>2009-06-28T15:21:32.680+05:30</updated><title type='text'>Hands-on with Fujitsu's teeny tiny laptop</title><content type='html'>&lt;span xmlns=""&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style=";font-family:Times New Roman;font-size:180%;"  &gt;Fujitsu's new ultra tiny laptop is &lt;a href="http://reviews.cnet.com/laptops/fujitsu-lifebook-u810/4505-3121_7-32600944.html"&gt;&lt;span style="text-decoration: underline;color:blue;" &gt;LifeBook U810&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CROYBRO%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CROYBRO%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso"&gt;&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CROYBRO%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CROYBRO%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin-top:0in; 	mso-para-margin-right:0in; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:12;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="Picture_x0020_2" spid="_x0000_i1025" type="#_x0000_t75" alt="http://i.i.com.com/cnwk.1d/i/bto/20070912/u810_300x200.jpg" style="'width:225pt;"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ROYBRO~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.jpg" title="u810_300x200"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span xmlns=""&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_OJWfB6V1sfg/Skc8v8Z3YWI/AAAAAAAAAPE/FqNJQE0TD0I/s1600-h/clip_image001.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 200px;" src="http://4.bp.blogspot.com/_OJWfB6V1sfg/Skc8v8Z3YWI/AAAAAAAAAPE/FqNJQE0TD0I/s320/clip_image001.jpg" alt="" id="BLOGGER_PHOTO_ID_5352313476519256418" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Times New Roman;font-size:130%;"  &gt;The U810 is a hybrid between an ultraportable convertible tablet and a &lt;a title="Band of the Hand: UMPCs reviewed  -- Monday, Apr 23, 2007" href="http://news.cnet.com/8301-17938_105-9711104-1.html"&gt;&lt;span style="text-decoration: underline;color:blue;" &gt;UMPC &lt;/span&gt;&lt;/a&gt;(that's ultramobile PC). We've always liked UMPCs in theory, but these pocket-sized systems, including the &lt;a href="http://reviews.cnet.com/laptops/oqo-model-02/4505-3121_7-32416630.html"&gt;&lt;span style="text-decoration: underline;color:blue;" &gt;OQO model 02 &lt;/span&gt;&lt;/a&gt;and &lt;a href="http://reviews.cnet.com/laptops/sony-vaio-ux390/4505-3121_7-32306444.html"&gt;&lt;span style="text-decoration: underline;color:blue;" &gt;Sony VAIO UX390&lt;/span&gt;&lt;/a&gt;, were more like suped-up smart phones than actual computers. There's only so productive you can be on a BlackBerry-style thumb keyboard.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Times New Roman;font-size:130%;"  &gt;The new LifeBook U810 takes a different approach, mimicking a traditional laptop's form factor, shrunk down to a 5.6-inch swiveling touchscreen, along with a fairly full-featured keyboard, fingerprint reader, Bluetooth, and Wi-Fi (but no EVDO yet). It runs Intel's A110 CPU and had 1GB of RAM and Vista Premium.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Times New Roman;font-size:12;"  &gt;&lt;span style="font-size:130%;"&gt;The street date for this $999 mini-laptop is Sept. 18, so look for a full review then, but be forewarned: We're holding the black-and-white European version in this photo. The U.S. version is only going to be available with an all-black design. Apparently some focus group types decided that white gadgets aren't hot anymore in the American market (come to think of it, even the iPhone and new iPod Touch are black--maybe there's something to this).&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-8939069653977152291?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/8939069653977152291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=8939069653977152291&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8939069653977152291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8939069653977152291'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2009/06/hands-on-with-fujitsu-teeny-tiny-laptop.html' title='Hands-on with Fujitsu&amp;#39;s teeny tiny laptop'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_OJWfB6V1sfg/Skc8v8Z3YWI/AAAAAAAAAPE/FqNJQE0TD0I/s72-c/clip_image001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-6089693683691815928</id><published>2008-05-02T22:36:00.001+05:30</published><updated>2008-05-02T22:36:31.653+05:30</updated><title type='text'>An Interview with Bjarne Stroustrup</title><content type='html'>&lt;span xmlns=''&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:0px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td vAlign='middle'&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style='text-align: justify'&gt;&lt;br /&gt; &lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman'&gt;&lt;span style='font-size:13pt'&gt;C++ creator Bjarne Stroustrup discusses the evolving C++0x standard, the education of programmers, and the future of programming.&lt;/span&gt;&lt;span style='font-size:12pt'&gt;&lt;br /&gt;					&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;By James Buchanan,  &lt;a target='_blank' href='http://www.ddj.com/;jsessionid=QDFLEPSJ33EPEQSNDLRSKHSCJUNN2JVN'&gt;&lt;span style='color:blue; text-decoration:underline'&gt;Dr. Dobb's Journal &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;Mar 27, 2008 &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;URL:&lt;a href='http://www.ddj.com/cpp/207000124;jsessionid=QDFLEPSJ33EPEQSNDLRSKHSCJUNN2JVN'&gt;&lt;span style='color:blue; text-decoration:underline'&gt;http://www.ddj.com/cpp/207000124 &lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;br /&gt; &lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; When did you first become interested in computing, what was your first computer and what was the first program you wrote? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; I learned programming in my second year of university. I was signed up to do "mathematics with computers science" from the start, but I don't really remember why. I suspect that I (erroneously) thought that computing was some sort of applied math. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;My fist computer was the departmental GIER computer. It was almost exclusively programmed in Algol-60. My first semi-real program plotted lines (on paper!) between points on the edge of a superellipse to create pleasant graphical designs. That was in 1970. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; When you created C++, was the object oriented programming (OOP) paradigm (or programming style) obviously going to gain a lot of popularity in the future, or was it a research project to find out if OOP would catch on? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Neither! My firm impression (at the time) was that all sensible people "knew" that OOP didn't work in the real world: It was too slow (by more than an order of magnitude), far too difficult for programmers to use, didn't apply to real-world problems, and couldn't interact with all the rest of the code needed in a system. Actually, I'm probably being too optimistic here: "sensible people" had never heard of OOP and didn't want to hear about it. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;I designed and implemented C++ because I had some problems for which it was the right solution: I needed C-style access to hardware and Simula-style program organization. It turned out that many of my colleagues had similar needs. Actually, then it was not even obvious that C would succeed. At the time, C was gaining a following, but many people still considered serious systems programming in anything but assembler adventurous and there were several languages that—like C—provided a way of writing portable systems programs. One of those others might have become dominant instead of C. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; Before C++, did you "just have to create C++" because of the inadequacy of other languages, for example? In essence, why did you create C++? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Yes, I created C++ in response to a real need: The languages at the time didn't support abstraction for hard systems programming tasks in the way I needed it. I was trying to separate the functions of the Unix kernel so that they could run on different processors of a multi-processor or a cluster. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; Personally, do you think OOP is the best programming paradigm for large scale software systems, as opposed to literate programming, functional programming, procedural programming, etc.? Why? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; No programming paradigm is best for everything. What you have is a problem and a solution to it; then, you try to map that solution into code for execution. You do that with resource constraints and concerns for maintainability. Sometimes, that mapping is best done with OOP, sometimes with generic programming, sometimes with functional programming, etc. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;OOP is appropriate where you can organize some key concepts into a hierarchy and manipulate the resulting classes through common base classes. Please note that I equate OO with the traditional use of encapsulation, inheritance, and (run time) polymorphism. You can choose alternative definitions, but this one is well-founded in history. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;I don't think that literate programming is a paradigm like the others you mention. It is more of a development method like test-driven development. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:13pt'&gt;&lt;strong&gt;C++0x&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; In your paper, "&lt;a href='http://www.ddj.com/cpp/184401958'&gt;&lt;span style='color:blue; text-decoration:underline'&gt;The Design of C++0x&lt;/span&gt;&lt;/a&gt;" published in the May 2005 issue of the &lt;em&gt;C/C++ User's Journal&lt;/em&gt;, you note that "C++'s emphasis on general features (notably classes) has been its main strength." In that paper you also mention the most change and new features will be in the Standard Library. A lot of people would like to see regular expressions, threads and the like, for example. Could you give us an idea of new classes or facilities that we can expect to see in C++0x's Standard Library? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; The progress on standard libraries has not been what I hoped for. We will get regular expressions, hash tables, threads, many improvements to the existing containers and algorithms, and a few more minor facilities. We will not get the networking library, the date and time library, or the file system library. These will wait until a second library TR. I had hoped for much more, but the committee has so few resources and absolutely no funding for library development. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; Have you or others working on C++0x had a lot of genuinely good ideas for new classes or facilities? If so, will all of them be used or will some have to be left out because of time and other constraints on developing a new standard? If that is the case, what would most likely be left out? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; There is no shortage of good ideas in the committee or of good libraries in the wider C++ community. There are, however, severe limits to what a group of volunteers working without funding can do. What I expect to miss most will be thread pools and the file system library. However, please note that the work will proceed beyond '09 and that many libraries are already available; for example see what boost.org has to offer. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; When would you expect the C++0x Standard to be published? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt;The standard will be finished in late 2008, but it takes forever to go through all the hoops of the ISO process. So, we must face the reality that "C++0x" may become C++10. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; Concurrent programming is obviously going to become important in the future, because of multi-core processors and kernels that get better at distributing processes among them. Do you expect C++0x will address this, and if so, how? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; The new memory model and a task library was voted into C++0x in Kona. That provides a firm basis for share-memory multiprocessing as is essential for multicores. Unfortunately, it does not address higher-level models for concurrency such as thread pools and futures, shared memory parallel programming, or distributed memory parallel processing. Thread pools and futures are scheduled for something that's likely to be C++13. Shared memory can be had using Intel's Threading Building Blocks and distributed memory parallel processing is addresses by STAPL from Texas A&amp;amp;M University and other research systems. The important thing here is that given the well-defined and portable platform provided by the C++0x memory model and threads, many higher-level models can be provided. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Distributed programming isn't addressed, but there is a networking library scheduled for a technical report. That library is already in serious commercial use and its public domain implementation is available from boost.org. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:13pt'&gt;&lt;strong&gt;Educating the Next Generation&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; Do you think programmers should be "armed and dangerous" with their tools like compilers, editors, debuggers, linkers, version control systems and so on very early on in their learning or careers? Do you think that universities should teach debugging and how to program in a certain environment (e.g. Unix) as well, for example? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; I'm not 100% sure I understand the question, but I think "yes." I don't think that it should be possible to graduate with a computer science, computer engineering, etc. degree without having used the basic tools you mention above for a couple of major projects. However, it is possible. In some famous universities, I have observed that Computer Science is the only degree you can get without writing a program. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;I'm not arguing for mere training. The use of tools must not be a substitute for a good understanding of the principles of programming. Someone who knows all the power-tools well, but not the fundamental principles of software development would indeed be "armed and dangerous." Let me point to algorithms, data structures, and machine architecture as essentials. I'd also like to see a good understanding of operating systems and networking. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Some educators will point out that all of that—together with ever-popular and useful topics such as graphics and security—doesn't fit into a four-year program for most students. Something will have to give! I agree, but I think what should give is the idea that four years is enough to produce a well-rounded software developer: Let's aim to make a five-or-six-year masters the first degree considered sufficient. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; What should C++ programmers or any programmer do, in your view, before sitting down to write a substantial software program? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Think. Discuss with colleagues and potential users. Get a good first-order understanding of the problem domain. If possible, try to be a user of an existing system in that field. Then, without too much further agonizing, try to build a simplified system to try out the fundamental ideas of a design. That "simplified system" might become a throwaway experiment or it may become the nucleus of a complete system. I'm a great fan of the idea of "growing" a system from simpler, less complete, but working and tested systems. To try out all the tool chains before making too grand plans. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;How would the programmer, designer, team get those "fundamental ideas of a design"? Experience, knowledge of similar systems, of tools, and of libraries is a major part of the answer. The idea of a single developer carefully planning to write a system from the bare programming language has realistically been a myth for decades. David Wheeler wrote the first paper about how to design libraries in 1951—56 years ago! &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; What type of programs do you personally enjoy writing? What programs have you written recently? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; These days I don't get enough time to write code, but I think writing libraries is the most fun. I wrote a small library supporting N-dimensional arrays with the usual mathematical operations. I have also been playing with regular expressions using the (draft) C++0x library (the boost.org version). &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;I also write a lot of little programs to test aspects of the language, but that's more work than fun, and also small programs to explore application domains that I haven't tried or haven't tried lately. It is a rare week that I don't write some code. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; In your experience, have there been any features of C++ that newcomers to the language have had the most difficulty with? Would you have any advice for newcomers to C++ or have you found a way of teaching difficult features of C++ saving students a lot of trial and error? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Some trial and error is inevitable, and may even be good for the newcomer, but yes I have some experience introducing C++ to individuals and organizations—some of it successful. I don't think it's the features that are hard to learn, it is the understanding of the programming paradigms that cause trouble. I'm continuously amazed at how novices (of all backgrounds and experiences) come to C++ with fully formed and firm ideas of how the language should be used. For example, some come convinced that any techniques not easily used in C is inherently wrongheaded, hard to use, and very inefficient. It's amazing what people are willing to firmly assert without measurements and often based on briefly looking at C++ a decade ago using a compiler that was hardly out of beta—or simply based on other people's assertions without checking if they have a basis in reality. Conversely, there is now a generation who is firmly convinced that a program is only well-designed if just about everything is part of a class hierarchy and just about every decision is delayed to run-time. Obviously programs written by these "true OO" programmers become the best arguments for the "stick to C" programmers. Eventually, a "true OO" programmer will find that C++ has many features that don't serve their needs and that they indeed fail to gain that fabled efficiency. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;To use C++ well, you have to use a mix of techniques; to learn C++ without undue pain and unnecessary effort, you must see how the language features serve the programming styles (the programming paradigms). Try to see concepts of an application as classes. It's not really hard when you don't worry too much about class hierarchies, templates, etc. until you have to. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Learn to use the language features to solve simple programs at first. That might sound trivial, but I receive many questions from people who have "studied C++" for a couple of weeks and are seriously confused by examples of multiple inheritance using names like B1, B2, D, D2, f, and mf. They are—usually without knowing it—trying to become language lawyers rather than programmers. I don't need multiple inheritance all that often, and certainly not the tricky parts. It is far more important to get a feel for writing a good constructor to establish an invariant and understand when to define a destructor and copy operations. My point is that the latter is almost instantly useful and not difficult (I can teach it to someone who has never programmed after a month). The finer details of inheritance and templates, on the other hand, are almost impenetrable until you have a real-world program that needs it. In &lt;em&gt;The Art of Computer Programming&lt;/em&gt; Don Knuth apologizes for not giving good examples of co-routines, because their advantages are not obvious in small programs. Many C++ features are like that in that: They don't make sense until you face a problem of the kind and scale that needs that feature. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; Do you have any suggestions for people who are not programmers and want to learn how to program, and want to learn C++ as their first language? For instance, there's a book called &lt;em&gt;Accelerated C++: Practical Programming by Example&lt;/em&gt; by Andrew Koenig and Barbara E. Moo. This book's approach is to teach by using the STL and advanced features at an early stage, like using strings, vectors and so on, with the aim of writing "real" programs faster. Would you agree that it's best to begin "the C++ way" if you could call it that, instead of starting off with a strictly procedural style and leaving classes, the Standard Library and other features often preceded with "an introduction to OOP" much later in a book? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; I have had to consider this question "for real" and have had the opportunity to observe the effects of my theories. I designed and repeatedly taught a freshman programming course at Texas A&amp;amp;M University. I use standard library features, such as &lt;em&gt;string&lt;/em&gt;, &lt;em&gt;vector&lt;/em&gt;, and &lt;em&gt;sort&lt;/em&gt;, from the first week. I don't emphasize STL; I just use the facilities to have better types with which to introduce the usual control structures and programming techniques. I emphasize correctness and error handling from day 1. I show how to build a couple of simple types in lecture 6 (week three). I show much of the mechanisms for defining classes in lectures 8 and 9 together with the ways of using them. By lecture 10 and 11, I have the students using &lt;em&gt;iostreams&lt;/em&gt; on files. By then, they are tired, but can read a file of structured temperature data and extract information from it. They can do it 6 weeks after seeing their first line of code. I emphasize the use of classes as a way of structuring code to make it easier to get right. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;After that comes graphics, including some use of class hierarchies, and then comes the STL. Yes, you can do that with complete beginners in a semester. We have by now done that for more than 1,000 students. The reason for putting the STL after graphics is purely pedagogical: after &lt;em&gt;iostreams&lt;/em&gt; the students are thoroughly tired of "calculations and CS stuff," but doing graphics is a treat! The fact that they need the basics of OOP to do that graphics is a minor detail. They can now graph the data read and fill class objects from a GUI interface. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; I read an interview in Texas A&amp;amp;M Engineering Magazine where you said, "I decided to design a first programming course after seeing how many computer science students—including students from top schools—lacked fundamental skills needed to design and implement quality software..." What were these fundamental skills students lacked, and what did you put in your programming course to address this issue? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; I saw so many students who simply didn't have the notion that code itself is a topic of interest and that well-structured code is a major time saver. The notion of organizing code to be sure that it is correct and maybe even for someone else to use and modify is alien: They see code as simply something needed to hand in the answers to an exercise. I am of course not talking about all students or just students from one university or from one country. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;In my course I heavily emphasize structure, correctness, and define the purpose of the course as "becoming able to produce code good enough for the use of others." I use data structures and algorithms, but the topic of the course is "programming" not fiddling with pointers to implement a doubly linked list. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;And yes, I do teach pointers, arrays, and casts, but not until well after strings, vectors, and class design. You need to give the students a feel of the machine as well as the mechanisms to make the (correct) use of the machine simple. This also reflects comments I have repeatedly had from industry: that they have a shortage of developers who understand "the machine" and "systems." &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; You have said that a programmer must be able to think clearly, understand questions and express solutions. This is in agreement with G. Polya's thesis that you must have a clear and complete understanding of a question before you can ever hope to solve it. Would you recommend supplementary general reading like G. Polya's book, &lt;em&gt;How to Solve It&lt;/em&gt; along with reading books on programming and technique? If so, what books would you recommend? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; I avoid teaching "how to think." I suspect that's best taught through lots of good examples. So I give lots of good examples (to set a standard) including examples of gradual development of a program from early imperfect versions. I'm not saying anything against Polya's ideas, but I don't have the room for it in my approach. The problem with designing a course (or a curriculum) is more what to leave out than what to add. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; What are the most useful mathematical skills, generally, that a programmer should have an understanding of if they intend to become professional, in your view? Or would there be different mathematical skills a programmer should know for different programmers and different tasks? If this is the case could you give examples? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; I don't know. I think of math as a splendid way to learn to think straight. Exactly what math to learn and exactly where what kinds of math can be applied is secondary to me. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:13pt'&gt;&lt;strong&gt;The Future of C++&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; Your research group is looking into parallel and distributed systems. From this research, have any new ideas for the new C++0x standard come about? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Not yet. The gap between a research result and a tool that can be part of an international standard is enormous. Together with Gabriel Dos Reis at TAMU, I have worked on the representation of C++ aiming at better program analysis and transformation (eventually to be applied to distributed system code). That will become important some day. A couple of my grad students analyzed the old problem of multi-methods (calling a function selected based on two or more dynamic types) and found a solution that can be integrated into C++ and performs better in time and space than any workaround. Together with Tom Gibbs from Lockheed-Martin, I developed a fast, constant-time, dynamic &lt;em&gt;cast&lt;/em&gt; implementation. This work points to a future beyond C++0x. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; You have some thoughts on how programming can be improved, generally. What are they? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; There is immense scope for improvement. A better education is a start. I think that theory and practice have become dissociated in many cases, with predictably poor results. However, we should not fool ourselves into seeing education and/or training as a panacea. There are on the order of 10 million programmers "out there" and little agreement on how to improve education. In the early days of C++, I worried a lot about "not being able to teach teachers fast enough." I had reason to worry because much of the obvious poor use of C++ can be traced to fundamental misunderstandings among educators. I obviously failed to articulate my ideals and principles sufficiently. Given that the problems are not restricted to C++, I'm not alone in that. As far as I can see, every large programming community suffers, so the problem is one of scale. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;"Better programming languages" is one popular answer, but with a new language you start by spending the better part of a decade to rebuild existing infrastructure and community, and the advance comes at the cost of existing languages: At least some of the energy and resources spent for the new language would have been spent on improving old ones. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;There are so many other areas where significant improvements are possible: IDEs, libraries, design methods, domain specific languages, etc. However, to succeed, we must not lose sight of programming. We must remember that the aim is to produce working, correct, and well-performing code. That may sound trite, but I am continuously shocked over how little code is discussed and presented at some conferences that claim to be concerned with software development. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; An area of interest for you is multi-paradigm (or multiple-style) programming. Could you explain what this is for you, what you have been doing with multi-paradigm programming lately and do you have any examples of the usefulness of multi-paradigm programming? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Almost all that I do in C++ is "multi-paradigm." I really have to find a better name for that, but consider: I invariably use containers (preferably standard library (STL) containers); they are parameterized on types and supported by algorithms. That's generic programming. On the other hand, I can't remember when I last wrote a significant program without some class hierarchies. That's object-oriented programming. Put pointers to base classes in containers and you have a mixture of GP and OOP that is simpler, less error prone, more flexible, and more efficient than what could be done exclusively in GP or exclusively in OOP. I also tend to use a lot of little free-standing types, such as &lt;em&gt;Color&lt;/em&gt; and &lt;em&gt;Point&lt;/em&gt;. That's basic data abstraction and such types are of course used in class hierarchies and in containers. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; You are looking at making C++ better for systems programming in C++0x as I understand it, is that correct? If so, what general facilities or features are you thinking about for making C++ a great systems language? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Correct. The most direct answer involves features that directly support systems programming, such as thread local storage and atomic types. However, the more significant part is improvements to the abstraction mechanism that will allow cleaner code for higher-level operations and better organization of code without time or space overheads compared to low-level code. A simple example of that is generalized constant expressions that allows compile-time evaluate of functions and guaranteed compile-time initialization of memory. An obvious use of that is to put objects in ROM. C++0x also offers a fair number of "small features" that without adding to run-time costs make the language better for writing demanding code, such as static assertions, rvalue references (for more efficient argument passing) and improved enumerations. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Finally, C++0x will provide better support for generic programming and since generic programming using templates has become key to high performance libraries, this will help systems programming also. For example, here we find &lt;em&gt;concepts&lt;/em&gt; (a type system for types and combinations of types) to improve static checking of template code. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; You feel strongly about better education for software developers. Would you say, generally, that education in computer programming is appalling? Or so-so? If you were to design a course for high school students and a course (an entire degree) for university students intending to become professional, what would you include in these courses and what would you emphasize? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Actually, I just took part in an effort to do that for the four undergraduate years. Unfortunately, the descriptions you find of our program on the web is still a mix of new and old stuff—real-world programs can only be put in place in stages. The idea is to give the students a broad view of computer science during the first two years ("making them ready for their first internship or project") and then using the next two years to go into depth in some selected areas. During the first two years, the students get a fairly classical CS program with a slightly higher component of software development projects than is common. They have courses in hardware and software (using C++), there is some discrete math, algorithms and data structures, (operating and network) systems, programming languages, and a "programming studio" exposing them to group projects and some project management. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; In an ideal world for you, what will C++0x be in terms of all the goodies in the new Standard Library and language? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Unfortunately, we don't live in an ideal world and C++0x won't get all the "goodies" I'd like and probably a fewer "minor" features than I would have liked. Fortunately, the committee has decided to try for more and smaller increments. For example, C++0x (whether that'll be C++09 or C++10) will have only the preparations for programmer-controlled garbage collection and lightweight concurrency, whereas we hope for the full-blown facilities in C++12 (or C++13). &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;I do—based on existing work and votes—expect to get: &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Libraries&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Threads&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Regular expressions&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Hash tables&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Smart pointers&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Many improvements for containers&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Quite a bit support for new libraries&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Language&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;A memory model supporting modern machine architectures&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Thread local storage&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Atomic types&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Rvalue references&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Static assertions&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Template aliases&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Variadic templates&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Strongly typed enums&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;constexpr: Generalized constant expressions&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Control of alignment&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Delegating constructors&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Inheriting constructors&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;auto: Deducing variable types from initializers&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Control of defaults&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;nullptr: A name for the null pointer&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;initializer lists and uniform initialization syntax and semantics&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;concepts (a type system for template arguments)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;a range-based for loop&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;raw string literals&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;UTF8 literals&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Lambda functions&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;For a more detailed description of both my ideals, the work of the ISO C++ standards committee, and C++0x, see my HOPL-iii paper: "&lt;a href='http://www.research.att.com/%7Ebs/hopl-almost-final.pdf'&gt;&lt;span style='color:blue; text-decoration:underline'&gt;Evolving a language in and for the real world: C++ 1991-2006. ACM HOPL-III&lt;/span&gt;&lt;/a&gt;" from earlier this year. Also, see the ISO C++ committee's web site where you can find more details than you could possibly want (search for "WG21" and look for "papers"). &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; C++ is often used in embedded systems, including those where safety and security are top priorities. What are your favorite examples and why do you think C++ is an ideal language for embedded systems especially where safety is a concern, aside from easy low-level machine access? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Yes, and I find many of those applications quite exciting. Too often people think of computing as "what runs on a PC with a single user in front of it." Obviously, my Bell Labs background biases me towards noticing the uses of software in cell phones, telecommunications devices, and systems in general. So much of our infrastructure is invisible and taken for granted! "The gadgets" we can see. That's one reason I like embedded systems programming. Another is the stringent demands on correctness (even with some hardware malfunction) and performance. In such software, there is a need for clear design and precise expression of ideas that can challenge a language. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Among my favorite examples are the modern wind-power generators and the huge diesel engines that power the largest container ships. We can't talk about invisibility here, but then people don't see those huge "structures" as containing computers running software that is critical to their correct, efficient, and economical performance. I have also seen some interesting uses of C++ in aerospace, notably the new "Joint Strike Fighter" (the F-35), but my favorite is the higher levels of the Mars Rover software (scene analysis and autonomous driving). The whole Rover project is really a stunning success. Both Rovers have outlived their promised design life by a factor of 6 and are (as I write this) still working their way across Mars looking, prodding, and sending home data. Again, the Rovers themselves are just the visible part of a huge complex system: just try to imagine what it takes to get the data back to earth and analyzed. Almost all of computer science and almost all of our engineering skills are involved here somewhere. The range of skilled people involved is really hard to imagine. Too often we forget the people. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;I don't think there exists an "ideal language" for these kinds of systems, but C++ is a good one. Part of the reason is that any large system, such as a cell phone or a Rover depends on its huge hidden infrastructure. Obviously, you don't have to use a single language for everything, but there are enough overlaping parts of applications for C++'s flexibility, generality, and concern for performance to come into play. Many languages deemed simpler achieve their simplicity through limiting their range of applications or by making great demands on the underlying hardware and (software) execution environments. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; Would you say that the document &lt;a href='http://www.research.att.com/%7Ebs/JSF-AV-rules.pdf'&gt;&lt;span style='color:blue; text-decoration:underline'&gt;JSF++: Joint Strike Fighter Air Vehicle Coding Standards&lt;/span&gt;&lt;/a&gt; that can be found under your C++ links, under the point "For a look at how ISO C++ can be used for serious embedded systems programming" is generally a good guide for any embedded systems programming, and perhaps for other things as well? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;BS:&lt;/strong&gt; Yes, that's a good guide for the kind of applications for which it was written. For those, I'm convinced that it's the best of its kind; I helped write it. It is very important to note, though, that with experience, we will find improvements and if applied to areas for which it was not intended, it could do harm. For example, the JSF++ prohibits the use of free store (dynamic store) and exceptions, whereas for general programming you typically need to use those features to get the best code. However, for high-reliability, hard-real time code, the simple fact that a &lt;em&gt;new&lt;/em&gt; and a &lt;em&gt;throw&lt;/em&gt; can't (in general) be guaranteed to execute on a short, fixed, constant time makes them a no-no. I also recommend the ISO C++ committee's &lt;a href='http://www.research.att.com/%7Ebs/performanceTR.pdf'&gt;&lt;span style='color:blue; text-decoration:underline'&gt;Technical Report on performance&lt;/span&gt;&lt;/a&gt;, which can also be found on my C++ page. It is primarily aimed at embedded systems programming, but discusses issues rather than lay out rules. Please also note that the JSF++ document is about half rationale: people should not be asked to do things "just because we say so." At least we can try to explain the reasons behind the rules. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;In general, I think it essential that a coding standard is tuned to a specific application, organization, or application area. Trying to "legislate morality" for all users is counter-productive. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;strong&gt;JB:&lt;/strong&gt; What do you enjoy doing in your spare time? Have you read any books or watched any films lately that you liked, and if yes, why? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Spare time? I like to run and to sightsee when I have a chance (usually when traveling for something work-related). Taking photographs is an excellent excuse for spending a bit of extra time in interesting places. Spending time with family is a high priority, and a pleasure, of course. I read non-technical books essentially every day. That's mostly light reading to relax. I recently re-read some of Raymond Chandler's novels; they age well. I also just finished Terry Jones and Alan Ereira's "Barbarians" about how the Romans really were the destructive villains of the ancient world; that's a refreshingly different perspective. I have always been fascinated by history. There are so many parts of history that nobody would have believed it if it wasn't real—after all fiction has to be probable. And then, of course, you can't read just one book about history; you need to read a lot to understand the context of events and to avoid being sold a biased fairy tale version of something. Before that, I read Richard Dawkin's "Climbing Mount Improbable"; I basically have to re-learn biology because just about everything is new since I left school. Curiously, I'm often asked about my non-technical reading habits, so I posted a &lt;a href='http://www.research.att.com/%7Ebs/literature.html'&gt;&lt;span style='color:blue; text-decoration:underline'&gt;short list&lt;/span&gt;&lt;/a&gt; among my home pages. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;br /&gt; &lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;em&gt;James Buchanan is a programmer and freelance technical journalist. He can be contacted at praetorian.au@gmail.com.&lt;/em&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='text-align: justify'&gt;&lt;span style='font-family:Helvetica; font-size:7pt'&gt;Copyright © 2006 &lt;a href='http://www.cmpnet.com/'&gt;&lt;span style='color:blue; text-decoration:underline'&gt;CMP Media LLC&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-6089693683691815928?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/6089693683691815928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=6089693683691815928&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6089693683691815928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6089693683691815928'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2008/05/interview-with-bjarne-stroustrup.html' title='An Interview with Bjarne Stroustrup'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-1102710439703296465</id><published>2008-03-09T18:22:00.002+05:30</published><updated>2008-03-09T18:40:45.975+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download'/><category scheme='http://www.blogger.com/atom/ns#' term='DBMS'/><title type='text'>Database Management System - Slides</title><content type='html'>DBMS Slides are available in this link.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);font-size:130%;" &gt;&lt;a href="http://www.4shared.com/dir/6024414/9310860a/DBMS.html"&gt;Download&lt;/a&gt;&lt;/span&gt; them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-1102710439703296465?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/1102710439703296465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=1102710439703296465&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1102710439703296465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1102710439703296465'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2008/03/database-management-system-slides.html' title='Database Management System - Slides'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-8485996120290942656</id><published>2008-03-09T15:00:00.000+05:30</published><updated>2008-03-09T15:01:24.894+05:30</updated><title type='text'>kapil</title><content type='html'>send me dbms notes&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-8485996120290942656?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/8485996120290942656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=8485996120290942656&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8485996120290942656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8485996120290942656'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2008/03/kapil.html' title='kapil'/><author><name>kapil</name><uri>http://www.blogger.com/profile/06655911798746953333</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-5161604899051521869</id><published>2008-03-02T13:59:00.002+05:30</published><updated>2008-03-02T14:11:29.521+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>OOPL Comparison</title><content type='html'>&lt;p style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt; The following table shows some similarities and differences in features and the use of terms   and concepts in Smalltalk, C++, and Java.&lt;/span&gt;  &lt;/p&gt;        &lt;table style="width: 700px; height: 1586px; color: rgb(153, 0, 0);" align="center" bgcolor="#ffffcc" border="1" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;     &lt;td&gt;&lt;b&gt;&lt;p&gt;OO Concept/syntax&lt;/p&gt;&lt;/b&gt;&lt;/td&gt;      &lt;td&gt;&lt;b&gt;&lt;p&gt;Smalltalk&lt;/p&gt;&lt;/b&gt;&lt;/td&gt;     &lt;td&gt;&lt;b&gt;&lt;p&gt;C++&lt;/p&gt;&lt;/b&gt;&lt;/td&gt;     &lt;td&gt;&lt;b&gt;&lt;p&gt;Java&lt;/p&gt;&lt;/b&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;      &lt;td&gt;&lt;p&gt;Abstract class&lt;/p&gt;&lt;/td&gt;       &lt;td&gt;&lt;p&gt;Concept exists, no mechanism for enforcement&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;A class with a pure virtual function can't be instantiated&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Classes may be declared &lt;span style="font-family:Courier,Courier New,monospace;"&gt;abstract&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Assignment operator&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;:=&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;=&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;=&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Character constant&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;$c&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;'c'&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;'c'&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;     &lt;td&gt;&lt;p&gt;Class&lt;/p&gt;&lt;/td&gt;        &lt;td&gt;&lt;p&gt;Class&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Class&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Class&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Class method (corresponds to a message sent to the class rather than an instance)&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Class method&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Static function member&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Class (or static) method&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Class variable (data associated with the class, not an instance)&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Class variable&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Static data member&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Class field&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Comment&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;"Comment"&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;// Comment      &lt;br /&gt;/* Comment */&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;// Comment      &lt;br /&gt;/* Comment */       &lt;br /&gt;/** Javadoc     Comment **/&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;     &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Dynamic binding&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Unrestricted&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Only subclasses of the declared class&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Subclasses of the declared class or implementations of the declared interface&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Equality test (see also identity test)&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;=&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;==&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;equals()&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;&lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Finalization of instances before deletion (e.g., to release operating system resources)&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Some implementations support &lt;span style="font-family:Courier,Courier New,monospace;"&gt;finalize&lt;/span&gt; method&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Destructor function&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;finalize&lt;/span&gt; method is standard&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Garbage collection (automatic memory management)&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Garbage collection is standard&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;No garbage collection - programmer explicitly manages memory&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Garbage collection is standard&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Identity test (see also Equality test)&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;==&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;same as equality&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;==&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;&lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Inheritance&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Single inheritance only&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Multiple inheritance&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Single inheritance only&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Initialization of instances&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Override &lt;span style="font-family:Courier,Courier New,monospace;"&gt;new&lt;/span&gt; method&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Constructor function&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Constructor function&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Instance data or state&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Instance variable&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Data member&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Instance field&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Interface contract (specifies the public interface to classes that implement it)&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;No corresponding construct&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;No corresponding construct&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Interface&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Message&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Message&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Member function call&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Method invocation&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Message send syntax&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;anObject doIt&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;anObject.doIt()&lt;/span&gt; (direct)       &lt;br /&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;pObject-&gt;doIt()&lt;/span&gt; (pointer)&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;anObject.doIt()&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;         &lt;td&gt;&lt;p&gt;Method&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Method&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Member function&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Method&lt;/p&gt;&lt;/td&gt;     &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Method argument syntax&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;methodName: argument&lt;/span&gt; (keyword method)&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;memberFunctionName(argument)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;methodName(argument)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Method return&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;^ (caret)&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;return&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;return&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;     &lt;td&gt;&lt;p&gt;Object (root of all classes)&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Class &lt;span style="font-family:Courier,Courier New,monospace;"&gt;Object&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;No corresponding class&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Class &lt;span style="font-family:Courier,Courier New,monospace;"&gt;Object&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;     &lt;td&gt;&lt;p&gt;Operator overloading (an aspect of polymorphism; different operator behavior based on receiver type)&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Any operator can be overloaded&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Any operator can be overloaded&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Only methods can be overloaded, not built-in operators such as +, - , *&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;     &lt;td&gt;&lt;p&gt;Pointers&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;No explicit storage pointers&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Explicit use of storage pointers and pointer arithmetic&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;No explicit storage pointers&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Self (the object executing a method)&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;self&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;this&lt;/span&gt; (usually not written)&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;this&lt;/span&gt; (usually not written)&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;String constant&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;'string constant'&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;"string constant"&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;"string constant"&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Subclass&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Subclass&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Derived class&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Subclass&lt;/p&gt;&lt;/td&gt;     &lt;/tr&gt;    &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Superclass&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Superclass&lt;/p&gt;&lt;/td&gt;      &lt;td&gt;&lt;p&gt;Base class&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;Superclass&lt;/p&gt;&lt;/td&gt;     &lt;/tr&gt;        &lt;tr valign="top"&gt;        &lt;td&gt;&lt;p&gt;Superclass method invocation&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;super&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;b&gt;::&lt;/b&gt; (scoping operator, more general than Smalltalk or Java capability)&lt;/p&gt;&lt;/td&gt;     &lt;td&gt;&lt;p&gt;&lt;span style="font-family:Courier,Courier New,monospace;"&gt;super()&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt; &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-5161604899051521869?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/5161604899051521869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=5161604899051521869&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5161604899051521869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5161604899051521869'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2008/03/oopl-comparison.html' title='OOPL Comparison'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-8962047941494171637</id><published>2008-01-09T12:09:00.000+05:30</published><updated>2008-01-09T12:11:39.982+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>ASP.NET</title><content type='html'>&lt;h2&gt;The Microsoft .NET Framework&lt;/h2&gt;  &lt;p&gt;The .NET Framework is the infrastructure for the Microsoft .NET platform. &lt;/p&gt;  &lt;p&gt;The .NET Framework is an environment for building, deploying, and running Web applications and Web Services.&lt;/p&gt;  &lt;p&gt;Microsoft's first server technology ASP (Active Server Pages), was a powerful and flexible "programming language". But it was too code oriented. It was not an application framework and not an enterprise development tool.&lt;/p&gt;  &lt;p&gt;The Microsoft .NET Framework was developed to solve this problem. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;.NET Frameworks keywords:&lt;/b&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;Easier and quicker      programming&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Reduced amount of code&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Declarative programming model&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Richer server control      hierarchy with events&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Larger class library&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Better support for      development tools&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;b&gt;The .NET Framework consists of 3 main parts:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Programming languages:&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;C# (Pronounced C sharp)&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Visual Basic (VB .NET)&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;J# (Pronounced J sharp)&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;Server technologies and client technologies:&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;ASP .NET (Active Server      Pages)&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Windows Forms (Windows      desktop solutions)&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Compact Framework (PDA / &lt;st1:city&gt;&lt;st1:place&gt;Mobile&lt;/st1:place&gt;&lt;/st1:City&gt;      solutions)&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;Development environments:&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;Visual Studio .NET (VS .NET)&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Visual Web Developer&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;This tutorial is about ASP.NET.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;ASP.NET 2.0&lt;/h2&gt;  &lt;p&gt;ASP.NET 2.0 improves upon ASP.NET by adding support for several new features.&lt;/p&gt;  &lt;p&gt;You can read more about the differences between ASP.NET 2.0 and ASP.NET in the next chapter of this tutorial.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;ASP.NET 3.0&lt;/h2&gt;  &lt;p&gt;ASP.NET 3.0 is not a new version of ASP.NET. It's just the name for a new ASP.NET 2.0 framework library with support for Windows Presentation Foundation, Windows Communication Foundation, Windows Workflow Foundation; and Windows CardSpace. &lt;/p&gt;  &lt;p&gt;These topics are not covered in this tutorial.&lt;/p&gt;  &lt;h1&gt;Differences between ASP and ASP.NET&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://www.w3schools.com/aspnet/aspnet_intro.asp"&gt;&lt;span style="text-decoration: none;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1030" type="#_x0000_t75" alt="previous" href="http://www.w3schools.com/aspnet/aspnet_intro.asp" style="'width:75pt;" button="t"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\mca\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" href="http://www.w3schools.com/images/btn_previous.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;span style=""&gt;&lt;img src="file:///C:/DOCUME%7E1/mca/LOCALS%7E1/Temp/msohtml1/01/clip_image001.gif" alt="previous" shapes="_x0000_i1030" border="0" height="20" width="100" /&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.w3schools.com/aspnet/aspnet_install.asp"&gt;&lt;span style="text-decoration: none;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1031" type="#_x0000_t75" alt="next" href="http://www.w3schools.com/aspnet/aspnet_install.asp" style="'width:75pt;" button="t"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\mca\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" href="http://www.w3schools.com/images/btn_next.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;span style=""&gt;&lt;img src="file:///C:/DOCUME%7E1/mca/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif" alt="next" shapes="_x0000_i1031" border="0" height="20" width="100" /&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;p class="intro"&gt;ASP.NET has better language support, a large set of new controls and XML based components, and better user authentication.&lt;/p&gt;  &lt;p class="intro"&gt;ASP.NET provides increased performance by running compiled code.&lt;/p&gt;  &lt;p class="intro"&gt;ASP.NET code is not fully backward compatible with ASP.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;New in ASP.NET&lt;/h2&gt;  &lt;ul type="square"&gt;&lt;li class="MsoNormal" style=""&gt;Better language support&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Programmable controls&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Event-driven programming&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;XML-based components&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;User authentication, with      accounts and roles&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Higher scalability&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Increased performance -      Compiled code&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Easier configuration and      deployment&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Not fully ASP compatible&lt;/li&gt;&lt;/ul&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;Language Support&lt;/h2&gt;  &lt;p&gt;ASP.NET uses the new ADO.NET.&lt;/p&gt;  &lt;p&gt;ASP.NET supports full Visual Basic, not VBScript.&lt;/p&gt;  &lt;p&gt;ASP.NET supports C# (C sharp) and C++.&lt;/p&gt;  &lt;p&gt;ASP.NET supports JScript as before.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;ASP.NET Controls&lt;/h2&gt;  &lt;p&gt;ASP.NET contains a large set of HTML controls. Almost all HTML elements on a page can be defined as ASP.NET control objects that can be controlled by scripts.&lt;/p&gt;  &lt;p&gt;ASP.NET also contains a new set of object oriented input controls, like programmable list boxes and validation controls.&lt;/p&gt;  &lt;p&gt;A new data grid control supports sorting, data paging, and everything you expect from a dataset control.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;Event Aware Controls&lt;/h2&gt;  &lt;p&gt;All ASP.NET objects on a Web page can expose events that can be processed by ASP.NET code.&lt;/p&gt;  &lt;p&gt;Load, Click and Change events handled by code makes coding much simpler and much better organized.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;ASP.NET Components&lt;/h2&gt;  &lt;p&gt;ASP.NET components are heavily based on XML. Like the new AD Rotator, that uses XML to store advertisement information and configuration.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;User Authentication&lt;/h2&gt;  &lt;p&gt;ASP.NET supports forms-based user authentication, including cookie management and automatic redirecting of unauthorized logins.&lt;/p&gt;  &lt;p&gt;(You can still do your custom login page and custom user checking).&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;User Accounts and Roles&lt;/h2&gt;  &lt;p&gt;AS .NET allows for user accounts and roles, to give each user (with a given role) access to different server code and executables.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;High Scalability&lt;/h2&gt;  &lt;p&gt;Much has been done with ASP.NET to provide greater scalability.&lt;/p&gt;  &lt;p&gt;Server to server communication has been greatly enhanced, making it possible to scale an application over several servers. One example of this is the ability to run XML parsers, XSL transformations and even resource hungry session objects on other servers.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;Compiled Code&lt;/h2&gt;  &lt;p&gt;The first request for an ASP.NET page on the server will compile the ASP.NET code and keep a cached copy in memory. The result of this is greatly increased performance.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;Easy Configuration&lt;/h2&gt;  &lt;p&gt;Configuration of ASP.NET is done with plain text files.&lt;/p&gt;  &lt;p&gt;Configuration files can be uploaded or changed while the application is running. No need to restart the server. No more metabase or registry puzzle.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;Easy Deployment&lt;/h2&gt;  &lt;p&gt;No more server restart to deploy or replace compiled code. ASP.NET simply redirects all new requests to the new code.&lt;/p&gt;  &lt;div class="MsoNormal" style="text-align: center;" align="center"&gt;  &lt;hr align="center" size="2" width="100%"&gt;  &lt;/div&gt;  &lt;h2&gt;Compatibility&lt;/h2&gt;  &lt;p&gt;ASP.NET is not fully compatible with earlier versions of ASP, so most of the old ASP code will need some changes to run under ASP.NET.&lt;/p&gt;  &lt;p&gt;To overcome this problem, ASP.NET uses a new file extension ".aspx". This will make ASP.NET applications able to run side by side with standard ASP applications on the same server.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-8962047941494171637?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/8962047941494171637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=8962047941494171637&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8962047941494171637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8962047941494171637'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2008/01/aspnet.html' title='ASP.NET'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-7290687441259343151</id><published>2007-12-28T10:30:00.000+05:30</published><updated>2007-12-28T10:32:17.459+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerPoint'/><title type='text'>10 tricks for working more effectively in PowerPoint</title><content type='html'>&lt;p&gt;PowerPoint is a powerful presentation package, but most of us don’t use it often enough to learn its many timesaving tricks. The good news is that you don’t have to be an expert to get more mileage out of PowerPoint features. Here’s a look as some of the shortcuts and tricks you can use to put PowerPoint to work for you.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Note: This information is also available as a &lt;a href="http://downloads.techrepublic.com.com/abstract.aspx?docid=327346" target="_blank"&gt;PDF download&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt; &lt;h3&gt;#1: If you don’t like the design, pick another&lt;/h3&gt; &lt;p&gt;You can build a presentation from scratch, but most of the time a design template is more than adequate. These templates apply consistent design and formatting attributes from the first slide to the last. Click the Slide Design button on the Formatting toolbar to open the Slide Design task pane to get started. (In PowerPoint 2007, choose a design template from the Design group.)&lt;/p&gt; &lt;p&gt;You’re not stuck with a design once you choose it. At any time, even after the presentation is complete, you can choose another design. Simply select the one you want; you won’t lose any content.&lt;/p&gt; &lt;p&gt;You can also change the design for only selected slides, without actually removing the template from your presentation. In the Slide pane or Slide Sorter View, select the thumbnails that represent the slides you want to change. Next, click on the drop-down arrow beside the desired design in the Apply A Design Template list and choose Apply To Selected Slides (Figure A). (There’s no drop-down arrow in PowerPoint 2007; just right-click on the design.) PowerPoint will immediately update the selected slides.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Figure A&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://i.i.com.com/cnwk.1d/i/tr/downloads/images/10_tips-ppt/10_tips_ppt_a.jpg" /&gt;&lt;/p&gt; &lt;h3&gt;#2: Hone for focus&lt;/h3&gt; &lt;p&gt;Resist the urge to crowd as much text as you can onto a single slide. If a busy slide doesn’t overwhelm your audience, it will most certainly distract them. Instead of listening to you, they’ll read ahead.&lt;/p&gt; &lt;p&gt;Once you have a rough draft of your presentation, review it with the following goals in mind:&lt;/p&gt; &lt;ul class="unIndentedList"&gt;&lt;li&gt; Replace complete sentences with key words and phrases&lt;/li&gt;&lt;li&gt; Get rid of unnecessary clip art&lt;/li&gt;&lt;li&gt; Remove punctuation&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;By following these steps, you may reduce content by as much as half, and your presentation will be more focused.&lt;/p&gt; &lt;h3&gt;#3: Don’t forget &lt;em&gt;The end!&lt;/em&gt;&lt;/h3&gt; &lt;p&gt;When you come to the end of your presentation, what comes next? If you click out of Slide Show View, your audience will get a behind-the-scenes peek at your work, and you probably want to avoid that. Instead, end your presentation with a slide that maintains the presentation’s master slide details but displays a simple message such as &lt;em&gt;Thank you for your support&lt;/em&gt; or &lt;em&gt;Thank you for coming&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;Of course, the end slide doesn’t have to display a message. A blank slide might be adequate. You might even consider combining two end slides: Display a short thank you, or otherwise appropriate message, and follow it with a blank slide. That way, if you click out of the message slide, you’re still covered.&lt;/p&gt; &lt;p&gt;Professional presentations include a slide dedicated to ending the presentation. It protects you and cues your audience.&lt;/p&gt; &lt;h3&gt;#4: Create your own AutoContent template&lt;/h3&gt; &lt;p&gt;The AutoContent Wizard is a great place to start when you’re not sure what a presentation should cover. This wizard creates a new presentation using built-in templates, and you can customize the results.&lt;/p&gt; &lt;p&gt;What you might not know is that you can add an existing presentation to the AutoContent Wizard’s library. To do so, complete the following steps:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Launch the wizard by choosing New from the File menu.&lt;/li&gt;&lt;li&gt;Click the From AutoContent Wizard link in the New Presentation task pane.&lt;/li&gt;&lt;li&gt;Click Next in the wizard’s first pane.&lt;/li&gt;&lt;li&gt;Choose the most appropriate content template category and click Add (&lt;strong&gt;Figure B&lt;/strong&gt;).&lt;/li&gt;&lt;li&gt;Locate your presentation file and click OK.&lt;/li&gt;&lt;li&gt;Quit the wizard.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;img src="http://i.i.com.com/cnwk.1d/i/tr/downloads/images/10_tips-ppt/10_tips_ppt_b.jpg" /&gt;&lt;/p&gt; &lt;p&gt;At this point, the presentation you added is available to use as a content template. Don’t let a good, generic presentation go to waste. Most likely, you’ll have to customize it, but that’s true of any content template you choose.&lt;/p&gt; &lt;p&gt;The AutoContent Wizard isn’t available in PowerPoint 2007. Instead, use a themed template. Choose File from the Office menu and select New to get started.&lt;/p&gt; &lt;p&gt;Microsoft offers &lt;a href="http://office.microsoft.com/en-us/templates/default.aspx" target="_blank"&gt;more free templates&lt;/a&gt;.&lt;/p&gt; &lt;h3&gt;#5: Send a presentation to Word&lt;/h3&gt; &lt;p&gt;PowerPoint can print views, but you can’t modify the results much. For instance, you can print handouts or even individual slides, but PowerPoint just prints a hard copy of your exact slides. If you want to enhance or format handouts, send the presentation to Word, which offers more flexibility. To do so, complete the following steps:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Choose Send To from the File menu.&lt;/li&gt;&lt;li&gt;Select Microsoft Office Word from the resulting submenu.&lt;/li&gt;&lt;li&gt;In the Send To Microsoft Office Word dialog (&lt;strong&gt;Figure C&lt;/strong&gt;), choose one of the many send options. The Outline Only option sends only the content.&lt;/li&gt;&lt;li&gt;Click OK.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;strong&gt;Figure C&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://i.i.com.com/cnwk.1d/i/tr/downloads/images/10_tips-ppt/10_tips_ppt_c.jpg" /&gt;&lt;/p&gt; &lt;p&gt;Once your content is in Word, you can apply formatting and printing options that aren’t available to you in PowerPoint.&lt;/p&gt; &lt;p&gt;In PowerPoint 2007, you use the Publish command to send content to Word. Choose Publish from the Office menu and then choose Create Handouts In Microsoft Office Word.&lt;/p&gt; &lt;p&gt;When you do supply handouts, consider handing them out at the end of the presentation instead of at the beginning. Some people will pay more attention to your handouts than your presentation.&lt;/p&gt; &lt;h3&gt;#6: Reverse those points&lt;/h3&gt; &lt;p&gt;You probably know that you can display bullet points one at a time by choosing an animation scheme in the Slide Design task pane. Specifically, choose Fade In One By One from the Subtle section. What you might not know is that you can display bullet points in reverse order. The easiest way to reverse point order is to choose Show In Reverse in the Moderate section of the Animation Scheme task pane.&lt;/p&gt; &lt;p&gt;It’s a good idea to spend some time viewing all of the Animation Scheme options. It won’t take long, just a few minutes. Being familiar with all the effects is the key to using each appropriately. In addition, where animation is concerned, less is better than more — go easy and use animation only when you have a specific reason to and not just because you like a particular scheme.&lt;/p&gt; &lt;p&gt;You’ll find animation options on PowerPoint 2007’s Animations tab in the Animations group. Use the Animate drop-down list to choose the desired effect. The interesting advantage in 2007 is that as you choose an effect, PowerPoint displays it, so you can see it at work before you select it.&lt;/p&gt; &lt;h3&gt;#7: Beware of busted GIFs&lt;/h3&gt; &lt;p&gt;PowerPoint 2000 was the first version to support animated .gif files, but the viewer didn’t. (PowerPoint Viewer is a support application that lets others view your PowerPoint presentation, even if they don’t have PowerPoint installed locally.) Unfortunately, the older viewers don’t support .gif files. This limitation has the potential to spoil your otherwise flawless presentation.&lt;/p&gt; &lt;p&gt;The good news is that more recent viewers &lt;em&gt;do&lt;/em&gt; support .gif files. In fact, they offer full-feature support all the way back to PowerPoint 97. If you’re still using an older version of PowerPoint — 97, 2000, or XP — the latest viewers will run your presentations, .gif’s and all. Microsoft offers &lt;a href="http://www.microsoft.com/downloads/results.aspx?pocId=4289AE77-4CBA-4A75-86F3-9FF96F68E491&amp;amp;freetext=PowerPoint%20Viewer&amp;amp;DisplayLang=en" target="_blank"&gt;a list of the different PowerPoint Viewer versions&lt;/a&gt;.&lt;/p&gt; &lt;h3&gt;#8: Reverse slide print&lt;/h3&gt; &lt;p&gt;Most printers allow you to print in reverse, but you can’t always get to individual printer options — especially with networked printers that are configured for all users by an administrator. If printing options are limited, you can still have PowerPoint print your slides in reverse order, with or without help from your printer:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Choose Print from the File menu. (In PowerPoint 2007, choose Print from the Office menu.)&lt;/li&gt;&lt;li&gt;Click the Slides option in the Print Range section.&lt;/li&gt;&lt;li&gt;Enter the range of slides in reverse order. For instance, if you want to print slides 1 through 10 in reverse order, enter 10-1 instead of 1-10. It’s an easy solution to implement.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;PowerPoint will remember this setting until you change it or exit the presentation. Even if your printer has a reverse option available, you might find the PowerPoint route easier to take if you consistently print the same range of slides during the same work session, as your printer might not remember the setting.&lt;/p&gt; &lt;h3&gt;#9: Reduce file size&lt;/h3&gt; &lt;p&gt;PowerPoint files can be huge. If you send them via e-mail, you might find it takes a while to upload and download a presentation, especially if you or a recipient is still using a dial-up connection.&lt;/p&gt; &lt;p&gt;You probably use special software to compress the file before sending. You can also reduce the size of the original file by deleting the slide thumbnails. To do so:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Choose Properties from the File menu.&lt;/li&gt;&lt;li&gt;Click the Summary tab.&lt;/li&gt;&lt;li&gt;Locate the Save Preview Picture check box at the bottom of the dialog box (&lt;strong&gt;Figure D&lt;/strong&gt;) , deselect it, and click OK.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;strong&gt;Figure D&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://i.i.com.com/cnwk.1d/i/tr/downloads/images/10_tips-ppt/10_tips_ppt_d.jpg" /&gt;&lt;/p&gt; &lt;p&gt;Doing this will save a huge hunk of KBs, even before you compress the file. If you disable the thumbnails, you can’t preview the file in the Open dialog box, but that seems like a small tradeoff for the KB savings.&lt;/p&gt; &lt;p&gt;This option is harder to find in PowerPoint 2007. From the Office menu, choose Prepare and then Properties. From the Document Properties drop-down list, choose Advanced Properties to find the Summary tab. You’ll still save some space, but not as much.&lt;/p&gt; &lt;h3&gt;# 10: Control the pointer from the keyboard&lt;/h3&gt; &lt;p&gt;During a slide show, PowerPoint hides the pointer five seconds after you display each slide, and then it disappears. When you click to view the next slide, the pointer becomes visible for another five seconds. You can control pointer display by clicking the icon in the bottom-left corner of the screen, but that’s a bit distracting in the middle of a presentation. Instead, consider controlling pointer visibility from the keyboard:&lt;/p&gt; &lt;ul class="unIndentedList"&gt;&lt;li&gt; Ctrl + H hides the pointer immediately.&lt;/li&gt;&lt;li&gt; Ctrl + A displays the pointer immediately.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Once you use Ctrl + A to display the pointer, it’s fixed. There’s no five-second delay. You must use Ctrl + H if you want it to go away.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-7290687441259343151?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/7290687441259343151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=7290687441259343151&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/7290687441259343151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/7290687441259343151'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/12/10-tricks-for-working-more-effectively.html' title='10 tricks for working more effectively in PowerPoint'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-6440905058221820233</id><published>2007-12-28T10:28:00.000+05:30</published><updated>2007-12-28T10:30:30.245+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shortcut Keys'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>10+ Windows XP keyboard shortcuts to speed everyday tasks</title><content type='html'>&lt;div class="entry"&gt;      &lt;p&gt;How expansive is your repertoire of Windows XP keyboard shortcuts? A lot of users learn a handful of shortcuts but turn their backs on a host of other ones that could come in handy. Check out the selection of shortcuts below and see if there aren’t a couple you didn’t know about that could be saving you some real time.&lt;/p&gt; &lt;p&gt;&lt;em&gt;You can also download a PDF that lists &lt;a href="http://downloads.techrepublic.com.com/download.aspx?&amp;amp;q=windows+xp+keyboard&amp;amp;docid=173137" target="_blank"&gt;50+ Windows XP shortcuts&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt; &lt;h3&gt;The shortcuts&lt;/h3&gt; &lt;table border="2" cellpadding="4" cellspacing="0" width="500"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td valign="top" width="168"&gt;&lt;strong&gt;Keystroke&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="333"&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Alt + Tab&lt;/td&gt; &lt;td valign="top" width="333"&gt;Switches between   open programs&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Alt + F4 (in a   program)&lt;/td&gt; &lt;td valign="top" width="333"&gt;Closes the   program&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Alt + F4 (from the   desktop)&lt;/td&gt; &lt;td valign="top" width="333"&gt;Opens the   Windows Shutdown/Restart dialog box&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Alt + Enter&lt;/td&gt; &lt;td valign="top" width="333"&gt;Opens the   Properties page of a selected item&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Alt + Esc&lt;/td&gt; &lt;td valign="top" width="333"&gt;Cycles between   open programs in the order they were opened&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Alt + Spacebar&lt;/td&gt; &lt;td valign="top" width="333"&gt;In the active   window, this brings up the corner dialog box for Move, Size, Minimize,   Maximize, or Close&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Shift + Insert a   CD/DVD&lt;/td&gt; &lt;td valign="top" width="333"&gt;Inserts a CD/DVD   without triggering Autoplay or Autorun&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Shift + Delete&lt;/td&gt; &lt;td valign="top" width="333"&gt;Permanently   deletes an item (rather than sending it to the Recycle Bin)&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Ctrl + Shift +   Esc&lt;/td&gt; &lt;td valign="top" width="333"&gt;Opens the   Windows Task Manager&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Ctrl + drag an   icon&lt;/td&gt; &lt;td valign="top" width="333"&gt;Copies that   item&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Ctrl + Shift +   drag an icon&lt;/td&gt; &lt;td valign="top" width="333"&gt;Creates a   shortcut for the item&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Right-click +   drag an icon&lt;/td&gt; &lt;td valign="top" width="333"&gt;Brings up a   menu to copy, move, or create a shortcut for the item&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;F1&lt;/td&gt; &lt;td valign="top" width="333"&gt;Opens Windows XP   Help&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;F2&lt;/td&gt; &lt;td valign="top" width="333"&gt;Highlights the label of a selected item for renaming&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;F3&lt;/td&gt; &lt;td valign="top" width="333"&gt;Opens Windows   search for files and folders&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;F5 (or Ctrl +   R)&lt;/td&gt; &lt;td valign="top" width="333"&gt;Refreshes an   Internet Explorer page or other window&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;F6&lt;/td&gt; &lt;td valign="top" width="333"&gt;Cycles through   the elements that can be selected in a screen or window&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;F10&lt;/td&gt; &lt;td valign="top" width="333"&gt;Selects the menu bar in the active program (usually the File menu) so that you can use the arrow keys to navigate through the menus and the Enter key to display one&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Shift + F10&lt;/td&gt; &lt;td valign="top" width="333"&gt;Displays a   shortcut menu for an item (like right-clicking with the mouse)&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt;Ctrl + Esc&lt;/td&gt; &lt;td valign="top" width="333"&gt;Opens the Start   menu&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;h3&gt;Roll your own shortcut&lt;/h3&gt; &lt;p&gt;You can also create custom Windows XP shortcuts. Just right-click on the icon of a program or program shortcut, choose Properties, click the Shortcut tab, and enter a keystroke combination in the Shortcut Key field. Windows will let you assign only key combos that aren’t already taken.&lt;/p&gt;           &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-6440905058221820233?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/6440905058221820233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=6440905058221820233&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6440905058221820233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6440905058221820233'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/12/10-windows-xp-keyboard-shortcuts-to.html' title='10+ Windows XP keyboard shortcuts to speed everyday tasks'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-7234750313735901062</id><published>2007-12-28T10:27:00.001+05:30</published><updated>2007-12-28T10:27:26.742+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resume Preparation'/><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><title type='text'>How your tech resume should differ from a general resume</title><content type='html'>&lt;div class="entry"&gt;      &lt;p&gt;Resume writing has almost become a science. There are a gazillion companies out there that exist only to help people create resumes that will garner interviews. While many of the standard resume suggestions work for any type of resume, there a few tweaks you’ll need to make in order to create a resume specifically for a position in IT. Here are some things to keep in mind when creating a tech resume:&lt;/p&gt; &lt;ol type="1"&gt;&lt;li&gt;You don’t have to stick with one page. Many sources will tell you a one-page resume is better, but that’s not necessarily true for a tech resume. For an IT position, you’ll need to showcase your technical skills as well as your customer-centric skills, so don’t be afraid to go to two pages. But try to keep it to two.&lt;/li&gt;&lt;li&gt;On the first page of your resume, include a summary of your qualifications. This is information not bound by dates of employment. You’re simply outlining your background and your general strengths.&lt;/li&gt;&lt;li&gt;Also on the first page, outline only your top qualifications. Focus on your familiarity with modern and emerging technology and don’t waste space on outmoded stuff. No hiring manager is going to care much about your expert knowledge of Windows NT.&lt;/li&gt;&lt;li&gt;Fill your online resume with lots of keywords. Hiring managers, in an effort to cut to the chase, may electronically search your resumes for the terms they’re looking for.&lt;/li&gt;&lt;li&gt;Run spell check but don’t trust it. Spell checking won’t flag correctly spelled words used incorrectly and may not catch tech terms and proper product names that are not part of the dictionary. For products, be sure to use the manufacturer’s spelling. Nothing kills your credibility faster than to say you’ve worked with a technology for years when that technology or acronym is incorrect on your resume.&lt;/li&gt;&lt;/ol&gt;           &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-7234750313735901062?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/7234750313735901062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=7234750313735901062&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/7234750313735901062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/7234750313735901062'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/12/how-your-tech-resume-should-differ-from.html' title='How your tech resume should differ from a general resume'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-5038896388323462925</id><published>2007-12-28T10:26:00.001+05:30</published><updated>2007-12-28T10:26:36.342+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><title type='text'>The five worst things you can do in a meeting</title><content type='html'>&lt;div class="entry"&gt;      &lt;p&gt;Here are five meeting offenses that will not only drive your co-workers crazy, but will also damage your reputation within the workplace.&lt;/p&gt; &lt;ol type="1"&gt;&lt;li&gt;&lt;strong&gt;Show up late&lt;/strong&gt; - Occasionally there is an emergency that crops up that forces you to go into a meeting a few minutes late. But usually the culprit is poor time management. Consistently arriving late implies to your manager and your co-worker that you are either extremely disorganized or don’t really respect the rules that everyone else follows.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Bring your cell phone&lt;/strong&gt; - Again, there could be special circumstances that would require having a cell phone in a meeting, such as a call from a doctor or your child’s school. But if your cell goes off at every meeting and it’s just your spouse needing to know if you’ll pick up some Pudding Pops after work, shame on you. This behavior shows a lack of respect as well as a lack of commitment to your job.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Have a side conversation&lt;/strong&gt; - Nothing rankles a meeting leader more than two people having a whispered conversation separate from the topic at hand.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Don’t focus&lt;/strong&gt; - Believe it or not, I’ve been in meetings when attendees have leafed through clothing catalogs or balanced their checkbook while the leader is talking. Trying to multi-task in a somewhat dull meeting might be tempting, but it’s very rude. And don’t think people don’t notice.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Talk just to hear yourself speak&lt;/strong&gt; - It may be your way of raising your office profile, but hogging much of the meeting spotlight with philosophical ramblings will not do it. Be brief and succinct. Meetings are for communication; they are not your personal stage.&lt;/li&gt;&lt;/ol&gt;           &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-5038896388323462925?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/5038896388323462925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=5038896388323462925&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5038896388323462925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5038896388323462925'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/12/five-worst-things-you-can-do-in-meeting.html' title='The five worst things you can do in a meeting'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-2908942967172078272</id><published>2007-12-28T10:15:00.001+05:30</published><updated>2007-12-28T10:15:50.038+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><title type='text'>10 things you should do if you make a big mistake</title><content type='html'>&lt;p&gt;&lt;span style="font-style: italic;"&gt;Note: This information is also available as a &lt;a href="http://downloads.techrepublic.com.com/abstract.aspx?docid=328032" target="_blank"&gt;PDF download&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;h3&gt;#1: If possible, come up with a plan to fix the problem&lt;/h3&gt; &lt;p&gt;Don’t just walk away and wash your hands of the situation. True, other people might have to be involved in solving the problem. However, if you caused the problem, you are responsible for coming up with the plan to resolve it. The plan needs to address the actions that need to occur, the people who need to take them, and the amount of time you think the actions will take. The people involved most likely will be the boss, your co-workers, and any internal or external customers affected by the mistake.&lt;/p&gt; &lt;h3&gt;#2: Come clean with your boss&lt;/h3&gt; &lt;p&gt;Trying to cover things up rarely works. If and when your boss finds out, say, from someone else (worst of all from your boss’ boss), things will be even worse for you. In this kind of situation, it’s important that you be in control of the message. So as hard as it will be, you should summon up your strength, take a deep breath, and go talk to your boss.&lt;/p&gt; &lt;h3&gt;#3: Let the boss know about that plan&lt;/h3&gt; &lt;p&gt;In this situation, and in fact at any other time, never to go to the boss with just a problem. Go with a solution as well. In this case, go with the plan you developed and show the boss that, to at least some degree, you’re in control.&lt;/p&gt; &lt;h3&gt;#4: Tell the affected parties&lt;/h3&gt; &lt;p&gt;Let those affected by your mistake know what happened, but spare the technical details for now. Instead, focus on how the situation affects them: what limitations are in place, what functions are unavailable, and how long these limitations and lack of function are expected to last. Most important, offer any workarounds you can. Ask for their suggestions as well. If the mistake involves a system outage, perhaps some veteran techs can remember what they did in the old days, before that system was in place. If you have to and can do so, think about calling retirees for their ideas.&lt;/p&gt; &lt;h3&gt;#5: Don’t blame others&lt;/h3&gt; &lt;p&gt;You’re no longer in grade school. Trying to blame other people makes you look unprofessional, diminishing the opinion that others have of you. Conversely (and paradoxically), taking responsibility and admitting your mistake can win you respect. Your co-workers might end up thinking, “You know, even though [your name] messed up, it took a lot of character to admit it. [Your name] is a real stand-up person, and someone who can be counted on.”&lt;/p&gt; &lt;h3&gt;#6: Stop looking back&lt;/h3&gt; &lt;p&gt;Learning from the past can help prevent repeat mistakes. However, don’t confuse learning from the past with &lt;em&gt;dwelling&lt;/em&gt; on the past. The latter involves endless self-recrimination and often self-pity, neither of which helps resolve the situation. If you find yourself dwelling on the mistake in this manner, stop it right now and read the next tip.&lt;/p&gt; &lt;h3&gt;#7: Prepare and issue a “lessons learned” document&lt;/h3&gt; &lt;p&gt;“Those who do not remember the past are doomed to repeat it.” “As a dog returns to its vomit, so a fool repeats his folly.” Maybe you’ve heard these or similar sayings. Their point is clear: We need to understand the mistake we made so that we can avoid it in the future. Documenting the mistake, and the steps taken to resolve it, are key in this regard. In doing so, be sure to cover the conditions that led to the mistake, the steps taken to correct it, and the measures taken to prevent its recurrence.&lt;/p&gt; &lt;p&gt;In my example of the bad SQL table, I ended up not only keeping my job, but I also kept my security officer user profile. However, we created a second user profile for me, one that lacked access to production data, which I was to use for testing and development work.&lt;/p&gt; &lt;h3&gt;#8: Apologize to those affected&lt;/h3&gt; &lt;p&gt;Mistakes often cost others in lost time and productivity and hence frustrate them. Consequently, even if you solve the problem, the people who were affected by it might still be upset if you never acknowledge that frustration. I’m not saying you have to be an Oprah or a Dr. Phil, but taking a second to apologize will go a long way toward restoring you to good graces. By doing so, you show you appreciate what they had to go through.&lt;/p&gt; &lt;h3&gt;#9: Determine whether the mistake can occur elsewhere&lt;/h3&gt; &lt;p&gt;This point relates to the “lessons learned” document. Here, however, you should consider other areas of the business, or other applications. To what extent do they have the same conditions, procedures, or people that could cause them to experience the same type of problem? You might want to alert those areas. They may answer that they have more competent staff, but that’s a risk you’ll have to take.&lt;/p&gt; &lt;h3&gt;#10: Put the best face possible on what happened&lt;/h3&gt; &lt;p&gt;Everyone focuses on the negative effects of a problem. There had to be some; otherwise, it wouldn’t have been a problem and wouldn’t have received such scrutiny. However, can you find &lt;em&gt;any&lt;/em&gt; good things, no matter how small, that resulted from this problem? One of the most useful concepts I’ve learned is that of “reframing” the situation, that is, to change the way a person looks at it. In this case, reframing the problem might take the following form:&lt;/p&gt; &lt;ul class="unIndentedList"&gt;&lt;li&gt; Yes, a problem occurred.&lt;/li&gt;&lt;li&gt; Yes, the system was unavailable.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;BUT the good news is&lt;/p&gt; &lt;ul class="unIndentedList"&gt;&lt;li&gt; It happened during a slow time.&lt;/li&gt;&lt;li&gt; It identified issues we need to address elsewhere in other systems.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Of course, in offering these arguments, it’s helpful if you can do so with a straight face.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-2908942967172078272?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/2908942967172078272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=2908942967172078272&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/2908942967172078272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/2908942967172078272'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/12/10-things-you-should-do-if-you-make-big.html' title='10 things you should do if you make a big mistake'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-1104763883030085647</id><published>2007-12-28T10:11:00.002+05:30</published><updated>2007-12-28T10:13:55.646+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview'/><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><title type='text'>The Do’s and Don’ts of successful interviewing</title><content type='html'>My comments are in brackets. &lt;h2&gt;Do:&lt;/h2&gt; &lt;ul&gt;&lt;li&gt;Arrive on time.&lt;/li&gt;&lt;li&gt;Greet the interviewer by name. [Not his or her &lt;em&gt;first&lt;/em&gt; name though until you are issued the invitation.]&lt;/li&gt;&lt;li&gt;Smile and shake hands firmly. [However, making a good impression is not dependent on how many knuckles you crush.]&lt;/li&gt;&lt;li&gt;Look alert and interested at all times. [Turn off the cell phone and PDA. Somebody’s going to post in the discussion and ask who’d be stupid enough to leave those on in an interview. I’ve been a witness to it; they’re out there.]&lt;/li&gt;&lt;li&gt;Speak firmly, clearly and loudly enough to be easily understood. [[A good suggestion but you just know someone reading it will go overboard, yelling and annunciating like a tourist in a foreign land.]&lt;/li&gt;&lt;li&gt;Look the interviewer in the eye while speaking. [If you’re shy this can be hard to do, but it does help.]&lt;/li&gt;&lt;li&gt;Structure your comments in a positive manner. [If you’re negative in a meeting in which you’re supposed to impress someone, what does that tell the interviewer about how you’ll be on the job?]&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Don’t:&lt;/h2&gt; &lt;ul&gt;&lt;li&gt;Exhibit overbearing, overaggressive, or egotistical behavior. [You don’t have to be brash or smug to come across as self-confident.]&lt;/li&gt;&lt;li&gt;Show a lack of interest or enthusiasm about the position or company. [Why even show up if you’re not interested?]&lt;/li&gt;&lt;li&gt;Appear excessively nervous. [This is easier said than done if you are actually, well, nervous, as most of us are in interviews. Just try to take some deep breaths beforehand and prepare yourself for possible questions.]&lt;/li&gt;&lt;li&gt;Overemphasize your compensation. [It was always a red flag to me as a manager when a job candidate asked what the salary was in the first 15 minutes.]&lt;/li&gt;&lt;li&gt;Make excuses for unfavorable factors in your work history. [It’s tempting, I know. But taking responsibility for yourself is the mature thing to do.]&lt;/li&gt;&lt;li&gt;Disparage past employers, managers, projects or technologies. [This would tell me that you’re going to do the same thing as an employee working for me.]&lt;/li&gt;&lt;li&gt;Answer only “yes” or “no” to questions. [It’s pretty awkward when you ask what you think is a probing question and get only a one-word answer in return. Don’t rattle on and on but try to expound a little just to show the interviewer that the wheels up there are turning.]&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-1104763883030085647?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/1104763883030085647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=1104763883030085647&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1104763883030085647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1104763883030085647'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/12/dos-and-donts-of-successful.html' title='The Do’s and Don’ts of successful interviewing'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-5660008817487662780</id><published>2007-12-28T10:11:00.001+05:30</published><updated>2007-12-28T10:11:41.572+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resume Preparation'/><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><title type='text'>What hiring managers hate about your resume</title><content type='html'>&lt;ul&gt;&lt;li&gt;Grammatical/spelling errors&lt;br /&gt;Too much information (or as GSG says, “I’m hiring you for a job. I don’t want to know about your 4 kids, that they are (in your opinion) little Einsteins, your dogs, your husband/wife, or your hobby of knitting little stocking caps for the poor little cold kittens.”)&lt;/li&gt;&lt;li&gt;Information provided that the interviewer can’t legally ask for (marital status, age, religion) &lt;/li&gt;&lt;li&gt;Unexplained date gaps in work experience&lt;/li&gt;&lt;li&gt;An overstatement of technical skills &lt;/li&gt;&lt;li&gt;Bad formatting (&lt;strong&gt;TiggerTwo&lt;/strong&gt; hates “the failure to place the most important information in the top third of the page, lack of white space, a bunch of keywords that appear to exist only to be keywords, failure to provide a skills listing, use of less than 10 point font, and use of a difficult-to-read font.”)&lt;/li&gt;&lt;li&gt;“If you can’t tell from the resume alone if the owner is enthusiastic about (some aspects of) his previous job experiences, the resume is out.”&lt;/li&gt;&lt;li&gt;Not highlighting actual results delivered&lt;/li&gt;&lt;li&gt;Overly long resumes. According to frostbite, “anything more than 2 pages is a hard read, more than 4 is a tome.”&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-5660008817487662780?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/5660008817487662780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=5660008817487662780&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5660008817487662780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5660008817487662780'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/12/what-hiring-managers-hate-about-your.html' title='What hiring managers hate about your resume'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-5013366838575715735</id><published>2007-12-28T10:08:00.000+05:30</published><updated>2007-12-28T10:09:39.472+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resume Preparation'/><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><title type='text'>10 tips for writing a job-winning developer resume</title><content type='html'>&lt;div class="entry"&gt;      &lt;p&gt;As seasoned job hunters know, the first step on the road to finding work is to write a resume that gets you the interview. Unfortunately, some of the traditional resume writing rules just do not work well in the software development industry. Here are 10 tips for writing a programmer resume that will increase your chances of getting the interview.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Note: This information is also available as a &lt;a href="http://downloads.techrepublic.com.com/abstract.aspx?docid=329324" target="_blank"&gt;PDF download&lt;/a&gt;. For a more detailed look at this topic, see the blog post &lt;a href="http://blogs.techrepublic.com.com/programming-and-development/?p=521" target="_blank"&gt;“Write a resume that will land you a programming job.”&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; &lt;h3&gt;#1: Provide a skills list up front&lt;/h3&gt; &lt;p&gt;The hiring manager wants to know if you have the skills the company is looking for. An “experience” section gives managers a good idea of how much experience you have, but if you have a “skills” section at the top of the resume, their eyes go there first. Sure, you may be making it a bit easier for them to weed out your resume. But on the flip side, you might bring to their attention some skills they would otherwise overlook. At the very least, the hiring manager will appreciate the skills list.&lt;/p&gt; &lt;h3&gt;#2: Make the experience interesting&lt;/h3&gt; &lt;p&gt;Most developers on the market have written a data-driven Web site or desktop application. To give a bunch of examples of these on your resume is not impressive. What &lt;em&gt;does&lt;/em&gt; impress a potential employer is experience that has something unique about it, showing you’ve done more than just “Hello World” level work. If you’ve been working under unique constraints or in environments with high levels of transactions or zero tolerance for failure, that looks very good to the person reading the resume. So show me how your experience is different, and I will see you as different.&lt;/p&gt; &lt;h3&gt;#3: Root out grammar, spelling, and other common mistakes&lt;/h3&gt; &lt;p&gt;Over the course of my time hiring, I have seen all sorts of grammar and spelling mistakes on resumes. One of the most embarrassing was when someone misspelled the name of the college he graduated from. Resumes do contain some unique grammatical conventions, and software development work in particular often revolves around acronyms or oddly spelled words. But that is really no excuse. Check your spelling and your grammar. This tip appears on just about every resume advice article I have ever read, but it clearly needs repeating.&lt;/p&gt; &lt;h3&gt;#4: Education counts, but not for much&lt;/h3&gt; &lt;p&gt;Unless you are just entering the job market for programming or are applying for a very specialized position, your education is not terribly important. Sure, you need to put it on your resume, but list it last, please. The hiring managers who need or want to know about it can find it, and the others won’t have to spend time on it. The world of programming changes often enough so that somewhere around seven years later, most schooling (except for “principles and theory” subjects, like mathematics or “pure” computer science) and certifications have little in common with the current working world reality.&lt;/p&gt; &lt;h3&gt;#5: Get to the meat, quick&lt;/h3&gt; &lt;p&gt;The traditional resume format includes a lot of information that’s just not needed, in the mind of the development manager. Your summary and possibly even the objective are two such sections. There really is no way to provide a summary that describes most programming pros in a way that is accurate, yet shorter than a resume itself. This is why most summary sections read like so much useless drivel: “Seasoned programmer with 10 years development,” followed by highlights of the skills section. Thanks, but no thanks.&lt;/p&gt; &lt;p&gt;The objective is often (but not always) just as useless. If you are looking for a change of pace, it offers a great way to keep the reader from pigeonholing you based on your skills and experience. The intermediate programmer looking to slide into a senior developer position can safely skip the objective. The senior programmer who wants to become a software architect or a DBA needs to state an objective. So avoid the summary at all costs, provide only useful objectives, and let the reader get to your skill set as quickly as possible.&lt;/p&gt; &lt;h3&gt;#6: Formatting matters&lt;/h3&gt; &lt;p&gt;The formatting of your resume is important. While the days of mailing resumes printed on premium stationery are long past, it is still a document that someone needs to read on a computer screen and on paper. That can be quite a balancing act, believe it or not. This is not the time to show off your inner Picasso, unless the position you are applying for is of a visually artistic nature. This is the time to enhance readability. That means using a larger font (10 to 12 points), a common font that all computers have (if your document format does not bundle fonts within it), and one that looks good both on the screen and off. My recommendations are Verdana, Arial, Tahoma, Calibri, and Helvetica.&lt;/p&gt; &lt;p&gt;Use enough whitespace so that the document does not seem too dense, which will turn readers off. At the same time, don’t waste so much space that it takes eight pages to print 200 words. Of course, the format of the file itself is important. My experience has been that 99.9% of the recruiters out there will ask for your resume in Microsoft Word format if you send it in any other format, so make sure that you can provide a document in the standard .doc format.&lt;/p&gt; &lt;p&gt;Always keep in mind that the resume is your primary tool for selling yourself. If readers can’t consume the information in it, whether due to technical issues or readability problems, they will quickly move on to the next resume.&lt;/p&gt; &lt;h3&gt;#7: Be cautious with the length&lt;/h3&gt; &lt;p&gt;Regardless of how your document is formatted, try to keep the length between two and four pages, unless there are extremely special circumstances. People who spend a lot of time doing short-term contract work can have longer resumes, and people just entering the job market can have shorter resumes.&lt;/p&gt; &lt;p&gt;Overall, it is tough to properly highlight your technical skills and more than one position in the traditional one-page resume format. Two pages should be the baseline for any intermediate or senior developer. But after about four pages, the reader’s eyes start to glaze over. Much like your education, the experience you had more than seven or eight years ago is not terribly relevant, but the hiring manager does like to see an arc of increasing responsibility or project difficulty.&lt;/p&gt; &lt;h3&gt;#8: Properly document your history&lt;/h3&gt; &lt;p&gt;Programming is not like most fields when it comes to employment history. For one thing, many programmers are contractors, which leads to an employment history that can look like a train. In addition, the dot-com bust is not too far behind us, and IT has always been an industry with a lot of bankruptcies, mergers, and acquisitions.&lt;/p&gt; &lt;p&gt;The problem is, no hiring manager likes to see a long list of short-term jobs. If your resume has a string of such jobs, with job titles that get bigger and bigger, you look like someone who has no loyalty. On the other hand, if the jobs seem basically the same (or worse, get lower on the totem pole), it makes the reader think that you may simply be unemployable. If you have a legitimate reason for the short-term jobs, make sure that the reason is obvious. For example, mark the contracting/consulting positions clearly.&lt;/p&gt; &lt;h3&gt;#9: Don’t put the reader at legal risk&lt;/h3&gt; &lt;p&gt;No hiring manager likes to be accused of prejudiced or discriminatory hiring. Not only is it unethical, but it is illegal. So hiring managers who are trying to do the job right will be familiar with the list of questions they can’t ask an applicant. Your part of the equation is to exclude this information from your resume. The hiring manager does not need to know your marital status, ethnicity, nation of origin, age, religion, or sexual orientation. There are a lot of other things the hiring manager does not need to know, either. If you include these irrelevant details on your resume, the hiring manager will feel scared and skittish. Leave these details out, please.&lt;/p&gt; &lt;h3&gt;#10: “What a geek!”&lt;/h3&gt; &lt;p&gt;In high school, you may have hated being called a geek. But today, you are trying to find work as a programmer. “Geek” is “gold” to hiring managers. Find a way to show them that you are smart, love programming, and are constantly growing, learning, and exploring new ideas. Talk about your relevant hobbies if you have any, like contributing to open source projects or volunteering to teach local kids programming. Let them know if you like programming or computers enough to deal with them outside of work.&lt;/p&gt; &lt;p&gt;It is a really simple equation for the hiring manager. While two candidates may be equal &lt;em&gt;today&lt;/em&gt;, the candidate with passion will be far more advanced &lt;em&gt;tomorrow&lt;/em&gt; than the candidate who treats it as “just a job.”&lt;/p&gt;           &lt;/div&gt;&lt;!-- /entry --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-5013366838575715735?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/5013366838575715735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=5013366838575715735&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5013366838575715735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5013366838575715735'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/12/10-tips-for-writing-job-winning.html' title='10 tips for writing a job-winning developer resume'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-4588636424469858417</id><published>2007-12-28T10:07:00.000+05:30</published><updated>2007-12-28T10:08:02.294+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resume Preparation'/><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><title type='text'>Real-life resume blunders</title><content type='html'>&lt;div class="entry"&gt;      &lt;p&gt;How bad of a mistake can you make on your resume? Here are some real&lt;br /&gt;life examples from Dribbleglass.com:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;I am very detail-oreinted.&lt;/li&gt;&lt;li&gt;My intensity and focus are at inordinately high levels, and my ability to complete projects on time is unspeakable.&lt;/li&gt;&lt;li&gt;Thank you for your consideration. Hope to hear from you shorty!&lt;/li&gt;&lt;li&gt;Enclosed is a ruff draft of my resume.&lt;/li&gt;&lt;li&gt;It’s best for employers that I not work with people.&lt;/li&gt;&lt;li&gt;Here are my qualifications for you to overlook.&lt;/li&gt;&lt;li&gt;I am a quick leaner, dependable, and motivated.&lt;/li&gt;&lt;li&gt;If this resume doesn’t blow your hat off, then please return it in the enclosed envelope.&lt;/li&gt;&lt;li&gt;My fortune cookie said, “Your next interview will result in a job.” And I like your company in particular.&lt;/li&gt;&lt;li&gt;I saw your ad on the information highway, and I came to a screeching halt.&lt;/li&gt;&lt;li&gt;Insufficient writing skills, thought processes have slowed down some. If I am not one of the best, I will look for another opportunity.&lt;/li&gt;&lt;li&gt;Please disregard the attached resume-it is terribly out of date.&lt;/li&gt;&lt;li&gt;Seek challenges that test my mind and body, since the two are usually inseparable.&lt;br /&gt;Graduated in the top 66% of my class.&lt;/li&gt;&lt;li&gt;Reason for leaving last job: The owner gave new meaning to the word paranoia. I prefer to elaborate privately.&lt;/li&gt;&lt;li&gt;Previous experience: Self-employed-a fiasco.&lt;/li&gt;&lt;li&gt;Exposure to German for two years, but many words are inappropriate for business.&lt;/li&gt;&lt;li&gt;Experience: Watered, groomed, and fed the family dog for years.&lt;/li&gt;&lt;li&gt;I am a rabid typist.&lt;/li&gt;&lt;li&gt;I have a bachelorette degree in computers.&lt;/li&gt;&lt;li&gt;Excellent memory; strong math aptitude; excellent memory; effective management skills; and very good at math.&lt;/li&gt;&lt;li&gt;Strengths: Ability to meet deadlines while maintaining composer.&lt;/li&gt;&lt;li&gt;I worked as a Corporate Lesion.&lt;/li&gt;&lt;li&gt;Reason for leaving last job: Pushed aside so the vice president’s girlfriend could steal my job.&lt;/li&gt;&lt;li&gt;Married, eight children. Prefer frequent travel.&lt;/li&gt;&lt;li&gt;Objective: To have my skills and ethics challenged on a daily basis.&lt;br /&gt;Special skills: Thyping.&lt;/li&gt;&lt;li&gt;My ruthlessness terrorized the competition and can sometimes offend.&lt;/li&gt;&lt;li&gt;I can play well with others.&lt;/li&gt;&lt;li&gt;Personal Goal: To hand-build a classic cottage from the ground up using my father-in-law.&lt;/li&gt;&lt;li&gt;Objective: I want a base salary of $50-$60,000 dollars, not including bonus. And some decent benefits. Like a retirement plan, health insurance, personal or sick days.&lt;/li&gt;&lt;li&gt;Experience: Provided correct answers to customers’ questions.&lt;/li&gt;&lt;li&gt;Education: Graduated from predatory school with honors.&lt;/li&gt;&lt;li&gt;Never been fired, although it could happen anytime now.&lt;/li&gt;&lt;li&gt;I have happily been a “kept man” for the past 10 years.&lt;/li&gt;&lt;li&gt;Have extensive experience in turkey manufactures as well as new product development and implementation.&lt;/li&gt;&lt;li&gt;I am accustomed to speaking in front of all kinds of audiences. I make points as well as I can.&lt;/li&gt;&lt;li&gt;Personal: Five children. Dog: Jasper. Cat: Morris. Gerbil: Binky.&lt;/li&gt;&lt;li&gt;While in military, was instrumental in creation of a treat detection system.&lt;/li&gt;&lt;li&gt;My compensation package at my last job included a base salary of $64,500 with excellent benefits including flextime. I am looking for a position in which I can work a more flexible schedule.&lt;/li&gt;&lt;li&gt;Hire me and you won’t regret it-I am funny, cute, smart and creative… really.&lt;/li&gt;&lt;li&gt;Referees available upon request.&lt;/li&gt;&lt;li&gt;Previous rank: Senior instigator.&lt;/li&gt;&lt;li&gt;I have recently sold my home and I now live in a large RV so I will be able to relocate quickly.&lt;/li&gt;&lt;li&gt;Reason for leaving: They stopped paying me.&lt;/li&gt;&lt;li&gt;Cover letter: Desire the chance to showcase my delightful personality, intelligence and superior judgment, which are so hard to find these days.&lt;/li&gt;&lt;li&gt;Personal achievements: Successfully played “Chop Sticks” on a toy piano with my big toes.&lt;/li&gt;&lt;li&gt;Objective: To obtain a position where I can make a difference, infecting others with my professionalism, enthusiasm and dedication.&lt;/li&gt;&lt;li&gt;Strengths: Impersonal skills.&lt;/li&gt;&lt;li&gt;Special interests: I like any projects that are fun.&lt;/li&gt;&lt;li&gt;Please explain any breaks in your employment career: 15 minute coffee break while working at a home improvement store.&lt;/li&gt;&lt;li&gt;Vocational plans: Sea World.&lt;/li&gt;&lt;/ul&gt;           &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-4588636424469858417?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/4588636424469858417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=4588636424469858417&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/4588636424469858417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/4588636424469858417'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/12/real-life-resume-blunders.html' title='Real-life resume blunders'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-8392080657713140958</id><published>2007-12-28T10:04:00.000+05:30</published><updated>2007-12-28T10:05:53.557+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resume Preparation'/><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><title type='text'>Write a resume that will land you a programming job</title><content type='html'>&lt;h2&gt;Put your skills front and center&lt;/h2&gt; &lt;p&gt;Reading the in-depth details of how you used mainstream skill XYZ to accomplish typical task ABC is not at the top of my agenda. I want to see your skills up front, so I don’t need to go trolling through your resume to see if you meet my minimum needs.&lt;/p&gt; &lt;h2&gt;Skip the summary and maybe even the objective&lt;/h2&gt; &lt;p&gt;Those summaries are a waste of my time. It is going to say something like “seasoned IT pro with great communication skills” or “proven veteran with 10 years of programming experience.” How do I know this? Because they all say this. Skip it, please.&lt;/p&gt; &lt;p&gt;The objective is a slightly different story; it is useful only if it informs the interviewer about something that the skills and experience does not. The objective’s relevance to me is largely a function of whether you wish to keep doing what you have been doing. If I see you have been programming — particularly at the data access layer and the business object layer — and there is no objective, I am going to assume that you are looking for more of the same with a different employer or location. If you want to do more of that work and put an objective, you are wasting space. If you are looking for a change of pace — like getting more into the presentation layer or heading towards a management track — it’s important to state that in your resume. Otherwise, we may discover during the interview that you are not interested in what we have to offer.&lt;/p&gt; &lt;h2&gt;List your education last&lt;/h2&gt; &lt;p&gt;Some IT hiring managers put a huge emphasis on certain educations but I do not. I always want you to list your school and your major, but I will only ask you about your education if there is something unusual or intriguing.&lt;/p&gt; &lt;p&gt;For instance, a candidate with a Computer Science degree from MIT or with a PhD in Organic Chemistry will draw my eye because these degrees show a level of high intelligence. On the flipside, an AA in basket weaving or a lack of a degree will not count against you.&lt;/p&gt; &lt;p&gt;In most cases, I am not even curious about your education until I have already made up my mind. This includes certifications — MCSEs and CCNAs do not impress me that much at this point. They matter to some folks, and they do not hurt you in my opinion, but I will only take that certification into account if all else is equal.&lt;/p&gt; &lt;h2&gt;Show me that you are different&lt;/h2&gt; &lt;p&gt;Even if my project is a run-of-the-mill Web-based, data driven application (which it is not), I still want to see that you are more than someone with 10 years of experience writing run-of-the-mill Web-based, data driven applications. For example, compare these two items:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;BORING!&lt;/strong&gt;&lt;em&gt;&lt;br /&gt;East Coast Power - Programmer 1999 - 2005&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Wrote VB applications to control machinery. The hardware interface was handled in a COM library that was written by another team. Application was robust and reliable.&lt;/li&gt;&lt;li&gt;Wrote Web-based tool to track system faults.&lt;/li&gt;&lt;li&gt;Created Web service to allow partners to consume portions of the database.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;WOW!&lt;/strong&gt;&lt;em&gt;&lt;br /&gt;East Coast Power - Programmer 1999 - 2005&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Wrote VB applications to control nuclear reactor. Real-time control and monitoring of systems handling 10,000 unique data inputs per second.&lt;/li&gt;&lt;li&gt;Wrote advanced algorithms in C# to detect imminent system failure, which were used within a Web-based application.&lt;/li&gt;&lt;li&gt;Created Web service in C# to allow partners to access data in a secure, reliable, and responsive manner; typical data set was 1,000,000 rows and concurrency challenges needed to be overcome at the database and application layers.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;See the difference? Control machinery does not help me much – you could have been working on the elevator system for all I know. Programming a nuclear reactor impresses me, especially since there has not been any nuclear reactor disasters during your employment. Writing advanced algorithms in C# touches my engineer’s heart; whereas writing a mere Web-based tool is ho hum. And, while writing a Web service is fairly simple, particularly in ASP.Net, it’s not so easy to write one that is “secure, reliable, and responsive” with that size of a data set. It’s also not easy to deal with concurrency issues at two different levels.&lt;/p&gt; &lt;p&gt;I am not saying that it needs to be wordy or full of minute details, but if you are doing work beyond what a summer intern could do, I need to know about it. Every developer has written a Web-based, data driven application. Show me more.&lt;/p&gt; &lt;h2&gt;Make sure that your experience highlights your skills&lt;/h2&gt; &lt;p&gt;I don’t expect your employment history to include a list of all your skills. But if you are looking for work as a .Net developer, show me that you have done some .Net work. If you do not list that experience, I am going to assume that you have little or no experience with it — even if it is on your skill list. If you have large amounts of experience outside of the workforce, find a way to show that on your resume.&lt;/p&gt; &lt;h2&gt;Keep your resume between two to four pages long&lt;/h2&gt; &lt;p&gt;I have struggled through seven-page resumes filled with jargon and boring details that made me want to cry. An overly long resume doesn’t necessarily make me rule out a candidate, but why make it hard on me?&lt;/p&gt; &lt;p&gt;On the other hand, a resume that tries to stick to the one page rule is not going to cut it for a technical person unless they are new to the field. In my experience, two to four pages is just right. Also, please use some whitespace, so I do not feel like I am drowning.&lt;/p&gt; &lt;h2&gt;Watch your formatting&lt;/h2&gt; &lt;p&gt;While technical pros’ resumes do not need to be pretty, formatting can make a huge difference in a resume’s readability. If you cannot put three pages of text in front of me in a readable form, do I really want you touching the UI or writing code that someone else might have to maintain?&lt;/p&gt; &lt;p&gt;I recommend that you stick to a larger font size (e.g., 10 - 12 pt.) in a font that reads well onscreen and in print (e.g., Verdana, Arial, Tahoma, Calibri, Helvetica). If you want a slightly fancier font, use it only for section headers. Also, do not mix Serif and Sans Serif fonts — that is just ugly. Do not use “Comic Sans” anywhere, especially in hot pink or baby blue (and yes, unfortunately, this needs to be stated). Keep your margins and space between paragraphs large enough to provide the reader some “breathing room.”&lt;/p&gt; &lt;h2&gt;Employment history&lt;/h2&gt; &lt;p&gt;I give applicants some slack on employment history. For instance, five year stints are fairly rare in IT, and I give anyone a lot of leeway if their history includes anything that occurred during the dot com boom/bust.&lt;/p&gt; &lt;p&gt;If you are (or were) a contractor or consultant, make sure that is clearly stated; otherwise, I will think that you get fired and/or quit every 3 - 12 months. If you were not a contractor or a consultant, and it looks like you have a hard time staying at a job, I am going to be very cautious. If I see an increasing progression of job titles, “mercenary” pops into my head. Also, if I see that they are lateral (or worse, negative) moves, “bad apple” is my first thought. Of course, sometimes you get hit with a string of employers that go under or get acquired — it happens to the best of us. If that is the case, find a way to convey that information so I don’t think you are unemployable.&lt;/p&gt; &lt;h2&gt;Spelling and grammar&lt;/h2&gt; &lt;p&gt;It is critical that the spelling and &lt;a target="_blank" href="http://downloads.techrepublic.com.com/download.aspx?docid=177112"&gt;grammar&lt;/a&gt; in your resume is flawless. I have seen applicants misspell the name of their state and the name of their school. If grammar and spelling are not your forte, ask someone to look over your resume for you. While I understand that many IT pros are not native English language speakers (or are English language speakers who paid little attention to those subjects in school), you should still ask someone for help. In fact, knowing when to ask for help is a hallmark of the best developers. If I interview you and realize from your speech that you had the sense and humility to ask someone for help on your resume, I am going to be truly impressed. (For examples of what &lt;em&gt;not&lt;/em&gt; to do, check out this list of &lt;a target="_blank" href="http://blogs.techrepublic.com.com/career/?p=139" title="Permanent Link: Real-life resume blunders"&gt;real-life resume blunders&lt;/a&gt;.)&lt;/p&gt; &lt;h2&gt;Stay out of EEO (Equal Employment Opportunity) territory&lt;/h2&gt; &lt;p&gt;In the United States, companies with more than 10 employees need to follow EEO rules. These rules state that an employer cannot discriminate against or show preference for an employee based on certain group membership items or personal lifestyle issues, such as gender, age, ethnicity, nation of origin, religion, sexual orientation, and so on. So, do me a favor and try to not expose any EEO-related information to me on the resume. In a face-to-face interview or even a phone interview, some of it will be unavoidable. &lt;em&gt;But I will never solicit that information.&lt;/em&gt; Not only do I want to keep my employer and myself out of trouble, but I personally feel that EEO is important. I can understand that many names (or even college attended) are strongly correlated with ethnicity, religion, or nation (or at least general geographic region) of origin, and college graduation or attendance dates give some age clues. Minimize this as much as possible. Please do not tell me about your church, your family situation, your home life, your parents, and so on. It is not that I am not interested — I would probably love to learn these things about you if we hire you — but I do not need or want to know them before that you come on board.&lt;/p&gt; &lt;h2&gt;Outside interests, hobbies, achievements, and activities&lt;/h2&gt; &lt;p&gt;I like to see these, &lt;em&gt;but only if they are relevant.&lt;/em&gt; I really do not need to know about how big of a fan you are of the New York Knicks; but if you wrote a piece of software that can do something nifty with the team’s statistics for fun, I would love to know about it. People who contribute to open source projects get a huge gold star in my book, but only if I feel like they would be comfortable working on proprietary software with proprietary tools, and not bringing anything GPL’ed into my codebase. That is a small caveat there. “Contributed to project XYZ in the areas of ABC and DEF” is enough to whet my appetite. Show me some outside learning too — don’t let me think that you get home at 6;00 and shut off your brain. If this work is not interesting enough for you to read about or experiment with on your own time, why would I think that you will be engaged or even interested in the job we would hire you for?&lt;/p&gt; &lt;h2&gt;Gracefully show your inner geek&lt;/h2&gt; &lt;p&gt;Please give me something meaty that we can discuss during the interview. So, where it is relevant, try to show me how much of a nerd you are.&lt;/p&gt; &lt;p&gt;For instance, try to mention the hovercraft you made from an inner tube and a lawn mower engine. Make note of the iterative, evolutionary game theory system you coded in Lisp that proves that Nash’s equilibrium is dead wrong. Tell me something about your three chess championship victories. I &lt;strong&gt;do not&lt;/strong&gt; want to know that you memorized &lt;em&gt;UHF&lt;/em&gt; or that you have a pocket protectors collection that have logos of now defunct minicomputer vendors.&lt;/p&gt; &lt;p&gt;I know most of this falls under the previous section, but it is relevant. I love to work with programmers who love technology and logic and using their brains. People like that are simply better programmers. Why would I want to hire someone who is intellectually lazy for an intellectually challenging job?&lt;/p&gt; &lt;h2&gt;Obscure or nonmainstream technologies&lt;/h2&gt; &lt;p&gt;I am not hiring Lisp, Prolog, Erlang, APL, Scheme, Clipper, PowerBuilder, Delphi, Pascal, Perl, Ruby, Python (forgive me for including those four in this list), Fortran, Ada, Algol, PL/1, OCaml, F#, Spec#, Smalltalk, Logo, StarLogo, Haskell, ML, D, Cobra, B, or even COBOL (which is fairly mainstream) developers. If you show these on your resume, I will want to interview you just for the sake of slipping in a few questions about these items.  I am serious. As part of my secret geekiness, I am really into obscure and almost obscure languages and technologies. I know that a lot of those items take better-than-industry-average intellect and experience to do; they also provide a set of experiences that gives their practitioners a great angle on problems. While you will never directly use those skills in my shop, you will be using those ways of thinking, and it will give us something to talk about on your first day.&lt;/p&gt; &lt;p&gt;(&lt;strong&gt;Aside:&lt;/strong&gt; A coworker was shocked to learn that I played &lt;em&gt;Half Life.&lt;/em&gt; He said, “You are such a ‘business person’ — I never thought you played video games.” I guess I’m camouflaging my secret geekiness too well!)&lt;/p&gt; &lt;h2&gt;Good luck&lt;/h2&gt; &lt;p&gt;I’ve given away crown jewels here. In my perspective, these tips will help any programmer write a perfect resume and get them an interview.&lt;/p&gt; &lt;p&gt;What do you think gets applicants an interview? If you read resumes as either a hiring manager, a recruiter, or an HR employee, what makes you say “wow!” or “ugh!” when you see it on paper?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-8392080657713140958?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/8392080657713140958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=8392080657713140958&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8392080657713140958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8392080657713140958'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/12/write-resume-that-will-land-you.html' title='Write a resume that will land you a programming job'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-6207366994487891331</id><published>2007-10-05T12:16:00.000+05:30</published><updated>2007-10-05T12:18:52.113+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Networks'/><title type='text'>Routing Algorithm</title><content type='html'>&lt;h3&gt;Routing Metrics &lt;/h3&gt;  &lt;p class="pb1body1"&gt;&lt;a name="wp1020655"&gt;&lt;/a&gt;Routing tables contain information used by switching software to select the best route.&lt;br /&gt;&lt;/p&gt;  &lt;p class="pb1body1"&gt;&lt;a name="wp1020657"&gt;&lt;/a&gt;Routing algorithms have used many different metrics to determine the best route. Sophisticated routing algorithms can base route selection on multiple metrics, combining them in a single (hybrid) metric. All the following metrics have been used: &lt;/p&gt;  &lt;p class="pbu1bullet1"&gt;&lt;a name="wp1020658"&gt;&lt;/a&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style="'width:14.25pt;"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.png" href="http://www.cisco.com/univercd/illus/images/blank.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;•Path length &lt;/p&gt;  &lt;p class="pbu1bullet1"&gt;&lt;a name="wp1020659"&gt;&lt;/a&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1026" type="#_x0000_t75" alt="" style="'width:14.25pt;height:1.5pt'"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.png" href="http://www.cisco.com/univercd/illus/images/blank.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;•Reliability &lt;/p&gt;  &lt;p class="pbu1bullet1"&gt;&lt;a name="wp1020660"&gt;&lt;/a&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1027" type="#_x0000_t75" alt="" style="'width:14.25pt;height:1.5pt'"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.png" href="http://www.cisco.com/univercd/illus/images/blank.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;•Delay &lt;/p&gt;  &lt;p class="pbu1bullet1"&gt;&lt;a name="wp1020661"&gt;&lt;/a&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1028" type="#_x0000_t75" alt="" style="'width:14.25pt;height:1.5pt'"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.png" href="http://www.cisco.com/univercd/illus/images/blank.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;•Bandwidth &lt;/p&gt;  &lt;p class="pbu1bullet1"&gt;&lt;a name="wp1020662"&gt;&lt;/a&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1029" type="#_x0000_t75" alt="" style="'width:14.25pt;height:1.5pt'"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.png" href="http://www.cisco.com/univercd/illus/images/blank.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;•Load &lt;/p&gt;  &lt;p class="pbu1bullet1"&gt;&lt;a name="wp1020663"&gt;&lt;/a&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1030" type="#_x0000_t75" alt="" style="'width:14.25pt;height:1.5pt'"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.png" href="http://www.cisco.com/univercd/illus/images/blank.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;•Communication cost &lt;/p&gt;  &lt;p class="pb1body1"&gt;&lt;a name="wp1020665"&gt;&lt;/a&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="pb1body1"&gt;&lt;i style="font-weight: bold;"&gt;Path length&lt;/i&gt; is the most common routing metric. Some routing protocols allow network administrators to assign arbitrary costs to each network link. In this case, path length is the sum of the costs associated with each link traversed. Other routing protocols define hop count, a metric that specifies the number of passes through internet working products, such as routers, that a packet must take en route from a source to a destination. &lt;/p&gt;  &lt;p class="pb1body1"&gt;&lt;a name="wp1020666"&gt;&lt;/a&gt;&lt;i style="font-weight: bold;"&gt;Reliability&lt;/i&gt;&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;in the context of routing algorithms, refers to the dependability (usually described in terms of the bit-error rate) of each network link. Some network links might go down more often than others. After a network fails, certain network links might be repaired more easily or more quickly than other links. Any reliability factors can be taken into account in the assignment of the reliability ratings, which are arbitrary numeric values usually assigned to network links by network administrators. &lt;/p&gt;  &lt;p class="pb1body1"&gt;&lt;a name="wp1020668"&gt;&lt;/a&gt;&lt;i style="font-weight: bold;"&gt;Routing delay&lt;/i&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;refers to the length of time required to move a packet from source to destination through the internetwork. Delay depends on many factors, including the bandwidth of intermediate network links, the port queues at each router along the way, network congestion on all intermediate network links, and the physical distance to be traveled. Because delay is a conglomeration of several important variables, it is a common and useful metric. &lt;/p&gt;  &lt;p class="pb1body1"&gt;&lt;a name="wp1020671"&gt;&lt;/a&gt;&lt;i style="font-weight: bold;"&gt;Bandwidth&lt;/i&gt; refers to the available traffic capacity of a link. All other things being equal, a 10-Mbps Ethernet link would be preferable to a 64-kbps leased line. Although bandwidth is a rating of the maximum attainable throughput on a link, routes through links with greater bandwidth do not necessarily provide better routes than routes through slower links. For example, if a faster link is busier, the actual time required to send a packet to the destination could be greater. &lt;/p&gt;  &lt;p class="pb1body1"&gt;&lt;a name="wp1020674"&gt;&lt;/a&gt;&lt;i style="font-weight: bold;"&gt;Load&lt;/i&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;refers to the degree to which a network resource, such as a router, is busy. Load can be calculated in a variety of ways, including CPU utilization and packets processed per second. Monitoring these parameters on a continual basis can be resource-intensive itself. &lt;/p&gt;  &lt;p class="pb1body1"&gt;&lt;a name="wp1020675"&gt;&lt;/a&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;Communication cost&lt;/span&gt;&lt;/i&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;is another important metric, especially because some companies may not care about performance as much as they care about operating expenditures. Although line delay may be longer, they will send packets over their own lines rather than through the public lines that cost money for usage time. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-6207366994487891331?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/6207366994487891331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=6207366994487891331&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6207366994487891331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6207366994487891331'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/10/routing-algorithm.html' title='Routing Algorithm'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-6845005581081214903</id><published>2007-09-07T14:35:00.000+05:30</published><updated>2007-09-07T15:05:02.090+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Polymorphism</title><content type='html'>Polymorphism means that the same thing can exist in two forms. This is an important characteristic of true object oriented design - which means that one could develop good OO design with data abstraction and inheritance, but the real power of object oriented design seems to surface when polymorphism is used.&lt;br /&gt;&lt;br /&gt;In programming languages, polymorphism means that some code or operations or objects behave differently in different contexts.&lt;br /&gt;&lt;em&gt;For example, the + (plus) operator in C++:&lt;br /&gt;4 + 5 &lt;-- integer addition 3.14 + 2.0 &lt;-- floating point addition s1 + "bar" &lt;-- string concatenation! &lt;/em&gt;In C++, that type of polymorphism is called &lt;strong&gt;overloading&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Polymorphism&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Literal meaning - many forms&lt;/li&gt;&lt;li&gt;OOP meaning&lt;br /&gt;- Same method (message) but different behavior&lt;br /&gt;- Object determines which method gets executed&lt;/li&gt;&lt;li&gt;Function or Method Overloading&lt;br /&gt;- Similar message but different behavior&lt;/li&gt;&lt;li&gt;Abstract interfaces to class hierarchies&lt;br /&gt;- Define core data and behavior capabilities of a class family&lt;br /&gt;- All classes in the family support core capabilities&lt;br /&gt;- All objects in family respond to core methods (messages)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;em&gt;A classic example is how area is calculated on different shapes. We define an abstact base class shape and derive two classes - rectangle and circle from it.&lt;/em&gt; An area() method defined in the base class will have to be implemented differently in rectangle and circle, since it has to be calculated differently. &lt;/p&gt;&lt;p&gt;This is an example of &lt;strong&gt;&lt;em&gt;polymorphic behavior&lt;/em&gt;&lt;/strong&gt;, and in C++, this is implemented using &lt;strong&gt;virtual member functions&lt;/strong&gt;. The area() member function is defined virtual in the base class, which signals to the compiler that this member function has to be invoked from the correct derived class at run time. This is indeed a run time decision, and which derived class member function is to be invoked depends on which derived class pointer has been assigned to the base class pointer. This also brings in the concept of &lt;strong&gt;late binding&lt;/strong&gt; (run time binding), since the above association to the area member function can only be done at run time. The compiler will have to insert extra code to do the late binding, which adds in a &lt;strong&gt;&lt;em&gt;little runtime overhead&lt;/em&gt;&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Types of Polymorphism:&lt;br /&gt;&lt;/strong&gt;C++ provides three different types of polymorphism.&lt;br /&gt;                   &lt;em&gt; Virtual functions&lt;br /&gt;                    Function name overloading&lt;br /&gt;                    Operator overloading &lt;/em&gt;&lt;/p&gt;&lt;p&gt;In addition to the above three types of polymorphism, there exist other kinds of polymorphism:&lt;br /&gt;                 &lt;em&gt; run-time&lt;br /&gt;                  compile-time&lt;br /&gt;                  ad-hoc polymorphism&lt;br /&gt;                  parametric polymorphism&lt;/em&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Other types of polymorphism defined:&lt;br /&gt;&lt;strong&gt;run-time:&lt;/strong&gt;&lt;br /&gt;                 The run-time polymorphism is implemented with inheritance and virtual functions.&lt;br /&gt;&lt;strong&gt;compile-time:&lt;br /&gt;&lt;/strong&gt;                  The compile-time polymorphism is implemented with templates.&lt;br /&gt;&lt;strong&gt;ad-hoc polymorphism:&lt;br /&gt;&lt;/strong&gt;                 If the range of actual types that can be used is finite and the combinations must be  individually specified prior to use, this is called ad-hoc polymorphism.&lt;br /&gt;&lt;strong&gt;parametric polymorphism:&lt;br /&gt;&lt;/strong&gt;                 If all code is written without mention of any specific type and thus can be used transparently with any number of new types it is called parametric polymorphism.&lt;br /&gt;&lt;br /&gt;In general, there are two main categories of Polymorphism namely&lt;br /&gt;                 &lt;em&gt;Ad Hoc Polymorphism&lt;br /&gt;                 Pure Polymorphism&lt;/em&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Overloading&lt;/strong&gt; concepts fall under the category of &lt;strong&gt;Ad Hoc Polymorphism&lt;/strong&gt; and &lt;strong&gt;Virtual methods&lt;/strong&gt;. &lt;strong&gt;Templates or parametric classes&lt;/strong&gt; fall under the category of &lt;strong&gt;Pure Polymorphism&lt;/strong&gt;.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-6845005581081214903?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/6845005581081214903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=6845005581081214903&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6845005581081214903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6845005581081214903'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/polymorphism.html' title='Polymorphism'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-6079043324866311508</id><published>2007-09-07T14:14:00.000+05:30</published><updated>2007-09-07T14:34:54.743+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Persistence</title><content type='html'>One of the most critical tasks that applications have to perform is to save and restore data. Whether it be a word processing application that saves documents to disk, a utility that remembers its configuration for next time, or a game that sets aside world domination for the night, the ability to store data and later retrieve it is a vital one. Without it, software would be little more effective that the typewriter - users would have to re-type the data to make further modifications once the application exits.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Therefore, an object that has the ability to store and remember values is often said to have persistence&lt;/strong&gt;. &lt;em&gt;For Example, the ability of your car radio to remember your list of favorite stations is often referred to as persistence. &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;It also can be defined as &lt;strong&gt;the property of an &lt;/strong&gt;&lt;a href="http://www.microgold.com/version2/stage/tutorial/glossary.html#Object"&gt;&lt;strong&gt;object&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; by which its existence transcends time&lt;/strong&gt;(i.e., the object continues to exist after its creator ceases to exists) &lt;strong&gt;and/or space&lt;/strong&gt; (i.e., the object's locations moves from the address space in which it was created).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-6079043324866311508?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/6079043324866311508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=6079043324866311508&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6079043324866311508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6079043324866311508'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/persistence.html' title='Persistence'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-6957446924597714018</id><published>2007-09-07T13:52:00.000+05:30</published><updated>2008-12-10T14:37:08.295+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Hierarchy</title><content type='html'>&lt;div&gt;In &lt;a title="Computer science" href="http://en.wikipedia.org/wiki/Computer_science"&gt;computer science&lt;/a&gt;'s &lt;a title="Object-oriented programming" href="http://en.wikipedia.org/wiki/Object-oriented_programming"&gt;object-oriented programming&lt;/a&gt;, the mapped relationships of &lt;a title="Class (object-oriented programming)" href="http://en.wikipedia.org/wiki/Class_(object-oriented_programming)"&gt;sub- and superclasses&lt;/a&gt; is known as a &lt;a title="Hierarchy" href="http://en.wikipedia.org/wiki/Hierarchy"&gt;hierarchy&lt;/a&gt;. This can be visualized as an upside-down &lt;a title="Tree" href="http://en.wikipedia.org/wiki/Tree"&gt;tree&lt;/a&gt; (or perhaps a &lt;a title="Pyramid" href="http://en.wikipedia.org/wiki/Pyramid"&gt;pyramid&lt;/a&gt;), the top of which is known as the &lt;a title="Root (computing)" href="http://en.wikipedia.org/wiki/Root_(computing)"&gt;root&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The issue is more complicated with languages that support &lt;a title="Multiple inheritance" href="http://en.wikipedia.org/wiki/Multiple_inheritance"&gt;multiple inheritance&lt;/a&gt;, where hierarchy can be any &lt;a title="Directed acyclic graph" href="http://en.wikipedia.org/wiki/Directed_acyclic_graph"&gt;directed acyclic graph&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a title="Aggregation" href="http://en.wikipedia.org/wiki/Aggregation"&gt;Aggregation&lt;/a&gt; or &lt;a title="Object composition" href="http://en.wikipedia.org/wiki/Object_composition"&gt;Composition&lt;/a&gt; relationships in &lt;a title="Object-oriented design" href="http://en.wikipedia.org/wiki/Object-oriented_design"&gt;object-oriented design&lt;/a&gt; also form a hierarchy, composition hierarchy.&lt;br /&gt;&lt;br /&gt;In object-oriented programming, a class is a template that defines the state and behavior common to objects of a certain kind. A class can be defined in terms of other classes. &lt;em&gt;For example, a truck and a racing car are both examples of a car. Another example is a letter and a digit being both a single character that can be drawn on the screen. &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;In the latter example, the following terminology is used:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The letter class is a subclass of the character class; (alternative names: child class and derived class)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The character class is immediate superclass (or parent class) of the letter class;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The letter class extends the character class.&lt;/li&gt;&lt;/ul&gt;The third formulation expresses that a subclass inherits state (instance variables) and behavior (methods) from its superclass(es). Letters and digits share the state (name, font, size, position) and behavior (draw, resize, ...) defined for single characters.&lt;br /&gt;&lt;br /&gt;The purpose of a subclass is to extend existing state and behavior: a letter has a case (upper and lower case, say stored in the instance variable letterCase) and methods for changing the case (toUpperCase, toLowerCase) in addition to the state that it already has as a character.&lt;br /&gt;&lt;br /&gt;However, a digit does not have a case, so the methods toUpperCase, toLowerCase do not belong on the common level of the Character class. There are methods that are special to the digit class. For instance, a digit may be constructed from an integer value between 0 and 9, and conversely, the integer value of a digit may be the result of say the intValue method.&lt;br /&gt;&lt;br /&gt;In graphical terms, the above character example may look as follows:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://staff.science.uva.nl/%7Eheck/JAVAcourse/ch3/character.gif" /&gt;&lt;br /&gt;&lt;br /&gt;The classes form a &lt;strong&gt;class hierarchy, or inheritance tree&lt;/strong&gt;, which can be as deep as needed. &lt;em&gt;For example, the letter class can have on its turn the subclasses vowel and consonant.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://staff.science.uva.nl/%7Eheck/JAVAcourse/ch3/lettertree.gif" /&gt;&lt;br /&gt;&lt;br /&gt;When a message is sent to an object, it is passed up the inheritance tree starting from the class of the receiving object until a definition is found for the method. This process is called upcasting. For instance, the method toString() is defined in the Object class. So every class automatically has this method.&lt;br /&gt;&lt;br /&gt;In graphical terms, &lt;em&gt;the inheritance tree and the message handling&lt;/em&gt; may look as follows:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://staff.science.uva.nl/%7Eheck/JAVAcourse/ch3/inheritance.gif" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;A hierarchy is useful if there are several classes which are fundamentally similar to each other. In C++, a "&lt;strong&gt;base class&lt;/strong&gt;" is a synonym for superclass and"&lt;strong&gt;derived class&lt;/strong&gt;" is a synonym for subclass.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5107379561209880242" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_OJWfB6V1sfg/RuEOpp8BXrI/AAAAAAAAABE/GPTMjWdhZBQ/s320/hierarchy.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-6957446924597714018?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/6957446924597714018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=6957446924597714018&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6957446924597714018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6957446924597714018'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/hierarchy.html' title='Hierarchy'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_OJWfB6V1sfg/RuEOpp8BXrI/AAAAAAAAABE/GPTMjWdhZBQ/s72-c/hierarchy.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-1127503802592268254</id><published>2007-09-07T13:36:00.000+05:30</published><updated>2007-09-07T13:49:32.531+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Messaging</title><content type='html'>"The process by which an object sends data to another object or asks the other object to invoke a method." Also known to some programming languages as interfacing.&lt;br /&gt;&lt;br /&gt;The object's interface consists of a set of commands, each command performing a specific action. An object asks another object to perform an action by sending it a message. The requesting (sending) object is referred to as sender and the receiving object is referred to as receiver.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.inf.ufsc.br/poo/smalltalk/ibm/pic/gif/oo002005.gif" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Control is given to the receiving object until it completes the command; control then returns to the sending object.&lt;br /&gt;&lt;br /&gt;For example, a School object asks the Student object for its name by sending it a message asking for its name. The receiving Student object returns the name back to the sending object.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.inf.ufsc.br/poo/smalltalk/ibm/pic/fig/fig2.gif" /&gt;&lt;br /&gt;&lt;br /&gt;A message can also contain information the sending objects needs to pass to the reveiving object, called the argument in the message. A receiving object always returns a value back to the sending object. This returned value may or may not be useful to the sending object.&lt;br /&gt;&lt;br /&gt;For example, the School object now wants to change the student's name. It does this by sending the Student object a message to set its name to a new name. The new address is passed as an argument in the message. In this case, the School object does not care about the return value from the message.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.inf.ufsc.br/poo/smalltalk/ibm/pic/fig/fig3.gif" /&gt;&lt;br /&gt;&lt;br /&gt;It is very common that a message will cause other messages to be sent, either to itself or to other objects, in order to complete its task. This is called sequential operation. Control will not return to the original sending object untill all other messages have been completed.&lt;br /&gt;&lt;br /&gt;For example, in the following diagram, Object A sends a message to Object B. For Object B to process that message it sends a message to Object C.Likewise, Object C sends a mesage to Object D. Object D returns to Object C who then returns to Object B who returns to Object A. Control does not return to Object A until all the other messages have completed.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;img style="WIDTH: 666px; HEIGHT: 96px" height="111" src="http://www.inf.ufsc.br/poo/smalltalk/ibm/pic/gif/oo002020.gif" width="676" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;How do receiving objects interpret messages from the senders? How are the messages processed?&lt;br /&gt;Each message has code that associated with it. When an object receives a message, code is excercuted. In other words, these messages determine an object's behavior and the code determines how the object carries out each message. The code that is associated with each message is called a method. The message name is also called the method name due to its close association with the method.&lt;br /&gt;When an object receives a message, it determines what method is being requested and passes control to the method. An object has as many methods as it it takes to perform its designed actions.&lt;br /&gt;Refer to the following diagram, name, name:, address and name:address are method names for the Student object. When the Student object receive the name message, the name message passes control to the name method defined in Student.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.inf.ufsc.br/poo/smalltalk/ibm/pic/gif/oo002025.gif" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-1127503802592268254?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/1127503802592268254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=1127503802592268254&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1127503802592268254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1127503802592268254'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/messaging.html' title='Messaging'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-5977610914188030402</id><published>2007-09-07T13:24:00.000+05:30</published><updated>2007-09-07T13:30:32.608+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Fundamental Concepts - OOP</title><content type='html'>Object-oriented programming (OOP) is a &lt;a title="Programming paradigm" href="http://en.wikipedia.org/wiki/Programming_paradigm"&gt;programming paradigm&lt;/a&gt; that uses "objects" and their interactions to design applications and computer programs. It is based on several techniques, including &lt;a title="Inheritance (computer science)" href="http://en.wikipedia.org/wiki/Inheritance_%28computer_science%29"&gt;inheritance&lt;/a&gt;, &lt;a title="Module (programming)" href="http://en.wikipedia.org/wiki/Module_%28programming%29"&gt;modularity&lt;/a&gt;, &lt;a title="Polymorphism in object-oriented programming" href="http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming"&gt;polymorphism&lt;/a&gt;, and &lt;a title="Information hiding" href="http://en.wikipedia.org/wiki/Information_hiding"&gt;encapsulation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Class&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;A class defines the abstract characteristics of a thing (object), including the thing's characteristics (its attributes, &lt;a title="Field (computer science)" href="http://en.wikipedia.org/wiki/Field_%28computer_science%29"&gt;fields&lt;/a&gt; or properties) and the thing's behaviors (the things it can do or &lt;a title="Methods" href="http://en.wikipedia.org/wiki/Methods"&gt;methods&lt;/a&gt; or features). For example, the class Dog would consist of traits shared by all dogs, such as breed and fur color (characteristics), and the ability to bark (behavior). Classes provide &lt;a title="Modularity (programming)" href="http://en.wikipedia.org/wiki/Modularity_%28programming%29"&gt;modularity&lt;/a&gt; and &lt;a title="Structure" href="http://en.wikipedia.org/wiki/Structure"&gt;structure&lt;/a&gt; in an object-oriented computer program. A class should typically be recognizable to a non-programmer familiar with the problem domain, meaning that the characteristics of the class should make sense in context. Also, the code for a class should be relatively self-contained. Collectively, the properties and methods defined by a class are called members.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="Object (computer science)" href="http://en.wikipedia.org/wiki/Object_%28computer_science%29"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Object&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;A particular instance of a class. The class of Dog defines all possible dogs by listing the characteristics and behaviors they can have; the object Lassie is one particular dog, with particular versions of the characteristics. A Dog has fur; Lassie has brown-and-white fur. In programmer jargon, the object Lassie is an instance of the Dog class. The set of values of the attributes of a particular object is called its &lt;a title="State (computer science)" href="http://en.wikipedia.org/wiki/State_%28computer_science%29"&gt;state&lt;/a&gt;.The object consists of state and the behaviour that's defined in the object's class.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="Method (computer science)" href="http://en.wikipedia.org/wiki/Method_%28computer_science%29"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Method&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;An object's abilities. Lassie, being a Dog, has the ability to bark. So bark() is one of Lassie's methods. She may have other methods as well, for example sit() or eat(). Within the program, using a method should only affect one particular object; all Dogs can bark, but you need one particular dog to do the barking.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="Message passing" href="http://en.wikipedia.org/wiki/Message_passing"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Message passing&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;"The process by which an object sends data to another object or asks the other object to invoke a method." Also known to some programming languages as interfacing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="Inheritance (computer science)" href="http://en.wikipedia.org/wiki/Inheritance_%28computer_science%29"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Inheritance&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;"Subclasses" are more specialized versions of a class, which inherit attributes and behaviors from their parent classes, and can introduce their own.&lt;br /&gt;For example, the class Dog might have sub-classes called Collie, Chihuahua, and GoldenRetriever. In this case, Lassie would be an instance of the Collie subclass. Suppose the Dog class defines a method called bark() and a property called furColor. Each of its sub-classes (Collie, Chihuahua, and GoldenRetriever) will inherit these members, meaning that the programmer only needs to write the code for them once.&lt;br /&gt;Each subclass can alter its inherited traits. For example, the Collie class might specify that the default furColor for a collie is brown-and-white. The Chihuahua subclass might specify that the bark() method produces a high-pitched by default. Subclasses can also add new members. The Chihuahua subclass could add a method called tremble(). So an individual chihuahua instance would use a high-pitched bark() from the Chihuahua subclass, which in turn inherited the usual bark() from Dog. The chihuahua object would also have the tremble() method, but Lassie would not, because she is a Collie, not a Chihuahua. In fact, inheritance is an "is-a" relationship: Lassie is a Collie. A Collie is a Dog. Thus, Lassie inherits the members of both Collies and Dogs.&lt;br /&gt;&lt;a title="Multiple inheritance" href="http://en.wikipedia.org/wiki/Multiple_inheritance"&gt;Multiple inheritance&lt;/a&gt; is inheritance from more than one ancestor class, neither of these ancestors being an ancestor of the other. For example, independent classes could define Dogs and Cats, and a Chimera object could be created from these two which inherits all the (multiple) behavior of cats and dogs. This is not always supported, as it can be hard both to implement and to use well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="Information hiding" href="http://en.wikipedia.org/wiki/Information_hiding"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Encapsulation&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;Encapsulation conceals the functional details of a class from objects that send messages to it.&lt;br /&gt;For example, the Dog class has a bark() method. The code for the bark() method defines exactly how a bark happens (e.g., by inhale() and then exhale(), at a particular pitch and volume). Timmy, Lassie's friend, however, does not need to know exactly how she barks. Encapsulation is achieved by specifying which classes may use the members of an object. The result is that each object exposes to any class a certain &lt;a title="Interface (computer science)" href="http://en.wikipedia.org/wiki/Interface_%28computer_science%29"&gt;interface&lt;/a&gt; — those members accessible to that class. The reason for encapsulation is to prevent clients of an interface from depending on those parts of the implementation that are likely to change in future, thereby allowing those changes to be made more easily, that is, without changes to clients. For example, an interface can ensure that puppies can only be added to an object of the class Dog by code in that class. Members are often specified as public, protected or private, determining whether they are available to all classes, sub-classes or only the defining class. Some languages go further: &lt;a title="Java (programming language)" href="http://en.wikipedia.org/wiki/Java_%28programming_language%29"&gt;Java&lt;/a&gt; uses the default access modifier to restrict access also to classes in the same package, &lt;a title="C sharp" href="http://en.wikipedia.org/wiki/C_sharp"&gt;C#&lt;/a&gt; and &lt;a title="Visual Basic .NET" href="http://en.wikipedia.org/wiki/Visual_Basic_.NET"&gt;VB.NET&lt;/a&gt; reserve some members to classes in the same assembly using keywords internal (C#) or Friend (VB.NET), and &lt;a title="Eiffel (programming language)" href="http://en.wikipedia.org/wiki/Eiffel_%28programming_language%29"&gt;Eiffel&lt;/a&gt; and &lt;a title="C++" href="http://en.wikipedia.org/wiki/C%2B%2B"&gt;C++&lt;/a&gt; allows one to specify which classes may access any member.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="Abstraction (computer science)" href="http://en.wikipedia.org/wiki/Abstraction_%28computer_science%29"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Abstraction&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;Abstraction is simplifying complex reality by modeling classes appropriate to the problem, and working at the most appropriate level of inheritance for a given aspect of the problem.&lt;br /&gt;For example, Lassie the Dog may be treated as a Dog much of the time, a Collie when necessary to access Collie-specific attributes or behaviors, and as an Animal (perhaps the parent class of Dog) when counting Timmy's pets.Abstraction is also achieved through Composition. For example, a class Car would be made up of an Engine, Gearbox, Steering objects, and many more components. To build the Car class, one does not need to know how the different components work internally, but only how to interface with them, i.e., send messages to them, receive messages from them, and perhaps make the different objects composing the class interact with each other.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="Polymorphism (computer science)" href="http://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Polymorphism&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;Polymorphism allows you to treat derived class members just like their parent class's members. More precisely, &lt;a title="Polymorphism in object-oriented programming" href="http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming"&gt;Polymorphism in object-oriented programming&lt;/a&gt; is the ability of &lt;a title="Object (computer science)" href="http://en.wikipedia.org/wiki/Object_%28computer_science%29"&gt;objects&lt;/a&gt; belonging to different &lt;a title="Data type" href="http://en.wikipedia.org/wiki/Data_type"&gt;data types&lt;/a&gt; to respond to method calls of &lt;a title="Method (computer science)" href="http://en.wikipedia.org/wiki/Method_%28computer_science%29"&gt;methods&lt;/a&gt; of the same name, each one according to an appropriate type-specific behavior. One method, or an operator such as +, -, or *, can be abstractly applied in many different situations. If a Dog is commanded to speak(), this may elicit a Bark. However, if a Pig is commanded to speak(), this may elicit an Oink. They both inherit speak() from Animal, but their derived class methods override the methods of the parent class; this is Overriding Polymorphism. Overloading Polymorphism is the use of one method signature, or one operator such as "+", to perform several different functions depending on the implementation. The "+" operator, for example, may be used to perform integer addition, float addition, list concatenation, or string concatenation. Any two subclasses of Number, such as Integer and Double, are expected to add together properly in an OOP language. The language must therefore overload the concatenation operator, "+", to work this way. This helps improve code readability. How this is implemented varies from language to language, but most OOP languages support at least some level of overloading polymorphism. Many OOP languages also support &lt;a title="Parametric Polymorphism" href="http://en.wikipedia.org/wiki/Parametric_Polymorphism"&gt;Parametric Polymorphism&lt;/a&gt;, where code is written without mention of any specific type and thus can be used transparently with any number of new types. Pointers are an example of a simple polymorphic routine that can be used with many different types of objects.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Not all of the above concepts are to be found in all object-oriented programming languages, and so object-oriented programming that uses classes is called sometimes &lt;a title="Class-based programming" href="http://en.wikipedia.org/wiki/Class-based_programming"&gt;class-based programming&lt;/a&gt;. In particular, &lt;a title="Prototype-based programming" href="http://en.wikipedia.org/wiki/Prototype-based_programming"&gt;prototype-based programming&lt;/a&gt; does not typically use classes. As a result, a significantly different yet analogous terminology is used to define the concepts of object and instance, although there are no objects in these languages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-5977610914188030402?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/5977610914188030402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=5977610914188030402&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5977610914188030402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5977610914188030402'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/fundamental-concepts-oop.html' title='Fundamental Concepts - OOP'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-1759095354294128240</id><published>2007-09-04T14:54:00.001+05:30</published><updated>2007-09-04T14:54:39.292+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Differences Between C and Java</title><content type='html'>&lt;p&gt;&lt;a name="INDEX-411"&gt;&lt;/a&gt;&lt;a name="INDEX-412"&gt;&lt;/a&gt;&lt;a name="INDEX-413"&gt;&lt;/a&gt;&lt;a name="INDEX-414"&gt;&lt;/a&gt;If you are a C or C++ programmer, you should have found much of the syntax of Java--particularly at the level of operators and statements--to be familiar. Because Java and C are so similar in some ways, it is important for C and C++ programmers to understand where the similarities end. There are a number of important differences between C and Java, which are summarized in the following list: &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;No preprocessor&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;Java does not include a preprocessor and does not define any analogs of the &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;#define&lt;/span&gt;&lt;/tt&gt;, &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;#include&lt;/span&gt;&lt;/tt&gt;, and &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;#ifdef&lt;/span&gt;&lt;/tt&gt; directives. Constant definitions are replaced with &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;staticfinal&lt;/span&gt;&lt;/tt&gt; fields in Java. (See the &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;java.lang.Math.PI&lt;/span&gt;&lt;/tt&gt; field for an example.) Macro definitions are not available in Java, but advanced compiler technology and inlining has made them less useful. Java does not require an &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;#include&lt;/span&gt;&lt;/tt&gt; directive because Java has no header files. Java class files contain both the class API and the class implementation, and the compiler reads API information from class files as necessary. Java lacks any form of conditional compilation, but its cross-platform portability means that this feature is very rarely needed. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;No global variables&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;Java defines a very clean namespace. Packages contain classes, classes contain fields and methods, and methods contain local variables. But there are no global variables in Java, and, thus, there is no possibility of namespace collisions among those variables. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;Well-defined primitive type sizes&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;All the primitive types in Java have well-defined sizes. In C, the size of &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;short&lt;/span&gt;&lt;/tt&gt;, &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;int&lt;/span&gt;&lt;/tt&gt;, and &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;long&lt;/span&gt;&lt;/tt&gt; types is platform-dependent, which hampers portability. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;No pointers&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;Java classes and arrays are reference types, and references to objects and arrays are akin to pointers in C. Unlike C pointers, however, references in Java are entirely opaque. There is no way to convert a reference to a primitive type, and a reference cannot be incremented or decremented. There is no address-of operator like &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;&amp;&lt;/span&gt;&lt;/tt&gt;, dereference operator like &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;*&lt;/span&gt;&lt;/tt&gt; or &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;−&gt;&lt;/span&gt;&lt;/tt&gt;, or &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;sizeof&lt;/span&gt;&lt;/tt&gt; operator. Pointers are a notorious source of bugs. Eliminating them simplifies the language and makes Java programs more robust and secure. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;Garbage collection&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;The Java Virtual Machine performs garbage collection so that Java programmers do not have to explicitly manage the memory used by all objects and arrays. This feature eliminates another entire category of common bugs and all but eliminates memory leaks from Java programs. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;No goto statement&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;Java doesn't support a &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;goto&lt;/span&gt;&lt;/tt&gt; statement. Use of &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;goto&lt;/span&gt;&lt;/tt&gt; except in certain well-defined circumstances is regarded as poor programming practice. Java adds exception handling and labeled &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;break&lt;/span&gt;&lt;/tt&gt; and &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;continue&lt;/span&gt;&lt;/tt&gt; statements to the flow-control statements offered by C. These are a good substitute for &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;goto&lt;/span&gt;&lt;/tt&gt;. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;Variable declarations anywhere&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;C requires local variable declarations to be made at the beginning of a method or block, while Java allows them anywhere in a method or block. Many programmers prefer to keep all their variable declarations grouped together at the top of a method, however. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;Forward references&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;The Java compiler is smarter than the C compiler, in that it allows methods to be invoked before they are defined. This eliminates the need to declare functions in a header file before defining them in a program file, as is done in C. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;Method overloading&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;Java programs can define multiple methods with the same name, as long as the methods have different parameter lists. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;No struct and union types&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;Java doesn't support C &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;struct&lt;/span&gt;&lt;/tt&gt; and &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;union&lt;/span&gt;&lt;/tt&gt; types. A Java &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;class&lt;/span&gt;&lt;/tt&gt; can be thought of as an enhanced &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;struct&lt;/span&gt;&lt;/tt&gt;, however. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;No enumerated types&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;Java doesn't support the &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;enum&lt;/span&gt;&lt;/tt&gt; keyword used in C to define types that consist of fixed sets of named values. This is surprising for a strongly typed language like Java, but there are ways to simulate this feature with object constants. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;No bitfields&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;Java doesn't support the (infrequently used) ability of C to specify the number of individual bits occupied by fields of a &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;struct&lt;/span&gt;&lt;/tt&gt;. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;No typedef&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;Java doesn't support the &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;typedef&lt;/span&gt;&lt;/tt&gt; keyword used in C to define aliases for type names. Java's lack of pointers makes its type-naming scheme simpler and more consistent than C's, however, so many of the common uses of &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;typedef&lt;/span&gt;&lt;/tt&gt; are not really necessary in Java. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;No method pointers&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;C allows you to store the address of a function in a variable and pass this function pointer to other functions. You cannot do this with Java methods, but you can often achieve similar results by passing an object that implements a particular interface. Also, a Java method can be represented and invoked through a &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;java.lang.reflect.Method&lt;/span&gt;&lt;/tt&gt; object. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;No variable-length argument lists&lt;/b&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;"&gt;Java doesn't allow you to define methods such as C's &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;printf()&lt;/span&gt;&lt;/tt&gt; that take a variable number of arguments. Method overloading allows you to simulate C varargs functions for simple cases, but there's no general replacement for this feature.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-1759095354294128240?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/1759095354294128240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=1759095354294128240&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1759095354294128240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1759095354294128240'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/differences-between-c-and-java.html' title='Differences Between C and Java'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-909689807256752287</id><published>2007-09-04T14:46:00.000+05:30</published><updated>2007-09-04T14:49:56.936+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Differences Between Java and C/C++</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:green;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;  &lt;ul style="color: rgb(153, 255, 153);" type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;The      Preprocessor&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Pointers&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Structures      &lt;span class="hilite4"&gt;and&lt;/span&gt; Unions&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Functions&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Multiple      Inheritance&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Strings&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;The      goto Statement&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Operator      Overloading&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Automatic      Coercions&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Variable      Arguments&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Command-Line      Arguments&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(153, 255, 153);" &gt;It is no secret that the &lt;span class="hilite5"&gt;Java&lt;/span&gt; language is highly derived from the &lt;span class="hilite3"&gt;C&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; &lt;span class="hilite3"&gt;C&lt;/span&gt;++ languages. Because &lt;span class="hilite3"&gt;C&lt;/span&gt;++ is currently considered the language of choice for professional software developers, it's important to understand what aspects of &lt;span class="hilite3"&gt;C&lt;/span&gt;++ &lt;span class="hilite5"&gt;Java&lt;/span&gt; inherits. Of possibly even more importance are what aspects of &lt;span class="hilite3"&gt;C&lt;/span&gt;++ &lt;span class="hilite5"&gt;Java&lt;/span&gt; doesn't support. Because &lt;span class="hilite5"&gt;Java&lt;/span&gt; is an entirely new language, it was possible for the language architects to pick &lt;span class="hilite4"&gt;and&lt;/span&gt; choose which features from &lt;span class="hilite3"&gt;C&lt;/span&gt;++ to implement in &lt;span class="hilite5"&gt;Java&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; how.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The focus of this appendix is to point out the differences &lt;span class="hilite2"&gt;between&lt;/span&gt; &lt;span class="hilite5"&gt;Java&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; &lt;span class="hilite3"&gt;C&lt;/span&gt;++. If you are a &lt;span class="hilite3"&gt;C&lt;/span&gt;++ programmer, you will be able to appreciate the differences &lt;span class="hilite2"&gt;between&lt;/span&gt; &lt;span class="hilite5"&gt;Java&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; &lt;span class="hilite3"&gt;C&lt;/span&gt;++. Even if you don't have any &lt;span class="hilite3"&gt;C&lt;/span&gt;++ experience, you can gain some insight into the &lt;span class="hilite5"&gt;Java&lt;/span&gt; language by understanding what &lt;span class="hilite3"&gt;C&lt;/span&gt;++ discrepancies it clears up in its implementation. Because &lt;span class="hilite3"&gt;C&lt;/span&gt;++ backwardly supports &lt;span class="hilite3"&gt;C&lt;/span&gt;, many of the differences pointed out in this appendix refer to &lt;span class="hilite3"&gt;C&lt;/span&gt;++, but inherently apply to &lt;span class="hilite3"&gt;C&lt;/span&gt; as well.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 255, 153); font-weight: bold;color:green;" &gt;The Preprocessor&lt;/span&gt;&lt;b style="font-weight: bold;"&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;All &lt;span class="hilite3"&gt;C&lt;/span&gt;/&lt;span class="hilite3"&gt;C&lt;/span&gt;++ compilers implement a stage of compilation known as the preprocessor. The &lt;span class="hilite3"&gt;C&lt;/span&gt;++ preprocessor basically performs an intelligent search &lt;span class="hilite4"&gt;and&lt;/span&gt; replace on identifiers that have been declared using the #define or #typedef directives. Although most advocates of &lt;span class="hilite3"&gt;C&lt;/span&gt;++ discourage the use of the preprocessor, which was inherited from &lt;span class="hilite3"&gt;C&lt;/span&gt;, it is still widely used by most &lt;span class="hilite3"&gt;C&lt;/span&gt;++ programmers. Most of the processor definitions in &lt;span class="hilite3"&gt;C&lt;/span&gt;++ are stored in header files, which complement the actual source code files.&lt;br /&gt;&lt;br /&gt;The problem with the preprocessor approach is that it provides an easy way for programmers to inadvertently add unnecessary complexity to a program. What happens is that many programmers using the #define &lt;span class="hilite4"&gt;and&lt;/span&gt; #typedef directives end up inventing their own sublanguage within the confines of a particular project. This results in other programmers having to go through the header files &lt;span class="hilite4"&gt;and&lt;/span&gt; sort out all the #define &lt;span class="hilite4"&gt;and&lt;/span&gt; #typedef information to understand a program, which makes code maintenance &lt;span class="hilite4"&gt;and&lt;/span&gt; reuse almost impossible. An additional problem with the preprocessor approach is that it is weak when it comes to type checking &lt;span class="hilite4"&gt;and&lt;/span&gt; validation.&lt;br /&gt;&lt;br /&gt;&lt;span class="hilite5"&gt;Java&lt;/span&gt; does not have a preprocessor. It provides similar functionality (#define, #typedef, &lt;span class="hilite4"&gt;and&lt;/span&gt; so on) to that provided by the &lt;span class="hilite3"&gt;C&lt;/span&gt;++ preprocessor, but with far more control. Constant data members are used in place of the #define directive, &lt;span class="hilite4"&gt;and&lt;/span&gt; class definitions are used in lieu of the #typedef directive. The result is that &lt;span class="hilite5"&gt;Java&lt;/span&gt; source code is much more consistent &lt;span class="hilite4"&gt;and&lt;/span&gt; easier to read than &lt;span class="hilite3"&gt;C&lt;/span&gt;++ source code. Additionally, &lt;span class="hilite5"&gt;Java&lt;/span&gt; programs don't use header files; the &lt;span class="hilite5"&gt;Java&lt;/span&gt; compiler builds class definitions directly from the source code files, which contain both class definitions &lt;span class="hilite4"&gt;and&lt;/span&gt; method implementations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 255, 153);" &gt;Pointers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Most developers agree that the misuse of pointers causes the majority of bugs in &lt;span class="hilite3"&gt;C&lt;/span&gt;/&lt;span class="hilite3"&gt;C&lt;/span&gt;++ programming. Put simply, when you have pointers, you have the ability to trash memory. &lt;span class="hilite3"&gt;C&lt;/span&gt;++ programmers regularly use complex pointer arithmetic to create &lt;span class="hilite4"&gt;and&lt;/span&gt; maintain dynamic data structures. In return, &lt;span class="hilite3"&gt;C&lt;/span&gt;++ programmers spend a lot of time hunting down complex bugs caused by their complex pointer arithmetic.&lt;br /&gt;&lt;br /&gt;The &lt;span class="hilite5"&gt;Java&lt;/span&gt; language does not support pointers. &lt;span class="hilite5"&gt;Java&lt;/span&gt; provides similar functionality by making heavy use of references. &lt;span class="hilite5"&gt;Java&lt;/span&gt; passes all arrays &lt;span class="hilite4"&gt;and&lt;/span&gt; objects by reference. This approach prevents common errors due to pointer mismanagement. It also makes programming easier in a lot of ways simply because the correct usage of pointers is easily misunderstood by all but the most seasoned programmers.&lt;br /&gt;&lt;br /&gt;You may be thinking that the lack of pointers in &lt;span class="hilite5"&gt;Java&lt;/span&gt; will keep you from being able to implement many data structures, such as dynamic arrays. The reality is that any pointer task can be carried out just as easily &lt;span class="hilite4"&gt;and&lt;/span&gt; more reliably with objects &lt;span class="hilite4"&gt;and&lt;/span&gt; arrays of objects. You then benefit from the security provided by the &lt;span class="hilite5"&gt;Java&lt;/span&gt; runtime system; it performs boundary checking on all array indexing operations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 255, 153);" &gt;Structures &lt;span class="hilite4"&gt;and&lt;/span&gt; Unions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are three types of complex data types in &lt;span class="hilite3"&gt;C&lt;/span&gt;++: classes, structures, &lt;span class="hilite4"&gt;and&lt;/span&gt; unions. &lt;span class="hilite5"&gt;Java&lt;/span&gt; only implements one of these data types: classes. &lt;span class="hilite5"&gt;Java&lt;/span&gt; forces programmers to use classes when the functionality of structures &lt;span class="hilite4"&gt;and&lt;/span&gt; unions is desired. Although this sounds like more work for the programmer, it actually ends up being more consistent, because classes can imitate structures &lt;span class="hilite4"&gt;and&lt;/span&gt; unions with ease. The &lt;span class="hilite5"&gt;Java&lt;/span&gt; designers really wanted to keep the language simple, so it only made sense to eliminate aspects of the language that overlapped.&lt;br /&gt;&lt;br /&gt;&lt;b style="color: rgb(153, 255, 153);"&gt;Functions &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In &lt;span class="hilite3"&gt;C&lt;/span&gt;, code is organized into functions, which are global subroutines accessible to a program. &lt;span class="hilite3"&gt;C&lt;/span&gt;++ added classes &lt;span class="hilite4"&gt;and&lt;/span&gt; in doing so provided class methods, which are functions that are connected to classes. &lt;span class="hilite3"&gt;C&lt;/span&gt;++ class methods are very similar to &lt;span class="hilite5"&gt;Java&lt;/span&gt; class methods. However, because &lt;span class="hilite3"&gt;C&lt;/span&gt;++ still supports &lt;span class="hilite3"&gt;C&lt;/span&gt;, there is nothing discouraging &lt;span class="hilite3"&gt;C&lt;/span&gt;++ programmers from using functions. This results in a mixture of function &lt;span class="hilite4"&gt;and&lt;/span&gt; method use that makes for confusing programs.&lt;br /&gt;&lt;br /&gt;&lt;span class="hilite5"&gt;Java&lt;/span&gt; has no functions. Being a purer object-oriented language than &lt;span class="hilite3"&gt;C&lt;/span&gt;++, &lt;span class="hilite5"&gt;Java&lt;/span&gt; forces programmers to bundle all routines into class methods. There is no limitation imposed by forcing programmers to use methods instead of functions. As a matter of fact, implementing routines as methods encourages programmers to organize code better. Keep in mind that strictly speaking there is nothing wrong with the procedural approach of using functions; it just doesn't mix well with the object-oriented paradigm that defines the core of &lt;span class="hilite5"&gt;Java&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b style="color: rgb(153, 255, 153);"&gt;Multiple Inheritance&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Multiple inheritance is a feature of &lt;span class="hilite3"&gt;C&lt;/span&gt;++ that allows you to derive a class from multiple parent classes. Although multiple inheritance is indeed powerful, it is complicated to use correctly &lt;span class="hilite4"&gt;and&lt;/span&gt; causes many problems otherwise. It is also very complicated to implement from the compiler perspective.&lt;br /&gt;&lt;br /&gt;&lt;span class="hilite5"&gt;Java&lt;/span&gt; takes the high road &lt;span class="hilite4"&gt;and&lt;/span&gt; provides no direct support for multiple inheritance. You can implement functionality similar to multiple inheritance by using interfaces in &lt;span class="hilite5"&gt;Java&lt;/span&gt;. &lt;span class="hilite5"&gt;Java&lt;/span&gt; interfaces provide object method descriptions but contain no implementations.&lt;br /&gt;&lt;br /&gt;&lt;b style="color: rgb(153, 255, 153);"&gt;Strings &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="hilite3"&gt;C&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; &lt;span class="hilite3"&gt;C&lt;/span&gt;++ have no built-in support for text strings. The standard technique adopted among &lt;span class="hilite3"&gt;C&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; &lt;span class="hilite3"&gt;C&lt;/span&gt;++ programmers is that of using null-terminated arrays of characters to represent strings.&lt;br /&gt;&lt;br /&gt;In &lt;span class="hilite5"&gt;Java&lt;/span&gt;, strings are implemented as first class objects (String &lt;span class="hilite4"&gt;and&lt;/span&gt; StringBuffer), meaning that they are at the core of the &lt;span class="hilite5"&gt;Java&lt;/span&gt; language. &lt;span class="hilite5"&gt;Java&lt;/span&gt;'s implementation of strings as objects provides several advantages: &lt;/p&gt;  &lt;ul style="color: rgb(153, 255, 153);" type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;The      manner in which you create strings &lt;span class="hilite4"&gt;and&lt;/span&gt; access      the elements of strings is consistent across all strings on all systems&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Because      the &lt;span class="hilite5"&gt;Java&lt;/span&gt; string classes are defined as part of      the &lt;span class="hilite5"&gt;Java&lt;/span&gt; language &lt;span class="hilite4"&gt;and&lt;/span&gt;      not part of some extraneous extension, &lt;span class="hilite5"&gt;Java&lt;/span&gt;      strings function predictably every time&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;The      &lt;span class="hilite5"&gt;Java&lt;/span&gt; string classes perform extensive runtime      checking, which helps eliminate troublesome runtime errors&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;b style="color: rgb(153, 255, 153);"&gt;The goto Statement&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The dreaded goto statement is pretty much a relic these days even in &lt;span class="hilite3"&gt;C&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; &lt;span class="hilite3"&gt;C&lt;/span&gt;++, but it is technically a legal part of the languages. The goto statement has historically been cited as the cause for messy, impossible to understand, &lt;span class="hilite4"&gt;and&lt;/span&gt; sometimes even impossible to predict code known as "spaghetti code." The primary usage of the goto statement has merely been as a convenience to substitute not thinking through an alternative, more structured branching technique.&lt;br /&gt;&lt;br /&gt;For all these reasons &lt;span class="hilite4"&gt;and&lt;/span&gt; more, &lt;span class="hilite5"&gt;Java&lt;/span&gt; does not provide a goto statement. The &lt;span class="hilite5"&gt;Java&lt;/span&gt; language specifies goto as a keyword, but its usage is not supported. I suppose the &lt;span class="hilite5"&gt;Java&lt;/span&gt; designers wanted to eliminate the possibility of even using goto as an identifier! Not including goto in the &lt;span class="hilite5"&gt;Java&lt;/span&gt; language simplifies the language &lt;span class="hilite4"&gt;and&lt;/span&gt; helps eliminate the option of writing messy code.&lt;br /&gt;&lt;br /&gt;&lt;b style="color: rgb(153, 255, 153);"&gt;Operator Overloading&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Operator overloading, which is considered a prominent feature in &lt;span class="hilite3"&gt;C&lt;/span&gt;++, is not supported in &lt;span class="hilite5"&gt;Java&lt;/span&gt;. Although roughly the same functionality can be implemented by classes in &lt;span class="hilite5"&gt;Java&lt;/span&gt;, the convenience of operator overloading is still missing. However, in defense of &lt;span class="hilite5"&gt;Java&lt;/span&gt;, operator overloading can sometimes get very tricky. No doubt the &lt;span class="hilite5"&gt;Java&lt;/span&gt; developers decided not to support operator overloading to keep the &lt;span class="hilite5"&gt;Java&lt;/span&gt; language as simple as possible.&lt;br /&gt;&lt;br /&gt;&lt;b style="color: rgb(153, 255, 153);"&gt;Automatic Coercions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Automatic coercion refers to the implicit casting of data types that sometimes occurs in &lt;span class="hilite3"&gt;C&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; &lt;span class="hilite3"&gt;C&lt;/span&gt;++. For example, in &lt;span class="hilite3"&gt;C&lt;/span&gt;++ you can assign a float value to an int variable, which can result in a loss of information. &lt;span class="hilite5"&gt;Java&lt;/span&gt; does not support &lt;span class="hilite3"&gt;C&lt;/span&gt;++ style automatic coercions. In &lt;span class="hilite5"&gt;Java&lt;/span&gt;, if a coercion will result in a loss of data, you must always explicitly cast the data element to the new type.&lt;br /&gt;&lt;br /&gt;&lt;b style="color: rgb(153, 255, 153);"&gt;Variable Arguments&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="hilite3"&gt;C&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; &lt;span class="hilite3"&gt;C&lt;/span&gt;++ let you declare functions, such as printf, that take a variable number of arguments. Although this is a convenient feature, it is impossible for the compiler to thoroughly type check the arguments, which means problems can arise at runtime without you knowing. Again &lt;span class="hilite5"&gt;Java&lt;/span&gt; takes the high road &lt;span class="hilite4"&gt;and&lt;/span&gt; doesn't support variable arguments at all.&lt;br /&gt;&lt;br /&gt;&lt;b style="color: rgb(153, 255, 153);"&gt;Command-Line Arguments&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The command-line arguments passed from the system into a &lt;span class="hilite5"&gt;Java&lt;/span&gt; program differ in a couple of ways from the command-line arguments passed into a &lt;span class="hilite3"&gt;C&lt;/span&gt;++ program. First, the number of parameters passed differs &lt;span class="hilite2"&gt;between&lt;/span&gt; the two languages. In &lt;span class="hilite3"&gt;C&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; &lt;span class="hilite3"&gt;C&lt;/span&gt;++, the system passes two arguments to a program: argc &lt;span class="hilite4"&gt;and&lt;/span&gt; argv. argc specifies the number of arguments stored in argv. argv is a pointer to an array of characters containing the actual arguments. In &lt;span class="hilite5"&gt;Java&lt;/span&gt;, the system passes a single value to a program: args. args is an array of Strings that contains the command-line arguments. In &lt;span class="hilite3"&gt;C&lt;/span&gt; &lt;span class="hilite4"&gt;and&lt;/span&gt; &lt;span class="hilite3"&gt;C&lt;/span&gt;++, the command-line arguments passed into a program include the name used to invoke the program. This name always appears as the first argument &lt;span class="hilite4"&gt;and&lt;/span&gt; is rarely ever used. In &lt;span class="hilite5"&gt;Java&lt;/span&gt;, you already know the name of the program because it is the same name as the class, so there is no need to pass this information as a command-line argument. Therefore, the &lt;span class="hilite5"&gt;Java&lt;/span&gt; runtime system only passes the arguments following the name that invoked the program.&lt;b&gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-909689807256752287?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/909689807256752287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=909689807256752287&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/909689807256752287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/909689807256752287'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/differences-between-java-and-cc.html' title='Differences Between Java and C/C++'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-6249581939013011148</id><published>2007-09-04T14:32:00.000+05:30</published><updated>2007-09-07T10:16:47.395+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Abstraction</title><content type='html'>&lt;pre&gt;&lt;span style="font-size:100%;"&gt;"An abstraction denotes the essential characteristics of an&lt;br /&gt;object that distinguish it from all other kinds of object and thus&lt;br /&gt;provide crisply defined conceptual boundaries, relative to the&lt;br /&gt;perspective of the viewer."&lt;br /&gt;&lt;br /&gt;-- [Booch, 1991]&lt;br /&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;"[A] simplified description, or specification, of a system that&lt;br /&gt;emphasizes some of the system's details or properties while&lt;br /&gt;suppressing others. A good abstraction is one that emphasizes&lt;br /&gt;details that are significant to the reader or user and suppress&lt;br /&gt;details that are, at least for the moment, immaterial or&lt;br /&gt;diversionary."&lt;br /&gt;&lt;br /&gt;-- [Shaw, 1984]&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Abstraction, as a process, denotes the extracting of the essential&lt;br /&gt;details aboutan item, or a group of items,while ignoring the&lt;br /&gt;inessential details.&lt;br /&gt;&lt;br /&gt;Abstraction, as an entity,&lt;br /&gt;denotes a model, a view, or some other focused representation for&lt;br /&gt;an actual item. Abstraction is most often used as a complexity&lt;br /&gt;mastering technique.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i style="font-weight: bold; font-style: italic;"&gt;Abstraction&lt;/i&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-size:100%;" &gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;refers to the act of representing essential features&lt;br /&gt;without including the background details or explanations.&lt;br /&gt;Classes use the concept of abstraction and are defined as a&lt;br /&gt;list of abstract attributes.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:140%;" &gt;Example:&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; An electrician and an interior decorator will look at the  same building each in two different ways. The decorator will probably  view the building primarily as a series of rooms. However, the  electrician will view it as a series of walls and floors. Walls are in  both their views, but serve a different purpose, have a different  priority, and relate in different ways. &lt;/p&gt;&lt;p&gt; Thus, the "abstraction" used by the decorator may be rooms which  are composed/comprised of walls and floors/ceilings. But the  electrician's view may have the walls be the primary abstraction,  with room information incidental, perhaps only to locate the proper  wall when walking around.  &lt;/p&gt;&lt;p&gt; Further, in the electrician's view, walls are a complex 3D structure  with their own little world inside, while the interior decorator may  view them mostly as 2D flat panels. Both have walls in their  mental abstractions, but view and relate them differently. &lt;/p&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;                          &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-6249581939013011148?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/6249581939013011148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=6249581939013011148&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6249581939013011148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/6249581939013011148'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/abstraction.html' title='Abstraction'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-3744991743419530407</id><published>2007-09-04T14:26:00.000+05:30</published><updated>2007-09-04T14:27:48.670+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Object Oriented Typing</title><content type='html'>The concept of &lt;span style="font-weight: bold;"&gt;type &lt;/span&gt;is more or less important in a language, depending on whether the language is strongly or weakly (or not at all) typed. &lt;p&gt;In strongly typed languages, the compiler prevents you from mixing different kinds of data together. This is limiting, but can be very helpful when you want to avoid putting a string, say, into the floating point value for the altitude of an airplane’s automatic pilot.&lt;/p&gt;    &lt;p&gt;In OO languuages, &lt;span style="font-weight: bold;"&gt;type &lt;/span&gt;is a synonym for &lt;span style="font-weight: bold;"&gt;class&lt;/span&gt;, at least as a first cut. In fact, class and type are quite distinct. A more nuanced understanding of type is one of the things that distinguishes a shallow from a deep understanding of OO design and programming.&lt;/p&gt;    &lt;p&gt;Type defines the properties and behaviors shared by all objects of the same type (class).&lt;/p&gt;    &lt;p&gt;OO languages can run the range of un-typed, weakly typed, or strongly typed.&lt;/p&gt;    &lt;p&gt;The advantage of strongly typed languages is that the compiler can detect when an object is being sent a message to which it does not respond. This can prevent run-time errors. The other advantages of strong typing are:&lt;/p&gt;    &lt;ul&gt;&lt;li&gt;earlier detection of errors speeds development&lt;/li&gt;&lt;li&gt;better optimized code from compiler&lt;/li&gt;&lt;li&gt;no run-time penalty for determining type&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;The disadvantages of strong typing are:&lt;/p&gt;    &lt;ul&gt;&lt;li&gt;loss of some flexibility&lt;/li&gt;&lt;li&gt;more difficult to define collections of heterogenous objects&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;C++ maintains strong class typing. An object may only be sent a message containing a method that is defined in the object’s class, or in any of the classes that this object inherits from. The compiler checks that you obey this.&lt;br /&gt;Objective C support strong typing, but it also allows for weak typing. A special type, id, can be used for object handles. An id can be a handle to any class of object, thus it has no typing information, and the compiler can’t check if you are sending proper messages. This is done instead at run-time.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-3744991743419530407?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/3744991743419530407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=3744991743419530407&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/3744991743419530407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/3744991743419530407'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/object-oriented-typing.html' title='Object Oriented Typing'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-8744168023381246113</id><published>2007-09-03T13:12:00.000+05:30</published><updated>2007-09-03T13:19:09.991+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Program Execution</title><content type='html'>The topology of a structure program is inherently different than the topology of an OO program. Modules are nested into a calling tree, as shown below:&lt;br /&gt;&lt;br /&gt;&lt;img alt="" src="http://atomicobject.com/images/StructuredTopology.png" /&gt;&lt;br /&gt;&lt;br /&gt;By contrast, the topology of an OO program is inherently less ordered. Objects cluster together by those which communicate most frequently. Inter-cluster messages exist, but are less common than intra-cluster messages. Notice how much like a computer network this topology looks.&lt;br /&gt;&lt;br /&gt;&lt;img style="WIDTH: 500px; HEIGHT: 456px" height="446" alt="" src="http://atomicobject.com/images/OOTopology.png" width="500" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-8744168023381246113?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/8744168023381246113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=8744168023381246113&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8744168023381246113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8744168023381246113'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/program-execution.html' title='Program Execution'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-1567456073491286363</id><published>2007-09-03T13:09:00.000+05:30</published><updated>2007-09-03T13:12:48.150+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Object Model</title><content type='html'>The object model has many facets. Here are the ones you’ll eventually have to understand to be mature OO developers. Note that these aren’t “OO” concepts. There is however a way of thinking about and understanding them in an OO context.&lt;br /&gt;&lt;br /&gt;Abstraction, Encapsulation, Identity, Modularity, Hierarchy, Typing, Concurrency, Persistence&lt;br /&gt;This is initially a scary, rather monstrous task. We’ll take them iteratively, in keeping with our OO development methodology.&lt;br /&gt;&lt;br /&gt;&lt;img alt="" src="http://atomicobject.com/images/ObjectModel.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-1567456073491286363?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/1567456073491286363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=1567456073491286363&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1567456073491286363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/1567456073491286363'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/object-model.html' title='Object Model'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-5605772363594141772</id><published>2007-09-01T20:36:00.000+05:30</published><updated>2007-09-01T20:40:56.891+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quiz C++'/><title type='text'>Simple C++ Quiz</title><content type='html'>&lt;span style="font-size:130%;"&gt;Computer memory is called RAM because:&lt;br /&gt;•&lt;br /&gt;[A] It provides rapid access to data&lt;br /&gt;•&lt;br /&gt;[B] It is mounted on the motherboard&lt;br /&gt;•&lt;br /&gt;[C] It is measured in megabytes&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffffcc;"&gt;&lt;span style="color:#ffcccc;"&gt;[D] Its bytes can be addressed in random order (correct answer)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;•&lt;br /&gt;[E] Its chips are mounted in a rectangular array&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;What is the debugger used for?&lt;br /&gt;•&lt;br /&gt;[A] Removing comments from the source code&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;[B] Running and tracing programs in a controlled way (correct answer)&lt;br /&gt;&lt;/span&gt;•&lt;br /&gt;[C] Running diagnostics of hardware components&lt;br /&gt;•&lt;br /&gt;[D] Removing syntax errors from C++ programs&lt;br /&gt;•&lt;br /&gt;[E] Removing dust from the computer screen&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Which program helps programmers create and modify source code?&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;[A] Editor (correct answer)&lt;/span&gt;&lt;br /&gt;•&lt;br /&gt;[B] Make&lt;br /&gt;•&lt;br /&gt;[C] Compiler&lt;br /&gt;•&lt;br /&gt;[D] Linker&lt;br /&gt;•&lt;br /&gt;[E] None of the above&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Which program converts source code into object modules?&lt;br /&gt;•&lt;br /&gt;[A] Editor&lt;br /&gt;•&lt;br /&gt;[B] Make&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;[C] Compiler (correct answer)&lt;/span&gt;&lt;br /&gt;•&lt;br /&gt;[D] Linker&lt;br /&gt;•&lt;br /&gt;[E] None of the above&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Which program converts object modules into an executable program?&lt;br /&gt;•&lt;br /&gt;[A] Editor&lt;br /&gt;•&lt;br /&gt;[B] Make&lt;br /&gt;•&lt;br /&gt;[C] Compiler&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;[D] Linker (correct answer)&lt;/span&gt;&lt;br /&gt;•&lt;br /&gt;[E] None of the above&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Data files read by a program are read when that program is:&lt;br /&gt;•&lt;br /&gt;[A] Compiled&lt;br /&gt;•&lt;br /&gt;[B] Linked&lt;br /&gt;•&lt;br /&gt;[C] Loaded into RAM&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;[D] Executed (correct answer)&lt;/span&gt;&lt;br /&gt;•&lt;br /&gt;[E] Run for the first time&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The complexity of a program is often measured by:&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;[A] The number of lines in the source file (correct answer)&lt;br /&gt;&lt;/span&gt;•&lt;br /&gt;[B] The time it took to write it&lt;br /&gt;•&lt;br /&gt;[C] The time it takes to run&lt;br /&gt;•&lt;br /&gt;[D] The number of data files it reads&lt;br /&gt;•&lt;br /&gt;[E] None of the above&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;How many reserved words are there in C++?&lt;br /&gt;•&lt;br /&gt;[A] 5-10&lt;br /&gt;•&lt;br /&gt;[B] 15-20&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;[C] 25-50 (correct answer)&lt;/span&gt;&lt;br /&gt;•&lt;br /&gt;[D] Over 100&lt;br /&gt;•&lt;br /&gt;[E] All words that start with a #&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;True or False: CPU instructions are stored in a special area of computer memory reserved for all programs.&lt;br /&gt;•&lt;br /&gt;[A] True&lt;br /&gt;•&lt;br /&gt;[B] False (correct answer) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;You are hired to write a gradebook program. What is the first step in developing this program?&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;[A] Create the exact program specifications (correct answer)&lt;/span&gt;&lt;br /&gt;•&lt;br /&gt;[B] Create the necessary algorithms&lt;br /&gt;•&lt;br /&gt;[C] Create a "stubs" program to check for global execution flow&lt;br /&gt;•&lt;br /&gt;[D] Gather all the necessary grades and other input files&lt;br /&gt;•&lt;br /&gt;[E] Write the main body of the program with function calls for all the major modules&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Consider the following statement: (Blank) is the concept of thinking about programming features and using programming features without concern, or knowledge about the implementation of such features.&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;[A] information hiding (correct answer)&lt;br /&gt;&lt;/span&gt;•&lt;br /&gt;[B] top-down design and step-wise refinement&lt;br /&gt;•&lt;br /&gt;[C] object oriented programming&lt;br /&gt;•&lt;br /&gt;[D] data abstraction&lt;br /&gt;•&lt;br /&gt;[E] encapsulation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;A team of programmers works together on a large project. Each individual team member is assigned to create, write, and test a large function. Which of the following is required information for each programmer to complete his/her assigned task? &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;I: Complete program specifications, including any input/output requiremens &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;II: Preconditions and postconditions of the assigned function &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;III: Parameter list of the assigned function that interfaces with the rest of the program&lt;br /&gt;•&lt;br /&gt;[A] I only&lt;br /&gt;•&lt;br /&gt;[B] II only&lt;br /&gt;•&lt;br /&gt;[C] III only&lt;br /&gt;•&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;[D] II and III only (correct answer)&lt;br /&gt;&lt;/span&gt;•&lt;br /&gt;[E] I, II, and III&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;True or False: The char data type is used for variables that hold character strings.&lt;br /&gt;•&lt;br /&gt;[A] True&lt;br /&gt;•&lt;br /&gt;[B] False (correct answer) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;True or False: The typedef statement is used to define the size of variables of a particular built-in type.&lt;br /&gt;•&lt;br /&gt;[A] True&lt;br /&gt;•&lt;br /&gt;[B] False (correct answer) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;True or False: The same name can be used for an integer and a double variable in the same function.&lt;br /&gt;•&lt;br /&gt;[A] True&lt;br /&gt;•&lt;br /&gt;[B] False (correct answer) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;True or False: Each variable must be declared on a separate line.&lt;br /&gt;•&lt;br /&gt;[A] True&lt;br /&gt;•&lt;br /&gt;[B] False (correct answer) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;All variables must always be declared at the top of the function's body.&lt;br /&gt;•&lt;br /&gt;[A] True&lt;br /&gt;•&lt;br /&gt;[B] False (correct answer) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;True or False: It is considered a good practice for a beginning programmer to use only global variables.&lt;br /&gt;•&lt;br /&gt;[A] True&lt;br /&gt;•&lt;br /&gt;[B] False (correct answer) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;True or False: It is acceptable to use the same name for local variables in different functions.&lt;br /&gt;•&lt;br /&gt;[A] True (correct answer)&lt;br /&gt;•&lt;br /&gt;[B] False&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-5605772363594141772?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/5605772363594141772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=5605772363594141772&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5605772363594141772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5605772363594141772'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/simple-c-quiz.html' title='Simple C++ Quiz'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-5370918659962825400</id><published>2007-09-01T20:26:00.000+05:30</published><updated>2007-09-01T20:33:46.059+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quiz C++'/><title type='text'>Quiz: C++ File I/O</title><content type='html'>1. Which of the following classes handlers file input?&lt;br /&gt;A. ofstream&lt;br /&gt;&lt;strong&gt;B. ifstream&lt;br /&gt;&lt;/strong&gt;C. instream&lt;br /&gt;D. inputfile&lt;br /&gt;&lt;br /&gt;2. Which of the following is not a valid ofstream argument?&lt;br /&gt;A. ios::app&lt;br /&gt;B. ios::trunc&lt;br /&gt;C. ios::noreplace&lt;br /&gt;&lt;strong&gt;D. ios::create&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;3. What does ios::ate mean as an argument to ofstream?&lt;br /&gt;A. Open file, but do not create.&lt;br /&gt;B. Open file, create.&lt;br /&gt;C. Open file for read access only.&lt;br /&gt;&lt;strong&gt;D. Open file, set the position to the end.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;4. How would you output to an open file named a_file?&lt;br /&gt;A. a_file.out("Output");&lt;br /&gt;B. a_file="Output";&lt;br /&gt;&lt;strong&gt;C. a_file&lt;&lt;"Output";&lt;/strong&gt;&lt;br /&gt;D. a_file.printf("Output");&lt;br /&gt;&lt;br /&gt;5. What header file contains C++ file I/O instructions?&lt;br /&gt;A. iostream.h&lt;br /&gt;&lt;strong&gt;B. fstream.h&lt;/strong&gt;&lt;br /&gt;C. infstream.h&lt;br /&gt;D. outstream.h&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-5370918659962825400?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/5370918659962825400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=5370918659962825400&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5370918659962825400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5370918659962825400'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/quiz-c-file-io.html' title='Quiz: C++ File I/O'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-8460396251243515776</id><published>2007-09-01T20:05:00.000+05:30</published><updated>2007-09-01T20:24:46.075+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quiz C++'/><title type='text'>C++ Quiz</title><content type='html'>&lt;a name="q1"&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;Question 1&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Can you name the special functions a C++ compiler can create implicitly?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a name="q2"&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;Question 2&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;What are the two ways to achieve automatic type conversion from type X to type Y?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a name="q3"&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;Question 3&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Which of one of these represents an assignment operation?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:130%;"&gt;1. C c1 = c2;&lt;br /&gt;2. c3 = c4;&lt;br /&gt;3. both&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-family:georgia;color:#ffcccc;"&gt;&lt;strong&gt;&lt;em&gt;Answers&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="q1"&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;Answer to question 1&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;The four special functions that may be generated by the compiler are:&lt;br /&gt;1. the default constructor&lt;br /&gt;2. the copy constructor&lt;br /&gt;3. the operator=() function&lt;br /&gt;4. the destructor&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a name="q2"&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;Answer to question 2&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;X can define the member function operator Y()&lt;br /&gt;Y can define the constructor Y(const X&amp;)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="q3"&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;Answer to question 3&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;c3 = c4 is an assignment&lt;br /&gt;C c1 = c2 is a copy-construction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:130%;"&gt;&lt;arr_l;i++)&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-8460396251243515776?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/8460396251243515776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=8460396251243515776&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8460396251243515776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8460396251243515776'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/09/c-quiz.html' title='C++ Quiz'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-9198290537449995739</id><published>2007-08-31T13:35:00.000+05:30</published><updated>2007-09-01T19:51:38.547+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pointers'/><title type='text'>Pointers</title><content type='html'>&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,204)font-size:180%;" &gt;Pointers - Definition&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pointers provide an indirect method of accessing variables. The reason why pointers are hard to understand is because they aren't taught in a manner that is understandable. Think for a minute about a typical textbook. It will usually have a table of contents, some chapters, and an index. What if you were looking in the 'C' book for information on printf? You'd look at the index for printf. The index will tell you where information on printf is located within the book. &lt;em&gt;Conceptually, this is how pointers work!&lt;/em&gt; Re-read this analogy if you didn't get it the first time. This is important. You must understand that pointers are &lt;strong&gt;&lt;em&gt;indirect references&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;You may be wondering, what is the point of this ? Why don't I just make all variables without the use of pointers? It's because sometimes you can't. What if you needed an array of ints, but didn't know the size of the array before hand? What if you needed a string, but it grew dynamically as the program ran? What if you need variables that are persistent through function use without declaring them global ? They are all solved through the use of pointers. Pointers are also essential in creating larger custom data structures, such as linked lists.&lt;/li&gt;&lt;li&gt;So now that you understand how pointers work, let's define them a little better. &lt;ul&gt;&lt;li&gt;A pointer when declared is just a reference. &lt;b&gt;DECLARING A POINTER DOES NOT CREATE ANY SPACE FOR THE POINTER TO POINT TO.&lt;/b&gt; The main purpose of pointers is to allocate memory dynamically (Dynamic Memory Allocation).&lt;/li&gt;&lt;li&gt;A pointer is a reference to an area of memory in the heap. The heap is a dynamically allocated area of memory when the program runs.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,204,204)font-size:180%;" &gt;void Pointers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;void&lt;/code&gt; pointers can be assigned to any pointer value. It sometimes necessary to store/copy/move pointers without regard to the type it references.&lt;/li&gt;&lt;li&gt;You &lt;b&gt;cannot&lt;/b&gt; dereference a &lt;code&gt;void&lt;/code&gt; pointer.&lt;/li&gt;&lt;li&gt;Functions such as &lt;code&gt;malloc&lt;/code&gt;, &lt;code&gt;free&lt;/code&gt;, and &lt;code&gt;scanf&lt;/code&gt; utilize &lt;code&gt;void&lt;/code&gt; pointers.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-9198290537449995739?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/9198290537449995739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=9198290537449995739&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/9198290537449995739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/9198290537449995739'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/08/pointers.html' title='Pointers'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-7533151619444967547</id><published>2007-08-29T21:48:00.000+05:30</published><updated>2008-12-10T14:37:08.662+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><title type='text'>Arrays</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_OJWfB6V1sfg/RtWfcp8BXmI/AAAAAAAAAAc/3NwxttWogZA/s1600-h/array.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5104161067337080418" style="margin: 0px 0px 10px 10px; float: right;" alt="" src="http://3.bp.blogspot.com/_OJWfB6V1sfg/RtWfcp8BXmI/AAAAAAAAAAc/3NwxttWogZA/s320/array.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this section, we will create a small C program that generates 10 random numbers and sorts them. To do that, we will use a new variable arrangement called an array.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An array lets you declare and work with a collection of values of the same type. For example, you might want to create a collection of five integers. One way to do it would be to declare five integers directly:&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;int a, b, c, d, e;&lt;/span&gt;&lt;br /&gt;This is okay, but what if you needed a thousand integers? An easier way is to declare an array of five integers:&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;int a[5];&lt;/span&gt;&lt;br /&gt;The five separate integers inside this array are accessed by an index. All arrays start at index zero and go to n-1 in C. Thus, int a[5]; contains five elements. For example:&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;int a[5];&lt;br /&gt;&lt;br /&gt;a[0] = 12;&lt;br /&gt;a[1] = 9;&lt;br /&gt;a[2] = 14;&lt;br /&gt;a[3] = 5;&lt;br /&gt;a[4] = 1;&lt;br /&gt;&lt;/span&gt;One of the nice things about array indexing is that you can use a loop to manipulate the index. For example, the following code initializes all of the values in the array to 0:&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;int a[5];&lt;br /&gt;int i;&lt;br /&gt;&lt;br /&gt;for (i=0; i&lt;5;&gt; The following code initializes the values in the array sequentially and then prints them out:&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;#include &lt;stdio.h&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;int a[5];&lt;br /&gt;int i;&lt;br /&gt;for (i=0; i&lt;5; i="0;"&gt;&lt;br /&gt;&lt;br /&gt;Arrays are used all the time in C. To understand a common usage, start an editor and enter the following code: &lt;span style="color: rgb(255, 255, 102);"&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#define MAX 10&lt;br /&gt;int a[MAX];&lt;br /&gt;int rand_seed=10;&lt;br /&gt;/* from K&amp;R&lt;br /&gt;- returns random number between 0 and 32767.*/&lt;br /&gt;int rand()&lt;br /&gt;{&lt;br /&gt;rand_seed = rand_seed * 1103515245 +12345;&lt;br /&gt;return (unsigned int)(rand_seed / 65536) % 32768;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;int i,t,x,y;&lt;br /&gt;/* fill array */ &lt;/stdio.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;for (i=0; i &lt;&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;       a[i]=rand(); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;       printf("%d\n",a[i]);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt; } /* more stuff will go here in a minute */ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;return 0; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This code contains several new concepts. The #define line declares a constant named MAX and sets it to 10. Constant names are traditionally written in all caps to make them obvious in the code. The line int a[MAX]; shows you how to declare an array of integers in C. Note that because of the position of the array's declaration, it is global to the entire program. The line int rand_seed=10 also declares a global variable, this time named rand_seed, that is initialized to 10 each time the program begins. This value is the starting seed for the random number code that follows.&lt;br /&gt;&lt;br /&gt;In a real random number generator, the seed should initialize as a random value, such as the system time. Here, the rand function will produce the same values each time you run the program. The line int rand() is a function declaration. The rand function accepts no parameters and returns an integer value. We will learn more about functions later. The four lines that follow implement the rand function. We will ignore them for now. The main function is normal. Four local integers are declared, and the array is filled with 10 random values using a for loop. Note that the array a contains 10 individual integers. You point to a specific integer in the array using square brackets.&lt;br /&gt;&lt;br /&gt;So a[0] refers to the first integer in the array, a[1] refers to the second, and so on. The line starting with /* and ending with */ is called a comment. The compiler completely ignores the line. You can place notes to yourself or other programmers in comments. Now add the following code in place of the more stuff ... comment:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;/* bubble sort the array */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt; for (x=0; x &lt;&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;         for (y=0; y &lt;&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;             if (a[y] &gt; a[y+1])&lt;br /&gt;           {&lt;br /&gt;                     t=a[y];&lt;br /&gt;                     a[y]=a[y+1];&lt;br /&gt;                     a[y+1]=t;&lt;br /&gt;          }&lt;br /&gt;        /* print sorted array */&lt;br /&gt;          printf("--------------------\n");&lt;br /&gt;         for (i=0; i &lt;&gt;&lt;br /&gt;This code sorts the random values and prints them in sorted order. Each time you run it, you will get the same values. If you would like to change the values that are sorted, change the value of rand_seed each time you run the program.&lt;br /&gt;&lt;br /&gt;The only easy way to truly understand what this code is doing is to execute it "by hand." That is, assume MAX is 4 to make it a little more manageable, take out a sheet of paper and pretend you are the computer. Draw the array on your paper and put four random, unsorted values into the array. Execute each line of the sorting section of the code and draw out exactly what happens. You will find that, each time through the inner loop, the larger values in the array are pushed toward the bottom of the array and the smaller values bubble up toward the top.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/stdio.h&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-7533151619444967547?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/7533151619444967547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=7533151619444967547&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/7533151619444967547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/7533151619444967547'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/08/arrays.html' title='Arrays'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_OJWfB6V1sfg/RtWfcp8BXmI/AAAAAAAAAAc/3NwxttWogZA/s72-c/array.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-7714990841129808557</id><published>2007-08-29T21:46:00.000+05:30</published><updated>2007-08-29T21:47:31.125+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quiz C++'/><title type='text'>Quiz: The basics of C++</title><content type='html'>1. What is the correct value to return to the operating system upon the successful completion of a program?&lt;br /&gt;A. -1 &lt;br /&gt;B. 1 &lt;br /&gt;C. 0 &lt;br /&gt;D. Programs do not return a value.&lt;br /&gt;&lt;br /&gt;2. What is the only function all C++ programs must contain?&lt;br /&gt;A. start()&lt;br /&gt;B. system() &lt;br /&gt;C. main() &lt;br /&gt;D. program()&lt;br /&gt;&lt;br /&gt;3. What punctuation is used to signal the beginning and end of code blocks?&lt;br /&gt;A. { } &lt;br /&gt;B. -&gt; and &lt;- &lt;br /&gt;C. BEGIN and END &lt;br /&gt;D. ( and ) &lt;br /&gt;&lt;br /&gt;4. What punctuation ends most lines of C++ code?&lt;br /&gt;A. . &lt;br /&gt;B. ; &lt;br /&gt;C. : &lt;br /&gt;D. ' &lt;br /&gt;&lt;br /&gt;5. Which of the following is a correct comment?&lt;br /&gt;A. */ Comments */&lt;br /&gt;B. ** Comment **&lt;br /&gt;C. /* Comment */&lt;br /&gt;D. { Comment }&lt;br /&gt;&lt;br /&gt;6. Which of the following is not a correct variable type?&lt;br /&gt;A. float&lt;br /&gt;B. real&lt;br /&gt;C. int&lt;br /&gt;D. double&lt;br /&gt;&lt;br /&gt;7. Which of the following is the correct operator to compare two variables?&lt;br /&gt;A. :=&lt;br /&gt;B. =&lt;br /&gt;C. equal&lt;br /&gt;D. ==&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-7714990841129808557?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/7714990841129808557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=7714990841129808557&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/7714990841129808557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/7714990841129808557'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/08/quiz-basics-of-c.html' title='Quiz: The basics of C++'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-8299267824940876899</id><published>2007-08-28T15:01:00.000+05:30</published><updated>2007-08-28T15:07:23.698+05:30</updated><title type='text'>Memory Leak in C Program</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold; font-family: arial;"&gt;Why do we need to test weather it is memory leak or not?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;How are we going to know that?&lt;br /&gt;Possibilities are:&lt;br /&gt;&lt;br /&gt;1) Array will print "Garbage Value"&lt;br /&gt;&lt;br /&gt;2) Message by the Compiler!&lt;br /&gt;&lt;br /&gt;Because size of heap memory will be reduced and leaked memory can not be assigned to other processes running simultaneously in a multiprogramming environment. Throughput will go down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-8299267824940876899?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/8299267824940876899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=8299267824940876899&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8299267824940876899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8299267824940876899'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/08/memory-leak-in-c-program.html' title='Memory Leak in C Program'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-8346371896503055004</id><published>2007-08-28T10:45:00.000+05:30</published><updated>2007-08-28T10:46:32.975+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB 3.0'/><title type='text'>Introduction to EJB 3.0</title><content type='html'>Introduction to Enterprise JavaBeans 3.0&lt;br /&gt;by Lynn Munsinger&lt;br /&gt;&lt;br /&gt;==============================================================&lt;br /&gt;&lt;br /&gt;The EJB 3.0 specification makes it easier than ever to develop Enterprise JavaBeans, perhaps encouraging you to consider developing EJBs for the first time. If that is the case, congratulations, you have successfully avoided the many pitfalls of EJB developers before you, and can enjoy the ease of EJB 3.0 development. But before you start development, you might want to know what Enterprise JavaBeans are and what purpose they serve. This article explains the basics of EJBs and how you can utilize them in a J2EE application.&lt;br /&gt;What is an EJB?&lt;br /&gt;&lt;br /&gt;An Enterprise JavaBean (EJB) is a reusable, portable J2EE component. EJBs consist of methods that encapsulate business logic. For example, an EJB may have business logic that contains a method to update customer data in a database. A variety of remote and local clients can invoke this method. Additionally, EJBs run inside a container, allowing the developer to focus on the business logic contained in the bean without having to worry about complicated and error-prone issues such as transaction support, security, and remote object access. EJBs are developed as POJOs, or Plain Old Java Objects, and developers can use metadata annotations to specify to the container how these beans are to be managed.&lt;br /&gt;Types of EJBs&lt;br /&gt;&lt;br /&gt;EJBs consist of three main types: Session, Entity, and Message-Driven. A Session bean performs a distinct, de-coupled task, such as checking credit history for a customer. An Entity bean is a complex business entity which represents a business object that exists in the database. A Message-Driven bean is used to receive asynchronous JMS messages. Let's examine these types further:&lt;br /&gt;Session Beans&lt;br /&gt;&lt;br /&gt;Session beans generally represent actions in the business process such as "process order." Session beans are classified based on the maintenance of the conversation state, either stateful or stateless.&lt;br /&gt;&lt;br /&gt;Stateless session beans do not have an internal state. They do not keep track of the information that is passed from one method call to another. Thus, each invocation of a stateless business method is independent of its previous invocation; for example, calculating taxes or shipping charges. When a method to calculate tax charges is invoked with a certain taxable value, the tax value is calculated and returned to the calling method, without the necessity to store the caller's internal state for future invocation. Because they do not maintain state, these beans are simple to manage for the container. When the client requests a stateless bean instance, it may receive an instance from the pool of stateless session bean instances that are maintained by the container. Also, because stateless session beans can be shared, the container can maintain a lesser number of instances to serve a large number of clients. To specify that a Java Bean is to be deployed and managed as a stateless session bean, simply add the annotation @Stateless to the bean.&lt;br /&gt;&lt;br /&gt;A stateful session bean maintains a conversational state across method invocations; for example, an online shopping cart of a customer. When the customer starts online shopping, the customer's details are retrieved from the database. The same details are available for the other methods that are invoked when the customer adds or removes items from the cart, places the order, and so on. Yet, stateful session beans are transient because the state does not survive session termination, system crash, or network failure. When a client requests a stateful session bean instance, that client is assigned one stateful instance, and the state of the bean is maintained for that client. To specify to the container that a stateful session bean instance should be removed upon the completion of a certain method, add the annotation @Remove to the method.&lt;br /&gt;Session Bean Example&lt;br /&gt;&lt;br /&gt;    import javax.ejb.Stateless.*;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;    * A simple stateless session bean implementing the incrementValue() method of the * CalculateEJB interface.&lt;br /&gt;    */&lt;br /&gt;&lt;br /&gt;    @Stateless(name="CalculateEJB")&lt;br /&gt;    public class CalculateEJBBean&lt;br /&gt;    implements CalculateEJB&lt;br /&gt;    {&lt;br /&gt;    int value = 0;&lt;br /&gt;    public String incrementValue()&lt;br /&gt;    {&lt;br /&gt;    value++;&lt;br /&gt;    return "value incremented by 1";&lt;br /&gt;    }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Entity Beans&lt;br /&gt;&lt;br /&gt;An entity bean is an object that manages persistent data, potentially uses several dependent Java objects, and can be uniquely identified by a primary key. Specify that a class is an entity bean by including the @Entity annotation. Entity beans represent persistent data from the database, such as a row in a customer table, or an employee record in an employee table. Entity beans are also sharable across multiple clients. For example, an employee entity bean can be used by various clients to calculate the annual salary of an employee or to update the employee address. Specific fields of the entity bean object can be made persistent. All fields in the entity bean not marked with the @Transient annotation are considered persistent. A key feature of EJB 3.0 is the ability to create Entity beans which contain object/relational mappings using metadata annotations. For example, to specify that an Entity bean's empId field is mapped to the EMPNO attribute of the Employees table, annotate the table name using @Table(name="Employees") and the field using @Column(name="EMPNO"), as shown in the example below. Additionally, a special feature of EJB 3.0 is that you can easily test Entity beans during development, as running Entity beans outside a container is now possible using the Oracle Application Server Entity Test Harness.&lt;br /&gt;Entity Bean Example&lt;br /&gt;&lt;br /&gt;    import javax.persistence.*;&lt;br /&gt;    import java.util.ArrayList;&lt;br /&gt;    import java.util.Collection;&lt;br /&gt;&lt;br /&gt;    @Entity&lt;br /&gt;    @Table(name = "EMPLOYEES")&lt;br /&gt;    public class Employee implements java.io.Serializable&lt;br /&gt;    {&lt;br /&gt;    private int empId;&lt;br /&gt;    private String eName;&lt;br /&gt;    private double sal;&lt;br /&gt;&lt;br /&gt;    @Id&lt;br /&gt;    @Column(name="EMPNO", primaryKey=true)&lt;br /&gt;    public int getEmpId()&lt;br /&gt;    {&lt;br /&gt;    return empId;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setEmpId(int empId)&lt;br /&gt;    {&lt;br /&gt;    this.empId = empId;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getEname()&lt;br /&gt;    {&lt;br /&gt;    return eName;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setEname(String eName)&lt;br /&gt;    {&lt;br /&gt;    this.eName = eName;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public double getSal()&lt;br /&gt;    {&lt;br /&gt;    return sal;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setSal(double sal)&lt;br /&gt;    {&lt;br /&gt;    this.sal = sal;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String toString()&lt;br /&gt;    {&lt;br /&gt;    StringBuffer buf = new StringBuffer();&lt;br /&gt;    buf.append("Class:")&lt;br /&gt;    .append(this.getClass().getName()).append(" :: ").append(" empId:").append(getEmpId()).append(" ename:").append(getEname()).append("sal:").append(getSal());&lt;br /&gt;    return buf.toString();&lt;br /&gt;    }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Message-Driven Beans&lt;br /&gt;&lt;br /&gt;Message-driven beans (MDBs) provide an easier method to implement asynchronous communication than by using straight Java Message Services (JMS). MDBs were created to receive asynchronous JMS messages. The container handles most of the setup processes that are required for JMS queues and topics. It sends all the messages to the interested MDB. An MDB allows J2EE applications to send asynchronous messages that can then be processed by the application. To specify that a bean is an MDB, implement the javax.jms.MessageListener interface and annotate the bean with @MessageDriven.&lt;br /&gt;Message Driven Bean Example&lt;br /&gt;&lt;br /&gt;    import javax.ejb.MessageDriven;&lt;br /&gt;    import javax.ejb.ActivationConfigProperty;&lt;br /&gt;    import javax.ejb.Inject;&lt;br /&gt;    import javax.jms.*;&lt;br /&gt;    import java.util.*;&lt;br /&gt;    import javax.ejb.TimedObject;&lt;br /&gt;    import javax.ejb.Timer;&lt;br /&gt;    import javax.ejb.TimerService;&lt;br /&gt;    @MessageDriven(&lt;br /&gt;    activationConfig = {&lt;br /&gt;    @ActivationConfigProperty(propertyName="connectionFactoryJndiName", propertyValue="jms/TopicConnectionFactory"),&lt;br /&gt;    @ActivationConfigProperty(propertyName="destinationName", propertyValue="jms/myTopic"),&lt;br /&gt;    @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Topic"),&lt;br /&gt;    @ActivationConfigProperty(propertyName="messageSelector", propertyValue="RECIPIENT = 'MDB'")&lt;br /&gt;    }&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;    * A simple Message-Driven Bean that listens to the configured JMS Queue or Topic and gets notified via an * invocation of it's onMessage() method when a message has been posted to the Queue or Topic. The bean&lt;br /&gt;    * prints the contents of the message.&lt;br /&gt;    */&lt;br /&gt;&lt;br /&gt;    public class MessageLogger implements MessageListener, TimedObject&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;    @Inject javax.ejb.MessageDrivenContext mc;&lt;br /&gt;&lt;br /&gt;    public void onMessage(Message message)&lt;br /&gt;    {&lt;br /&gt;    System.out.println("onMessage() - " + message);&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;    String subject = message.getStringProperty("subject");&lt;br /&gt;    String inmessage = message.getStringProperty("message");&lt;br /&gt;    System.out.println("Message received\n\tDate: " + new java.util.Date() + "\n\tSubject: " + subject + "\n\tMessage: " + inmessage + "\n");&lt;br /&gt;    System.out.println("Creating Timer a single event timer");&lt;br /&gt;    TimerService ts = mc.getTimerService();&lt;br /&gt;    Timer timer = ts.createTimer(30000, subject);&lt;br /&gt;    System.out.println("Timer created by MDB at: " + new Date(System.currentTimeMillis()) +" with info: "+subject);&lt;br /&gt;    }&lt;br /&gt;    catch (Throwable ex)&lt;br /&gt;    {&lt;br /&gt;    ex.printStackTrace();&lt;br /&gt;    }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void ejbTimeout(Timer timer)&lt;br /&gt;    {&lt;br /&gt;    System.out.println("EJB 3.0: Timer with MDB");&lt;br /&gt;    System.out.println("ejbTimeout() called at: " + new Date(System.currentTimeMillis()));&lt;br /&gt;    return;&lt;br /&gt;    }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;Utilizing EJBs&lt;br /&gt;&lt;br /&gt;An EJB client is the application that accesses the bean. It does not necessarily reside on the client tier, but can be a stand-alone application, JSP, servlet, or another EJB. The client accesses the methods of an EJB through the remote or local interfaces of the bean, depending on whether the client resides in the same or a different JVM than the bean. These interfaces define the methods of the bean, while the bean class actually implements the methods. When a client accesses a method of the bean class, the container generates a proxy for the bean, called the remote or local object. The remote or local object receives the request, delegates it to the corresponding bean instance, and returns the results to the client. To invoke a bean's methods, a client finds the bean by using its name defined in the EJB deployment descriptor. In the following example, the client finds the bean named "Statelessejb" using the Context object.&lt;br /&gt;EJB Client Example&lt;br /&gt;&lt;br /&gt;    import javax.naming.Context;&lt;br /&gt;    import javax.naming.InitialContext;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;    * A simple bean client which calls methods on a stateless session bean.&lt;br /&gt;    */&lt;br /&gt;&lt;br /&gt;    public class CalculateejbClient&lt;br /&gt;    {&lt;br /&gt;    public static void main(String [] args)&lt;br /&gt;    {&lt;br /&gt;    Context context = new InitialContext();&lt;br /&gt;    CalculateEJB myejb =&lt;br /&gt;    (CalculateEJB)context.lookup("java:comp/env/ejb/CalculateEJB");&lt;br /&gt;    myejb.incrementValue();&lt;br /&gt;    }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;Summary&lt;br /&gt;&lt;br /&gt;Developing Enterprise JavaBeans is significantly easier with the EJB 3.0 specification. The specification uses metadata annotations to define the type of bean and the methods exposed to the client. Thus, whether you are creating a session bean for executing a specific task or mapping a table to an entity bean for updating data, you can do so using plain Java objects and interfaces, and expose methods for clients by using annotations within the business methods. Now that you have an understanding of the basics of EJBs, refer to OTN's EJB 3.0 Resources Page for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-8346371896503055004?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/8346371896503055004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=8346371896503055004&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8346371896503055004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8346371896503055004'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/08/introduction-to-ejb-30.html' title='Introduction to EJB 3.0'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-8353723575757479377</id><published>2007-08-28T10:41:00.000+05:30</published><updated>2007-09-04T14:51:24.620+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JDBC'/><title type='text'>Oracle 9i JDBC Guide</title><content type='html'>Oracle9i JDBC Developer's Guide and Reference&lt;br /&gt;Release 2 (9.2) - to get this click on this link or paste this link on the browser address bar.&lt;br /&gt;&lt;br /&gt;http://download-west.oracle.com/docs/cd/B10501_01/java.920/a96654/toc.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-8353723575757479377?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/8353723575757479377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=8353723575757479377&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8353723575757479377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/8353723575757479377'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/08/oracle-9i-jdbc-guide.html' title='Oracle 9i JDBC Guide'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-2179927746870131228</id><published>2007-08-28T10:29:00.001+05:30</published><updated>2007-09-04T14:53:40.246+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JDBC'/><title type='text'>Connecting the Java World to Grid-Enabled Databases</title><content type='html'>Grid computing is not necessarily a new concept; however, its adoption within the enterprise has given birth to a new concept called enterprise grid computing, which is being embraced by the entire IT industry. Enterprise grid computing aims to consolidate IT resources - including both infrastructure software and applications - and optimize their usage, cutting costs substantially along the way. Since Java and J2EE are widely used as enterprise software platforms, how do they align with this vision?&lt;br /&gt;&lt;br /&gt;This article outlines a set of challenges that JDBC faces as the database connectivity layer within enterprise grid environments and illustrates how the Oracle Database 10g JDBC driver addresses these challenges. First, I'll introduce the concept of enterprise grid computing; then I'll examine how Java and J2EE operate in grid environments and identify their database connectivity requirements; and finally, I'll discuss the features of the Oracle Database 10g JDBC driver that address those requirements.&lt;br /&gt;&lt;br /&gt;Enterprise Grid Computing&lt;br /&gt;Commercial software vendors use an assortment of terms, such as utility computing, on-demand computing, and autonomic computing, to describe enterprise grid computing. Regardless of which term is used, products that support enterprise grid computing all have the same set of common functional denominators:&lt;br /&gt;&lt;br /&gt;   * Resource consolidation&lt;br /&gt;   * Resource virtualization&lt;br /&gt;   * Policy-based resource management&lt;br /&gt;   * Provisioning or allocation&lt;br /&gt;&lt;br /&gt;The chief aim of enterprise grid computing, as noted above, is to help enterprises consolidate IT resources and optimize usage, reducing infrastructure and labor costs. This is a slight but important divergence from the original concept of grid computing now classified as academic grid computing, in which massive arrays of computational power are constructed from a network of many small and widespread computers, and used to perform large calculations and operations broken in autonomous chunks that can't be achieved even on today's largest supercomputers. A good example of this is the SETI@home project.&lt;br /&gt;&lt;br /&gt;The convergence of recent hardware and software advances has made resource virtualization possible and allowed the enterprise grid to be constructed. On the hardware side, these advances include networked storage devices (like storage grids) and low-cost, modular hardware components (such as blades); on the software side, they include improvements in networking, Web services, databases, application servers, and management frameworks.&lt;br /&gt;&lt;br /&gt;Although no specific enterprise grid computing standards have been established, there is a general move toward the concept of service-oriented architectures (SOA), which are based on and make extensive use of existing Web services standards and specifications. SOA makes it possible to construct architectures where client applications can simply register, discover, and use the services deployed over the grid. This move is spearheaded by academic and research proposals such as the Open Grid Service Architecture (Global Grid Forum) and middleware vendors through participation in Web services standards bodies. A new consortium, Enterprise Grid Alliance, has been formed with the goals of developing enterprise grid solutions and accelerating the deployment of grid computing in enterprises.&lt;br /&gt;&lt;br /&gt;Figure 1 illustrates a typical enterprise grid platform. While a complete enterprise grid computing discussion is beyond the scope of this article, I hope I've given enough information to encourage you to learn more about it.&lt;br /&gt;&lt;br /&gt;Java and J2EE Containers in the Enterprise Grid&lt;br /&gt;Very few enterprises run their business with just stand-alone Java or J2EE servers. Typical business applications employ more complex architectures consisting of load balancers, HTTP listeners, Web caching servers, J2EE containers, directory servers, resource managers and monitors, and management services.&lt;br /&gt;&lt;br /&gt;In recognition of this, vendors, such as Oracle with its Oracle Application Server 10g, are actively supplementing their infrastructure with provisioning, monitoring, registering, discovering, and manageability mechanisms. This allows them to be used in the more complex system architectures required by modern SOA-based business applications.&lt;br /&gt;&lt;br /&gt;Similarly, the J2EE world, realizing that it needs to broaden its support to interoperate with other applications and environments in a loosely coupled manner, is aligning with enterprise grid computing and SOA concepts. It's doing this by including core Web services standards (such as SOAP, WSDL, UDDI, and JAX-RPC) and numerous other Web services specifications including WS-I, WSIF, security, transaction, reliable messaging, events, peer-discovery, policy, orchestration, choreography, provisioning, and service-level agreement.&lt;br /&gt;&lt;br /&gt;In the scientific and research worlds, the Globus Toolkit, from the Globus Alliance, is a reference implementation of the Open Grid Services Infrastructure (OGSI). OGSI lets Java components be exposed as OGSI services. OGSA-DAIS (Data Access and Integration) is another scientific and research proposal aimed at addressing data services requirements in grid environments; leading database vendors are participating in this initiative.&lt;br /&gt;&lt;br /&gt;Enterprise grid computing creates an extremely dynamic environment where resources are automatically augmented or diminished based on business priorities captured in allocation policies. The current version of the JDBC specification (and implementations based on it) makes working in such environments impractical and reduces the ability of Java and J2EE applications to achieve all the benefits of enterprise grid computing. To be more explicit, let's look at some of the issues faced when working in an enterprise grid computing environment:&lt;br /&gt;&lt;br /&gt;   * Most JDBC applications today use connect strings that explicitly specify the hostname or IP address of the target database. This won't work when processing nodes are dynamically added to or retrenched from the cluster of database servers.&lt;br /&gt;   * Enterprise grid environments must scale well and serve thousands of concurrent clients. This makes efficient load-balancing and database connection pooling mandatory; traditional connection pooling mechanisms that cache only connections with the same identity are useless.&lt;br /&gt;   * With databases and other resources being dynamically managed and allocated for service, connection retention and management is critical. Mechanisms to resize or refresh stale connections or to search for and reclaim abandoned ones are required.&lt;br /&gt;   * Database clients, whether they're Java programs or J2EE containers, must be notified about changes in the database server configuration as quickly as possible. Application servers (and J2EE containers) that rely on unpredictable timeout mechanisms will not be able to provide a reliable, guaranteed service.&lt;br /&gt;&lt;br /&gt;Java Database Connectivity Within the Enterprise Grid&lt;br /&gt;Virtualizing the Database as a Service&lt;br /&gt;As shown in Figure 1, clusters are pervasive at every level within the enterprise grid: disk and network storage servers, database servers, and application servers. Most database vendors now allow a single database to be concurrently managed by multiple servers or instances.&lt;br /&gt;&lt;br /&gt;Although database clusters are easily understood, there are fundamental differences between the architectures supported by the various current implementations; for example, a shared nothing approach and a shared disk approach provide different levels of capabilities. This article focuses on the Oracle Database Real Application Cluster (RAC) model in which any database server instance can address the entire database space, hosted on shared networked storage.&lt;br /&gt;&lt;br /&gt;The typical JDBC approach to specifying how to connect to a database is to provide the details for the target database in the form of a tuple containing &lt;host&gt;:&lt;port&gt;:&lt;sid&gt;. This is set as the URL attribute of a data source definition or directly in the connect string when establishing the JDBC connection.&lt;br /&gt;&lt;br /&gt;String connString="jdbc:oracle:thin:@prodHost:1521:ORCL";&lt;br /&gt;&lt;br /&gt;In the Oracle Database RAC model, the physical server hosts and database instances that make up the cluster are represented as a single logical entity known as a service. A client application connects to the logical database service without any real knowledge of the actual host or database server instance that's used in the cluster. By connecting to the service, as illustrated by the Enterprise Grid Model in Figure 2, and not to an actual physical server, clients can be insulated from changes made to the physical elements of the cluster as well as from node failures.&lt;br /&gt;&lt;br /&gt;To use a logical database entity in Java applications, JDBC connection strings must be able to accept service-based connect strings instead of physical host details. In the Oracle Database RAC model, services are represented as "/&lt;service-name&gt;".&lt;br /&gt;&lt;br /&gt;String connString="jdbc:oracle:&lt;br /&gt;thin:@/service_name";&lt;br /&gt;&lt;br /&gt;The Connection Cache Manager&lt;br /&gt;In the enterprise grid world, where applications are dynamically provisioned to run on different servers and even on instances of Java Virtual Machines (JVMs), it's imperative that the application's connection caches can be managed to permit the most efficient use of available resources. One approach to this is a new component called the Connection Cache Manager, which offers a centralized way to manage one or more connection caches. A single instance of Connection Cache Manager per JVM manages all of the connection caches used by applications running on that JVM.&lt;br /&gt;&lt;br /&gt;The Connection Cache Manager plays two major roles: it manages cache and binds a connection to the data source.&lt;br /&gt;&lt;br /&gt;Managing and Maintaining Cache&lt;br /&gt;The Connection Cache Manager is responsible for creating the cache, maintaining its state, and terminating it. It's aware of the existence of each connection cache, managed independently. A rich set of APIs is provided to perform the Connection Cache Manager tasks.&lt;br /&gt;&lt;br /&gt;The Connection Cache Manager supports the coexistence of more than one cache. Each cache is identified by a unique name and is then tightly bound to a data source. Each cache is either created transparently when getConnection() requests are made on a cache-enabled data source, or is created explicitly in the middle tier via the Connection Cache Manager API. Once a cache is created, it may either be explicitly removed via the Connection Cache Manager, or when the data source is closed.&lt;br /&gt;&lt;br /&gt;Caches can be monitored using the Cache Manager APIs, enabling access to information such as the number of connections checked out and the number of connections available in the cache.&lt;br /&gt;&lt;br /&gt;Binding a Connection Cache to the Data Source&lt;br /&gt;As illustrated in Figure 3, the Connection Cache Manager makes sure a connection cache is associated with its data source object every time a cache is created, removed, or reinitialized. This ensures an efficient way to access the connection cache and retrieve connections from it every time the getConnection() method is invoked on a data source.&lt;br /&gt;&lt;br /&gt;Fast Application Notification (FaN)&lt;br /&gt;As I alluded to earlier, the dynamic nature of an enterprise grid environment results in nondeterministic system changes that may have flow-on effects on applications that are executing.&lt;br /&gt;&lt;br /&gt;To allow application clients in an enterprise grid environment to function in the most efficient manner, a mechanism must be provided that performs the following tasks:&lt;br /&gt;&lt;br /&gt;   * Monitor changes in database configuration and notify clients as fast as possible.&lt;br /&gt;   * Balance connection requests across all active instances.&lt;br /&gt;   * Fail-over established connections to surviving instances&lt;br /&gt;&lt;br /&gt;Oracle Database 10g JDBC offers these capabilities by combining the Connection Cache Manager, Oracle Database RAC, and notification events through a notification service to quickly inform affected components of changes occurring in the grid.&lt;br /&gt;&lt;br /&gt;Let's look at how these pieces work together. When a new instance is added to a database cluster, or when an instance is retrenched from a cluster (instance stopped or node dies), Oracle Database RAC generates an event that indicates what happened. The Oracle Notification Service (ONS) detects and distributes this event to components that have registered as interested in such events.&lt;br /&gt;&lt;br /&gt;In Oracle Database 10g JDBC, Fast Application Notification is important: the connection caches are alerted when database instances are affected and can take preventive courses of action.&lt;br /&gt;&lt;br /&gt;The mechanism is enabled on a cache-enabled data source by setting the data source property FastConnectionFailoverEnabled to true (see Listing 1).&lt;br /&gt;&lt;br /&gt;With Fast Application Notification, event detection and notification is nearly instantaneous, occurring in seconds rather than minutes with traditional timeout mechanisms.&lt;br /&gt;&lt;br /&gt;Adding Database Instances: Load Balancing&lt;br /&gt;Adding new database instances to an Oracle Database RAC cluster generates UP events. These automatically trigger the balancing of all allocated connections over all active RAC instances without waiting for application connection retries/requests.&lt;br /&gt;&lt;br /&gt;Let's consider a basic example in which we have:&lt;br /&gt;&lt;br /&gt;   * A cluster with two nodes in a database service, one instance per node&lt;br /&gt;   * A cache size of 150 total connections, resulting in 75 connections per instance&lt;br /&gt;&lt;br /&gt;Adding a new node to the service will trigger an UP event, which is detected and propagated via the FaN service. This will cause the connection cache to automatically rebalance the existing 150 connections in use in the cache over the three instances, resulting in 50 connections being established per database instance. This process involves removing some connections (to existing instances) and creating new ones (to the new instance).&lt;br /&gt;&lt;br /&gt;Retrenching Database Instances (or Node Failure): High-Availability&lt;br /&gt;Retrenching database instances from an Oracle Database RAC cluster generates DOWN events, which automatically trigger a detect-and-fix mechanism in the connection caches. This mechanism quickly removes connections belonging to the failed instance, preventing invalid connections from being handed out on connection request.&lt;br /&gt;&lt;br /&gt;Continuing with the previous example:&lt;br /&gt;&lt;br /&gt;   * We now have a three-node database service with 50 connections per instance in the caches, for a total of 150 connections.&lt;br /&gt;&lt;br /&gt;If a node in the database service fails or is removed by the resource provisioning system, then a DOWN event is created and propagated via the FaN service. The 50 connections belonging to the failed instance/node will be quickly removed from the cache, ensuring that the cache is clean and consistent. A clean cache guarantees that connection requests will be routed only to surviving instances. Clients with a stale connection must retry connection requests, unless a container intersperses such calls and is able to take corrective action.&lt;br /&gt;&lt;br /&gt;The Fast Connection Fail-over mechanism transparently ensures reliable, highly available Java database connections in RAC and grid environments.&lt;br /&gt;&lt;br /&gt;In-Flight Transactions&lt;br /&gt;If an application is midtransaction when an instance fails, it will be thrown an appropriate SQL exception and the transaction will be rolled back. It's the responsibility of the application or the container to retry the connection request and reestablish session state.&lt;br /&gt;&lt;br /&gt;Simplifying JDBC Connection Caching&lt;br /&gt;As summarized in Table 1, the new Oracle Database10g JDBC Implicit Connection Cache has been designed to overcome existing JDBC Connection Caching limitations as listed in Table 1, by providing:&lt;br /&gt;&lt;br /&gt;   * Transparent access to the cache&lt;br /&gt;   * Support for multiple identities&lt;br /&gt;   * The ability to retrieve connections based on user-defined attributes and weights&lt;br /&gt;   * The ability to refresh or recycle stale connections from the cache&lt;br /&gt;&lt;br /&gt;To take advantage of these capabilities, simply customize your environment by explicitly setting properties on the connection cache properties or connection.&lt;br /&gt;&lt;br /&gt;Transparent Access to the Cache&lt;br /&gt;By default, the getConnection() method in the standard OracleData-Source API creates a new database session and a physical database connection, thus incurring performance and scalability penalties. With Implicit Connection Caching, once the DataSource property ConnectionCachingEnabled has been set to true, the getConnection() method will service all connection requests from the connection cache.&lt;br /&gt;&lt;br /&gt;ods.setConnectionCachingEnabled(True);&lt;br /&gt;ods.setConnectionCacheName("MyCache"); // optional&lt;br /&gt;ods.setConnectionCacheProperties(cp); // optional&lt;br /&gt;ctx.bind("MyDS", ods);&lt;br /&gt;ods =(OracleDataSource)&lt;br /&gt;// lookup DataSource&lt;br /&gt;ctx.lookup("MyDS");&lt;br /&gt;&lt;br /&gt;A JDBC 10g Connection cache can be created either implicitly by the first invocation of the getConnection() method or explicitly by using the Connection Cache Manager API. The Connection Cache Manager is especially useful for developers working with J2EE containers and ERP frameworks since it shields the infrastructure from the complexity of managing connection cache.&lt;br /&gt;&lt;br /&gt;// This call would create a "MyCache" cache and a&lt;br /&gt;// connection from "MyDS"data source will be created and returned&lt;br /&gt;conn = ods.getConnection();&lt;br /&gt;&lt;br /&gt;// This call would create a "MyCache" cache and a&lt;br /&gt;// connection to "MyDS", authenticated by "Scott" will be created&lt;br /&gt;conn = ods.getConnection("SCOTT","TIGER");&lt;br /&gt;&lt;br /&gt;Subsequent getConnection() invocations will either create a new connection (if the cache was not previously initialized) or retrieve an existing connection from the cache. Once the connection is retrieved, you can proceed with statement creation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; // Create a Statement&lt;br /&gt; Statement stmt = conn.createStatement ();&lt;br /&gt; ...&lt;br /&gt;&lt;br /&gt; // Close the Statement&lt;br /&gt; stmt.close();&lt;br /&gt; stmt = null;&lt;br /&gt;&lt;br /&gt;The cache can be populated in one of two ways: by preinitializing it using the Cache Manager APIs or, incrementally, upon the release of connection(s) back to the cache. When returning a connection to the cache, applications can save current connection attributes settings for future use (see attribute-based retrieval, below).&lt;br /&gt;&lt;br /&gt;// return this connection to the cache&lt;br /&gt;conn.close();&lt;br /&gt;conn = null;&lt;br /&gt;&lt;br /&gt;Caching Multiple Identities&lt;br /&gt;While a database does not impose any specific restrictions on the connection authentication, a traditional cache might impose a limitation on the connections it can manage, requiring that they all use the same username/password combination, for example.&lt;br /&gt;&lt;br /&gt;The Implicit Connection Cache can handle any combination of user-authenticated connections. For example, a joe.johnson connection can coexist very well with a sue.miller connection in the same connection cache.&lt;br /&gt;&lt;br /&gt;Connection Retrieval Based on User-Defined Attributes&lt;br /&gt;One of the valuable new features in the Implicit Connection Cache is connection striping.&lt;br /&gt;&lt;br /&gt;Connection striping, or labeling, consists of applying user-defined attributes to a connection and making their state persist when the connection is returned to the cache. This speeds up future connection retrieval since cached connections don't have to reinitialize a block of state every time. These attributes can later be used to retrieve the same connection from the cache, as follows.&lt;br /&gt;&lt;br /&gt;Example 1: Retrieving a connection based on the NLS_LANG attribute:&lt;br /&gt;&lt;br /&gt;// get a connection from the cache with NLS_LANG attribute&lt;br /&gt;java.util.Properties connAttr = null;&lt;br /&gt;connAttr.setProperty("NLS_LANG", "ISO-LATIN-1");&lt;br /&gt;conn = ds.getConnection(connAttr);&lt;br /&gt;&lt;br /&gt;Example 2: Retrieving a connection based on the isolation-level attribute:&lt;br /&gt;&lt;br /&gt;java.util.Properties connAttr = null;&lt;br /&gt;connAttr.setProperty("TRANSACTION_ISOLATION", "SERIALIZABLE");&lt;br /&gt;&lt;br /&gt;// retrieve a connection that matches Transaction Isolation&lt;br /&gt;conn = ds.getConnection(connAttr);&lt;br /&gt;...&lt;br /&gt;// this call will preserve attr settings for this connection&lt;br /&gt;conn.close(connAttr);&lt;br /&gt;&lt;br /&gt;Example 3: Retrieving a connection based on the connection tag and connection attribute:&lt;br /&gt;&lt;br /&gt;java.util.Properties connAttr = null;&lt;br /&gt;connAttr.setProperty("CONNECTION_TAG", "JOE'S_CONNECTION");&lt;br /&gt;// retrieve connection that matches Joe's connection&lt;br /&gt;conn = ds.getConnection(connAttr);&lt;br /&gt;&lt;br /&gt;// apply attributes to the connection&lt;br /&gt;conn.close(connAttr);&lt;br /&gt;&lt;br /&gt;// This will retrieve Joe's connection&lt;br /&gt;conn = ds.getConnection(connAttr);&lt;br /&gt;&lt;br /&gt;Applying Connection Attributes to a Cached Connection&lt;br /&gt;A connection attribute can be applied to a connection in the cache in two ways.&lt;br /&gt;&lt;br /&gt;One approach is to call the applyCon-nectionAttributes(java.util.properties connAttr) API on the connection object. This simply sets the supplied attributes on the connection object. It's possible to apply attributes incrementally using this API, letting users apply connection attributes over multiple calls. For example, NLS_LANG may be applied by calling this API from module A. The next call from module B can then apply the TXN_ISOLATION attribute, and so on.&lt;br /&gt;&lt;br /&gt;A second approach is to call the close(java.util.properties connAttr) API on the connection object. This API closes the logical connection and then applies the supplied connection attributes on the underlying PooledConnection (physical connection). The attributes set via this close() API override any attributes set using the applyConnectionAttri-butes() API.&lt;br /&gt;&lt;br /&gt;The following example shows a call to the close(connectionAttributes) API on the connection object that lets the cache apply the matched connectionAttributes back on the pooled connection before returning it to the cache. This ensures that when a subsequent connection request with the same connection attributes is made, the cache will find a match.&lt;br /&gt;&lt;br /&gt;// Sample connection request and close&lt;br /&gt;java.util.properties connAttr = null;&lt;br /&gt;connAttr.setProperty("NLSLANG", "ISO-LATIN-1");&lt;br /&gt;// request connection based on attributes&lt;br /&gt;conn = ds.getConnection(connAttr);&lt;br /&gt;&lt;br /&gt;// apply attributes to connection&lt;br /&gt;conn.close(connAttr);&lt;br /&gt;&lt;br /&gt;Connection Retrieval Based on Attributes and Weights&lt;br /&gt;Connections may be selectively retrieved from the connection cache based on a combination of ConnectionAttributes and attribute weights.&lt;br /&gt;&lt;br /&gt;Weights are assigned to each key in a ConnectionAttribute in a one-time operation that also changes cache properties. The cache property CacheAttributeWeights is one of the java.util.Properties that allows the setting of attribute weights. Each weight is an integer value that defines how expensive the key is in terms of resources.&lt;br /&gt;&lt;br /&gt;Once the weights are specified on the cache, connection requests are made on the data source by calling getConnection(connectionAttributes). The connectionAttributes argument refers to keys and their associated values.&lt;br /&gt;&lt;br /&gt;The connection retrieval from the cache involves searching for a connection that satisfies a combination of the following:&lt;br /&gt;&lt;br /&gt;   * A key/value match on a connection from the cache&lt;br /&gt;   * The maximum total weight of all the keys of the connection-Attributes that were matched on the connection&lt;br /&gt;&lt;br /&gt;Consider the following example in which a cache is configured with CacheAttributeWeights (see Listing 2). (Listings 2-3 can be downloaded from www.sys-con.com/java/sourcec.cfm.)&lt;br /&gt;&lt;br /&gt;Once the weights are set, a connection request could be made as in Listing 3.&lt;br /&gt;&lt;br /&gt;The getConnection() request tries to retrieve a connection from the MyCache cache. In connection matching and cache retrieval, one of two things can happen:&lt;br /&gt;&lt;br /&gt;   * An exact match is found. As in the above example, an exact match is a connection that satisfies the same attribute values and all the keys defined by Keys (NLS_LANG, SecurityGroup, and Application).&lt;br /&gt;   * An exact match is not found. In this case, the closest match based on the attribute key/value and its associated weights is used (but only if the ClosestConnectionMatch property is set).&lt;br /&gt;&lt;br /&gt;Once the connection is returned, the user can invoke the getUnMatchedConnectionAttributes() API on the connection object to return a set of attributes (java.util.Properties) that did not match the criteria. The unmatched attribute list can then be used by the caller (or application) to reinitialize these values before using the connection.&lt;br /&gt;&lt;br /&gt;Conclusion&lt;br /&gt;This article highlighted a new set of Java data access requirements that have emerged when executing in an enterprise grid environment while also outlining how Oracle Database 10g JDBC tackles the challenges that these requirements present.&lt;br /&gt;&lt;br /&gt;Whether you're using JDBC directly in applications via a run-time container such as an EJB container or through an O/R mapping framework such as Toplink, the latest Oracle JDBC drivers offer reliable and highly available data sources in RAC and grid environments and significantly simplify a range of data source connectivity issues for Java developers.&lt;br /&gt;&lt;br /&gt;Oracle has proposed these new features to the JSR 221 (JDBC 4.0 specification) expert group. It hopes to see JDBC Connection Pool management and high-availability support for data sources within enterprise grid environments become part of the JDBC 4.0 standard.&lt;/service-name&gt;&lt;/sid&gt;&lt;/port&gt;&lt;/host&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-2179927746870131228?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://uniqueunited.blogspot.com/feeds/2179927746870131228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1123201753695266522&amp;postID=2179927746870131228&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/2179927746870131228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/2179927746870131228'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/08/connecting-java-world-to-grid-enabled.html' title='Connecting the Java World to Grid-Enabled Databases'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1123201753695266522.post-5015694735263182866</id><published>2007-08-28T08:43:00.000+05:30</published><updated>2007-09-04T14:51:42.609+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JDBC'/><title type='text'>Connecting to a Database with JDBC</title><content type='html'>// JDBC|Test – complete code&lt;br /&gt;public class JDBCTest {&lt;br /&gt;&lt;br /&gt;  public static void main(String args[]){&lt;br /&gt;&lt;br /&gt;     RunDB runDB = new RunDB();&lt;br /&gt;&lt;br /&gt;     try{&lt;br /&gt;        runDB.loadDriver();&lt;br /&gt;        runDB.makeConnection();&lt;br /&gt;        runDB.buildStatement();&lt;br /&gt;        runDB.executeQuery();&lt;br /&gt;     }catch(Exception e){&lt;br /&gt;        e.printStackTrace();&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//RunDB&lt;br /&gt;import java.sql.*;&lt;br /&gt;&lt;br /&gt;public class RunDB {&lt;br /&gt;&lt;br /&gt;  Connection connection;&lt;br /&gt;  Statement statement;&lt;br /&gt;&lt;br /&gt;  public void loadDriver() throws ClassNotFoundException{&lt;br /&gt;     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void makeConnection() throws SQLException {&lt;br /&gt;     connection=&lt;br /&gt;        DriverManager.getConnection("jdbc:odbc:purchaseOrder")&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void buildStatement() throws SQLException {&lt;br /&gt;     statement = connection.createStatement();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void executeQuery() throws SQLException {&lt;br /&gt;&lt;br /&gt;     boolean foundResults =&lt;br /&gt;        statement.execute("SELECT * FROM Transaction");&lt;br /&gt;     if(foundResults){&lt;br /&gt;        ResultSet set = statement.getResultSet();&lt;br /&gt;        if(set!=null) displayResults(set);&lt;br /&gt;     }else {&lt;br /&gt;        connection.close();&lt;br /&gt;     }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  void displayResults(ResultSet rs) throws SQLException {&lt;br /&gt;     ResultSetMetaData metaData = rs.getMetaData();&lt;br /&gt;     int columns=metaData.getColumnCount();&lt;br /&gt;     String text="";&lt;br /&gt;&lt;br /&gt;     while(rs.next()){&lt;br /&gt;        for(int i=1;i&lt;=columns;++i) {             text+="&lt;"+metaData.getColumnName(i)+"&gt;";&lt;br /&gt;           text+=rs.getString(i);&lt;br /&gt;            text+="&lt;!--"+metaData.getColumnName(i)+"--&gt;";&lt;br /&gt;            text+="n";&lt;br /&gt;        }&lt;br /&gt;        text+="n";&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     System.out.println(text);&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1123201753695266522-5015694735263182866?l=uniqueunited.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5015694735263182866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1123201753695266522/posts/default/5015694735263182866'/><link rel='alternate' type='text/html' href='http://uniqueunited.blogspot.com/2007/08/connecting-to-database-with-jdbc.html' title='Connecting to a Database with JDBC'/><author><name>Roy Antony Arnold</name><uri>http://www.blogger.com/profile/04720119054376760588</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_OJWfB6V1sfg/SMO5VyigSAI/AAAAAAAAAMk/fBspnpZdnfM/S220/My+Photo.jpg'/></author></entry></feed>
