{"id":55,"date":"2008-01-31T10:21:05","date_gmt":"2008-01-31T18:21:05","guid":{"rendered":"http:\/\/blog.astroplanner.net\/?p=55"},"modified":"2008-02-04T10:26:52","modified_gmt":"2008-02-04T18:26:52","slug":"some-views-on-software-development-part-2","status":"publish","type":"post","link":"http:\/\/blog.astroplanner.net\/?p=55","title":{"rendered":"Some views on software development. Part 2"},"content":{"rendered":"<p>Having written part 1 while suffering from a severe bout of quasi-depression because I was unable to get my software compiled with the almost-final-release of the IDE I use, I was all ready to make Part 2 a meandering diatribe about software quality, etc. However, after several hours of scouring my code I finally located and fixed the problem that was causing the IDe to crash. Hence I&#8217;m somewhat mollified. The howling gale in my sails is now just a stiff breeze.<br \/>\n<!--more--><br \/>\nPerhaps I should talk a bit about my choice of development tools, which seems to make some of my more software-development-savvy users&#8217; eyes roll.<\/p>\n<p>My current tool-of-choice is a language\/IDE called REALbasic. Eyes start rolling. &#8220;BASIC? Surely that&#8217;s for 13-year-olds and amateur software developers. Are you saying that AstroPlanner is a collection of code that looks like:<\/p>\n<pre>10 REM Code starts here\n20 LET A1 = 12\n30 GOSUB 1200\n...\n<\/pre>\n<p>?&#8221;<\/p>\n<p>Well, no. REALbasic is a full-blown compiled (not interpreted) object-oriented language with some pretty sophisticated syntactical features. It&#8217;s about as close to 1970&#8217;s BASIC as an ox cart is to a Maserati. It&#8217;s far from perfect, but it does have some compelling advantages (for me).<\/p>\n<p>When I first started programming AstroPlanner, Mac OS X had been announced, but I was still using the Mac Classic OS (Mac OS 9). The only compiler IDE vendor was Metrowerks, and it was vanishing faster than a puddle in Nevada. I had used it over the years to develop code in Pascal, and that was dropped in favour of the Flavour Of The Day, C++.<\/p>\n<p>I don&#8217;t &#8220;do&#8221; C or C++. C is a crude, non-object-oriented, assembler replacement language, designed to write low-level code. C++ is an over-engineered object-oriented edifice built on top of C. It&#8217;s very easy to write completely obscure code in C++, and difficult to write code at a fast clip. I like strongly-typed OO languages that are designed to assist the programmer.<\/p>\n<p>I briefly dabbled with Java, a half-way decent language, but my bookshelf filled so rapidly with ever more voluminous books about the frameworks, that I very soon was unable to stay current. Also Sun was not helping by ignoring the Mac, leaving Apple to do all the engineering (that has now changed, and Mac OS X is now the platform of choice for Java development, I&#8217;m told).<\/p>\n<p>I had for many years used Borland&#8217;s Delphi for several large and complex projects. A very nice, very stable IDE based around object-oriented Pascal. However, it had one major disadvantage &#8211; it was Windows-only. Fine for the (salaried) work I was doing, but not for Mac development.<\/p>\n<p>Then I discovered REALbasic for the Mac. It was an object-oriented language, with several very compelling advantages (the Pro version):<\/p>\n<ul>\n<li>RAD (Rapid Application Development) IDE made it very easy to throw together simple apps.\n<li>Compiled code (no run-time interpreter or libraries required).\n<li>Built-in SQL database support.\n<li>Built-in scripting language (also REALbasic).\n<li>Compiling applications to various platforms from one set of source code (Mac Classic, Mac OS X, Windows, Linux).\n<li>Remote debugging (debug a Windows app from the Mac).\n<li>Not terribly expensive.\n<li>Excellent support and user support forums.\n<\/ul>\n<p>The IDE also runs on Mac, Windows and Linux, and compiles to all the other platforms.<\/p>\n<p>Pretty cool huh?<\/p>\n<p>So I assimilated this product, mainly for it&#8217;s ability to run on the Mac and produce Mac applications.<\/p>\n<p>Of course, there&#8217;s always some downsides (apart from the BASIC stigma), some of which have accumulated over the years:<\/p>\n<ul>\n<li>The IDE is enormous. My 2GB RAM PowerBook is constantly thrashing. This is a side effect of the IDE being written in itself (yes, the REALbasic IDE is now written in REALbasic), and many large frameworks.\n<li>Applications (even Hello World) are large. They include all the required frameworks, which can be many megabytes in size.\n<li>The IDE is buggy. This is a side effect of the vendor being a small company with limited resources, together with the fact that they are using a faulty product to develop the faulty product (eating their own dog food, as the saying goes). Each release fixes a bunch of stuff and breaks a bunch of stuff. It deserves a long blog entry of its own. That being said, the vendor does seem to be moving towards spending more time on fixing bugs.\n<li>Cross-platform apps are difficult to get right. This isn&#8217;t only a problem with REALbasic. A cross-platform app is largely a compromise, especially if the GUI elements are shared.\n<li>Flawed release regime. REALbasic has a new release every 90 days or less. I used to think this was a good idea. Not any more. 90 days is not long enough to get bugs out of the software.\n<\/ul>\n<p>However, that all being said, REALbasic allows me single-handedly to create, support and update a complex cross-platform application in a reasonable time-frame. If I was using Java or C++, we&#8217;d still be on AstroPlanner V1.1.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Having written part 1 while suffering from a severe bout of quasi-depression because I was unable to get my software compiled with the almost-final-release of the IDE I use, I was all ready to make Part 2 a meandering diatribe about software quality, etc. However, after several hours of scouring my code I finally located [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-55","post","type-post","status-publish","format-standard","hentry","category-software-development"],"_links":{"self":[{"href":"http:\/\/blog.astroplanner.net\/index.php?rest_route=\/wp\/v2\/posts\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.astroplanner.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.astroplanner.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.astroplanner.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.astroplanner.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=55"}],"version-history":[{"count":0,"href":"http:\/\/blog.astroplanner.net\/index.php?rest_route=\/wp\/v2\/posts\/55\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.astroplanner.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.astroplanner.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.astroplanner.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}