{"id":257,"date":"2009-02-18T18:18:20","date_gmt":"2009-02-18T23:18:20","guid":{"rendered":"http:\/\/vgable.com\/blog\/2009\/02\/18\/competing-software-engineering-approaches\/"},"modified":"2009-02-18T18:18:23","modified_gmt":"2009-02-18T23:18:23","slug":"competing-software-engineering-approaches","status":"publish","type":"post","link":"https:\/\/vgable.com\/blog\/2009\/02\/18\/competing-software-engineering-approaches\/","title":{"rendered":"Competing Software Engineering Approaches"},"content":{"rendered":"<p><a href=\"http:\/\/www.tbray.org\/ongoing\/When\/200x\/2009\/02\/18\/Engineering-Experiment\">Tim Bray<\/a>,<\/p>\n<blockquote>\n<p>&#8230;Palm&#x2019;s approach is<br \/>\nradically different from both Android&#x2019;s and Apple&#x2019;s.  Since they&#x2019;re all here<br \/>\nat more or less the same time, running the<br \/>\n<a href='http:\/\/webkit.org\/'>same Web browser<\/a> on roughly<br \/>\nequivalent hardware, this represents an unprecedented experiment in<br \/>\ncompetitive software-engineering approaches.<\/p>\n<table cellpadding=\"5\">\n<tr align=\"left\" valign=\"top\">\n<td class=\"empty\"><\/td>\n<th>Language<\/th>\n<th>Framework<\/th>\n<th>Notes<\/th>\n<\/tr>\n<tr align=\"left\" valign=\"top\">\n<th>Apple<\/th>\n<td>Objective-C<\/td>\n<td>Cocoa<\/td>\n<td>Old-school object-oriented language compiled to the metal; general-purpose UI<br \/>\nframework with roots reaching back to NeXT.<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"top\">\n<th>Android<\/th>\n<td>Java<\/td>\n<td>Android<\/td>\n<td>Java language, custom VM, built-from-scratch UI<br \/>\nframework aimed at small-form-factor devices, fairly abstraction-free, based<br \/>\non &#x201c;Actions&#x201d; and &#x201c;Intents&#x201d;.<\/td>\n<\/tr>\n<tr align=\"left\" valign=\"top\">\n<th>web OS<\/th>\n<td>JavaScript<\/td>\n<td>&#x201c;Mojo&#x201d;<\/td>\n<td>All Web technology all the time. Innovative and visually-impressive<br \/>\n&#x201c;card&#x201d;-based UI.<\/td>\n<\/tr>\n<\/table>\n<p><em>(I think it&#8217;s interesting to see Windows Mobile on the list:<\/p>\n<table cellpadding=\"5\">\n<tr align=\"left\" valign=\"top\">\n<th>Windows Mobile<\/th>\n<td>C\/C++<\/td>\n<td>Windows CE\/.NET Micro<\/td>\n<td>Philosophically tries to bring Windows to the phone. When I did WinCE development it felt like doing C++ for a Windows OS from the past.<\/td>\n<\/tr>\n<\/table>\n<p>)<\/em>\n<\/p><\/blockquote>\n<p>I see way too many other factors to attribute success\/failure of the devices to the language.  So I wouldn&#8217;t call this an experiment.<\/p>\n<p>But it is interesting how much development for each platform diverges at a fundamental level!<\/p>\n<p>Historically most operating systems &#8212;<br \/>\nUNIX, OS\/2, Linux, Windows, Solaris, Mac (Classic and OS X) &#8212; were predominantly, written in C\/C++.  While each platform has it&#8217;s own frameworks, they all have strong support for C++ development.  (Although Mac OS X has <a href=\"http:\/\/arstechnica.com\/apple\/news\/2007\/06\/64-bit-support-in-leopard-no-carbon-love.ars\">is slowly dropping support for it&#8217;s C\/C++ &#8220;Carbon&#8221; API<\/a>, and Windows wants to be moving to C# .NET)<\/p>\n<p>It&#8217;s really cool to see mobile platforms doing something radically different from each other.  There are good arguments for each approach &#8212; may the best one win.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tim Bray, &#8230;Palm&#x2019;s approach is radically different from both Android&#x2019;s and Apple&#x2019;s. Since they&#x2019;re all here at more or less the same time, running the same Web browser on roughly equivalent hardware, this represents an unprecedented experiment in competitive software-engineering approaches. Language Framework Notes Apple Objective-C Cocoa Old-school object-oriented language compiled to the metal; general-purpose [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,4,24,9],"tags":[350,616,248,351,169,114],"class_list":["post-257","post","type-post","status-publish","format-standard","hentry","category-cocoa","category-programming","category-quotes","category-unix","tag-android","tag-iphone","tag-mobility","tag-palm","tag-software-development","tag-windows"],"_links":{"self":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts\/257","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/comments?post=257"}],"version-history":[{"count":0,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts\/257\/revisions"}],"wp:attachment":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/media?parent=257"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/categories?post=257"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/tags?post=257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}