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

<channel>
	<title>Software Creation Mystery &#187; AI</title>
	<atom:link href="http://softwarecreation.org/category/ai/feed/" rel="self" type="application/rss+xml" />
	<link>http://softwarecreation.org</link>
	<description>What are the forces behind software development?</description>
	<lastBuildDate>Wed, 07 Jul 2010 04:34:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Can Computers Beat Human Programmers? Part 5. Future of human programmers</title>
		<link>http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/</link>
		<comments>http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/#comments</comments>
		<pubDate>Thu, 29 Nov 2007 06:11:33 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Skills]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/</guid>
		<description><![CDATA[SharePart 1. Gaining processing power
Part 2. Becoming intelligent
Part 3. Interacting with humans
 Part 4. Building useful programs
 Part 5. Future of human programmers
Computers don&#8217;t retire, overreact and complain. They could in minutes get all the knowledge accumulated by other computers. They could work 24 hours without making stupid mistakes. They make more and more human [...]]]></description>
			<content:encoded><![CDATA[<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://api.tweetmeme.com/button.js?url=http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/&source=AndriySolovey&service=&service_api=&style=compact' height='20' width='90' frameborder='0' scrolling='no'></iframe></div><div class='dd_button'><a name='fb_share' type='button_count' share_url='http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/' href='http://www.facebook.com/sharer.php'>Share</a><script src='http://static.ak.fbcdn.net/connect.php/js/FB.Share' type='text/javascript'></script></div><div class='dd_button'><script src='http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/'></script></div><div class='dd_button'><a title='Post on Google Buzz' class='google-buzz-button' href='http://www.google.com/buzz/post' data-button-style='small-count' data-url='http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/'></a><script type='text/javascript' src='http://www.google.com/buzz/api/button.js'></script></div><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/&amp;title=+Can+Computers+Beat+Human+Programmers%3F+Part+5.+Future+of+human+programmers&amp;t=2' height='18' width='120' frameborder='0' scrolling='no'></iframe></div></div></div><div style='clear:both'></div><p><a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/" title="Part 1. Gaining processing power" id="squr">Part 1. Gaining processing power</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/" title="Part 2. Becoming intelligent" id="prn5">Part 2. Becoming intelligent</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/" title="Part 3. Interacting with humans" id="n455">Part 3. Interacting with humans</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/"> Part 4. Building useful programs</a><br />
<strong> Part 5. Future of human programmers</strong></p>
<p>Computers don&#8217;t retire, overreact and complain. They could in minutes get all the knowledge accumulated by other computers. They could work 24 hours without making stupid mistakes. They make more and more human jobs obsolete. It is inevitable, computers will replace programmers in many areas. Even more, if <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/" title="Strong AI" id="st.s">Strong AI</a>, capable of reasoning and understanding meaning, will appear, programming as a profession will be almost eliminated (at least coding part). Customers will be able to describe their needs directly to a computer. Computer AI will be translating these specifications to machine code (and stronger AI will require less formal specifications) and relentlessly building the software system.</p>
<p>Does it mean that that at the some point in the future software developers will no longer be needed? It could be true, if customers could specify exactly what they need and can effectively collaborate with AI to build the system. But things are not so simple, especially with non-trivial problems and humans (assuming that customers and users will be still humans). There are three roles that software specialists could play in the future even with powerful computer programming AI.<img src="http://softwarecreation.org/images/2007/programmer-future.jpg" /></p>
<p><span id="more-49"></span></p>
<ol>
<li><strong>Translators</strong><br />
Customers often have <a href="http://softwarecreation.org/2007/software-requirements-are-elusive-6-reasons-why-customers-cannot-get-them-right/" title="difficulties" id="dph-">difficulties</a> describing what they need, lack knowledge of how to interact with computers to get solution right. Not all of them can formulate concepts and ideas suitable for consumption by AI. Software developers could be effective partners in discovering, refining and translating customers needs for computer AI.</li>
<li><strong>Innovators</strong><br />
Many of the best human achievements are the product of intuition, irrationality and ability to go beyond rules and established theories. Coming up with novel, breakthrough and beautiful solutions is one of the most exciting parts of the software development. Indeed, effective and most useful software systems require creativity, innovation and aesthetics. Left brain thinking, purely rational and logical, is not enough for building these solutions, especially for human users. Can computers acquire these abilities, break encoded rules and become better than intuitive and creative human programmers? It is <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/" title="a big question" id="orwx">a big question</a>.</li>
<li><strong>Advisers</strong><br />
Every system have some purpose and fits into some context. Customers will require people who understand the big picture: problem domain, emerging concepts and IT environment. People, who still understand how computers operate and what is possible and makes sense. People, who can answer &#8216;Why&#8217; and &#8216;What&#8217; solutions are required in addition to &#8216;How&#8217; to implement them.</li>
</ol>
<h3>Present and Future</h3>
<p>Daniel H. Pink in his excellent book <a href="http://www.amazon.com/gp/product/1594481717/104-2883280-1296732?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1594481717" id="ab23" title="A Whole New Mind">A Whole New Mind</a> writes:</p>
<blockquote><p> &#8220;Programmers will have to master different aptitudes, relying more on creativity than competence, more on tacit knowledge than technical manuals, and more on fashioning the big picture than sweating the details.&#8221;</p></blockquote>
<p>We&#8217;ll need to supplement our well developed high-tech abilities with high touch, which:</p>
<blockquote><p>&#8220;involves the ability to create artistic and emotional beauty, to detect patterns and opportunities, to craft a satisfying narrative, and to combine seemingly unrelated ideas into a novel intervention. High touch involves the ability to emphasize, to  understand the subtleties of human interaction, to find joy in one&#8217;s self and to elicit it in others, and to stretch beyond the quotidian, in pursuit of purpose and meaning.&#8221;</p></blockquote>
<p>Modern trends in programming are not in the areas of enhancing sophistication of building software systems, but in making easier to manipulate and understand these systems by humans. Complexity of the modern software systems and problem domains makes software development difficult endeavor for our relatively small, delicate and easy to confuse brains. Programmers have challenges to transparently represent customers ideas in the software code and avoid complications specific to technical platforms.  Effective software teams try to overcome disconnect between technical and business perspectives on the system:</p>
<ul>
<li>use agile practices focused on speed, business value and rapid feedback from customers</li>
<li>apply Domain Driven Design and Domain Specific Languages for representing customer ideas and concepts</li>
<li>develop with high level languages suited for describing programming logic closer to human language (Ruby, C#)</li>
<li>write automated executable specifications for describing and testing domain logic (Fit, Test and Behavior Driven Development)</li>
<li>leverage existing commercial and open source solutions to bring business value faster and concentrate on core problems instead of spending effort on secondary.</li>
</ul>
<p>Alex Iskold in <a href="http://www.readwriteweb.com/archives/the_future_of_software_development.php" title="The Future of Software Development" id="s5ih">The Future of Software Development</a> says</p>
<blockquote><p> Equipped with a modern programming language, great libraries, and agile methods, a couple of smart guys in the garage can get things done much better and faster than an army of mediocre developers.</p></blockquote>
<p><img src="http://softwarecreation.org/images/2007/fantastic4.jpg" /></p>
<p>I believe &#8211; the future software teams will be powerful small units (similar to special forces in army) of diverse highly capable professionals. Remaining software developers will be domain experts, professional communicator and creative innovators understanding well both business and technology.</p>
<p>Computer Science will be <a href="http://www.softwarebyrob.com/2007/06/27/computer-science-enrollment-going-down-taking-software-jobs/" title="attractive again" id="b8f2">attractive again</a> and people will value profession of the software developer as prestigious and one of the most important for human civilization progress.</p>
<p><em>Interesting Resources:</em><br />
<a href="http://www.amazon.com/gp/product/1594481717/104-2883280-1296732?ie=UTF8&amp;tag=softwcreatmys-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1594481717" id="ab23" title="A Whole New Mind">A Whole New Mind</a>, Daniel H. Pink<br />
<a href="http://www.readwriteweb.com/archives/the_future_of_software_development.php" title="The Future of Software Development" id="s5ih">The Future of Software Development</a>, Alex Iskold<br />
<a href="http://www.hans-eric.com/2007/11/09/the-extinction-of-programmers/" title="The Extinction of Programmers" id="lo_9">The Extinction of Programmers</a>, Hans-Eric Gronlund</p>
<!-- Social Buttons Shared Counts Generated by Digg Digg plugin v4.0.9, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/ --><img src="http://softwarecreation.org/?ak_action=api_record_view&id=49&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Can Computers Beat Human Programmers? Part 4. Building useful programs</title>
		<link>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/</link>
		<comments>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 03:55:23 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Concepts]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Skills]]></category>
		<category><![CDATA[System]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/</guid>
		<description><![CDATA[SharePart 1. Gaining processing power
Part 2. Becoming intelligent
Part 3. Interacting with humans
 Part 4. Building useful programs
 Part 5. Future of human programmers
Is it easy to build useful programs for humans? Failure rates and dissatisfaction with the software projects (more than 50% still fails or challenged) show that it is not quite easy task. Can [...]]]></description>
			<content:encoded><![CDATA[<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://api.tweetmeme.com/button.js?url=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/&source=AndriySolovey&service=&service_api=&style=compact' height='20' width='90' frameborder='0' scrolling='no'></iframe></div><div class='dd_button'><a name='fb_share' type='button_count' share_url='http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/' href='http://www.facebook.com/sharer.php'>Share</a><script src='http://static.ak.fbcdn.net/connect.php/js/FB.Share' type='text/javascript'></script></div><div class='dd_button'><script src='http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/'></script></div><div class='dd_button'><a title='Post on Google Buzz' class='google-buzz-button' href='http://www.google.com/buzz/post' data-button-style='small-count' data-url='http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/'></a><script type='text/javascript' src='http://www.google.com/buzz/api/button.js'></script></div><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/&amp;title=+Can+Computers+Beat+Human+Programmers%3F+Part+4.+Building+useful+programs&amp;t=2' height='18' width='120' frameborder='0' scrolling='no'></iframe></div></div></div><div style='clear:both'></div><p><a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/" title="Part 1. Gaining processing power" id="squr">Part 1. Gaining processing power</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/" title="Part 2. Becoming intelligent" id="prn5">Part 2. Becoming intelligent</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/" title="Part 3. Interacting with humans" id="n455">Part 3. Interacting with humans</a><br />
<span style="font-weight: bold"> Part 4. Building useful programs</span><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/"> Part 5. Future of human programmers</a></p>
<p>Is it easy to build useful programs for humans? <a href="http://www.it-cortex.com/Stat_Failure_Rate.htm" title="Failure rates" id="qtnj">Failure rates</a> and <a href="http://www.sdtimes.com/article/story-20070301-01.html" title="dissatisfaction" id="wdc-">dissatisfaction</a> with the software projects (more than 50% still fails or challenged) show that it is not quite easy task. Can AI help to build more successful projects, compete and eventually replace human programmers?</p>
<h3>From ideas to specifications</h3>
<p><img src="http://softwarecreation.org/images/2007/zhukov.jpg" /></p>
<p>Human programmers face objective challenges in building software systems, which AI will face in the future:</p>
<ol>
<li>It is difficult to <a href="http://softwarecreation.org/2007/how-to-communicate-effectively-and-still-get-things-done/" title="understand" id="cwd:">understand</a> what people need.</li>
<li>Customer&#8217;s ideas are shifting, once they start using the real system and experience all the consequences and effects for interacting with it in the context of their problems.</li>
<li>Customer&#8217;s needs are changing constantly reflecting outside business and company trends, situation and problems.</li>
</ol>
<p><span id="more-46"></span>There are 4 stages to build a software system:</p>
<ol>
<li>Understand unclear human needs and overcome communication barriers</li>
<li>Translate these needs into specification or the system model</li>
<li>Implement these specifications within constraints and required system qualities</li>
<li>Verify that the system meets expectations.</li>
</ol>
<p>Two first stages need strong AI with human like <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/" title="intelligence and comprehension" id="xv_t">intelligence and comprehension</a>, two last stages could be achieved with weaker AI. The key is <strong>translation of human needs into specifications that machine could understand</strong>. Stronger AI will need less defined specification and could handle ambiguous messages and human language, weaker AI will need more details, which at the extreme means writing a program as almost we do now.</p>
<p>As a part of the system specifications we should provide to AI expected input, output and required system qualities (performance, reliability, security, etc.). Even today some trends and approaches reduce gap in translation customer needs to computer specifications:</p>
<ul>
<li><a href="http://martinfowler.com/bliki/DomainSpecificLanguage.html" title="Domain Specific Languages" id="nc1k">Domain Specific Languages</a> &#8211; expressing programming logic in language, better suited for specific domains and problems; domain experts can use this language and define the logic. <a href="http://www.intentsoft.com/" title="Intentional Software" id="k9ge">Intentional Software</a> could offer even <a href="http://www.technologyreview.com/Infotech/18047/page13/" title="more interesting approach" id="ogxv">more interesting approach</a> in the near future.</li>
<li>Automated Acceptance and Unit Tests &#8211; <a href="http://martinfowler.com/bliki/Xunit.html" title="xUnit" id="e_4s">xUnit</a>, <a href="http://fit.c2.com/" title="Fit" id="ohoi">Fit</a> and similar frameworks allow to write specifications as tests in declarative or programmatic style.</li>
<li><a href="http://www.testdriven.com/" title="Test Driven Development" id="jfu0">Test Driven Development</a>, <a href="http://behaviour-driven.org/" title="Behaviour Driven Development" id="r0x8">Behaviour Driven Development</a> and <a href="http://domaindrivendesign.org/" title="Domain Driven Design" id="j6d0">Domain Driven Design</a> provide approaches for evolving and programming a software system primarily from customer perspective as oppose to traditional views for building the system with distinct technological perspective, often disconnected from customer needs.</li>
</ul>
<p>These approaches put more stress and effort to specify WHAT is expected from the system and less stress on HOW these result could be achieved. It is similar to <a href="http://en.wikipedia.org/wiki/Declarative_programming" title="declarative paradigm of programming" id="xqh4">declarative paradigm of programming</a> (HTML, SQL), where a programmer specify what he expects and the underlying system comes up with optimal algorithms to satisfy this request.</p>
<p>Going forward application programmers and domain experts will focus on describing needs and specifications for the system and AI will increase contribution to implementation of these requests. As AI becomes stronger it will need less and less formalized description and could start comprehend human language directly.</p>
<h3>Implementation and Delivery</h3>
<p><img src="http://softwarecreation.org/images/2007/munchausen.jpg" /><br />
<span class="photocredit">Baron Munchhausen escaping from a swamp by pulling himself up by his own hair</span></p>
<p>AI could deliver a system in several ways depending on our level of trust:</p>
<ol>
<li><strong>Transparent System</strong> &#8211; computer generates code and human software professionals review, modify, integrate and accept it. It is similar to vendor model to speed up the main development.</li>
<li><strong>Black Box</strong> &#8211; human provide specification, integrate and test the system without much understanding what AI has built inside.</li>
<li><strong>Key-turn System</strong> &#8211; we trust computer to specify, build and integrate the system without human involvement and verification.</li>
</ol>
<p>The first option seems safer and easier, but it requires a computer to <strong>generate software code in a human-readable format</strong>, which adds complexity and double translation: customer -&gt; computer -&gt; programmer. The Black Box and Key-turn System options doesn&#8217;t require this complex translation and could be easier to implement.</p>
<p>Based on today approaches AI could build system in <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/" title="few ways" id="c_-0">few ways</a>:</p>
<ul>
<li><span style="font-weight: bold">Brute force</span>: <a href="http://en.wikipedia.org/wiki/Genetic_algorithm" title="genetic algorithms" id="hdq8">genetic algorithms</a> or <a href="http://en.wikipedia.org/wiki/Swarm_intelligence" title="swarm intelligence" id="nqte">swarm intelligence</a>, where computer try to find the fittest solution evolving behavior of the system based on selections, mutations, recombinations or emergent behavior of individual agents, competing and cooperating with each other.</li>
<li><span style="font-weight: bold">Trained neural networks</span>: interconnected <a href="http://en.wikipedia.org/wiki/Artificial_neural_network" title="groups of artificial neurons" id="au-c">groups of artificial neurons</a>, imitating how our brains are working.</li>
<li><span style="font-weight: bold">Symbol processor</span>: similar to the way how a human operates with knowledge based on <a href="http://plato.stanford.edu/entries/computational-mind/" title="classic theory of mind" id="g:yc">classic theory of mind</a>: semantic, logic, reasoning, abstractions, etc.</li>
</ul>
<p>We have been already successfully using AI software solutions in many areas, e.g. manufacturing, finances, medicine, science, air traffic control. Computers even <a href="http://uanews.org/node/16426" title="analyze" id="tbcu">analyze</a> volatile political and military situations and predict unpredictable. It is matter of time when these approaches will be applied to software development and computers will be able to program themselves.</p>
<h3>Silver Bullet?</h3>
<p><img src="http://softwarecreation.org/images/2007/silver-bullet.jpg" /><br />
<a href="http://flickr.com/photos/steffe/303544263/" class="photocredit">Steffe</a><br />
AI indeed could solve problems that  Frederick Brooks indicated as essential complexity in software development (<a href="http://info.computer.org/portal/site/computer/menuitem.eb7d70008ce52e4b0ef1bd108bcd45f3/index.jsp?&amp;pName=computer_level1&amp;path=computer/homepage/misc/Brooks&amp;file=index.xml&amp;xsl=article.xsl&amp;;jsessionid=HnyGxkPQ2GsKlblRl6VDJ2h28QQLpfhKqKW9RNDttHsdT8NFTLhb%211017941068" title="No Silver Bullet">No Silver Bullet</a>):</p>
<ul>
<li>     <strong>Complexity</strong> &#8211; computers could handle much more information then our individual brains, carry knowledge about all possible states of the system and effectively manipulate it.</li>
<li>     <strong>Conformity </strong>- computers could seamlessly conform to interfaces of the other system and support rules of interactions with brothers computers.</li>
<li>     <strong>Changeability </strong>- computers will have full intellectual control over the system code and can quickly understand what should be modified and effectively support change requests.</li>
<li>     <strong>Invisibility </strong>- our brains are specialized on particular processing of information influenced by our biological origin. Computer don&#8217;t have this problem and could naturally manipulate information without need to visualize and limit scope for better comprehension.</li>
</ul>
<p>Can we assume now that a computer-programmer could be superior to a human-programmer and become a silver bullet?</p>
<h3>Competing with human programmers</h3>
<p><img src="http://softwarecreation.org/images/2007/klichko-lewis.jpg" /></p>
<p>AI definitely will have some advantage over humans. The computer-programmer will show higher productivity, consistency, reliability and will not be affected by mood swings, personal problems or lack of recognition (unless computer intelligence will make twist in their evolution). However there are several human characteristics that will be difficult to beat.</p>
<p><strong>Creativity and Innovation</strong><br />
<cite>Creativity is a mental process involving the generation of new ideas or concepts, or new associations between existing ideas or concepts. &#8211; </cite><a href="http://en.wikipedia.org/wiki/Creativity" title="Wikipedia" id="jxng">Wikipedia</a><br />
<a href="http://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorem" title="Gödel incompleteness theorem" id="jdbs">Gödel incompleteness theorem</a>  shows that a computer should go beyond rules and algorithms embedded by humans to become creative and innovative. It is still not clear if computer could go over initial set of rules, generate new ideas, extend and connect existing.</p>
<p><strong>Adaptability and Learning</strong><br />
Humans have unique ability to adapt to changing environment and quickly learn new things. It doesn&#8217;t take much time to adjust thinking, learn new rules and concepts and start programming effectively. Human programmers can successfully shift to the new domains, still keeping their mastery, apply previous experience enhanced by new knowledge. Could computers become so flexible in emerging new domains, shift in knowledge, perspectives and needs?</p>
<p><strong>Aesthetics and Usability</strong><br />
Human designers can naturally grasp and implement subtle aesthetic and usability needs enhancing user experience for dealing with the systems. This knowledge is ingrained in our psychology and it will be difficult to formalize it enough for computer to allow building easy-to-use and pleasant programs.</p>
<p><strong>Problem solving and Diversity</strong><br />
Human rational mind combined with experience and intuition effectively deals with <a href="http://www.poppendieck.com/wicked.htm" title="wicked problems" id="et-x">wicked problems</a>, which involve uncertainty, trade-offs and multiple options. Our brain machine is specialized on solving this kind of problems and it will be challenge for computer to match these capabilities. AI could use brute force at some extent as with chess, but it has limits when number of variables and things to consider increases rapidly.<br />
Diverse talents, broad range of views and different opinions often lead to surprisingly effective solutions, sometimes impossible to predict beforehand.</p>
<p><strong>Generalization and Theorizing</strong><br />
Human ability to generalize, create abstractions and theories based on experience, experiments, many observations and individual cases are very valuable in the software development.<br />
We can substantially reduce complexity of the system logic and even anticipate future needs by creating abstract models and solutions, which could be applied for wide range of different situations and encapsulate theories behind our knowledge and understanding of the problem domain.</p>
<p><strong>Understanding and Shared Experience</strong><br />
Humans will understand other humans much better than computer unless computers tap into our minds and start reading our thoughts. However, it could be scary and still not clear if AI could filter productive thought from the non sense our brains produce.<br />
Human build together shared experience &#8211; less and less information is required to understand each other and people become more effective as a team &#8211; at the end, ideas and their flow is the <a href="http://softwarecreation.org/2007/software-development-is-the-flow-of-ideas-the-rest-is-secondary/" id="zb4f" title="most important part">most important part</a> in software development.</p>
<p><strong>Seeing The Big Picture and Thirst for Knowledge and Achievements</strong><br />
Many programmers have diverse background, education and knowledge &#8211; far more than required to build programs. Many solutions require to go outside of the problem context and understand broader picture. Some solutions could emerge from different problem domains and unexpected areas of human knowledge.<br />
Human strength is irrational curiosity, thirst for knowledge and irresistible drive for achievements, which move our progress forward, open new areas of knowledge and make impossible possible. Can computers inherit this drive and motivation?</p>
<p>Can even super <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/" title="intelligent" id="bphb">intelligent</a> and <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/" title="powerful" id="l1b-">powerful</a> computers replicate human strengths that make us so effective programmers? There are definitely some areas that human programmers will rule for a long time. Does it mean that we could relax? I doubt it &#8211; computers are taking over more and more human programmer responsibilities and soon they will affect our jobs and replace us in some programming areas. What should modern developer do to stay competitive with gaining strength and power computer AI? This is the topic of the next post.</p>
<!-- Social Buttons Shared Counts Generated by Digg Digg plugin v4.0.9, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/ --><img src="http://softwarecreation.org/?ak_action=api_record_view&id=46&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can Computers Beat Human Programmers? Part 3. Interacting with humans</title>
		<link>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/</link>
		<comments>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/#comments</comments>
		<pubDate>Fri, 12 Oct 2007 03:27:41 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/</guid>
		<description><![CDATA[SharePart of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest. &#8211; Isaac Asimov
Part 1. Gaining processing power
 Part 2. Becoming intelligent
 Part 3. Interacting with humans
 Part 4. Building useful programs
 Part 5. Future of human programmers
Even a super intelligent computer needs input from [...]]]></description>
			<content:encoded><![CDATA[<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://api.tweetmeme.com/button.js?url=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/&source=AndriySolovey&service=&service_api=&style=compact' height='20' width='90' frameborder='0' scrolling='no'></iframe></div><div class='dd_button'><a name='fb_share' type='button_count' share_url='http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/' href='http://www.facebook.com/sharer.php'>Share</a><script src='http://static.ak.fbcdn.net/connect.php/js/FB.Share' type='text/javascript'></script></div><div class='dd_button'><script src='http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/'></script></div><div class='dd_button'><a title='Post on Google Buzz' class='google-buzz-button' href='http://www.google.com/buzz/post' data-button-style='small-count' data-url='http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/'></a><script type='text/javascript' src='http://www.google.com/buzz/api/button.js'></script></div><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/&amp;title=Can+Computers+Beat+Human+Programmers%3F+Part+3.+Interacting+with+humans&amp;t=2' height='18' width='120' frameborder='0' scrolling='no'></iframe></div></div></div><div style='clear:both'></div><p><cite>Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest.</cite> &#8211; Isaac Asimov</p>
<p><a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/">Part 1. Gaining processing power</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/"> Part 2. Becoming intelligent</a><br />
<strong> Part 3. Interacting with humans</strong><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/"> Part 4. Building useful programs</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/"> Part 5. Future of human programmers</a></p>
<p>Even a super intelligent computer needs input from humans to build a program. It is great if you are a scientist or a computer professional and can provide mathematical models or algorithms. But what if you don&#8217;t know how to specify what you need from the program? Can computer really understand us? Can people trust computers to build a correct system for their needs? Will be communication with computer comfortable and effective?</p>
<p>We should consider four important software creation areas to answer these questions:</p>
<ol>
<li>     <strong>Understanding</strong> &#8211; can computer comprehend our language and complex     ideas?</li>
<li>     <strong>Engagement </strong>- can computer effectively involve us in communication?</li>
<li>     <strong>Guiding</strong> &#8211; can computer help us to understand our needs, direct our     thinking and retrieve useful information?</li>
<li>     <strong>Trust</strong> &#8211; can we trust that computer will follow our human interests,     obey rules and don&#8217;t do harm?</li>
</ol>
<h3>   <strong>1. Understanding</strong></h3>
<p><img src="http://softwarecreation.org/images/2007/c3po.jpg" /></p>
<p>Alan Turing offered the first <a href="http://en.wikipedia.org/wiki/Turing_test" id="x2z4" title="test for computer intelligence">test for computer intelligence</a> &#8211; a computer is intelligent if you cannot distinguish in conversation this computer from human (John Searle argues in his <a href="http://en.wikipedia.org/wiki/Chinese_room" id="avgx" title="Chinese room experiment">Chinese room experiment</a> that it is not enough). Computer should posses <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/" id="b57p" title="intelligence">intelligence</a>, master language and understand meaning of words to pass the test.</p>
<p><span id="more-44"></span></p>
<ul>
<li>     Ludwig Wittgenstein&#8217;s     <a href="http://en.wikipedia.org/wiki/Private_language_argument" id="qxq1" title="Beetle and Box">Beetle     and Box</a> argument demonstrates that computers should be part of our life,     social interactions and cultural context to really understand us and     construct similar meaning.</li>
<li>     Noam Chomsky made an argument that any human language contains a limited set     of organizing rules &#8211;     <a href="http://en.wikipedia.org/wiki/Universal_grammar" id="uebf" title="universal grammar">universal     grammar</a>. Therefore, it is possible for computers to master language     without learning infinite number of possible language constructions and word     combinations.</li>
<li>     However, to posses     <a href="http://en.wikipedia.org/wiki/Strong_ai" id="qqu7" title="strong AI">strong     AI</a> (comparable with human) computer should learn how to go beyond     initial rules and axioms provided by humans and define its own (based on     <a href="http://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorem" id="z89c" title="Gödel incompleteness theorem">Gödel     incompleteness theorem</a>). Strong AI will allow computer to be our partner     in constructing new knowledge and concepts.</li>
</ul>
<p>The best source of knowledge and potential birthplace of computer intelligence is The Internet. The father of World Wide Web, Tim Berners-Lee <a href="http://www.sciam.com/article.cfm?articleID=00048144-10D2-1C70-84A9809EC588EF21" id="gii_" title="envisions">envisions</a> marking web content for computer usage with special tags &#8211; The Semantic Web. However, there are some <a href="http://blog.reindel.com/2007/09/13/i-will-never-support-the-semantic-web/" id="inmi" title="drawbacks">drawbacks</a> for effective implementation: it requires extra effort, reflects limited perspective of people who tags information, difficult to identify relationships, easy to mislead and manipulate.<br />
Tim O&#8217;Reilly <a href="http://radar.oreilly.com/archives/2007/09/economist_confu.html" id="ns9f" title="supports">supports</a> another approach: harnessing collective intelligence (Web 2.0), where <em>&#8220;meaning was already being encoded unconsciously</em> by web page creators when they linked one page to another&#8221;. Google use this approach with Page Rank. The Semantic Web creates meaning for computers by adding something to web content. Web 2.0 relies on implicitly encoded meaning by millions way people use and link web content. For example, computers could <a href="http://www.technologyreview.com/Infotech/18501/?a=f" id="wkhz" title="identify objects and pictures">identify objects and pictures</a> based on Google Image search. I believe that combining natural language processing with Web 2.0 is the better approach for gaining computer intelligence than The Semantic Web.</p>
<p>How broad should be knowledge to understand humans? Good human programmers should be fluent in customer domain language, problem context and concepts far beyond programming. And it is much more than current AI advances in mastering simple rules and language of chess game, stock trading or air traffic control.</p>
<h3>   2. Engagement</h3>
<p><img src="http://softwarecreation.org/images/2007/Kismet.jpg" /></p>
<p>In the past some people had dreams of completely automated humanless services, where people deal with machines only. It didn&#8217;t work this way &#8211; today, while automation decrease number of people on most jobs, we have more and more people in services.</p>
<p>There are few reasons why people prefer communication with other people and not machines:</p>
<ul>
<li>     <strong>social </strong>- our biological necessity in social contacts &#8211; we cannot live     without other people. Aristotle said that a man is a social animal.</li>
<li>     <strong>specialization </strong>in understanding other people &#8211; we are great in     understanding non verbal signs and nuances in our expressions, especially     considering that     <a href="http://softwarecreation.org/2007/how-to-communicate-effectively-and-still-get-things-done/" id="vrre" title="words carry of only 7% of meaning">words     carry of only 7% of meaning</a> in human communication.</li>
<li>     <strong>empathy </strong>- other people could make us feel better, comfortable and     confident.</li>
<li>     <strong>humor, fun and joy</strong> of conversation with other people</li>
<li>     <strong>same experience</strong> &#8211; we all have similar body, senses, desires and deal     with the physical world around us. We share culture, history and common     problems and interests</li>
</ul>
<p>Humanoid robots could enhance communication. <span lang="EN-GB">Rodney Brook and his team at MIT are making much progress on designing and creating realistic robots in real world contexts. Marvin Minsky even goes as far to say that human like robots such as </span><a href="http://groups.csail.mit.edu/lbr/humanoid-robotics-group/cog/overview.html" id="s_eq" title="Cog">Cog</a> (humanoid interaction with the world)<span lang="EN-GB"> and </span><a href="http://en.wikipedia.org/wiki/Kismet_%28robot%29" id="eu04" title="Kismet">Kismet</a><span lang="EN-GB"> (</span>sociable humanoid robot<span lang="EN-GB">) could in a sense be regarded as conscious.</span></p>
<p>We get used to anthropomorphize, admire and believe in personality of some   machines like cars &#8211; the same way as we love animals. Probably, we could fight   technophobia and be comfortable in communication with computers.<br />
Our biological essence complicates matters for computers. They will experience our irrational behavior &#8211; politics, desire for power, bias, interest in personal advance, etc.</p>
<h3>   <strong>3. Guiding</strong></h3>
<p><img src="http://softwarecreation.org/images/2007/transformers.jpg" /></p>
<p>Software requirements are often difficult, unclear and open-ended. In addition, people are concerned about aesthetics and usability, which are difficult to master even for human experts. Finally, people with different background, knowledge and experience will describe the same problem completely differently.<br />
A computer should learn to distill, refine and analyze human input to retrieve useful information. A computer should build shared theory, explore and test it together with human by creating prototypes and visuals.</p>
<p>Another effective and natural way to describe needs is story telling and examples, but a computer could have difficulties to get clues and meaning based on verbal information only. Communication could improved by making it direct  &#8211; Microsoft Research Lab is <a href="http://www.technologyreview.com/Infotech/18962/" id="u_hg" title="building a schema">building a schema</a> to allow computers access human brains, MIT <a href="http://www.news.com/8301-10784_3-9790825-7.html?part=rss&amp;subj=news&amp;tag=2547-1_3-0-20" id="ppp." title="develops">develops</a> device to translate the thoughts of a paralyzed person.</p>
<h3>   4. Trust</h3>
<p><img src="http://softwarecreation.org/images/2007/i-robot.jpg" /><br />
At the end, we cannot allow computers to write programs if we don&#8217;t trust them. It could be dangerous if our privacy, security, well-being and lives could be threatened by accidental or even intentional consequences of these programs. Also our morale, values and principles could be easily undermined by an insensitive computer. Could you imagine effective AI for creating porno sites, spam programs or bank hacking tools?</p>
<p>Isaac Azimov&#8217;s <a href="http://en.wikipedia.org/wiki/Three_Laws_of_Robotics" id="hvm." title="Three Laws of Robotics">Three Laws of Robotics</a> could become relevant.</p>
<ol>
<li>     <strong>A robot may not injure a human being or, through inaction, allow a human     being to come to harm. </strong>A computer should understand what is good and     what is bad. These questions are difficult even for humans and dependent on     culture, society and situation. What computer should do if it should choose     between sacrificing life of few people to potentially save many more lives?</li>
<li>     <strong>A robot must obey orders given to it by human beings except where such     orders would conflict with the First Law.</strong> A computer should follow     orders, but it should resist to become evil instrument in bad hands. Taboos,     morale and ethic principles should be embedded in its thinking.</li>
<li>     <strong>A robot must protect its own existence as long as such protection does     not conflict with the First or Second Law.</strong> Computer&#8217;s self-interest is     important &#8211; focusing on goals, avoiding break down and preventing loss of     integrity. But if we give sense of itself and intentionality, computer could     become conscious and independent. Do we want it?</li>
</ol>
<h3>   Summary</h3>
<p>Computers will have tough time to interact with humans, even if we know exactly what we need, exhibit completely rational behavior and ready to cooperate with machines. But we will not &#8211; we have difficulty expressing ideas, understanding ourselves, don&#8217;t trust others, we have personality, ambitions, play political games and make mistakes. The smartest computer, which could overcome these problems will still face challenges to build convenient, reliable and useful programs. Any human programmer can confirm it. This is the topic of the <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/">next post</a>.</p>
<!-- Social Buttons Shared Counts Generated by Digg Digg plugin v4.0.9, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/ --><img src="http://softwarecreation.org/?ak_action=api_record_view&id=44&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Can Computers Beat Human Programmers? Part 2. Becoming intelligent</title>
		<link>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/</link>
		<comments>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 04:24:43 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[System]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/</guid>
		<description><![CDATA[ShareIntelligence is what you use when you don&#8217;t know what to do. &#8211; Jean Piaget
Part 1. Gaining processing power
 Part 2. Becoming intelligent
 Part 3. Interacting with humans
 Part 4. Building useful programs
 Part 5. Future of human programmers
Computers blindly follow our instructions. They are much faster than humans, but still computers are stupid things [...]]]></description>
			<content:encoded><![CDATA[<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://api.tweetmeme.com/button.js?url=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/&source=AndriySolovey&service=&service_api=&style=compact' height='20' width='90' frameborder='0' scrolling='no'></iframe></div><div class='dd_button'><a name='fb_share' type='button_count' share_url='http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/' href='http://www.facebook.com/sharer.php'>Share</a><script src='http://static.ak.fbcdn.net/connect.php/js/FB.Share' type='text/javascript'></script></div><div class='dd_button'><script src='http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/'></script></div><div class='dd_button'><a title='Post on Google Buzz' class='google-buzz-button' href='http://www.google.com/buzz/post' data-button-style='small-count' data-url='http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/'></a><script type='text/javascript' src='http://www.google.com/buzz/api/button.js'></script></div><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/&amp;title=+Can+Computers+Beat+Human+Programmers%3F+Part+2.+Becoming+intelligent&amp;t=2' height='18' width='120' frameborder='0' scrolling='no'></iframe></div></div></div><div style='clear:both'></div><p><cite>Intelligence is what you use when you don&#8217;t know what to do.</cite> &#8211; Jean Piaget</p>
<p><a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/" id="f:xm" title="Part 1. Gaining processing power">Part 1. Gaining processing power</a><br />
<strong> Part 2. Becoming intelligent</strong><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/"> Part 3. Interacting with humans</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/"> Part 4. Building useful programs</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/"> Part 5. Future of human programmers</a></p>
<p>Computers blindly follow our instructions. They are much faster than humans, but still computers are stupid things dependent on our algorithms and knowledge how to solve problems.<br />
Even <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/" id="dr96" title="huge processing power">huge processing power</a> is not enough to start programming. Non-trivial solutions require understanding of ideas, problem solving, learning from experience and much more &#8211; everything what we can define as intelligence. Can computers become smarter than human programmers?</p>
<h3>   What intelligence is required for building programs?</h3>
<p><img src="http://softwarecreation.org/images/2007/program-intelligence.jpg" /></p>
<p><span id="more-36"></span></p>
<h3>   What is human intelligence?</h3>
<p>We have pre-wired capabilities: large and effective brains, genetic development of specialized functional areas (vision, speech, reasoning, etc.). However, we gain our intelligence mostly through learning and experience.<br />
<a href="http://en.wikipedia.org/wiki/Jean_Piaget" id="p7lo" title="Jean Piaget">Jean Piaget</a> defined four stages for human intellectual development:<br />
1. Sensorimotor stage: from birth to age 2 years (children experience the world through movement and senses and learn object permanence)<br />
2. Preoperational stage: from ages 2 to 7 (acquisition of motor skills)<br />
3. Concrete operational stage: from ages 7 to 11 (children begin to think logically about concrete events)<br />
4. Formal operational stage: after age 11 (development of abstract reasoning).</p>
<p>Nobody directly puts intellect in our heads. We construct our own intellect through complex interactions with the world and other people all our life long.</p>
<p>Highlights:</p>
<ul>
<li>     Memory is the basis for all intellectual activities. Memory mostly encodes     the relationships between things than the details of the things     themselves.  It maybe exists only to make good predictions about future</li>
<li>     We are not only using senses and react on external stimulus (keeping car on     the road), but constantly constructing an internal model of the outside     world and predicting how things behave (our and other cars dynamic).</li>
<li>     Our emotions are important as they are brain states that quickly assign     value to outcomes and provide a simple plan of action. Therefore, emotion     can be viewed as a type of computation, a rapid, automatic summary that     initiates appropriate actions.</li>
<li>     Other species are hardwired to solve particular problems, while our ability     to abstract allows us to solve an open-ended series of problems.</li>
</ul>
<ul>
<li>     Interaction between senses and memory allows us to construct     a <a href="http://en.wikipedia.org/wiki/Qualia" id="uv3z" title="qualia">qualia</a>     (properties of sensory experiences). We could create a scene in our mind and     make connections with past scenes.</li>
<li>     With ability to narrate and long-term memory we connect conceptual systems     and develop     <a href="http://en.wikipedia.org/wiki/Semantic" id="medu" title="semantics">semantics</a>     (meaning) and true language. Now we can become conscious of being conscious.</li>
</ul>
<h3>   Building intelligent computers.</h3>
<p>Computers could become intelligent in several distinct ways:</p>
<ol>
<li>Simulation &#8211; <a href="http://lifeboat.com/ex/law.of.accelerating.returns" id="mkgt" title="scan and copy">scan and copy</a> brain structure and emulate with computer how brain functions.</li>
<li><a href="http://www-rohan.sdsu.edu/faculty/vinge/misc/singularity.html" id="bbl_" title="Singularity">Singularity</a> &#8211; in a system complex enough, consciousness and intelligence could simply pop into existence without our participation. Star systems emerged from simple particles, biological life emerged from simple chemical elements, and new intelligence could emerge from huge number of computers and their networks.</li>
<li>Symbiosis &#8211; extension of human capabilities with machine intellect (<a href="http://www.transhumanism.org/resources/faq.html" id="mj0o" title="transhuman and posthuman">transhuman and posthuman</a>) using nano-, bio- and information technology advances.</li>
<li><a href="http://en.wikipedia.org/wiki/Artifical_Intelligence" id="s-8j" title="Artificial Intelligence">Artificial Intelligence</a> built by humans.</li>
</ol>
<p>AI is the most realistic way. History of AI had <a href="http://en.wikipedia.org/wiki/AI_Winter" id="rq6q" title="few winters">few winters</a>, one of each still continues. Despite failed grand expectations, AI brought many practical results and applications:</p>
<ul>
<li>     <a href="http://economist.com/business/displaystory.cfm?story_id=9795140&amp;CFID=20125975&amp;CFTOKEN=96234049" title="Postal Services" id="na5c">Postal Services</a> use AI to help deliver the     millions of packages that pass through its transportation network every day     in the most efficient way possible.</li>
<li>     Telecoms operators use AI to establish the quickest connections for phone     calls through their networks or to retrieve web pages speedily from the     Internet.</li>
<li>     Manufacturers and retailers use AI for optimization of their supply chains.</li>
<li>Financial organization use AI to organize operations, invest in stocks, prevent fraud, and     manage properties. Algorithms carry     <a href="http://softwarecreation.org/2007/computers-vs-humans-thoughts-remember-or-forget/" id="tx--" title="70 % of foreign currency trades">70     % of foreign currency trades</a>.</li>
<li>     A medical clinic can use AI systems to organize bed schedules, make a staff     rotation, and provide medical information.</li>
<li>     Neural networks are used in homeland security, speech     and text recognition, medical diagnosis, data mining, and e-mail spam     filtering.</li>
<li><a href="http://en.wikipedia.org/wiki/Robot" title="Robots" id="obyq">Robots</a> have become common in many industries. They are often given jobs that     are considered dangerous and exhausting to humans. General Motors uses     around 16,000 robots for tasks such as painting, welding, and assembly.</li>
</ul>
<p><span lang="EN-GB"><br />
</span></p>
<p>There are 2 main school of thoughts for building AI: <a href="http://plato.stanford.edu/entries/mental-representation/" id="h11h" title="Classical Theory of Mind">Classical Theory of Mind</a> and <a href="http://plato.stanford.edu/entries/connectionism/" id="nstn" title="Connectionism">Connectionism</a>.</p>
<ul>
<li>     The classicist believes that mind is a symbolic processor, where strings are     produced in sequence according to the instructions of a (symbolic) program.     The mind operates by performing purely formal operations on symbols.</li>
<li> The connectionist views mental processing as the dynamic, bottom up and graded evolution of activity in a neural net. It models mind as the emergent processes of interconnected networks of simple units, usually neural networks.</li>
</ul>
<p><strong> Conventional AI</strong> (based on classic theory)</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Expert_systems" title="Expert systems" id="j-0t">Expert systems</a> (knowledge based): apply reasoning capabilities to reach a conclusion. Expert system contains some of the subject-specific knowledge, and contains the knowledge and analytical skills of one or more human experts.</li>
<li><a href="http://en.wikipedia.org/wiki/Case_based_reasoning" title="Case based reasoning" id="x8cm">Case based reasoning</a>: stores a set of problems and answers in an organized data structure called cases. A case based reasoning system upon being presented with a problem finds a case in its knowledge base that is most closely related to the new problem and presents its solutions as an output with suitable modifications. It is used in Recommendation and Decision Support Systems, Help Desk, medicine.</li>
<li><a href="http://en.wikipedia.org/wiki/Bayesian_networks" title="Bayesian networks" id="i1yn">Bayesian networks</a>: used for modelling knowledge in bioinformatics, medicine, engineering, document classification, image processing, data fusion, and decision support systems.</li>
<li><a href="http://en.wikipedia.org/wiki/Behavior_based_AI" title="Behavior based AI" id="bw8v">Behavior based AI</a>: a modular method of building AI systems by hand.</li>
</ul>
<p><strong> Computational AI</strong> (based on connectionism)</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Artificial_neural_network" title="Neural networks" id="wcew">Neural networks</a>: trainable systems with very strong pattern recognition capabilities. Neural net contains simple units, each unit&#8217;s activation     depending on the connection strengths and activity of its neighbors,     according to the activation function.</li>
<li><a href="http://en.wikipedia.org/wiki/Fuzzy_control_system" title="Fuzzy systems" id="lc5h">Fuzzy systems</a>: techniques for reasoning under uncertainty, have been widely used in modern industrial and consumer product control systems; capable of working with concepts such as &#8216;hot&#8217;, &#8216;cold&#8217;, &#8216;warm&#8217; and &#8216;boiling&#8217;.</li>
<li><a href="http://en.wikipedia.org/wiki/Evolutionary_computation" title="Evolutionary computation" id="bc_y">Evolutionary computation</a>: applies biologically inspired concepts such as populations, mutation and survival of the fittest to generate increasingly better solutions to the problem. These methods include evolutionary algorithms (e.g., genetic algorithms) and swarm intelligence (e.g., ant algorithms).</li>
</ul>
<p><strong>Learning</strong><br />
Computers can quickly replicate and copy their intelligence as oppose to human individual learning. However, unique intelligence of each human is a strength as it adds diversity, different strategies and wide range of solutions if applied properly (<a href="http://softwarecreation.org/2007/review-the-wisdom-of-crowds-making-the-best-decisions/" id="v26t" title="Wisdom of Crowds">Wisdom of Crowds</a>).</p>
<h3>   The Grand Challenge: Can a computer understand?</h3>
<p><img src="http://softwarecreation.org/images/2007/mturk.jpg" /></p>
<p><a href="http://plato.stanford.edu/entries/mental-representation/#Computation" id="fmv." title="The Computational Theory of Mind">The Computational Theory of Mind</a> claims that the brain is a kind of computer and that mental processes are computations. If it is true we can build AI, which can match human mind (<a href="http://en.wikipedia.org/wiki/Synthetic_intelligence" id="glel" title="strong AI">strong AI</a>), have intelligence and can <em>understand</em> meaning. Otherwise, we will struggle to build better and smarter algorithms (weak AI), which will never achieve true intelligence in the human sense.</p>
<p>There are three serious objections to possibility of building strong AI.</p>
<ul>
<li>     Gödel Incompleteness Theorem</li>
<li>     Searle&#8217;s Chinese Room Argument</li>
<li>     Wittgenstein&#8217;s Beetle and The Box</li>
</ul>
<p><strong>1. G</strong><strong>ö</strong><strong>del incompleteness theorem</strong><br />
<em>Any effectively generated theory capable of expressing elementary arithmetic cannot be both consistent and complete. </em>(For more explanation see <a href="http://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorem" id="b0ln" title="here">here</a> and <a href="http://www.miskatonic.org/godel.html" id="s7w3" title="here">here</a>.)<br />
Any mathematical or logical theory should have effective ways to validate proofs. However, each of them has some initial propositions (axioms), which assumed to be true and cannot be proved within the system. To prove them you can go outside the system and come up with new rules and axioms, but by doing so you&#8217;ll only create a larger system with its own unprovable statements. The implication is that <em>all</em> logical systems of any complexity are incomplete, i.e. have true statements without prove.<br />
Modern computer is a logical system. <strong>Therefore, computer cannot have true human intelligence as it will be always limited by fixed axioms and initial rules programmed by humans, while humans can discover new axioms and rules. </strong>In other words, a computer can play chess, regulate air traffic, trade stocks based on initial programmed rules, but it cannot define new rules which are not derived from initial set.<br />
Another interesting outcome is that we will never be able to understand ourselves, since our mind is closed system, which can only be sure of what it knows about itself by relying on what it knows about itself.</p>
<p><strong>2. </strong><strong>Chinese</strong><strong> room argument </strong><br />
In his argument Searle   <a href="http://members.aol.com/NeoNoetics/MindsBrainsPrograms.html" id="l3ul" title="argued">argued</a>   against a position that computer can have strong AI, think and understand.</p>
<p>Suppose a human is locked in the room. He takes Chinese symbols as input,   follows thick rule book on English and returns Chinese symbols as output. But   the person doesn&#8217;t understand even a word of Chinese! If you replace human in   Chinese room with a computer following these instructions, it can easily pass   the   <a href="http://en.wikipedia.org/wiki/Turing_test" title="Turing test">Turing   test</a> and convince a human Chinese speaker that the program is itself a   human Chinese speaker.<br />
But computer is the mindless operator of symbols with zero understanding of   language and meaning (as your dishwasher doesn&#8217;t understand what it is   washing). <strong>Therefore, we can simulate mind in computer, but we cannot create   computer mind that understands meaning. </strong>Computers are   missing <a href="http://en.wikipedia.org/wiki/Intentionality" id="rs:a" title="intentionality">intentionality</a>   (relationship between mental acts and the external world). A computer points   to other data while human intentionality points outside the brain (e.g. to   real flowers).</p>
<p>There are interesting   <a href="http://plato.stanford.edu/entries/chinese-room/" id="cpck" title="counter-arguments">counter-arguments</a>   like the System Reply, which debates that in Searle&#8217;s thought experiment a   human is a processor and don&#8217;t understand Chinese, but the whole system can   understand. However, the Chinese room argument still holds position against   strong AI from 1980.</p>
<p><strong>3. Wittgenstein</strong><strong>&#8217;s Beetle and The Box </strong>(<a href="http://en.wikipedia.org/wiki/Private_language_argument" id="s4.8" title="private language argument">Private Language Argument</a>)<br />
Wittgenstein shows that the idea of a language understandable by only a single individual is incoherent. Imagine, he says, that everyone has a small box in which they keep a beetle. However, no one is allowed to look in anyone else box, only in their own. Over time, people talk about what is in their boxes and the word “beetle” comes to stand for what is in everyone box.<br />
Wittgenstein is trying to point out that the beetle is an analogy to an individual mind. No one can know exactly what it is like to be another person or experience things from another perspective (look in someone else box), but it is generally assumed that the mental workings of other people’s mind are very similar to our own (everyone has a beetle which is more or less similar to everyone else).<br />
<strong>Therefore, computers should be part of our life, social interactions and cultural context to really understand us and construct similar meaning.</strong></p>
<h3>   Summary</h3>
<p><img src="http://softwarecreation.org/images/2007/deep-thought.jpg" /><br />
<a href="http://en.wikipedia.org/wiki/Minor_characters_from_The_Hitchhiker%27s_Guide_to_the_Galaxy#Deep_Thought" class="photocredit">Deep Thought</a></p>
<p>Human intellectual capabilities are amazing and unique and human programmer will be superior comparing to AI for a long time. However, our modern civilization cannot progress without computers &#8211; we continue building better computers and require more and more from them. It is inevitable that computers will become intelligent whether it happens with our help or not. There are serious objections to possibility of building human-like &#8220;strong AI&#8221;; however, &#8220;weak AI&#8221; even today stepped in the territory previously believed to be human only. A computer needs programs and it is matter of time before they learn to program themselves and who knows what happened after this. But if computers continue to serve humans, even intelligent computer should effectively interact and understand us to write useful programs. This is a topic for the <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/">next post</a>.</p>
<p><strong>Useful Resources:</strong><br />
<a href="http://plato.stanford.edu/contents.html" id="o__4" title="Standford Encyclopedia of Philosophy">Standford Encyclopedia of Philosophy</a><br />
<a href="http://economist.com/business/displaystory.cfm?story_id=9795140&amp;CFID=20125975&amp;CFTOKEN=96234049" id="m7gl" title="Business By Numbers">Business By Numbers</a>, The Economist<br />
<a href="http://www.teach12.com/ttcx/coursedesclong2.aspx?cid=660&amp;pc=Science%20and%20Mathematics" id="lhdr" title="Great Ideas of Psychology">Great Ideas of Psychology</a>, Teaching Company, Professor Daniel N. Robinson<br />
<a href="http://loebner.net/Prizef/TuringArticle.html" id="cc4q" title="Computing machinery and intelligence">Computing machinery and intelligence</a>, Turing, A.M. (1950).<br />
<a href="http://members.aol.com/NeoNoetics/MindsBrainsPrograms.html" id="zaa4" title="Mind, Brains, and Programs">Mind, Brains, and Programs</a>, by John R. Searle<br />
<a href="http://discovermagazine.com/2007/aug/unsolved-brain-mysteries/article_view" id="xx7i" title="10 Unsolved Mysteries Of The Brain">10 Unsolved Mysteries Of The Brain</a>, Discovery Magazine<br />
<a href="http://www.google.ca/bookmarks/url?url=http://discovermagazine.com/2007/brain/cogitator/%3Fsearchterm%3Devolution%2520in%2520your%2520brain&amp;ei=_nn4Rv3TGLzakwGOiK3IDA&amp;sig2=QfQ6VmVK4iZAppTJwbhqEA&amp;zx=eB6w52AfcQU&amp;ct=h" id="affj" title="Evolution in Your Brain">Evolution in Your Brain</a>, Discovery Magazine</p>
<!-- Social Buttons Shared Counts Generated by Digg Digg plugin v4.0.9, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/ --><img src="http://softwarecreation.org/?ak_action=api_record_view&id=36&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can Computers Beat Human Programmers? Part 1. Gaining processing power</title>
		<link>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/</link>
		<comments>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 00:15:38 +0000</pubDate>
		<dc:creator>Andriy Solovey</dc:creator>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/</guid>
		<description><![CDATA[SharePart 1. Gaining processing power
 Part 2. Becoming intelligent
 Part 3. Interacting with humans
 Part 4. Building useful programs
 Part 5. Future of human programmers

Word Freak
Can computers compete with us, human programmers, in the near future? The short answer is yes &#8211; if computers will gain enough processing power, become intelligent, could effectively interact with [...]]]></description>
			<content:encoded><![CDATA[<div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><iframe src='http://api.tweetmeme.com/button.js?url=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/&source=AndriySolovey&service=&service_api=&style=compact' height='20' width='90' frameborder='0' scrolling='no'></iframe></div><div class='dd_button'><a name='fb_share' type='button_count' share_url='http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/' href='http://www.facebook.com/sharer.php'>Share</a><script src='http://static.ak.fbcdn.net/connect.php/js/FB.Share' type='text/javascript'></script></div><div class='dd_button'><script src='http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/'></script></div><div class='dd_button'><a title='Post on Google Buzz' class='google-buzz-button' href='http://www.google.com/buzz/post' data-button-style='small-count' data-url='http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/'></a><script type='text/javascript' src='http://www.google.com/buzz/api/button.js'></script></div><div class='dd_button'><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/&amp;title=Can+Computers+Beat+Human+Programmers%3F+Part+1.+Gaining+processing+power&amp;t=2' height='18' width='120' frameborder='0' scrolling='no'></iframe></div></div></div><div style='clear:both'></div><p>Part 1. <strong>Gaining processing power</strong><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/"> Part 2. Becoming intelligent</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-3-interacting-with-humans/"> Part 3. Interacting with humans</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-4-building-useful-programs/"> Part 4. Building useful programs</a><br />
<a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-future-of-human-programmers/"> Part 5. Future of human programmers</a></p>
<p><img src="http://softwarecreation.org/images/2007/computer-vs-human.jpg" /><br />
<a href="http://www.flickr.com/photos/wordfreak/299078131/in/set-72157594380805564/" class="photocredit" title="Word Freak">Word Freak</a></p>
<p>Can computers compete with us, human programmers, in the near future? The short answer is yes &#8211; if computers will gain enough processing power, become intelligent, could effectively interact with humans, build useful programs and&#8230; still be interested to serve humans.</p>
<p>Computers take over more and more people jobs and areas considered exclusively human. Deep Blue beat the human best chess champion Garry Kasparov, it is not possible to win <a href="http://discovermagazine.com/2007/jul/the-next-jump-in-artificial-intelligence" id="wws4" title="checkers against computers">checkers against computers</a>, they <a href="http://www.b-eye-network.com/view/852" id="i8mk" title="create drugs">create drugs</a>, carry 70 % of foreign currency trades and <a href="http://softwarecreation.org/2007/computers-vs-humans-thoughts-remember-or-forget/" id="etbl" title="will do 50% of stock trades in 2010">will do 50% of stock trades in 2010</a>.</p>
<p>But to become better than a human programmer, a computer should compete with very powerful processing machine &#8211; our brains.</p>
<p><span id="more-34"></span></p>
<h3>   Human Brain Machine</h3>
<ul>
<li>     Human brain contains around     <a href="http://en.wikipedia.org/wiki/Human_brain" title="100 billion">100     billion</a> <strong>neurons </strong>(nerve cells).</li>
<li>     Output of one neuron can be transmitted to tens of thousands of other     neurons via tiny structures called <strong>synapses.</strong></li>
<li>     Neurons can produce brief spikes of voltage in their outer membranes     &#8211; <a href="http://scienceblogs.com/neurophilosophy/2007/08/the_brain_in_a_nutshell.php" title="hundreds of electrical pulses">hundreds     of electrical pulses</a> per second.</li>
<li>     The electrical signal travels along specialized extension called <strong>axon     </strong>and converted to a chemical one. Chemical signal is transmitted across     the synapse, to the next neuron using small molecules called     neurotransmitters (such as dopamine, serotonin and acetylcholine).</li>
<li>     There are other possible information couriers:     <a href="http://en.wikipedia.org/wiki/Glial_cells" title="glial cells">glial     cells</a> (10 times as common as neurons), other kinds of signaling     mechanisms between cells (gases and peptides), and the biochemical cascades     that take place inside cells.</li>
<li>     Our brains form a million new connections for every second of our lives. The     pattern and strength of the connections is constantly changing and no two     brains are     alike.</li>
</ul>
<p><img src="http://softwarecreation.org/images/2007/neuron.png" /><font face="verdana,arial,helvetica" size="2"><font face="verdana,arial,helvetica" size="2"> </font></font></p>
<p>100 different <a href="http://en.wikipedia.org/wiki/Biological_neural_network" title="neural networks">neural networks</a> in the human brain are performing specialized function: vision, smell, goal setting, speech, prediction, and hundreds of other tasks. Despite their different functions, these systems work together seamlessly and it is surprising that the brain coordinates its systems so rapidly. The slow speed of spikes (they travel about one foot per second in axons) is one hundred-millionth the speed of signal transmission in digital computers. Yet a human can recognize a friend almost instantaneously, while digital computers are slow—and usually unsuccessful—at face recognition. The brain is a parallel processor, running many operations at the same time. Brains are amazingly fast at comparing results of processing and deciding upon. An animal running must go left or right around a tree; it cannot do both.</p>
<p>There is no special anatomical location in the brain where information from   all the different systems converges. The specialized areas all interconnect   with one another, forming a network of parallel and recurring links. Somehow,   our integrated image of the world emerges from this complex network of brain   structures.</p>
<h3>   Computer Processing Power</h3>
<p>Hans Moravec   <a href="http://www.transhumanist.com/volume1/moravec.htm" id="g4b1" title="estimated">estimated</a>   that computer processing power should be around 100 million   <a href="http://en.wikipedia.org/wiki/Million_instructions_per_second" id="h33v" title="MIPS">MIPS</a>   (100   <a href="http://en.wikipedia.org/wiki/FLOPS" id="hi-j" title="TFLOPS">TFLOPS</a>)   to match human brains. Ray Kurzweil   <a href="http://lifeboat.com/ex/law.of.accelerating.returns" id="ymgd" title="estimation">estimation</a>   is 10,000 TFLOPS.</p>
<p>Today super computers exceed minimal estimation:   <a href="http://en.wikipedia.org/wiki/Blue_Gene" id="wj1o" title="Blue Gene">Blue   Gene</a> has 360   TFLOPS, <a href="http://en.wikipedia.org/wiki/MDGRAPE-3" id="de5_" title="MDGRAPE-3">MDGRAPE-3</a>   (4,808 processors) achieves more than one PetaFLOP (1,000 TFLOPS).    Distributed computing enables another approach to higher performance:   <a href="http://en.wikipedia.org/wiki/BOINC" id="sjlh" title="BOINC">BOINC</a>   has 557 TFLOPS (435,000 computers),   <a href="http://en.wikipedia.org/wiki/Google_platform" id="gh0s" title="Google cluster">Google   cluster</a> (in 2005) had roughly around 900 TFLOPS (450,000 machines x 2,000   MFLOPS).</p>
<p>Ordinary processors have better and better performance:  Intel   8080 had 0.5 MFLOPS in 1974, Pentium III had 1,500 MFLOPS in 1999, today Sony   Playstation 3 Cell processor   <a href="http://forums.gamersindia.com/t1059-microsofts-xbox-360--vs--sonys-ps3.html" id="j3wh" title="achieve">achieve</a>   around 230,000 MFLOPS. New Intel Polaris (80-core chip) prototype processor   <a href="http://www.eetimes.com/news/latest/showArticle.jhtml?articleID=197004697" id="lt7." title="showed">showed</a>   1.2 TFLOPS.</p>
<p><img src="http://softwarecreation.org/images/2007/MooresLaw.jpg" /><br />
<a href="http://en.wikipedia.org/wiki/Accelerating_change" class="photocredit" title="Accelerating Change">Accelerating Change</a></p>
<p>Based on Moore&#8217;s Law and present trends affordable computer could achieve human brain processing power by 2020.<br />
From Ray Kurzweil&#8217;s <a href="http://lifeboat.com/ex/law.of.accelerating.returns" id="hzwf" title="analysis">analysis</a>:</p>
<ul>
<li>     We achieve one Human Brain capability (2 * 10<sup>16</sup> cps or 10     PetaFLOPS) for $1,000 around the year 2023.</li>
<li>     We achieve one Human Brain capability (2 * 10<sup>16</sup> cps) for one cent     around the year 2037.</li>
<li>     We achieve one Human Race capability (2 * 10<sup>26</sup> cps) for $1,000     around the year 2049.</li>
<li>     We achieve one Human Race capability (2 * 10<sup>26</sup> cps) for one cent     around the year 2059.</li>
</ul>
<p><img src="http://softwarecreation.org/images/2007/ComputingGrowth.jpg" /><br />
<a href="http://en.wikipedia.org/wiki/Accelerating_change" class="photocredit" title="Accelerating Change">Accelerating Change</a></p>
<p>This estimation relies on generalized interpretation of Moore&#8217;s law, with assumption that other technologies could overcome limitations of integrated semiconductor complexity. And there are some hopes for this. A <a href="http://www.cs.caltech.edu/%7Ewestside/quantum-intro.html" id="a-ug" title="quantum computer">quantum computer</a>   system of 500 qubits could be the equivalent of performing some operations on a classical super computer with ~10<sup>150</sup> separate processors. <a href="http://nicosia.is.s.u-tokyo.ac.jp/MCP/" title="Molecular computers">Molecular computers</a> could do massive parallel processing &#8211; in 2002 a programmable molecular computing machine composed of enzymes and DNA molecules <a href="http://en.wikipedia.org/wiki/DNA_computer" title="performed">performed</a> 330 TFLOPS.</p>
<h3>   Summary</h3>
<p>Programmer&#8217;s brain has hundred billions neurons and one hundred trillion neural connections each operating at few hundred analog calculations per second. However, most of processing is dedicated to life support functions, not information processing. Human neural networks are much slower than modern digital processors, but have an amazing efficiency for parallel processing, aggregating and deciding upon results.</p>
<p>Probably, mass computers will achieve comparable processing power by the year 2020. But does it automatically mean that they can compete with human programmers?<br />
There are technical challenges like improving computers parallel and distributed processing and algorithms. But the main challenge is that computers should become intelligent to write programs &#8211; understand problem space, people and come up with solutions. This is a topic of the <a href="http://softwarecreation.org/2007/can-computers-beat-human-programmers-part-2-becoming-intelligent/">next part</a>.</p>
<p><strong>Interesting resources:</strong><br />
<a href="http://scienceblogs.com/neurophilosophy/2007/08/the_brain_in_a_nutshell.php" id="mapq" title="The brain in a nutshell">The brain in a nutshell</a>, Neurophilosophy<br />
<a href="http://discovermagazine.com/2007/aug/unsolved-brain-mysteries/article_view" id="xx7i" title="10 Unsolved Mysteries Of The Brain">10 Unsolved Mysteries Of The Brain</a>, Discovery Magazine<br />
<a href="http://www.transhumanist.com/volume1/moravec.htm" id="nu5y" title="When will computer hardware match the human brain?">When will computer hardware match the human brain?</a>, Hans Moravec<br />
<a href="http://lifeboat.com/ex/law.of.accelerating.returns" id="e12_" title="Law of Accelerating Returns">Law of Accelerating Returns</a>, Ray Kurzweil</p>
<!-- Social Buttons Shared Counts Generated by Digg Digg plugin v4.0.9, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/ --><img src="http://softwarecreation.org/?ak_action=api_record_view&id=34&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://softwarecreation.org/2007/can-computers-beat-human-programmers-part1-gaining-processing-power/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
