<?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/"
	>

<channel>
	<title>Enfis The Paladin</title>
	<atom:link href="http://www.enfis.it/feed" rel="self" type="application/rss+xml" />
	<link>http://www.enfis.it</link>
	<description>an Italian developer...</description>
	<pubDate>Thu, 31 Mar 2011 14:27:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The first &#8220;Apples&#8221; of my life&#8230;</title>
		<link>http://www.enfis.it/archives/28</link>
		<comments>http://www.enfis.it/archives/28#comments</comments>
		<pubDate>Sun, 05 Apr 2009 17:41:56 +0000</pubDate>
		<dc:creator>Enfis The Paladin</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[macintosh]]></category>

		<category><![CDATA[mini]]></category>

		<guid isPermaLink="false">http://www.enfis.it/?p=28</guid>
		<description><![CDATA[Well, I&#8217;ve decided to start the development of some iPhone applications, just for training and fun. I&#8217;ve successfully developed for Windows, J2ME, Gameboy Advanced and something also for the xbox and Playstation portable, and now it&#8217;s time to learn another planet: the MACINTOSH! When I was young, people strongly avoid Apple computer because it was [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a title="The package arrives..." href="http://www.enfis.it/wp-content/uploads/2009/04/lgim0004.jpg" rel="shadowbox[post-28];player=img;"><img class="size-thumbnail wp-image-25" title="The package arrives..." src="http://www.enfis.it/wp-content/uploads/2009/04/lgim0004-200x200.jpg" alt="lgim0004" width="200" height="200" align="left" /></a>Well, I&#8217;ve decided to start the development of some iPhone applications, just for training and fun. I&#8217;ve successfully developed for Windows, J2ME, Gameboy Advanced and something also for the xbox and Playstation portable, and now it&#8217;s time to learn another planet: the MACINTOSH! When I was young, people strongly avoid Apple computer because it was poor on software side, and DOS/WIndows was the only way to stay in touch with the Information Technology. Videogames, for example, were 20 years ahead compared with Mac. Now things are radically changed, today we are in the WEB generation, therefore you can have any kind of personal computer (Windows, Linux, MacOS) or phone (Nokia, Sony, Android, iPhone, whatever) with an embedded browser powerful enough to surf on Facebook, mySpace or YouPorn 8)  So nowadays, why a Mac should <strong>*NOT*</strong> be bought? Under a uncontrolled craving to save the world from the economic crisis, I&#8217;ve bought a <a title="Mac Mini" href="http://store.apple.com/us/browse/home/shop_mac/family/mac_mini" target="_blank">Mac Mini with 4Gb of memory, driven by a 2.26 Ghz Intel Core 2 CPU</a>, <a title="Keyboard and mouse" href="http://www.apple.com/keyboard/" target="_blank">wireless keyboard+mouse</a>, <a title="VGA Adapter" href="http://store.apple.com/us/product/MB572Z/A?fnode=MTY1NDA3Ng&amp;mco=MjE0ODQ2NQ" target="_blank">VGA adaptor</a> and an <a title="The iPhone" href="http://store.apple.com/us/browse/home/shop_iphone/family/iphone" target="_blank">iPhone 16 Gb (white)</a>: Steve Jobs was happy. Using the apple store was really easy and funny to build my customised PC while the €1184,00 (iPhone excluded) were not easy to digest <img src='http://www.enfis.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Placed the order, checked-out and after a week the package arrives as you can see in the photo shoot behind&#8230;<span id="more-28"></span></p>
<p style="text-align: justify;"><a title="The first boot up..." href="http://www.enfis.it/wp-content/uploads/2009/04/lgim0005.jpg" rel="shadowbox[post-28];player=img;"><img class="size-thumbnail wp-image-26 alignright" title="The first boot up..." src="http://www.enfis.it/wp-content/uploads/2009/04/lgim0005-200x200.jpg" alt="The first boot up..." width="200" height="200" align="right" /></a> At the first sight I&#8217;ve tought: &#8220;Hey, where the hell is my computer, this is only the CD-ROM part!!!&#8221; <img src='http://www.enfis.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> No, the Mac Mini is really small, it can be compared to a CD case, tall like a book and it&#8217;s surprisingly silent and &#8220;cold&#8221;. I was embarassed with my parents because it seems a toy instead of a productive computer. The wireless keyboard seems a long biscuit, instead, while the wireless mouse seems a huge and devasting suppository <img src='http://www.enfis.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Okey, let&#8217;s get busy &#8230; unboxed the MacMini, keyboard, mouse, VGA adapter, then connected 2 cables (1 for power and 1 for mini-displayport -&gt; VGA), connected the AC: the system is placed &#8230; 3 minutes of total time! I can&#8217;t claim that it was funny, usually the assembly is the most exciting phase of a purchase. Let&#8217;s continue &#8230; pressed the power button, switched my <a title="My monitor" href="http://www.trustedreviews.com/displays/review/2007/08/23/Samsung-SyncMaster-245B-24in-Monitor/p1" target="_blank">Samsung SyncMaster 245b</a> to VGA mode and the system boots without problems. Keyboard and mouse pairing is straightforward and the form fill of the first time boot is minimal and easy. <a title="Keyboards comparison..." href="http://www.enfis.it/wp-content/uploads/2009/04/lgim0006.jpg" rel="shadowbox[post-28];player=img;"><img class="alignleft size-thumbnail wp-image-27" title="Keyboards comparison..." src="http://www.enfis.it/wp-content/uploads/2009/04/lgim0006-200x200.jpg" alt="Keyboards comparison..." width="200" height="200" align="left" /></a>The mouse was too sensitive so I&#8217;ve configured it to a faster fashion. Time to configure the WI-FI connection  for Internet &#8230; 3 steps and it was done: total time (boot + setup) 5 minutes. <strong>I&#8217;m impressed!!!</strong> Even if there are some things totally different from a Windows operating system, the migration is pretty straightforward. (There is a photo of the first boot here.) The main drawback is the keyboard, IMHO not really suitable for a developer, as you can see by the photo. is the half of a standard PC keyboard. My PC keyboard is able to sustain critical hit and butt, when I become irritable with an hostile piece of code, will the MAC keyboard survive? Despite it&#8217;s size, the MAC keyboard is confortable after all. Now is time to start development of  &#8220;something&#8221;, stay tuned for next post &#8230; bye bye</p>
]]></content:encoded>
			<wfw:commentRss>http://www.enfis.it/archives/28/feed</wfw:commentRss>
		</item>
		<item>
		<title>Trance music: Maor Levi rulez!</title>
		<link>http://www.enfis.it/archives/16</link>
		<comments>http://www.enfis.it/archives/16#comments</comments>
		<pubDate>Mon, 21 Jan 2008 10:57:04 +0000</pubDate>
		<dc:creator>Enfis The Paladin</dc:creator>
		
		<category><![CDATA[Music]]></category>

		<category><![CDATA[Personal]]></category>

		<category><![CDATA[genre]]></category>

		<category><![CDATA[levi]]></category>

		<category><![CDATA[maor]]></category>

		<category><![CDATA[myspace]]></category>

		<category><![CDATA[radio]]></category>

		<category><![CDATA[trance]]></category>

		<category><![CDATA[vocal]]></category>

		<guid isPermaLink="false">http://www.enfis.it/archives/16</guid>
		<description><![CDATA[I just want to show you a trance music composer on MySpace called Maor Levi. This young boy, at seventeen, has composed one of the best trance tune (IMHO) out there: a track called SHAPES! You can enter into his MySpace page and listen up the tune for free. I don&#8217;t know exactly why the [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">I just want to show you a <a href="http://en.wikipedia.org/wiki/Trance_music" title="Trance music on Wikipedia" target="_blank">trance music</a> composer on MySpace called <a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;friendid=52039312" title="Maor Levi on MySpace" target="_blank"><strong>Maor Levi</strong></a>. This young boy, at seventeen, has composed one of the best trance tune (IMHO) out there: a track called SHAPES! You can enter into <a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;friendid=52039312" title="Maor Levi on MySpace" target="_blank">his MySpace page</a> and listen up the tune for free. I don&#8217;t know exactly why the trance music isn&#8217;t so popular around the world, probably because it lacks on lyrics and sometimes it has &#8220;acid&#8221; sounds, like the <a href="http://en.wikipedia.org/wiki/Hard_trance" title="Hard trance on Wikipedia" target="_blank">hard trance</a>. By the way, I love this genre of music, even the <a href="http://en.wikipedia.org/wiki/Vocal_trance" title="Vocal trance on Wikipedia" target="_blank">Vocal Trance</a> which can be considered &#8220;commercial&#8221;. But &#8230; who cares? Ok, if you want waste a bit of time and follow my hint, make a trip into <a href="http://www.di.fm/" title="Digitally Imported" target="_blank">Digitally Imported Radio</a>: an Internet website that stream electronic music (trance, house, techno, hardcore, etc&#8230;) for free. Attached in this post you can find a video of another cool trance tune, <span>Deadmau5 - Arguru. Anyone out there love trance music as Enfis??? Please, let me know&#8230;</span></p>
<p><object width="425" height="373"><param name="movie" value="http://www.youtube.com/v/UzKyYt9Aw0U&#038;rel=1&#038;color1=0xd6d6d6&#038;color2=0xf0f0f0&#038;border=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/UzKyYt9Aw0U&#038;rel=1&#038;color1=0xd6d6d6&#038;color2=0xf0f0f0&#038;border=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="373"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.enfis.it/archives/16/feed</wfw:commentRss>
		</item>
		<item>
		<title>Android: 3D tunnel demo with OpenGL ES</title>
		<link>http://www.enfis.it/archives/14</link>
		<comments>http://www.enfis.it/archives/14#comments</comments>
		<pubDate>Thu, 17 Jan 2008 21:29:21 +0000</pubDate>
		<dc:creator>Enfis The Paladin</dc:creator>
		
		<category><![CDATA[Android]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[3d]]></category>

		<category><![CDATA[android]]></category>

		<category><![CDATA[asm]]></category>

		<category><![CDATA[buffer]]></category>

		<category><![CDATA[c]]></category>

		<category><![CDATA[demo]]></category>

		<category><![CDATA[effect]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[opengl]]></category>

		<category><![CDATA[surface]]></category>

		<category><![CDATA[tunnel]]></category>

		<guid isPermaLink="false">http://www.enfis.it/archives/14</guid>
		<description><![CDATA[As promised, here is my personal implementation of a small 3D tunnel demo in Android, with support of OpenGL ES. I have never coded in OpenGL ES before and the first impact was negative, shortly: I don&#8217;t like it! Compared with OpenGL (standard version), ES has some limitations, in particular on direct vertex handling. Crudely, [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><a title="3D tunnel demo (click to zoom)" rel="lightbox" href="http://www.enfis.it/wp-content/uploads/2008/01/android_tunnel3d.JPG"><img src="http://www.enfis.it/wp-content/uploads/2008/01/android_tunnel3d.thumbnail.JPG" alt="3D tunnel demo (click to zoom)" align="left" /></a>As promised, here is my personal implementation of a small 3D tunnel demo in <a title="Android platform" href="http://code.google.com/android/" target="_blank">Android</a>, with support of <a title="OpenGL ES reference" href="http://www.khronos.org/opengles/" target="_blank">OpenGL ES</a>. I have never coded in OpenGL ES before and the first impact was negative, shortly: I don&#8217;t like it! Compared with OpenGL (standard version), ES has some limitations, in particular on direct vertex handling. Crudely, the <a href="http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/begin.html" target="_blank">glBegin/glEnd</a> and <a href="http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/vertex.html" target="_blank">glVertex##</a> functions are missing. The intensive use of &#8220;<strong>buffers</strong>&#8221; (<a href="http://code.google.com/android/reference/java/nio/Buffer.html" target="_blank">java.nio.Buffer</a>) to render textures and primitives, with all it&#8217;s subclasses (<a href="http://code.google.com/android/reference/java/nio/ByteBuffer.html" target="_blank">ByteBuffer</a>,                              <a href="http://code.google.com/android/reference/java/nio/CharBuffer.html" target="_blank">CharBuffer</a>,                              <a href="http://code.google.com/android/reference/java/nio/DoubleBuffer.html" target="_blank">DoubleBuffer</a>,                              <a href="http://code.google.com/android/reference/java/nio/FloatBuffer.html" target="_blank">FloatBuffer</a>,                              <a href="http://code.google.com/android/reference/java/nio/IntBuffer.html" target="_blank">IntBuffer</a>,                              <a href="http://code.google.com/android/reference/java/nio/LongBuffer.html" target="_blank">LongBuffer</a> and                              <a href="http://code.google.com/android/reference/java/nio/ShortBuffer.html" target="_blank">ShortBuffer</a>), is a useless waste of time and memory, in my humble opinion. If you must dynamically build your 3D object, for example to make a morphing mesh like my tunnel, you&#8217;ll go crazy. In fact you should hold a copy of vertices in Java memory (for example a float[] array) and a copy of vertices in system memory (a <a href="http://code.google.com/android/reference/java/nio/ByteBuffer.html" target="_blank">ByteBuffer</a> object instantiated with <a href="http://code.google.com/android/reference/java/nio/ByteBuffer.html#allocateDirect(int)" target="_blank">allocateDirect</a>); then for each frame you must re-calculate the vertices and <a title="Blit terms came from Amiga times..." href="http://en.wikipedia.org/wiki/Bit_blit" target="_blank">blit</a> them from the array in Java memory to the buffer in system memory. What the fuck&#8230; Alternatively you can use the <a href="http://code.google.com/android/reference/java/nio/ByteBuffer.html#putFloat(int,%20float)" target="_blank">putFloat</a> method directly on the <a href="http://code.google.com/android/reference/java/nio/ByteBuffer.html" target="_blank">ByteBuffer</a> object, due to eliminate the Java array, but this is fucking slow compared with a single <a href="http://code.google.com/android/reference/java/nio/FloatBuffer.html#put(float[])" target="_blank">put</a> method call. I haven&#8217;t spent so much time on this topic, probably exists a &#8220;cool&#8221; method to eliminate that <a title="Blit terms came from Amiga times..." href="http://en.wikipedia.org/wiki/Bit_blit" target="_blank">blit</a> phase, please leave me a comment if you knows. <em>I am almost sure, to speed-up an OpenGL system on a mobile device, the best way is hold 3D engine data in system memory, that&#8217;s the reason of buffers use.</em> An easy task instead, is hooking the OpenGL surface with a <a href="http://code.google.com/android/reference/android/view/View.html" target="_blank">View</a> object. You can also render your OpenGL scene and then write some graphics using the <a href="http://code.google.com/android/reference/android/graphics/Canvas.html" target="_blank">Canvas</a> methods on the same surface: <strong>COOL </strong> <img src='http://www.enfis.it/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Next time I&#8217;ll do further experiments on OpenGL ES, maybe I&#8217;m wrong.</p>
<p align="justify">Ok, attached in this post you&#8217;ll find the complete source code of my 3D tunnel. Code is not very clean and commented, but you can take a look if you wish: feel free to download and use it. Please, leave me a comment: your ideas will be appreciated!</p>
<blockquote><p><em> Used Eclipse IDE with Android SDK version m3-rc37a (Windows system)</em></p>
<p align="justify"><a title="Download the source code" href="http://www.enfis.it/wp-content/uploads/2008/01/tunnel3d.zip"><img src="http://www.enfis.it/wp-content/uploads/2008/01/winzip_75x75.jpg" alt="winzip_75x75.jpg" align="absmiddle" /> Download 3D tunnel demo source code (618 Kb)</a></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.enfis.it/archives/14/feed</wfw:commentRss>
		</item>
		<item>
		<title>Android - Enfis  1-0</title>
		<link>http://www.enfis.it/archives/10</link>
		<comments>http://www.enfis.it/archives/10#comments</comments>
		<pubDate>Tue, 15 Jan 2008 21:03:37 +0000</pubDate>
		<dc:creator>Enfis The Paladin</dc:creator>
		
		<category><![CDATA[Android]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[android]]></category>

		<category><![CDATA[asm]]></category>

		<category><![CDATA[c]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[j2me]]></category>

		<category><![CDATA[opengl]]></category>

		<guid isPermaLink="false">http://www.enfis.it/archives/10</guid>
		<description><![CDATA[Yes, my first (serious) attempt on  platform from Open Handset Alliance  and Google was a failure! Android beats Enfis 1-0! Incredible, I&#8217;ve coded for Gameboy Advanced, XBOX, Java 2 Micro Edition, PlayStation Portable with success &#8230; while Android not! Please man, don&#8217;t mess with me, I know that Android platform is cool and [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, my first (serious) attempt on <a href="http://code.google.com/android/" target="_blank"><img src="http://www.enfis.it/wp-content/uploads/2008/01/android.gif" alt="android.gif" /></a> platform from <a href="http://www.openhandsetalliance.com/index.html" title="The creators of Android" target="_blank">Open Handset Alliance</a>  and Google was a failure! Android beats Enfis 1-0! Incredible, I&#8217;ve coded for Gameboy Advanced, XBOX, Java 2 Micro Edition, PlayStation Portable with success &#8230; while Android not! Please man, don&#8217;t mess with me, I know that Android platform is cool and really easy to use but today I was not able to clear my screen (a <a href="http://code.google.com/android/reference/android/view/SurfaceView.html" target="_blank">SurfaceView</a> object), in a separate thread, using <a href="http://www.khronos.org/opengles/" target="_blank">OpenGL ES</a>. I don&#8217;t know if my Java language speaking is so crappy, honestly I&#8217;m a &#8220;low-lever&#8221; and &#8220;old-schooler&#8221; coder (Asm/C/C++), but I fell embarassed for this. Ok, within next 3-4 days, I&#8217;ll try to code a small 3D tunnel demo using OpenGL ES and Android. Now, I&#8217;ve got my mission, see you soon, stay tuned&#8230;</p>
<blockquote><p><em>PS - Eclipse IDE really sux compared with NetBeans.</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.enfis.it/archives/10/feed</wfw:commentRss>
		</item>
		<item>
		<title>J2ME: how detect Bluetooth API optional package (JSR 82)</title>
		<link>http://www.enfis.it/archives/9</link>
		<comments>http://www.enfis.it/archives/9#comments</comments>
		<pubDate>Fri, 11 Jan 2008 23:13:28 +0000</pubDate>
		<dc:creator>Enfis The Paladin</dc:creator>
		
		<category><![CDATA[J2ME]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[api]]></category>

		<category><![CDATA[bluetooth]]></category>

		<category><![CDATA[j2me]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[java 2 micro edition]]></category>

		<category><![CDATA[jsr82]]></category>

		<guid isPermaLink="false">http://www.enfis.it/archives/9</guid>
		<description><![CDATA[Sometimes, with a J2ME application, you must detect if the Bluetooth API optional package (JSR 82) is available on target device. For example to dynamically enable or disable networking capabilities of your videogame or to block with an error message, prior execution, your Bluetooth based application. In fact, a J2ME midlet terminates dramatically, if it [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes, with a J2ME application, you must detect if the <a href="http://jcp.org/en/jsr/detail?id=82" title="JSR 82 - Java API for Bluetooth" target="_blank">Bluetooth API optional package (JSR 82)</a> is available on target device. For example to dynamically enable or disable networking capabilities of your videogame or to block with an error message, prior execution, your Bluetooth based application. In fact, a J2ME midlet terminates dramatically, if it call an unsupported class or package. Due to the optional nature of this package, I&#8217;ve written a small piece of code to detect if the Bluetooth API is available or not on target device. Here is my personal code snippet, embedded in a small MIDlet example. Please leave me a comment if you get troubles or if you have a better solution:</p>
<pre class="brush: java">
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class MMain extends MIDlet implements CommandListener
{
private Form form;

  // Check if Bluetooth API optional package (JSR 82) is present.
  public static boolean hasBluetoothAPI ()
  {
    try
      {
        Class.forName (&quot;javax.bluetooth.LocalDevice&quot;);
        return true;
      }
    catch (Exception _ex)
      {
        return false;
      }
  }

  // Return the Bluetooth API version of this device, null if API is not present...
  public static String verBluetoothAPI ()
  {
  // Initialize return value...
    String version = null;
  // First try with the &quot;System.getProperty&quot; method...
    try
      {
        version = System.getProperty (&quot;bluetooth.api.version&quot;);
      }
    catch (Exception _ex)
      {
      }
  // Make sure version returned is correct...
    if ((version != null) &amp;&amp; !validVersion (version)) version = null;
  // Then try with the &quot;LocalDevice.getProperty&quot; method, if needed...
    if ((version == null) &amp;&amp; hasBluetoothAPI ())
      {
      // Here we are sure that BT API is present...
        try
          {
            version = javax.bluetooth.LocalDevice.getProperty (&quot;bluetooth.api.version&quot;);
          }
        catch (Exception _ex)
          {
          }
      // Make sure version returned is correct...
        if ((version != null) &amp;&amp; !validVersion (version)) version = null;
      }

  // Finish!
    return version;
  }

  // Check if version string *COULD* be valid...
  protected static boolean validVersion (String version)
  {
    return (version.length () &gt; 0) &amp;&amp; !version.equalsIgnoreCase (&quot;null&quot;);
  }

  public MMain ()
  {
    form = new Form (&quot;Bluetooth detect&quot;);
    form.addCommand (new Command (&quot;Exit&quot;, Command.EXIT, 1));
    form.setCommandListener (this);
  }

  public void startApp ()
  {
    String ver = verBluetoothAPI ();
    form.append (&quot;Bluetooth API: &quot; + (hasBluetoothAPI () ? &quot;present&quot; : &quot;not present&quot;));
    form.append (&quot;\r\nAPI version: &quot; + ((ver == null) ? &quot;(none)&quot; : ver));
    Display.getDisplay (this).setCurrent (form);
  }

  public void pauseApp ()  {}
  public void destroyApp (boolean unconditional)  {}
  public void commandAction (Command arg0, Displayable arg1)
  {
    notifyDestroyed ();
  }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.enfis.it/archives/9/feed</wfw:commentRss>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://www.enfis.it/archives/1</link>
		<comments>http://www.enfis.it/archives/1#comments</comments>
		<pubDate>Thu, 10 Jan 2008 17:44:47 +0000</pubDate>
		<dc:creator>Enfis The Paladin</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[hello]]></category>

		<category><![CDATA[world]]></category>

		<guid isPermaLink="false">http://localhost/?p=1</guid>
		<description><![CDATA[Yes, this is the first post of my blog  WordPress correctly mark the first post as &#8220;Hello world&#8221;, when installed. Every blog should begin with an &#8220;Hello world&#8221; post, when the blogger is a developer, this becomes a MUST! Here is what Wikipedia says about &#8220;Hello world&#8221; and this link contains over 300+ code [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, this is the first post of my blog <img src='http://www.enfis.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> WordPress correctly mark the first post as &#8220;Hello world&#8221;, when installed. Every blog should begin with an &#8220;Hello world&#8221; post, when the blogger is a developer, this becomes a <strong>MUST</strong>! Here is what Wikipedia says about &#8220;<a href="http://en.wikipedia.org/wiki/Hello_world" title="Hello world on wikipedia..." target="_blank">Hello world</a>&#8221; and <a href="http://www.roesler-ac.de/wolfram/hello.htm" title="300+ modes to write an " target="_blank">this link</a> contains over 300+ code fragments of &#8220;Hello world&#8221;. As you can see these two words (&#8221;hello&#8221; and &#8220;world&#8221;) are very important for every developer.</p>
<p>Well, you&#8217;ll flee in a second if you aren&#8217;t a developer, because in this blog I&#8217;ll talk about hardware, software, programming, technology, hi-tech and all those boring topics about computers&#8230; Otherwise, stay tuned, I&#8217;ll write something about my work and my life, in short: <strong>the history of an Italian developer</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.enfis.it/archives/1/feed</wfw:commentRss>
		</item>
		<item>
		<title>La morte dei PC, la nascita dei PDA: teoria Enfis</title>
		<link>http://www.enfis.it/archives/7</link>
		<comments>http://www.enfis.it/archives/7#comments</comments>
		<pubDate>Mon, 07 Aug 2006 23:00:32 +0000</pubDate>
		<dc:creator>Enfis The Paladin</dc:creator>
		
		<category><![CDATA[Italiano (Italian language)]]></category>

		<category><![CDATA[cellular]]></category>

		<category><![CDATA[computers]]></category>

		<category><![CDATA[italian]]></category>

		<category><![CDATA[italiano]]></category>

		<category><![CDATA[mobile]]></category>

		<category><![CDATA[mobile phone]]></category>

		<category><![CDATA[pc]]></category>

		<category><![CDATA[personal computer]]></category>

		<category><![CDATA[phone]]></category>

		<category><![CDATA[telephone]]></category>

		<guid isPermaLink="false">http://www.enfis.it/archives/7</guid>
		<description><![CDATA[Intro
Ebbene si, cari lettori, da oggi dichiaro ufficialmente morto il buon vecchio PC (Personal Computer)! Lo strumento che ci ha accompagnato (almeno) per una parte della nostra vita, che ci ha fatto sognare con i suoi giochi, impressionare con i suoi applicativi ed arrabbiare con i suoi continui errori, oggi è dichiarato ufficialmente morto dal [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Intro<br />
</strong>Ebbene si, cari lettori, da oggi dichiaro ufficialmente morto il buon vecchio <a href="http://it.wikipedia.org/wiki/Personal_computer" target="_blank" title="I personal computer"><u><font color="#0000ff">PC (Personal Computer)</font></u></a>! Lo strumento che ci ha accompagnato (almeno) per una parte della nostra vita, che ci ha fatto sognare con i suoi giochi, impressionare con i suoi applicativi ed arrabbiare con i suoi continui errori, oggi è dichiarato ufficialmente morto dal sottoscritto. La datazione esatta della sua morte coincide con l&#8217;uscita della tecnologia <a href="http://it.wikipedia.org/wiki/J2ME" target="_blank" title="Java 2 Micro Edition"><u><font color="#0000ff">J2ME (Java 2 Micro Edition)</font></u></a> per telefoni cellulari (2001): quel giorno, nel mondo, qualcosa è cambiato. Non disperiamo però, a seguito di un decesso c&#8217;è sempre una nuova nascita, è il ciclo della vita non si può evitare, ed il neonato si chiama <a href="http://it.wikipedia.org/wiki/PDA" target="_blank" title="PDA"><u><font color="#0000ff">PDA (Personal Digital Assistant)</font></u></a>. Devo precisare subito una cosa molto importante, io intendo il PDA come il &#8220;<em>telefono cellulare</em>&#8221; e/o lo &#8220;<em><a href="http://it.wikipedia.org/wiki/Smartphone" target="_blank" title="Gli smartphone"><u><font color="#0000ff">smartphone</font></u></a></em>&#8220;, ossia quel <strong>telefono cellulare che ha anche funzioni simil-palmare</strong>, attenzione notate bene il grassetto della frase precedente, non ha nulla a che fare con &#8220;<em>palmari che hanno anche funzioni di telefono cellulare&#8221;</em>. La differenza è sottile, ma fondamentale: i palmari (<a href="http://it.wikipedia.org/wiki/Pocket_PC" target="_blank" title="PocketPC"><u><font color="#0000ff">PocketPC</font></u></a>, <a href="http://it.wikipedia.org/wiki/Palm_OS" target="_blank" title="PalmOS"><u><font color="#0000ff">PalmOS</font></u></a>, <a href="http://it.wikipedia.org/w/index.php?title=BlackBerry&amp;action=edit" title="BlackBerry"><u><font color="#0000ff">BlackBerry</font></u></a>) hanno già ripercorso gli stessi identici errori commessi dai PC nel passato, si sono destreggiati in modo maldestro sin dal principio, hanno creato una piattaforma di sviluppo troppo confusionaria e vaga, il che ha segnato il loro destino inesorabilmente!<br />
Ora se siete curiosi di seguire la mia autopsia del PC e capire perchè sia morto continuate a leggere, altrimenti se credete che sia un pazzo, chiamate la croce verde e chiudete il browser&#8230;</p>
<p><span id="more-7"></span><strong>Preambolo</strong><br />
E&#8217; chiaro che i PC non siano già morti ne lo faranno domani, ovviamente la mia era solo una provocazione, diciamo però che nell&#8217;immediato futuro PDA e PC procederanno in parallelo: i PDA stanno iniziando a brillare ora, mentre i PC si stanno pian piano spegnendo, dando però ancora il loro prezioso supporto in questa delicata fase. E&#8217; inutile nascondersi dietro un dito: il mondo informatico sta affrontando una crisi mai vista prima! Sono almeno 5 anni che si è in una fase di stasi generale, i processori non progrediscono, le architetture hardware si complicano, il software importante non viene sviluppato e i veri programmatori informatici ormai non si trovano più: tutti hanno paura di osare! La colpa non è di nessuno, il problema focale è l&#8217;enorme complessità che il software ha raggiunto, e noi esseri umani non siamo in grado di gestire una simile quantità di informazioni, altrimenti saremmo degli <a href="http://it.wikipedia.org/wiki/Robot" target="_blank" title="I Robot"><u><font color="#0000ff">automi</font></u></a>! E&#8217; evidente quindi che doveva succedere qualcosa per smuovere le acque, è una sensazione che circola nell&#8217;aria da anni, ed è normale che le persone del settore più acute se ne siano accorte da tempo: l&#8217;avvento dei PDA. Se non si riesce a progredire verso una direzione, è inutile infossarsi nello stesso punto, tanto vale aprire un nuovo varco. Ora c&#8217;è la possibilità di crescere una piattaforma informatica ex-novo stando bene attenti a non ricadere negli stessi errori che sono stati commessi nei PC; e poi finalmente una ricca dose di ossigeno puro all&#8217;industria informatica, dove piccole entità possono rimettersi in gioco e grandi aziende devono ridimensionare i loro attributi: equilibrio, signori miei, equilibrio. <strong>Si apre un settore nuovo dove il numero di apparati venduti supera addirittura il numero della popolazione in circa 30 paesi del mondo (Italia in testa)!</strong> Considerate un&#8217;azienda medio-grande che ha enormi spese e deve dedicarsi esclusivamente agli introiti, dove credete che concentrerà i propri sforzi, su un mercato ultra-saturo moribondo (PC) o su uno in evidente crescita che darà il pane a tutti i bambini del mondo nel prossimo futuro (PDA)? Allora si deve investire solo su questa nuova tecnologia e i PC vedranno il proprio ruolo completamente stravolto, anche se non moriranno del tutto come avvenne negli anni passati ai vari <a href="http://it.wikipedia.org/wiki/Commodore_64" target="_blank" title="Commodore 64"><u><font color="#0000ff">Commodore 64</font></u></a>, <a href="http://it.wikipedia.org/wiki/Amiga" target="_blank" title="Commodore Amiga"><u><font color="#0000ff">Commodore Amiga</font></u></a>, e via dicendo. I PC diventeranno invece un settore di nicchia dove solo pochi professionisti si applicheranno, mentre il mercato end-user (ossia dell&#8217;utente finale), sposterà il proprio baricentro verso i PDA &#8230; e credetemi, sono gli utenti finali a dettare le regole del mercato, non la <a href="http://it.wikipedia.org/wiki/Microsoft" target="_blank" title="I cancelli del diavolo"><u><font color="#0000ff">Microsoft</font></u></a> come tutti credono! <u>I PC sostituiranno i server odierni e i PDA sostituiranno gli attuali PC casalinghi, slitterà una generazione in pratica.</u> I conservatori a questo punto possono pensare &#8220;s<em>i ma i PC non moriranno mai, sono essenziali</em>&#8220;, bhe amici miei è possibile, ma è la stessa cosa che pensavano gli addetti ai <a href="http://it.wikipedia.org/wiki/Mainframe" target="_blank" title="Il Mainframe"><u><font color="#0000ff">mainframe</font></u></a> negli anni &#8216;70, e guardacaso oggi troviamo questi reperti archeologici solo nei musei: sono stati rimpiazzati dai PC infatti! Qualche mainframe si è evoluto ed ancora oggi viene utilizzato, ma è una sopravvivenza forzata, ed in realtà non tiene il passo del progresso tecnologico. Il ruolo dei mainframe e dei PC era completamente differente negli anni &#8216;70: il mainframe era bello, pulito, profumato, aveva una potenza di calcolo esorbitante, riusciva a servire un certo numero di utenti contemporaneamente ed occupava una stanza intera; i PC invece erano brutti, sporchi, puzzavano, avevano risorse molto limitate per un singolo utente casalingo ed occupavano solo mezza scrivania. Paragonare PC e PDA oggi ha la stessa valenza di allora (PC &lt;-&gt; mainframe), i PDA infatti sono molto limitati rispetto ai PC, hanno una potenza di calcolo inferiore, un display ridotto ed entrano nel solo palmo di una mano: l&#8217;analogia mi sembra cristallina, non so di quale altro segnale avete bisogno, devono forse piovere rane dal cielo? Ma cerchiamo ora di analizzare in dettaglio i motivi reali che hanno portato la &#8220;morte&#8221; del magnifico personal computer, che resta comunque il miglior sistema mai prodotto, durato ben 25 anni (fino ad oggi), il più longevo in assoluto e con la più fornita biblioteca software mai vista&#8230;</p>
<p><strong>Architettura dei PC (Hardware)</strong><br />
Dunque (sintesi Enfis), l&#8217;architettura hardware dei PC casalinghi è un grandissimo bordello! Analizziamo solo le 2 architetture più recenti e attuali, ossia la <a href="http://it.wikipedia.org/wiki/Architettura_X86" target="_blank" title="Intel 80x86"><u><font color="#0000ff">x86</font></u></a> (usata nei <a href="http://it.wikipedia.org/wiki/PC_IBM" target="_blank" title="Il PC IBM"><u><font color="#0000ff">PC IBM</font></u></a>) e il <a href="http://it.wikipedia.org/wiki/PowerPC" target="_blank" title="Power PC"><u><font color="#0000ff">PowerPC</font></u></a> (usato nei <a href="http://it.wikipedia.org/wiki/Apple_Macintosh" target="_blank" title="Apple Macintosh"><u><font color="#0000ff">Macintosh</font></u></a> o solo Mac), anche se meriterebbe di essere citato il mitico <a href="http://it.wikipedia.org/wiki/Amiga" target="_blank" title="Il mitico commodore amiga"><u><font color="#0000ff">Commodore Amiga</font></u></a> che è stato il vero precursore dell&#8217;era moderna. Come sappiamo, se decidiamo di scrivere un programma per il PC IBM, questo non funzionerà su Mac, e viceversa: le 2 architetture sono infatti totalmente diverse a livello hardware, hanno set di istruzioni completamente differenti e inoltre uno è di tipo <a href="http://it.wikipedia.org/wiki/Risc" target="_blank" title="Architettura RISC"><u><font color="#0000ff">RISC</font></u></a> (Mac) e uno di tipo <a href="http://it.wikipedia.org/wiki/CISC" target="_blank" title="Architettura CISC"><u><font color="#0000ff">CISC</font></u></a> (PC IBM); il <a href="http://it.wikipedia.org/wiki/Linguaggio_macchina" target="_blank" title="Codice macchina o linguaggio macchina"><u><font color="#0000ff">codice macchina</font></u></a> di un processore non può funzionare su uno totalmente diverso</p>
<blockquote><p>Non è solo il processore e il codice macchina il problema, Mac e PC IBM hanno infatti sistemi operativi totalmente diversi che offrono servizi e funzionalità differenti, anche se molto simili, che i software <strong>devono</strong> comunque utilizzare durante l&#8217;esecuzione, non potrebbero farne a meno. A complicare ulteriormente le cose poi, la mazzata finale: diverse versioni di identici sistemi operativi non sono compatibili tra di loro, basti pensare ad esempio, che tra Windows 95 e Windows XP c&#8217;è un abisso infernale a livello sicurezza. Ma torniamo all&#8217;hardware&#8230;</p></blockquote>
<p>Prendiamo il PC IBM, cioè il più venduto in assoluto. Attualmente abbiamo il duopolio Intel-AMD per i processori della famiglia x86 dei PC IBM. Le 2 aziende hanno creato inizialmente processori con il set di istruzioni a numeri interi, il set di istruzioni <a href="http://it.wikipedia.org/wiki/Intel_8087" target="_blank" title="Co-processore matematico"><u><font color="#0000ff">floating point</font></u></a> e il set di istruzioni <a href="http://it.wikipedia.org/wiki/MMX" target="_blank" title="MultiMedia eXtensions"><u><font color="#0000ff">MMX</font></u></a> in comune tra loro e standard (buono). Ciò significava che il codice macchina scritto, funzionava indifferentemente sia su Intel che su AMD. Poi (ora ci si diverte) nel progredire, Intel e AMD ad un certo punto hanno preso 2 strade differenti, ognuna personalizzando il proprio set di istruzioni, rendendo così i processori incompatibili tra di loro: per la Intel è nato il set di istruzioni <a href="http://it.wikipedia.org/wiki/SSE" target="_blank" title="Streaming SIMD Extensions"><u><font color="#0000ff">SSE</font></u></a>, seguito da il set di istruzioni <a href="http://it.wikipedia.org/wiki/SSE2" target="_blank" title="Streaming SIMD Extensions 2"><u><font color="#0000ff">SSE2</font></u></a> e infine il set di istruzioni <a href="http://it.wikipedia.org/wiki/SSE3" target="_blank" title="Streaming SIMD Extensions 3"><u><font color="#0000ff">SSE3</font></u></a>; per l&#8217;AMD è nato il set di istruzioni <a href="http://it.wikipedia.org/wiki/3DNow%21" target="_blank" title="3DNow!"><u><font color="#0000ff">3DNow!</font></u></a>, poi il set di istruzioni <a href="http://www.lithium.it/articolo0026p6.htm" target="_blank" title="3DNow! Ex"><u><font color="#0000ff">Enhanced 3DNow!</font></u></a> e infine ci stravolge tutto con la nuova architettura <a href="http://it.wikipedia.org/wiki/AMD64" target="_blank" title="Architettura x64"><u><font color="#0000ff">x64</font></u></a> (anche nota come AMD64)! <em>A questo punto, il codice macchina non può essere più scambiato tra Intel e AMD come in precedenza, se si intende usare uno di questi nuovi set di istruzioni!</em> Ah ah ah ah ah ah ah ah ah, madonna mia, anche i non addetti ai lavori si rendono conto del caos che regna sovrano nei PC IBM della famiglia x86! Ma la cosa ancora più scandalosa, è che questi set di istruzioni offrono sì, una potenza di calcolo impressionate ai sistemi sovrastanti, <strong>ma</strong> <strong>che</strong> <strong>i software effettivamente non sfruttano (e non possono sfruttare), se non in pochi rarissimi casi!</strong> Bisogna infatti scrivere blocchi di <a href="http://it.wikipedia.org/wiki/Assembly" target="_blank" title="Codice macchina"><u><font color="#0000ff">codice assembly</font></u></a> appositamente per il processore Intel oppure appositamente per il processore AMD (oppure usare una libreria esterna che ne fa uso), per sfruttare tutta la potenza delle CPU, altrimenti gran parte delle funzionalità ottimizzate offerte, non verranno mai utilizzate in automatico! Oggi come oggi è già un miracolo trovare un programmatore che è in grado di utilizzare ed utilizza il linugaggio assembly, figuriamoci poi se deve scrivere le stesse <a href="http://it.wikipedia.org/wiki/Subroutine" target="_blank" title="Routine assembly"><u><font color="#0000ff">routine</font></u></a> 2-3 volte per le possibili diverse configurazioni dei PC target (1 versione che funzioni per AMD 3DNow, 1 per Intel SSE ed 1 generica per precedenti processori): questo è un vero passo indietro! Senza considerare poi l&#8217;enorme costo in termini di tempo di sviluppo per mettere su un softwarino del genere. <strong>Putroppo la gente comune questa realtà non la conosce!</strong> E&#8217; davvero una situazione incredibile ed imbarazzante, tutta quella potenza hardware sfruttata malissimo e occasionalmente, è un po come avere il pisello di <a href="http://it.wikipedia.org/wiki/Rocco_Siffredi" target="_blank" title="Il mio eroe Rocco Siffredi"><u><font color="#0000ff">Rocco &#8220;Tano&#8221; Siffredi</font></u></a> e poi essere un gay passivo (applausi per l&#8217;analogia :D)! Negli ultimi (pochi) anni sia AMD che Intel si sono rese conto che questa strana situazione che hanno creato non andava bene per il progresso dell&#8217;umanità ed hanno iniziato a standardizzarsi tra di loro: infatti ora set di istruzioni 3DNow! e SSE coesistono insieme nei nuovi processori delle rispettive case (anche se con una serie infinita di problemi di compatibilità e di velocità) e si sono messe d&#8217;accordo persino sulla nuova architettura x64 (quasi scende la lacrima). Infine l&#8217;esempio più emblematico della forte inversione di tendenza delle case produttrici, è stato la Apple che ha deciso di inglobare nel suo Mac anche l&#8217;architettura x86 di Intel (che ha sempre odiato, ripudiato ed ostacolato)! Sicuramente queste manovre sono onorevoli e calibrate, ma a mio avviso sembra più un ultimo colpo di reni di un lottatore ormai allo stremo delle forze. La realtà è che questa produzione dissennata di nuove soluzioni portata avanti per anni, ci ha fatto raggiungere una complessità hardware tale, da spaventare e fuorviare lo sviluppatore finale che ad un certo punto ha deciso di infischiarsene di tutti questi continui cambiamenti repentini. Oggi abbiamo una vasta gamma di diverse architetture nello stesso processore, è difficile sceglierne una, per cui si preferisce sempre la soluzione più semplice, ossia ignorarle tutte quante: in pratica è come quando si entra in una gelateria che conta 300 e più gusti ed alla fine tutti scelgono sempre crema, cioccolato e panna. Inoltre il software è ormai andato troppo avanti e scrivere oggi codice in assembly è considerata come una bestemmia agli occhi del Signore, quindi tutti se ne guardano bene dal farlo. Quindi tutta questa costruzione fatta sino ad oggi in realtà resta inutilizzata. Mi viene da ridere quando leggo le nuove soluzioni dei processori <a href="http://it.wikipedia.org/wiki/Dual_core" target="_blank" title="Il dual core"><u><font color="#0000ff">dual-core</font></u></a>, <a href="http://it.wikipedia.org/wiki/Quad_core" target="_blank" title="Il quadri core"><u><font color="#0000ff">quadri-core</font></u></a> e multi-core in genere, che nascono solamente per l&#8217;impossibilità di salire con la frequenza di clock, ossia mettere nello stesso chip 2, 4 o più processori distinti in parallelo. Consideriamo per ora, per semplicità, solo il set di istruzioni a numeri interi di ordine generale, che in sostanza è quello vitale che deve per forza essere usato in ogni programma, anche se come sappiamo ne esistono diversi: fixed point (numeri interi), floating point (virgola mobile), MMX (fixed point vettoriali), 3DNow! (floating point vettoriali), SSE (floating point vettoriali). Come diavolo si fanno a parallelizzare le istruzioni di 2, 4 o più processori, se il programma medio non <strong>sa</strong> neanche accoppiare le 2 <a href="http://it.wikipedia.org/wiki/Pipeline_dati" target="_blank" title="La pipeline"><u><font color="#0000ff">pipeline</font></u></a> di un singolo processore? Eh già avete letto bene, 2 pipeline, perchè ogni singolo processore già oggi è in grado di eseguire 2 istruzioni su numeri interi in parallelo, per singolo ciclo di clock, a patto che esse rispettino alcuni requisiti fondamentali. A regime quindi, con un quadri-core, si potrebbero eseguire ben 8 istruzioni intere a volta (4 core x 2 pipeline = 8 istruzioni) per singolo ciclo di clock, ipotizzando che ogni core (processore) mantenga le sue caratteristiche attuali: ma voi credete che si riesca mai a sfruttare tanto parallelismo? Io ho programmato per anni in assembler sul <a href="http://it.wikipedia.org/wiki/Pentium" target="_blank" title="Il Pentium"><u><font color="#0000ff">Pentium I</font></u></a>, quindi già dotato delle 2 pipeline intere (la pipe &#8220;U&#8221; completa e la pipe &#8220;V&#8221; limitata), e vi garantisco che era già un impresa riuscire ad accoppiare 2 istruzioni nel 50% dei casi, spendendo delle ore a ragionare sulla loro disposizione! Figuriamoci poi se questa operazione di ottimizzazione viene affidata ad una componente software invece che alla mente umana! Per i profani &#8230; comprare un quadri-core equivale a comprare 4 distinti processori e metterli assieme sulla stessa scheda madre, e nella sostanza i programmi vanno a sfruttare (al massimo) 1 sola CPU perchè sono stati creati per comportarsi così <img src='http://www.enfis.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Malgrado il meccanismo di accoppiamento delle istruzioni <u>dovrebbe avvenire</u> in automatico, ma non lo fa, ossia la CPU decide da se quale blocco di codice prelevare e indirizzare su un determinato core; questo automatismo in ogni caso non potrà mai fuzionare da solo al 100%, deve assolutamente giungere l&#8217;intervento dell&#8217;essere umano! L&#8217;unico modo è quindi scrivere programmi <a href="http://it.wikipedia.org/wiki/Multi-thread" target="_blank" title="Il multi-threading"><u><font color="#0000ff">multi-thread</font></u></a> appositamente studiati per processori dual/quadri/multi-core, in pratica è il software che deve essere progettato a favore dell&#8217;hardware: altro livello di complessità, altro spreco di tempo superfluo, altra architettura fallita ed inutilizzata! Inoltre le librerie di terze parti usate per le ottimizzazioni di questi tipi di processori, sono già pre-confezionate e non possono adattarsi ad ogni singola esigenza specifica e francamente io non immagino nessuno oggi che si metta li ad ottimizzare qualche miliardo di riga di codice in linguaggio assembly a mano! Quindi tali processori non saranno mai sfruttati del tutto (una novità???) e in questi esempi non abbiamo considerato un fattore molto importante, ossia che ogni singolo processore è in grado di eseguire 2 istruzioni intere + 1 floating point/MMX/3DNow! + 1 SSE in un singolo ciclo di clock, offrendo la virtuale possibilità di eseguire su un quadri-core ben <u>16 istruzioni in parallelo per ogni singolo ciclo di clock</u>: un totale di circa <strong>64 MILIARDI DI OPERAZIONI AL SECONDO</strong> (con CPU clockata a 4 Ghz), non so voi, ma a me sta venendo da vomitare! Vi garantisco che è una potenza tale da poter essere considerata fantascienza, difatti la CPU impiegherebbe una frazione di secondo per scorrere un intero filamento di DNA umano, che vanta circa 3 <a href="http://it.wikipedia.org/wiki/Gigabyte" target="_blank" title="Il gigabyte"><u><font color="#0000ff">gigabyte</font></u></a> di informazioni, ottimizzando ovviamente tutto il codice sorgente sino alla morte.<br />
<strong>Carissimi lettori, come vedete, il PC è nel marasma più totale, neanche tra le cosce di </strong><a href="http://it.wikipedia.org/wiki/Cicciolina" target="_blank" title="Ilona Staller"><strong><u><font color="#0000ff">Cicciolina</font></u></strong></a><strong> c&#8217;è mai stata tanta confusione! </strong>Il vero problema di questa estrema eterogeneità hardware che abbiamo oggi, deriva dal fatto che tutti i PC moderni si reggono sulle fondamenta di architetture vecchie di 20 e più anni: è come voler costruire un grattacielo di 200 piani su una domus Romana del 350 d.C.! Inoltre questi sono i primi veri computer che progrediscono a tal punto, una sorta di esperimento, non possiamo neanche più considerarli CISC (sono un ibrido tra CISC e RISC). Però ora non si può, dal giorno alla notte, togliere di mezzo la famiglia x86 in maniera radicale e creare una piattaforma PC ex-novo per risolvere tutti i problemi che ci affliggono: il bagaglio software di oltre 30 anni di attività andrebbe completamente cestinato e questo non è accettabile! Quindi ci ritroviamo con programmi scritti in maniera &#8220;egoista&#8221; che non sfruttano <strong>e non possono sfruttare</strong> le reali potenzialità hardware di cui dispongono, per cui si concentrano esclusivamente sul loro problema da risolvere: colpa appunto dell&#8217;eterogeneità nello strato inferiore e nell&#8217;impossibilità di seguire tutte queste evoluzioni hardware. Una programmazione attenta e oculata poteva avvenire qualche anno fa, quando l&#8217;hardware non era eccessivamente complesso e i software erano relativamente semplici, oggi sarebbe davvero impossibile, e quindi ci si affida esclusivamente alle ottimizzazioni dei compilatori o a librerie di terze parti; liberando il programmatore dallo scrivere codice in linguaggio macchina. Fino ad oggi problemi con questo atteggiamento non ce ne sono mai stati, tanto si era consapevoli che nel breve termine i processori avrebbero raddoppiato la propria potenza di calcolo. Il fatto stesso che un software in corso d&#8217;opera nel momento dell&#8217;uscita sul mercato si ritrovava con l&#8217;hardware completamente stravolto, fa capire come progrediva velocemente l&#8217;architettura x86 rispetto ai programmi. Ora però sta avvenendo il contrario, l&#8217;hardware regredisce (secondo me aggiungere core è una regressione) e il software non intende (e non può) fare un passettino indietro! Sarà un luogo comune il mio, ma il commodore 64 per quanto antico e preistorico fosse, aveva tutte le sue risorse hardware sfruttate ad oltre il 100%. Oggi i programmatori non possono curarsi di questi problemi tecnici altrimenti uscirebbe un software ogni 100 anni. Allora in molti si stanno chiedendo &#8220;<em>come diavolo ce ne usciamo da questa situazione?</em>&#8220;. Bhe di certo io non ho la soluzione al problema, ho solo la mia idea che reputo molto plausibile, ed è che i PC tendano pian piano a spegnersi a favore di nuove scenografie più semplici e compatte: i PDA attualmente mi sembrano il miglior candidato! Però andiamo a vedere anche come si è mosso il software PC negli anni&#8230;</p>
<p><strong>Sviluppo sui PC (Software)</strong><br />
Ripercorro brevemente la storia degli strumenti di sviluppo software dei computer&#8230;</p>
<ol>
<li>In principio c&#8217;era il <a href="http://it.wikipedia.org/wiki/Linguaggio_macchina" target="_blank" title="Il codice macchina"><u><font color="#0000ff">codice macchina</font></u></a> e le <a href="http://it.wikipedia.org/wiki/Schede_perforate" target="_blank" title="Le schede perforate"><u><font color="#0000ff">schede perforate</font></u></a>! Gli sviluppatori scrivevano il loro codice macchina su delle schede in cartone che, una volta terminate di forare, mandavano in pasto ai computer. Essi elaboravano il programma inserito e secoli dopo restituivano il risultato di operazioni semplicissime come addizioni, sottrazioni, divisioni e moltiplicazioni. Sviluppatore e utente finale erano la stessa persona, ma non possiamo ancora parlare concretamente di Informatica. Gli sviluppatori, a quei tempi, avevano una sorta di aura oscura che gli girava attorno al corpo ed era credenza popolare che fossero demoni venuti dagli inferi per dominare il mondo &#8230; in realtà erano solamente i coglioni che gli fumavano e creavano questo alone. Livello di difficoltà: nightmare.</li>
<li>Col progresso hardware arrivano tastiera, monitor e addirittura la stampante, entrando così nell&#8217;era dello sviluppo con <a href="http://it.wikipedia.org/wiki/Assembly" target="_blank" title="Il codice assembly"><u><font color="#0000ff">codice assembly</font></u></a>: nasce l&#8217;informatica. Il codice assembly è in realtà identico al codice macchina, però i programmi possono essere scritti in un formato più umano usando stringhe di testo invece del codice binario, cioè la lingua nativa dei processori, ed usando la tastiera. Nascono in seguito i linguaggi di un livello più alto rispetto al codice assembly come il Basic, il Cobol, il LISP &#8230; per citare quelli ancora attivi e funzionanti oggi. In questo periodo inizia la divisione tra il ruolo di sviluppatore e di utente finale, anche se chiunque avesse a che fare con i computer a quei tempi era un <a href="http://it.wikipedia.org/wiki/Hippy" target="_blank" title="Io odio gli Hippie"><u><font color="#0000ff">Hippie</font></u></a>, ossia coloro che si sbattono tanto per il bene della terra e poi vanno in giro con macchine che inquinano e gli puzzano i piedi. Immettere codice è più semplice così aumenta la mole di software prodotto. Qui l&#8217;aura malefica di potere cala leggermente. Livello di difficoltà: hard.</li>
<li>L&#8217;ulteriore progresso dei computer, ma soprattutto del software, porta ad una inevitabile crisi del settore informatico (maddai, che novità questa). La programmazione a <a href="http://it.wikipedia.org/wiki/Spaghetti_code" target="_blank" title="Lo spaghetti code"><u><font color="#0000ff">Spaghetti</font></u></a>, unica disponibile nei vecchi linguaggi di programmazione e che il mio amico Roberto ancora oggi utilizza nei suoi programmi in Basic, è fottutamente problematica e arcana. Il codice scritto in &#8220;spaghetti code&#8221; risulta molto difficile da mantenere e le esigenze del software non possono più essere soddisfatte da un linguaggio così vicino al livello della macchina. Scovare errori diventa impresa epica, aggiungere nuove funzionalità stravolge la logica del progetto, modificare routine fa tremare il karma degli scienziati: a salvare la terra arriva la <a href="http://it.wikipedia.org/wiki/Programmazione_strutturata" target="_blank" title="La programmazione strutturata"><u><font color="#0000ff">programmazione strutturata</font></u></a>, molto più simile al modo di pensare umano, grazie agli studi di <a href="http://it.wikipedia.org/wiki/Teorema_di_Jacopini-Bohm" target="_blank" title="Teorema di Bohm e Jacopini"><u><font color="#0000ff">Bohm-Jacopini</font></u></a>. Con la programmazione strutturata si raggiunge un livello di semplicità, allo sviluppo del software, tale da farci uscire immediatamente dalla crisi, per giunta utilizzando solamente 3 strutture fondamentali applicate ricorsivamente: struttura di sequenza, iterazione e condizione. Nascono così linguaggi mito come il C, il Pascal, il Prolog, lo Smalltalk &#8230; crisi superata! In questo lungo periodo, quasi 20 anni, la divisione tra sviluppatore ed utente finale è nettissima. Molti programmatori mantengono l&#8217;aura malefica, però alcuni di loro iniziano a perderla pian piano, produrre software non è più così tanto demoniaco! Livello di difficoltà: normal.</li>
<li>L&#8217;informatica progredisce ed ormai diventa &#8220;Industria Informatica&#8221;. Chiunque abbia fatto un minimo di scuola dell&#8217;obbligo si inserisce in questo settore, sia come sviluppatore che come utente finale: c&#8217;è spazio per tutti. Chiunque lavora con i computer, anche chi non ci capisce un piffero e non ha esperienza, ed ecco il risultato: l&#8217;Informatica entra di nuovo in crisi <img src='http://www.enfis.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Il software da produrre diventa enorme, non si riesce mai a rispettare i tempi di consegna previsti, milioni di righe di codice da debuggare intasano le menti dei poveri programmatori, tutto diventa umanamente ingestibile, insomma &#8230; altro gran casino! Inoltre, non si fa in tempo a tirare fuori un prodotto valido che all&#8217;uscita sul mercato è già vecchio e l&#8217;investimento speso va a farsi friggere: troppa concorrenza! A salvare ancora il mondo questa volta è la <a href="http://it.wikipedia.org/wiki/Programmazione_ad_oggetti" target="_blank" title="La programmazione ad oggetti"><u><font color="#0000ff">programmazione orientata agli oggetti</font></u></a>. Questo nuovo paradigma di programmazione, già implementato da Smalltalk in passato, semplifica notevolmente lo sviluppo di software complesso e viene quindi letterarmente aggiunta una nuova dimensione a questo piatto mondo: entriamo nel cyberspazio <img src='http://www.enfis.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Con questo nuovo approccio, ci si può finalmente concentrare esclusivamente sulla <u>risoluzione del problema</u> piuttosto che sui <u>dettagli tecnici di come risolverlo</u>: si può fare uno studio completo dell&#8217;intero sistema da realizzare in maniera astratta su carta, prima di iniziare a scrivere una sola riga di codice nel computer! I progetti diventano molto più mantenibili, la loro visibilità nel futuro aumenta notevolmente, espandere il proprio software diventa relativamente semplice e scovare errori risulta quasi immediato. Con questa semplicità quasi tutti gli sviluppatori perdono l&#8217;aura malefica, ora chiunque può sviluppare software con un minimo di impegno, non c&#8217;è più bisogno di enormi conoscenze tecniche: diventa inevitabile la crescita esponenziale di &#8220;mano d&#8217;opera&#8221;. Ci sono però dei limiti importanti, un programmatore infatti deve ancora preoccuparsi del sistema operativo cui sarà destinato il software prodotto, malgrado d&#8217;ora in poi non si preoccuperà più dello strato hardware sottostante. Il ruolo del programmatore inizia quindi ad entrare in crisi, anche se per un po di anni reggerà il suo status symbol di &#8220;<a href="http://it.wikipedia.org/wiki/Geek" target="_blank" title="Il genietto"><u><font color="#0000ff">geek</font></u></a>&#8220;. In questo contesto nasce il mito del <a href="http://it.wikipedia.org/wiki/C%2B%2B" target="_blank" title="Il C++"><u><font color="#0000ff">C++</font></u></a>, il miglior linguaggio di programmazione che l&#8217;uomo abbia mai conosciuto, che ancora oggi viene considerato il punto di riferimento di ogni professore e teologo informatico. I ruoli di sviluppatore e utente finale iniziano a riconciliarsi piano piano. Livello di difficoltà: easy.</li>
</ol>
<p>Arriviamo ai giorni nostri. L&#8217;informatica è divenuta un fenomeno popolare, come la televisione e la pornografia, ed il punto cardine di questa svolta è stata l&#8217;uscita di <a href="http://it.wikipedia.org/wiki/Windows_95" target="_blank" title="Windows 95"><u><font color="#0000ff">Windows 95</font></u></a>, benchè molte persone che odiano Microsoft tenderanno sempre a negare l&#8217;evidenza. Chiunque ora può usare il PC come utente finale, non esiste uomo sulla terra che non possa farlo e la stessa cosa accade per gli sviluppatori: ognuno <u>deve essere in grado</u> di creare software. Ormai i programmi hanno raggiunto una complessità tale da diventare incontrollabili da una singola persona o da un ristretto numero di persone, quindi nasce l&#8217;esigenza di gestire i progetti in maniera adeguata: a colpi di forti dosi ingegneristice, trascurando intuizioni brillanti e creatività. Creare programmi per il mercato globale dunque diventa un privilegio riservato solo alle grandi aziende, che possono disporre di un enorme numero di sviluppatori, medie e piccole imprese sono invece destinate a soccombere: si afferma così il fenomeno del software gratuito e/o a basso costo, inaugurato già negli anni &#8216;70, per evitare la totale bancarotta. Il paragone &#8220;produzione software == costruzione di un edificio&#8221; è davvero azzeccato, dove nessuno sviluppatore è una figura di rilievo che spicca sopra le altre, si è tutti una piccola forza lavoro che coopera alla realizzazione del prodotto finale. Il ruolo dello sviluppatore quindi non esiste più, o comunque è fortemente destabilizzato ed in crisi, chiunque è in grado di scrivere programmi senza conoscere ne il computer ne l&#8217;informatica ne i software, anzi una forte esperienza in tal senso non è richiesta e non è desiderata: scrivere software diventa ormai un lavoro di fatica, non una finezza da intellettuali! I veri programmatori non vengono più ricercati, sono solamente spreco di denaro per le aziende, si tende ad assumere solo personale giovane con poca esperienza ed a basso costo, che verrà licenziato poi qualche mese dopo; eccezion fatta nelle grandissime realtà dove ancora il ruolo dello sviluppatore professionista è centrale: Microsoft, Apple, Sun, IBM, aziende videogames, e altre grandi aziende &#8230; ma non si può certo far fronte alle richieste dei milioni di professionisti di tutto il mondo! In questo triste contesto di commercializzazione esasperata di un arte (l&#8217;informatica) decennale, era inevitabile che gli strumenti di sviluppo dovessero innalzare ulteriormente il loro livello di semplicità. Gli sviluppatori non sono in grado di gestire le differenze hardware, di sistemi operativi e di librerie software personalmente, un po per l&#8217;enorme complessità che i programmi hanno raggiunto, un po per la scarsa professionalità dello sviluppo, un po per la confusione dell&#8217;architettura PC (vedi capitolo sopra). Inoltre nel progetto di un software, si deve decidere dal principio il target di vendita del proprio prodotto, escludendo o includendo a priori i possibili clienti di una piattaforma: indirizzarsi sul Mac esclude tutta la fetta di mercato Windows, dedicarsi alle console esclude tuttia la fetta di mercato degli smanettoni PC, e via dicendo. Aggiungiuamo anche il costo in termini di tempo di sviluppo di un programma per essere compatibile con una parte dei computer (o tutti) attualmente sul mercato&#8230; tra l&#8217;altro operazione davvero impossibile oggi! <strong>Nasce così il concetto di </strong><a href="http://it.wikipedia.org/wiki/Portabilit%C3%A0" target="_blank" title="Indipendenza dalla piattaforma"><strong><u><font color="#0000ff">indipendenza dalla piattaforma</font></u></strong></a>! In sintesi, io scrivo un software totalmente in astratto su un computer immaginario standardizzato, e quindi senza curarmi ne dell&#8217;hardware ne del sistema operativo <strong>reale</strong> sottostante, ma concentrandomi esclusivamente sulla risoluzione del mio problema. Il programma generato funzionerà poi su ogni computer del presente, del passato e del futuro, a patto che implementi al suo interno il concetto di <a href="http://it.wikipedia.org/wiki/Macchina_virtuale" target="_blank" title="La macchina virtuale."><u><font color="#0000ff">macchina virtuale</font></u></a>. <strong>BOOOooo&#8230;oooOOOM: l&#8217;informatica diventa religione!</strong> Nascono così i 2 pilastri fondamentali di questa nuova corrente, che saranno la base per lo sviluppo del futuro: <a href="http://it.wikipedia.org/wiki/Java_%28linguaggio%29" target="_blank" title="Java"><u><font color="#0000ff">Java</font></u></a> (il pioniere) e <a href="http://it.wikipedia.org/wiki/.NET" target="_blank" title="Microsoft .NET"><u><font color="#0000ff">.NET</font></u></a> (10 anni dopo Java). Nel momento in cui scrivo (anno 2006) queste 2 piattaforme non si sono del tutto affermate, colpa principalmente di pesanti carenze di performance, mentre il problema alla base resta comunque: <strong>il progresso informatico</strong>! L&#8217;indipendenza dalla piattaforma, rallenta esponenzialmente l&#8217;esecuzione dei programmi, ma rende anche lo sviluppo di software un&#8217;operazione davvero molto semplice, ricongiungendo nuovamente i ruoli di sviluppatori e utenti finali, e dando il via finalmente ad una nuova genesi informatica. Molti sviluppatori iniziano a cedere alle tentazioni dell&#8217;indipendenza dalla piattaforma, preoccupandosi sempre meno della velocità di esecuzione finale del software, ma concentrandosi esclusivamente sui reali vantaggi di questa nuova tecnologia. Idealmente non esisteranno più problemi di incompatibilità tra computer o piattaforme differenti, potrò lanciare il mio software Java anche sulla lavatrice e giocare a <a href="http://it.wikipedia.org/wiki/Tetris" target="_blank" title="Il gioco Tetris"><u><font color="#0000ff">Tetris</font></u></a> tra una centrifuga e l&#8217;altra! La strada per arrivare a questo livello è ancora molto lunga e faticosa, però questo traguardo preoccupa molti di noi del settore (io sono il primo), perchè a questo punto la nostra identità di programmatori viene messa in seria discussione! Passare da guru ad adepti non è certo un bel salto di carriera!<br />
Abbiamo visto come gli strumenti di sviluppo software si sono evoluti nel tempo a favore di una maggiore semplicità, sino a divenire &#8220;fottutamente semplici&#8221;, ed astraendosi completamente dalla piattaforma. L&#8217;architettura hardware dei PC, grazie alla sua complessità, non ha fatto che favorire questa nuova tendenza! In questo periodo chiave della storia informatica, c&#8217;è un distacco netto tra logica software e logica hardware, dove i programmi sviluppati, ormai non tengono più conto delle potenzialità hardware di cui dispongono: tutto il lavoro è delegato alla macchina virtuale. Qualsiasi ottimizzazione, conquista di risorsa, allocazione di memoria, dialogo hardware low-level e quant&#8217;altro, è affidato alla macchina virtuale (in coppia col sistema operativo ovviamente): una componente software. Il programmatore quindi è sollevato da tutte queste attività, che sono poi la vera causa di errori e della scarsa qualità del software odierno, ma introducono una serie infinita di problematiche: primo tra tutti l&#8217;enorme spreco di potenza di calcolo del computer. <strong>Infatti, con questa &#8220;indipendenza dalla piattaforma&#8221;, <u>è sicuro</u> che non si riuscirà mai a sfruttare al 100% le reali potenzialità hardware: diamine, il mio PC diventa equivalente al mio frigorifero! </strong>A questo punto, con un&#8217;attenta analisi, mi rendo conto che questa evoluzione (o involuzione) nasce da una complessità dei prodotti software finali sempre maggiore, dalla bassa professionalità degli sviluppatori (la mano d&#8217;opera), ma anche dalla confusione architetturale hardware costruita negli anni. <u>I limiti hardware raggiunti, grazie alle leggi della fisica, uniti alla crescente richiesta di software innovativo e complesso, portano il settore informatico ad una crisi di un entità tale da sconvolgere il sistema economico mondiale.</u> Mi domando come mai la gente non parli di queste reali e tangibili problematiche, ogni giorno su <a href="http://www.punto-informatico.it/" target="_blank" title="Punto Informatico"><u><font color="#0000ff">Punto Informatico</font></u></a> leggo centinaia di notizie senza senso di aziende che inventano qualcosa di innovativo, hacker che bucano qualche sistema governativo, o prodotti rivoluzionari che cambieranno il mondo &#8230; tutte chiacchiere in perfetto stile <a href="http://novella2000.corriere.it/" target="_blank" title="Novella 2000"><u><font color="#0000ff">Novella 2000</font></u></a>, <strong>MA DE CHE&#8217; </strong>&#8230; colpa fondamentalmente dell&#8217;estrema popolarità che i computer hanno raggiunto, la &#8220;massa&#8221; vuole questo, il gossip, Italiani in testa! Ma la realtà che tutto il mondo informatico è in mano ad un sistema <a href="http://it.wikipedia.org/wiki/Oligarchia" target="_blank" title="L'oligarchia"><u><font color="#0000ff">oligarchico</font></u></a> di pochissime aziende leader! Nessuno si è reso conto che 5 anni dopo <a href="http://it.wikipedia.org/wiki/Windows_XP" target="_blank" title="Windows XP"><u><font color="#0000ff">Windows XP</font></u></a> (in informatica sono un secolo) sta per uscire <a href="http://it.wikipedia.org/wiki/Windows_Vista" target="_blank" title="Windows Vista"><u><font color="#0000ff">Windows Vista</font></u></a> che non porta nulla di <strong>veramente</strong> innovativo rispetto ai sistemi precedenti, se non un restyle estetico molto forte unito al serio rallentamento delle prestazioni generali della macchina! Il vero colpo di mano sarebbe stato quello di imporre agli sviluppatori di usare .NET per creare software, una vera presa di posizione come avvenne in Windows 95 col DOS, ma questa volta non è stato possibile per tutte le problematiche appena descritte! Concludo dicendo una verità molto importante. Microsoft non ha rallentato la sua produzione per l&#8217;aumento del carico di lavoro, ma semplicemente perchè sta impiegando i suoi dipendenti su mercati che saranno il vero futuro informatico (ed anche perchè è in crisi economica).</p>
<p><strong>Conclusioni sui PC</strong><br />
Come abbiamo visto, negli anni, software e hardware si sono mossi in direzioni differenti. L&#8217;hardware ha complicato esponenzialmente la sua architettura aggiungendo sempre nuove funzionalità (di tutto rispetto) ai processori, creando però di fatto, una confusione generale. Il software invece, a fronte di una richiesta sempre maggiore di prodotti, ha creato strumenti di sviluppo via via più semplici ed astratti dalla piattaforma sottostante. Concretamente quindi da un lato abbiamo dei processori hardware fantascientifici, degni delle migliori puntate di <a href="http://it.wikipedia.org/wiki/Star_Trek" target="_blank" title="Star-trek"><u><font color="#0000ff">Star Trek</font></u></a>, ma dall&#8217;altro un software diventato talmente complesso da doversi astrarre completamente dalla piattaforma sottostante e quindi ignorando le reali potenzialità offerte dal computer. Ora deleghiamo tutte le ottimizzazioni importanti dove l&#8217;intervento dell&#8217;uomo è fondamentale, per via della sua intelligenza e intuizione, a software pre-confezionati, ed è qui che putroppo arriva il vero punto di stallo: i computer non sono &#8220;furbi&#8221; come l&#8217;uomo, non sono in grado di &#8220;capire&#8221; dove intervenire per auto-ottimizzarsi! <strong>L&#8217;hardware non è più in grado di progredire la sua potenza di calcolo, almeno secondo le attuali leggi della fisica, ed il software non può regredire a favore di una maggiore accortezza nello sviluppo dei programmi da parte dell&#8217;uomo: siamo incastrati!</strong> Avete per caso mai visto un programma, togliere delle funzionalità oppure diventare di dimensioni più piccole? Sono il primo ad affermare che non si può tornare indietro e creare software in C/C++ ed ottimizzare in assembly, non si può di certo costringere miliardi di sviluppatori ad imparare vecchi linguaggi di programmazione uniti ad una massiccia dose di conoscenze tecniche hardware/software a livello macchina &#8230; solo per errori commessi nel passato! Pensiamo poi al costo in denaro per realizzare una bonifica del genere, si rischia il tracollo. E&#8217; come costringere il popolo Cinese a non usare più la bicicletta come mezzo di trasporto ma passare allo skateboard (come sapete in Cina tutti si spostano in bicicletta e lo skateboard è semi-proibito, quindi nessuno lo sa usare). Però non possiamo ignorare neanche il fatto che siamo in un vicolo cieco. Si deve quindi creare una nuova piattaforma hardware e software di base ex-novo, per poter ripartire completamente da 0, e dove la parola chiave &#8220;semplicità&#8221; diventa fondamentale, cercando inoltre di favorire le <u>reali esigenze</u> dell&#8217;utente finale. Dove le modifiche hardware vanno a favore del software, non viceversa. Inoltre non si deve bisogna diventare troppo dipendenti dall&#8217;hardware sottostante, anzi deve essere favorito l&#8217;interscambio! In questa situazione entra in gioco la mia teoria, battezzata la &#8220;<strong>teoria Enfis</strong>&#8220;!</p>
<blockquote><p>I punti fondamentali della &#8220;teoria Enfis&#8221;:</p>
<ol>
<li>Semplicità;</li>
<li>Minimalismo (essenzialità);</li>
<li>Professionismo informatico;</li>
<li><strong>Totale</strong> indipendenza dalla piattaforma;</li>
<li>Maggiore accortezza verso gli utenti finali;</li>
<li>Netta divisione tra utente finale e sviluppatore di software.</li>
</ol>
</blockquote>
<p>Sono convinto, dalla situazione in cui ci troviamo, che i PC sono ormai destinati a diventare uno strumento <u>professionale</u> &#8230; leggiamo il futuro. Gli sviluppatori PC saranno degli ingegneri coi contro-cazzi che si dedicheranno con molto scrupolo alla scrittura di software di ottima qualità, cercando la soluzione <strong>migliore</strong> invece di quella più <strong>semplice</strong>, anche se questo li costringerà a scendere al livello della macchina. Gli utenti finali PC, invece, saranno i piccoli imprenditori, le accademie, gli enti pubblici, le piccole, medie e grandi aziende che necessitano di uno strumento professionale di lavoro e che preventiveranno un (possibile) aumento del costo del prodotto finale a favore però di una maggiore qualità e professionalità. <u>Sicuramente le esigenze industriali non si muovono di pari passo con le esigenze degli utenti casalinghi.</u> Tutta la restante fetta di mercato end-user attuale, si spostera totalmente sui PDA, dimenticandosi dopo poco tempo dell&#8217;esistenza dei PC: sarà solo un fantasma del passato. Nei PDA gli attuali &#8220;smanettoni&#8221; diventeranno gli sviluppatori e gli utenti finali saranno realmente gli &#8220;utenti finali&#8221;. Gli strumenti di sviluppo nei PDA <strong>possono e devono</strong> astrarsi come vogliono dalla piattaforma sottostante, perchè comunque non devono fare i conti con alcuna infrastruttura hardware del passato ne con una potenza di calcolo eccessiva, ma stando bene attenti a non puntare l&#8217;occhio troppo al futuro. Anche se non è da escludere, per esempio, che i PDA arrivino a costruire CPU in grado di eseguire direttamente istruzioni Java! Le case produttrici, dovranno altresì sforzarsi al 100% di fornire un ambiente di sviluppo sempre <strong>standard e lineare</strong> ai programmatori, senzi uscire fuori dagli schemi o inventarsi nuovi filoni epici. Quindi giochi, entertainment. multimedia, pirateria, sesso, divertimento, internet, piccoli e medi applicativi, tutto si sposterà sui PDA: tutte applicazioni &#8220;a perdere&#8221;, un gioco ha una vita media di 1 mese massimo! Questa biforcazione della strada inoltre ci porta un nuovo grandissimo bacino di utenza finale, con denaro frusciante nella mano! L&#8217;informatizzazione diventa così davvero globale, sempre disponibile ed alla portata di tutti!<br />
Questo cambiamento avviene perchè siamo andati troppo avanti e troppo in fretta, è stato come aver fatto una vacanza turistica in automobile, con contachilometri fisso a 150 Km/h: non hai visto niente e non ti sei riposato! Quindi ci si prepara per una lunghissima pausa tecnologica, che probabilmente inizierà solo tra qualche anno, ma già da oggi in molti hanno fiutato una strana puzza e si stanno aprendo nuove strade alternative.</p>
<blockquote><p>In tema di alternative, pensiamo per esempio alla nuova console <a href="http://it.wikipedia.org/wiki/Xbox_360" target="_blank" title="La XBOX 360"><u><font color="#0000ff">XBOX 360</font></u></a>, che implementa caratteristiche hardware innovative, come il processore RISC a 3 core con 128 registri, oppure alla console <a href="http://it.wikipedia.org/wiki/PlayStation_Portable" target="_blank" title="La PSP"><u><font color="#0000ff">Playstation Portable</font></u></a>, che vanta soluzioni tecniche invidiabili, anch&#8217;essa RISC. Notate che le architetture RISC semplificano notevolmente la complessità hardware del processore, ma raggiungono delle prestazioni pressochè infinite: poche istruzioni a favore di una maggiore velocità di esecuzione e un alto grado di parallelizzazione. Notiamo infine che in queste console non esiste Java o roba simile, solo C/C++ e assembler: abbiamo quindi solo sviluppatori professionisti! Tutti questi colpi di mano aziendali, avvengono per far uscire l&#8217;utente finale dal mercato PC, ormai moribondo. Inoltre le console hanno un hardware standard per tutti gli apparati, non ci si deve impazzire quando si sviluppa!</p></blockquote>
<p>Parliamo di pausa lato PC ovviamente, perchè lato PDA il progresso sarà davvero immenso, molto più ampio di quello a cui abbiamo assisito sino ad oggi: si pensi solo all&#8217;ottimizzazione dei consumi di energia! Però in questo periodo di passaggio, abbiamo bisogno che il mercato mondiale non si paralizzi del tutto, per cui utilizzeremo ancora il nostro caro vecchio PC che in questa parentesi non progredirà (e speriamo non regredirà); e con questo trampolino per il futuro, si tenderà a sfruttare al meglio le risorse già disponibili. Magari le aziende elettroniche si dedicheranno ad altri settori, come la trasmissione dati o la nano-tecnologia o la pornografia virtuale! Siamo entrati nella fase di transizione, signori, avviata già da un paio di anni, dove il concetto di computer cambierà radicalmente, diventando molto più intimo e personale, non considerandolo unicamente uno strumento di lavoro, ma una necessità primaria di tutti i giorni; come leggere, scrivere o ascoltare musica. Dobbiamo però tenere conto di un fattore molto importante: siamo ancora nella preistoria informatica in questo momento storico. C&#8217;è da lavorare e ancora parecchio, alla fine abbiamo solo 50 anni di esperienza in questo settore, se ci areniamo così tanto sin dall&#8217;inizio, dove speriamo di arrivare? Cerchiamo ora di capire il perchè del successo dei PDA&#8230;</p>
<p><strong>Perchè proprio i PDA?</strong><br />
<u><strong>Vi ricordo che io considero la parola &#8220;PDA&#8221; un sostituto di &#8220;telefono cellulare&#8221;, uso scorrettamente questo acronimo, abbiate pazienza e perdonatemi</strong></u> <img src='http://www.enfis.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> A questo punto molti di voi si stanno chiedendo, &#8220;<em>Come mai proprio i PDA sostituiranno i Personal Computer?</em>&#8220;. Cercherò di riassumere i punti chiave che reputo fondamentali alla principale candidatura del PDA come computer della nuova era:</p>
<ul>
<li><strong>Diffusione</strong>. Prima di tutto il <a href="http://it.wikipedia.org/wiki/Telefono_cellulare" target="_blank" title="Il telefonino"><u><font color="#0000ff">telefono cellulare</font></u></a> (o PDA come lo chiamo io) è uno strumento già ampiamente diffuso tra le persone di tutto il mondo, tanto da diventare un vero e proprio fenomeno sociale, al pari del gioco del calcio e della televisione, che abbraccia clienti di tutte le età, sesso e religioni. <u>In circa 30 paesi del mondo il numero di cellulari venduti supera addirittura il numero della popolazione</u> (<a href="http://notizie.tiscali.it/feed/news/2006/06/17/ansa/ansat2006-06-17_1175608.html" target="_blank" title="Un mare di cellulari!"><u><font color="#0000ff">leggi la fonte della notizia</font></u></a>): quante volte vi è capitato di vedere l&#8217;amico con 2-3 cellulari differenti? Per cui non c&#8217;è bisogno di &#8220;educare la massa&#8221; all&#8217;uso del PDA, ma è un prodotto che si vende già da solo (e va via più del pane)! Inoltre un&#8217;industria tanto florida, non si aspetta che siano i clienti a fare richieste di ulteriori funzionalità, ma è essa stessa che implementa continue novità con la sicurezza che verranno assorbite rapidamente dalle persone! Anzi sono i clienti che vanno spontaneamente alla ricerca del prodotto con maggior numero di caratteristiche tecniche, anche se alla fine non ne avranno bisogno! Quindi nella sostanza non c&#8217;è da investire molto denaro in campagne pubblicitarie di &#8220;conoscenza&#8221;, ossia per spiegare al popolo quanto siano belli i telefoni cellulari: i clienti già lo sanno! Poi è un prodotto molto popolare tra i bambini, e sono loro la nuova generazione del futuro signori miei, impariamo dalle strategie di marketing di <a href="http://it.wikipedia.org/wiki/McDonald" target="_blank" title="Zozzeria"><u><font color="#0000ff">McDonald</font></u></a>! Questo è un ottimo segnale, significa che è un settore che gode di ottima salute, ed è una cosa che non va sottovalutata oggi come oggi. Il computer non è altrettanto integrato nella società moderna, malgrado sia uno strumento di straordinarie capacità, che ha raggiunto prezzi davvero iper-popolari! <u>La solida integrazione dei PDA nella società, è già di per se un motivo più che sufficiente ad eleggerli eredi dei personal computer!</u></li>
<li><strong>Portabilità</strong>. Il PDA è uno strumento tecnologico davvero portatile, con una dimensione ridotta al punto tale da entrare nel taschino della giacca o in un palmo della mano! Il fattore ancora più importante è che le persone <u>realmente</u> lo portano sempre con se, per tutta la durata della giornata, quanto meno per sfruttare le sue capacità di comunicazione telefonica! Pensatelo come strumento di emergenza, di necessità, di lavoro, o usato come arricchimento estetico: non importa il motivo! <a href="http://developer.sonyericsson.com/site/global/newsandevents/latestnews/newsjune06/p_five_reasons_develop_sonyericsson_walkman_phones.jsp" target="_blank" title="Studio importanza cellulari"><u><font color="#0000ff">Su questo link</font></u></a> (in Inglese putroppo), potete trovare uno studio molto interessante condotto da <a href="http://www.sonyericsson.it/" target="_blank" title="Sony-Ericsson Italia"><u><font color="#0000ff">Sony-Ericsson</font></u></a>, ossia su quali siano gli oggetti che le persone si assicurano di avere prima di uscire di casa la mattina (veramente l&#8217;articolo racconta di altro, ma cito: <em>&#8220;Ask yourself this question: what are the most important things you take with you when you leave home in the morning?&#8221;</em>)! Indovinate dove si posiziona il telefono cellulare? E&#8217; 3°, seguito dalle chiavi di casa e il portamonete &#8230; un po come dire &#8220;<em>io la mattina quando esco di casa mi assicuro di avere: il cervello, il pisello e il cellulaaaare</em>&#8221; <img src='http://www.enfis.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Inoltre da quello studio si evince una cosa altrettanto importante, ossia che altri strumenti equalmente portatili, come walkman MP3 e palmari, vengono segnalati da una percentuale della popolazione veramente bassa! Per chiudere questo punto &#8230; l&#8217;articolo parla del vantaggio di sviluppare software per telefoni cellulari che includono anche funzionalità di walkman.</li>
<li><strong>Multimedialità</strong>. Il PDA tende a contenere diversi &#8220;media&#8221; (da qui il termine multi-mediale). Ossia ci fa ascoltare della musica MP3, ci permette di scattare fotografie, ci fa divertire con i suoi giochi, ci fa vedere partite di calcio in diretta e d&#8217;ora in poi sostituirà anche il nostro computer di casa. L&#8217;idea di portare sempre con se una sorta di <a href="http://it.wikipedia.org/wiki/Coltellino_svizzero" target="_blank" title="Il coltello svizzero"><u><font color="#0000ff">coltellino Svizzero</font></u></a> elettronico alletta anche i ragazzi più timidi e introversi. Non si può negare l&#8217;utilità di tutte queste componenti riunite in un unico apparecchio: il poter scattare una fotografia in qualsiasi momento della giornata, ad esempio, senza doversi trascinare tonnellate di ingombranti strumenti, è quasi un sogno per i veri artisti! Fondere in un unico blocco monolitico diverse tecnologie è la vera rivoluzione di domani, in fondo il PDA è l&#8217;unico strumento sempre presente con noi ogni momento della giornata! Mi è capitato molte volte di sentire amici preferire un modello di cellulare rispetto ad un altro, semplicemente perchè &#8220;aveva in più&#8221; la fotocamera digitale (ormai ce l&#8217;hanno praticamente tutti i modelli). In questo momento va di moda fondere il PDA con il walkman, domani con la videocamera, dopo domani con i software più sofisticati &#8230; l&#8217;unico limite è la nostra mente!</li>
<li><strong>Connettività</strong>. La natura stessa del telefono cellulare, lo rende un innato punto di accesso ad Internet. Qui penso non ci sia niente da aggiungere, il PDA ha una connettività straordinara, è nel suo DNA, siamo tutti d&#8217;accordo. Pensiamo solo alla tecnologie IrDA, <a href="http://it.wikipedia.org/wiki/Bluetooth" target="_blank" title="BlueCiucc"><u><font color="#0000ff">Bluetooth</font></u></a>, e all&#8217;imminente integrazione anche del <a href="http://it.wikipedia.org/wiki/Wi-fi" target="_blank" title="Wireless Fidelity"><u><font color="#0000ff">wi-fi</font></u></a>: tutti sistemi rigorosamente gratuiti e senza fili. Senza contare poi che siamo costantemente in contatto col nostro operatore telefonico, che nel futuro prossimo inizierà a fornire servizi di connettività Internet a basso costo (ora viene fatto ad un costo troppo elevato). Questo rende il PDA un nodo Internet formidabile, anzi sarebbe il caso chiamarlo &#8220;nodo Mobilenet&#8221;. Ho un mio carissimo amico che ha già la connessione Internet flat sul suo smartphone, che lascia attiva 24 ore su 24, perennemente presente su MSN e <a href="http://it.wikipedia.org/wiki/Skype" target="_blank" title="Skype"><u><font color="#0000ff">Skype</font></u></a>: lui però è troppo avanti! <img src='http://www.enfis.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Quando i costi di connessione saranno abbattuti completamente, potremmo fare la nostra partita a Doom 3 in multi-player col nostro amico Norvegese, seduti sul water mentre si sta spingendo e faticando per far uscire la celeberrima &#8220;numero 2&#8243; (parentesi poetica). Per togliere ogni dubbio dalla mente del lettore più malizioso, c&#8217;è solo una parola che mi viene in mente: GOOGLE! Avere Internet, quindi <strong>LA BIBLIOTECA UMANA UNIVERSALE</strong>, sempre a portata di mano in ogni momento della giornata, fa stringere il cuore sino alle lacrime anche del bambino più cattivo della terra.</li>
<li><strong>Basso costo</strong>. Il PDA è un prodotto elettronico davvero a basso costo, grazie ai suoi record di vendite! Oggi con 200€ acquisti un telefono cellulare con un concentrato di tecnologia tale da far impallidire perfino il <a href="http://it.wikipedia.org/wiki/Spock" target="_blank" title="Teletrasporto!"><u><font color="#0000ff">dottor Spock</font></u></a> di Star-Trek! Troviamo fotocamera digitale, lettore MP3, chip bluetooth, comunicazione infrarossa, connessione PC via cavo, dual/tri/quadri-band, memoria interna 32 Mb, memoria esterna secure digital, processore RISC @ 200 Mhz, display grafico a 18 bit, suonerie polifoniche, loghi animati &#8230; sembra capodanno &#8230; e tra le altre cose anche funzioni telefonia <img src='http://www.enfis.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Questi prezzi indicano che l&#8217;industria è davvero molto produttiva, inoltre escono 3-4 modelli diversi ogni mese (per ogni singola azienda) e la gente compra, compra, compra&#8230; Cambiarsi PDA diventa una tappa quasi obbligata nel cammino della vita, è come acquistare un nuovo paio di scarpe o farsi un nuovo taglio di capelli. Questo è sicuramente un ulteriore punto a suo favore, con questa crisi economica globale&#8230;</li>
<li><strong>Semplicità</strong>. Usare il telefono cellulare, rispetto al palmare o al computer, risulta molto più semplice. Il ristretto numero di operazioni consentite e la loro immediatezza, lo rendono estremamente abbordabile alle persone di tutte le età e categorie. I palmari, invece, richiedono una certa manualità informatica e un sesto senso innato, quindi non possiamo affermare che siano alla portata <u>davvero di tutti</u>. Se è vero che l&#8217;informatica deve entrare a far parte della vita quotidiana delle persone, deve anche essere semplificata all&#8217;estremo. Computer e palmari possono essere considerati &#8220;settori di nicchia&#8221;, malgrado per persone come noi il loro uso sia quasi naturale. Siamo forse sulla buona strada?</li>
<li><strong>Novità</strong>. <u>I PDA sono sbocciati completamente a partire dal 1995!</u> Siamo davanti ad una tecnologia che ha poco più di 10 anni di attività alle spalle e risulta già così integrata nella vita quotidiana dell&#8217;uomo! E&#8217; davvero l&#8217;unico esempio, nella storia, di un simile successo, fatta eccezzione del primo uomo che ha inventato la <a href="http://it.wikipedia.org/wiki/Masturbazione" target="_blank" title="Chainsaw"><u><font color="#0000ff">masturbazione</font></u></a> &#8230; quelli sono stati anni molto &#8220;oscuri&#8221; per tutti <img src='http://www.enfis.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Mi sono sforzato per una nottata intera, cercando attivamente su Internet, ma nessuna scoperta è stata intensa e rapida come il telefono cellulare. C&#8217;è da dire però che nel passato, la velocità di diffusione delle notizie era incredibilmente lenta, per cui non può essere fatto un paragone costruttivo. Probabilmente &#8220;l&#8217;invenzione&#8221; del fuoco si è diffusa altrettanto rapidamente, era di vitale importanza, ma non abbiamo elementi concreti che possano confermarlo. Magari alcuni primitivi erano convinti che il fuoco fosse una tecnologia scadente destinata a morire <img src='http://www.enfis.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </li>
</ul>
<p>Finora ho descritto caratteristiche comprensibili da chiunque, ora andiamo ad affrontare 2 aspetti un po più tecnici molto importanti&#8230;</p>
<ul>
<li><strong>Semplicità di sviluppo e standardizzazione.</strong> Qui, amici miei, arriviamo ad un punto davvero cruciale che secondo me sarà il vero peso che sposterà l&#8217;ago della bilancia a favore del PDA, leggetelo molto attentamente, vi prego! Dunque vediamo di capire cosa hanno fatto le aziende leader produttrici di PDA, come Nokia, Motorola, Sony, Samsung e tutte le altre&#8230; Tra di loro c&#8217;è una concorrenza spietata (come è giusto che sia), che va avanti a colpi di trovate pubblicitarie e strategie di marketing innovative, tutto al fine di vendere anche la più piccola fottuta insignificante unità! Il cliente finale viene letterarmente <u>violentato</u>, da continui bombardamenti pubblicitari, al fine di portarlo nella propria fetta di mercato! Non mi meraviglierei se in qualche stand, dolcissime signorine iper-tettone si mettano a distribuire pompini gratis pur di far vendere un solo PDA in più! <u>Una guerra mondiale è meno cruenta!</u> Però lato sviluppo software, queste stesse aziende (tutte le aziende) hanno unito le proprie forze per creare uno standard unificato che definisce <strong>quali funzionalità</strong> devono avere tutti i PDA e <strong>come utilizzarle</strong>, grazie ad API Java ben progettate (il <a href="http://jcp.org/en/home/index" target="_blank" title="JPC"><u><font color="#0000ff">Java Comunity Process</font></u></a>); inoltre l&#8217;unico linguaggio di programmazione disponibile è il Java 2 Micro Edition (J2ME)! Amici, ho ancora la tremarella alle mani unita ad iper-ventilazione, devo calmarmi un attimo, sto per sentirmi male &#8230; voi non vi rendete conto di che cazzo stanno facendo queste aziende, sono letterarmente <u>ALLA CONQUISTA DEL MONDO</u>! Cercano di semplificare all&#8217;estremo lo sviluppo del software per PDA, dando la certezza di una <strong>reale indipendenza dalla piattaforma</strong> e garantendo una visibilità del prodotto finale nel lunghissimo periodo, solo per invogliare il lavoro di quanti più programmatori possibili! Inoltre le rispettive case produttrici offrono tutti gli strumenti di sviluppo necessari, la documentazione tecnica e i tutorial pratici in forma <u>completamente gratuita</u>! Ma la cosa che mi fa davvero incazzare tantissimo, è che tutte queste coccole agli sviluppatori, vengono fatte solo per agevolare <u>I PROPRI AFFARI</u>! Avere infatti un PDA dotato di un ricchissimo assortimento di giochi e programmi di ogni genere, non fa che invogliare l&#8217;utente finale a comprare sempre nuovi dispositivi, con la certezza per giunta, che il software si potrà tramandare di generazione in generazione! E guardate che questi signori si stanno muovendo veramente bene, di API standard ne hanno definite davvero tante, si sono prodigati molto intensamente superando già abbondantemente la barriera della fantascienza, gli sviluppatori avranno il loro bel da fare per i prossimi 10 anni! Francamente la <strong>genialità</strong> di Nokia, Sony, &amp; co. mi mette fortemente a disagio, da una parte mi sento di odiarli con tutto me stesso per la loro condotta etica, ma nella realtà li stimo e invidio davvero tanto, e l&#8217;unica azione che mi sento di compiere, è inginocchiarmi dinnanzi a cotanta intelligenza. <a href="http://it.wikipedia.org/wiki/Bill_Gates" target="_blank" title="Satana"><u><font color="#0000ff">Bill Gates</font></u></a> a confronto è un principiante, dovrebbe prendere lezioni, e di casini pure lui ne ha combinati&#8230; Ora, al di la delle questioni di ordine etico/morale, questo comportamento porta ad una vera rivoluzione nello sviluppo del software. Sono riusciti nel nobile intento di astrarsi completamente dalla piattaforma, azione tentata già nei PC, utilizzando hardware di poca potenza e dai consumi energetici ridotti. Inoltre hanno fatto questa scelta tutti insieme, sedendosi attorno ad un tavolo, uniti malgrado la loro rivalità: bene e male che si fondono, <a href="http://it.wikipedia.org/wiki/Yin_e_Yang" target="_blank" title="Yin e Yang"><u><font color="#0000ff">Yin e Yang</font></u></a>, la profezia si è avverata. Sono riusciti li dove i PC hanno fallito e vanno a chiudere un capitolo importante nella storia informatica, con un colpo di genio che resterà indelebile nei futuri libri didattici! Mi dispiace di non riuscire a trovare le parole adatte per descrivere a pieno questa loro rivoluzione, di non poter comunicare adeguatamente la vera svolta di questo periodo, nella mia mente i pensieri viaggiano troppo velocemente per poterli campionare con la tastiera <img src='http://www.enfis.it/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> Vi garantisco che il mondo sta cambiando &#8230; in meglio!</li>
<li><strong>Piattaforma</strong>. Questo è un altro punto cardine! Come ho spiegato sino ad ora, con un ampio e noioso discorso, il PC ha un&#8217;architettura incasinata! Questo nuovo PDA consente di colmare tutte le pesanti lacune dei personal computer e in maniera molto efficiente. Siamo partiti con una piattaforma di sviluppo completamente nuova, che non deve fare i conti con numerosi software del passato, non deve scontrarsi con le infinite differenze dei sistemi operativi e non favorisce l&#8217;utilizzo di parecchi linguaggi di programmazione: anzi, c&#8217;è solo Java. Lo sviluppo con codice nativo è consentito grazie al linguaggio C/C++, ma è fortemente sconsigliato (direi quasi proibito) e ci si concentra esclusivamente sullo sviluppo con codice Java: ma sarebbe comunque da pazzi usare il C/C++! Pensate solo che i telefoni cellulari hanno processori e sistemi operativi differenti da modello a modello, eppure nessuno di noi si accorge di questa diversità, tutto è reso trasparente allo sviluppatore e all&#8217;utente finale, anzi addirittura non compaiono tra le caratteristiche nella scheda tecnica del prodotto: una inversione ad U! Alcuni possono pensare che sia una dittatura tremenda costringere l&#8217;uso esclusivo di Java, ma lo hanno fatto a fin di bene, e io vi rispondo che siamo in presenza di un linguaggio talmente semplice che bisogna essere proprio ottusi mentalmente per non abbracciarlo: fate un piccolo sforzo e cestinate i vostri vecchi strumenti di sviluppo, ci guadagnerete! Altri invece possono pensare che sia un enorme sotterfugio nascondere le caratteristiche hardware interne &#8230; anche qui vi rispondo che questo è un ulteriore segnale della totale indipendeza dalla piattaforma, nonchè un chiaro segnale di ulteriore semplicità: siamo stati abituati male con i PC. <u>Forse il vantaggio vero da questa situazione si vedrà nel futuro, ora si è troppo chiusi mentalmente.</u> L&#8217;architettura dei processori PDA non si complicherà così come avvenne per i PC, il progresso tecnologico si verificherà solo in proporzione delle reali esigenze richieste! Il teorema della macchina virtuale, tappa d&#8217;obbligo per ogni programma PDA, farà acquisire un esperienza straordinaria sulle tecniche utili ad ottimizzare l&#8217;esecuzione dei software Java, e l&#8217;hardware sottostante si evolverà solo per favorire tali metodi: niente più inutili sprechi di potenza di calcolo! Capite da voi che questo è in totale contro tendenza rispetto il PC!</li>
</ul>
<p>Abbiamo spiegato quindi quali sono i motivi del sicuro successo dei PDA. Io ho il grosso difetto di voler imporre sugli altri le mie idee, senza accettare eventuali repliche costruttive, sono <a href="http://www.etimo.it/?term=cocciuto" target="_blank" title="Significato"><u><font color="#0000ff">cocciuto</font></u></a> e non cambio mai la mia linea politica, neanche di fronte l&#8217;evidenza. Però in questo caso non voglio sfidare la vostra intelligenza, è talmente vero quel che dico, do quindi per scontato che la pensiate tutti come me. Invece concentrerei l&#8217;attenzione sul futuro: i PDA si sono mossi molto bene sin dal principio, mantenendo compatti i loro reggimenti, ma resisteranno nel futuro? La mia paura principale è che quando il mercato PDA diventerà ufficialmente &#8220;computer&#8221;, quindi milioni di programmatori ci si riverseranno dentro, l&#8217;architettura costruita inizierà a tremare. Potrebbero far nascere linguaggi come Basic, Pascal, Phyton, Lisp, e altre zozzerie, magari che si appoggiano su Java (paura)! Potrebbero far uscire nuovi sistemi operativi per PDA, tipo Windows, Linux, MacOS, tutti quanti a destabilizzare la giusta politica intrapresa sino ad ora (svengo). Ora facciamoci questa domanda: ma è quello che vogliamo? La risposta è <strong>NO</strong>! La mia unica speranza è che i telefoni cellulari siano sottovalutati dai grandi produttori il più a lungo possibile, per dare tempo alla piattaforma di consolidarsi completamente. Anche se da poco ho letto l&#8217;intenzione di Apple di produrre una <a href="http://passionemobile.wordpress.com/2006/05/02/italk-ipod-phone-by-apple/" target="_blank" title="Cellulare Apple"><u><font color="#0000ff">sua gamma di PDA</font></u></a>, e questo è il primo vero campanello di allarme. Non tanto per il prodotto in se, che sarà ovviamente rigettato dal mercato, la Apple è sempre stata ignorata dalla massa, quanto per il suo grande significato simbolico. Come sappiamo la Microsoft, dal principio, è sempre arrivata seconda rispetto la Apple, copiando completamente le sue idee! Però la Microsoft con la sua intuitiva strategia di marketing riesce a vendere il proprio prodotto, palesemente scadente rispetto a quello Apple, a milioni di persone in tutto il mondo. C&#8217;è quindi da preoccuparsi, perchè Bill Gates è riuscito sempre ad imporre il proprio prodotto e tecnologia, anche se di qualità davvero pessima! Guardate che non me lo sto inventando io, è storia informatica, se siete svogliati e non volete leggere libri, potete guardarvi il documentario <a href="http://www.35mm.it/film/scheda.jsp?idFilm=3809" target="_blank" title="I pirati"><u><font color="#0000ff">I pirati di Silicon Valley</font></u></a> che spiegherà tutto. Poi ve lo dice uno che in questo momento sta utilizzando Windows XP, devo usare questo sistema per non essere tagliato fuori dal mondo, anche perchè non c&#8217;è alternativa valida: Linux è un cesso, sia per come è programmato sia per la sua pessima diffusione! Per cui incrociamo le dita, speriamo che la gente sia convinta il più a lungo possibile che il PC sia una buona cosa e che i PDA siano solo un passatempo. Questo manterrà il mercato PDA un settore di nicchia, consentendo di far lavorare i <u>veri professionisti</u>!</p>
<p><strong>Considerazioni finali</strong><br />
A sostegno della mia tesi, possiamo osservare che moltissime aziende si stanno concentrando sul settore dei dispositivi mobili: palmari, tablet PC, <a href="http://origamiproject.com/default.aspx" target="_blank" title="Piattaforma origami"><u><font color="#0000ff">piattaforma origami</font></u></a> di Microsoft; tutte vie alternative alla strada originale dei personal computer. Evidentemente la sfida tecnologica del futuro si baserà sull&#8217;ottimizzazione dei consumi energetici dei chip e sulla miniaturizzazione esasperata, dato che la velocità di clock più di così non può salire. Qui vedo una fortissima analogia con l&#8217;industria automobilistica, che all&#8217;inizio della carriera ha cercato di rendere i veicoli più veloci possibili, ora invece, anche a causa di un impoverimento delle scorte di idrocarburi, cerca di ottimizzare i consumi di carburante il più possibile. Secondo me ora c&#8217;è da scommettere su quale sarà la piattaforma portatile che si affermerà nel futuro, io ho fatto la mia puntata sui telefoni cellulari, voi cosa fate? Io mi guarderei bene le spalle dalla Microsoft e la sua Origami, perchè se riesce ad affermarsi anche nei dispositivi mobili, credo che l&#8217;umanità conoscerà per la prima volta nella storia la sua prima vera sconfitta! Non permettiamo a Microsoft di rovinare anche questo nuovo bellissimo mondo portatile, fermiamo la sua avanzata con tutti i mezzi possibili, <strong>lottiamo per i nostri figli &#8230; LIBERTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</strong> (<a href="http://it.wikipedia.org/wiki/William_Wallace" target="_blank" title="Libertaaaaaaaaaaaaaaaaa"><u><font color="#0000ff">William Wallace</font></u></a> rulez :D)!</p>
<p><strong>E basta Enfis, concludi, sò 3 ore che vai avanti!</strong><br />
Dunque, software e hardware PC sono diventati esponenzialmente complessi, ingestibili dagli esseri umani, e il progresso elettronico si è dovuto arrestare per via dei limiti imposti dalle attuali leggi sulla fisica. Si è giunti quindi ad un vicolo cieco, le soluzioni hardware proposte non convincono del tutto, e si deve fare marcia indietro per aprire una nuova strada alternativa. Il candidato naturale per una nuova genesi sembra essere il PDA, che nel futuro sostituirà completamente i PC, sperando che anche qui non vengano commessi gli stessi errori del passato. In questa fase di transizione, PC e PDA viaggeranno in parallelo, portando boccate di aria fresca all&#8217;industria informatica ormai in crisi, per poi concludersi con la morte del PC, almeno a livello end-user, e quindi una nuova crisi generale. In questo probabile futuro, la figura dello sviluppatore, per come viene vista ora, scomparirà completamente: chiunque sarà sia sviluppatore che utente finale. Dobbiamo considerare molte variabili aggiuntive. I limiti fisici potrebbero essere scavalcati con una nuova scoperta scientifica, o l&#8217;informatica potrebbe pian piano essere abbandonata dalle masse, oppure potrebbero arrivare gli alieni sulla terra: come vedere tutto è molto vago.<br />
Questo mio lungo articolo è il risultato di un accurato studio di mesi. La mia esperienza sui PC è ventennale, però è difficile rioganizzare tutte le idee di un periodo così lungo, cercando di ricordare tutte gli episodi chiave del passato. Questa è l&#8217;interpretazione più plausibile del presente e dell&#8217;immediato futuro, malgrado sto correndo in forte contro tendenza con tutte le altre filosofie. Se a questo punto qualcuno di voi sta pensando &#8220;<em>secondo me hai scritto un mare di stronzate</em>&#8220;, bhe avete ragione! <strong>Tutto quello che ho scritto sin ora, dalla prima all&#8217;ultima parola, è frutto della mia fantasia ed è totalmente inventato!</strong> Sappiate che se siete arrivati a leggere fino a qui, avete perso 10 anni della vostra vita! <img src='http://www.enfis.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Per cui la prossima volta che leggete un articolo del genere, magari accendete anche il cervello, ne guadagnerete in salute! Io mi sarei fermato già alla 3° riga, per tutte le stronzate lette!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.enfis.it/archives/7/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

