TweetFollow Us on Twitter

January 92 - In Transit to MacApp 3

In Transit to MacApp 3

Howard Katz

I've been away from FrameWorks for a few months, but I haven't been away from the Mac and MacApp. I've made a move from Pascal to C in my own programming work-initially, with a lot of trepidation-and I've also done some playing around with beta versions of MacApp 3, pursuant to jumping into C++ with both feet. First, the news…

MacApp 3 final-getting close

According to Tom Chavez, MacApp's product manager at Apple, there are about 125 MacApp 3 beta sites out there, all merrily compiling away on beta number 3, digging up bugs galore. It saddens my heart to tell you this, but yes-there are bugs, though the number is diminishing with each successive beta release.

As I write, beta number 4 will soon go out to the seed list, a few short weeks before Christmas. If schedules hold, the final release of MacApp 3 should be finished and ready to go by the end of January-theoretically, about the time you're reading this. Tom says that even if that happens, though, it's unlikely that the documentation will keep pace with the software development, so you probably won't see a version that APDA can ship on the street before MADA's Orlando conference in February.

Ditto to Jesse

Jesse Feiler wrote a nice little piece for the last FrameWorks on his experiences in moving from MacApp 2 and Object Pascal to MacApp 3 and C++. I suspect the information that Jesse provided will be helpful for other developers who are going to be making the same move. It was for me.

In getting ready to move into C++, I've just made a similar though smaller transition of my own-from Pascal to C. I can strongly echo at least one of Jesse's sentiments-if you're going to make the language jump, dive right in. Stop reading about the language, just do it.

I had a lot of trepidation before making the move, and about one anxious week of trying to figure out what things weren't working and why. But that was it; it was relatively painless.

I spent four months on a C language programming project about four years ago, so this wasn't my first exposure to the language. But it didn't "take" very well the first time around. This time, for whatever reason, it did. I'm enjoying it.

Mostly bigger, hopefully better

I finally got a copy of MacApp 3 running on my system, though I haven't done anything serious with it yet. I'm still in the MacBrowse exploring stage. As it is, MacApp 3 grunts and wheezes and barely runs on my machine. I've an old, stock standard Mac II. I had to dig into the bank account to upgrade my RAM from 5 to 8 megs to get MacApp 3 to compile at all, and it complains bitterly at that. MacApp 3 development really requires 9 megs, or 8 megs and virtual memory, and that I don't have at the moment.

This seems pretty incredible to me. I can remember-though I'm not sure I want to-compiling MacApp applications on a Plus. Such a thing is no longer within the realm of possibility, even as a thought experiment. The main villain, I'm told, is CFront, which requires-this is no typo-5 megs to run. Great Caesar's ghost!

It seems that just about everything about MacApp 3 is bigger, and that doesn't necessarily mean better. Disk space requirements provide another example. I've got an external 40 meg drive hung off my machine that I use only for occasional programming projects, and amazingly enough, it's too small. I used to do everything on a 40-meg hard drive; now it's not even large enough for MacApp, let alone anything else.

It's easy to see why when you look at the numbers. My MPW folder, little changed from the way it arrived in the mail, is well over 12 meg, and my MacApp folder is over 21. The latter number, on your system, will depend on the number of different versions you need to compile MacApp in. There used to be just two: "Debug" and "NoDebug." There are now a minimum of four, when you factor in whether or not you're supporting System 7. Just my ".NoDebug Files" folder, created by MacApp, is well over 3 megs.

New idioms galore

RAM and disk requirements are a downer, and I haven't even talked about compile times yet. But everything else is peachy-keen. There are new idioms galore. How's the following for a good example of some of the potentially baffling and interesting new things in MacApp 3? This little gem is right out of TObject:
pascal void TObject::UpdateDependents(
                ChangeID theChange,
                TObject* changedObject,
                TObject* changedBy)
{
CDependentIterator iter(this);
for (   TObject* dependent = iter.FirstDependent(); iter.More();
        dependent = iter.NextDependent())
    {
        dependent->HandleUpdate( theChange, changedObject,
            changedBy);
    }
}

Coming into MacApp 3 from an MacApp 2 and Object Pascal background, I count at least five idioms here that are new to me. If you're new to C and object programming in particular, probably everything looks at least slightly bizarre. Even if you're an old and experienced C hand from way back, there are strange things happening here. The three clauses that determine the boundary-condition behavior of the "for" loop, for example, probably look somewhat, well, wrong. And yet, they do make sense-eventually.

How about the declaration "CDependentIterator iter(this)" in the above sample? That's worth at least a few minutes of silent contemplation the first time it's encountered in code. I know what a "T…" class is; what's a "C…" class? Can we all say "stack-based object" in unison? In other words, an object declaration where we really have the object itself, and not an indirect reference to one through either a pointer or a handle.

And what about the parameter the function takes-"this" in the above example? We've all been hearing about constructors; here's one in the flesh.

What else? What's a "CDependentIterator" anyway? Iterators are one thing; dependencies are something else again. The combination of the two is only slightly more potent than the nuclear-powered salsa that took my mouth out of action for two hours yesterday at lunch.

TObject, by the way, is quite a bit more beefed up than what I'm used to from earlier incarnations of MacApp. It's hard to believe this class once had a grand total of four-that's 4-methods, and that they were all we needed. By my count, TObject now has at least 36 methods. MacApp 3's new dependency-notification mechanism accounts for a good number of them.

References to the rescue

I had a few books open next to my machine as I MacBrowsed my way through the MacApp 3 source code. Occasionally I'd venture over to Harbison and Steele, the "official" C language reference manual. I'm told there's a C++ version out as well, but I haven't seen it yet.

Kernighan and Ritchie's "The C Programming Language" is also highly recommended. It's from Prentice Hall. Make sure you pick up the second edition when you go shopping.

I'll put in a plug for one other C++ language reference that I find myself dipping into and out of when I have a few moments to spare, and that's Dan Weston's Elements of C++ Macintosh Programming. Dan's discussion of C++ language features is based around a class library that he develops in the book. In many respects it looks like MacApp-two of the main classes are called "TApp" and "TDoc," respectively. Dan's a MacApp programmer from way back and makes the odd appearance at MacApp conferences. I've been enjoying the book and finding it useful.

I'll be picking up some of the other "great" C++ references over the next few weeks and will try and do some quick reviews in columns to come. In the meantime, I hope you had a good Christmas season and are looking forward to a sunny vacation in Orlando. Florida, watch out!

 
AAPL
$111.78
Apple Inc.
-0.87
MSFT
$47.66
Microsoft Corpora
+0.14
GOOG
$516.35
Google Inc.
+5.25

MacTech Search:
Community Search:

Software Updates via MacUpdate

NeoOffice 2014.6 - Mac-tailored, OpenOff...
NeoOffice is a complete office suite for OS X. With NeoOffice, users can view, edit, and save OpenOffice documents, PDF files, and most Microsoft Word, Excel, and PowerPoint documents. NeoOffice 3.x... Read more
LibreOffice 4.3.5.2 - Free Open Source o...
LibreOffice is an office suite (word processor, spreadsheet, presentations, drawing tool) compatible with other major office suites. The Document Foundation is coordinating development and... Read more
CleanApp 5.0.0 Beta 5 - Application dein...
CleanApp is an application deinstaller and archiver.... Your hard drive gets fuller day by day, but do you know why? CleanApp 5 provides you with insights how to reclaim disk space. There are... Read more
Monolingual 1.6.2 - Remove unwanted OS X...
Monolingual is a program for removing unnecesary language resources from OS X, in order to reclaim several hundred megabytes of disk space. It requires a 64-bit capable Intel-based Mac and at least... Read more
NetShade 6.1 - Browse privately using an...
NetShade is an Internet security tool that conceals your IP address on the web. NetShade routes your Web connection through either a public anonymous proxy server, or one of NetShade's own dedicated... Read more
calibre 2.13 - Complete e-library manage...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital librarian... Read more
Mellel 3.3.7 - Powerful word processor w...
Mellel is the leading word processor for OS X and has been widely considered the industry standard since its inception. Mellel focuses on writers and scholars for technical writing and multilingual... Read more
ScreenFlow 5.0.1 - Create screen recordi...
Save 10% with the exclusive MacUpdate coupon code: AFMacUpdate10 Buy now! ScreenFlow is powerful, easy-to-use screencasting software for the Mac. With ScreenFlow you can record the contents of your... Read more
Simon 4.0 - Monitor changes and crashes...
Simon monitors websites and alerts you of crashes and changes. Select pages to monitor, choose your alert options, and customize your settings. Simon does the rest. Keep a watchful eye on your... Read more
BBEdit 11.0.2 - Powerful text and HTML e...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more

Latest Forum Discussions

See All

Galaxy Trucker Pocket (Games)
Galaxy Trucker Pocket 1.0.8 Device: iOS iPhone Category: Games Price: $2.99, Version: 1.0.8 (iTunes) Description: Galaxy Truckers Wanted!================================================================= (5/5) "Galaxy Trucker isn’t... | Read more »
Make your own Tribez Figures (and More)...
Make your own Tribez Figures (and More) with Toyze Posted by Jessica Fisher on December 19th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
So Many Holiday iOS Sales Oh My Goodness...
The holiday season is in full-swing, which means a whole lot of iOS apps and games are going on sale. A bunch already have, in fact. Naturally this means we’re putting together a hand-picked list of the best discounts and sales we can find in order... | Read more »
It’s Bird vs. Bird in the New PvP Mode f...
It’s Bird vs. Bird in the New PvP Mode for Angry Birds Epic Posted by Jessica Fisher on December 19th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Telltale Games and Mojang Announce Minec...
Telltale Games and Mojang Announce Minecraft: Story Mode – A Telltale Games Series Posted by Jessica Fisher on December 19th, 2014 [ permalink ] | Read more »
WarChest and Splash Damage Annouce Their...
WarChest and Splash Damage Annouce Their New Game: Tempo Posted by Jessica Fisher on December 19th, 2014 [ permalink ] WarChest Ltd and Splash Damage Ltd are teaming up again to work | Read more »
BulkyPix Celebrates its 6th Anniversary...
BulkyPix Celebrates its 6th Anniversary with a Bunch of Free Games Posted by Jessica Fisher on December 19th, 2014 [ permalink ] BulkyPix has | Read more »
Indulge in Japanese cuisine in Cooking F...
Indulge in Japanese cuisine in Cooking Fever’s new sushi-themed update Posted by Simon Reed on December 19th, 2014 [ permalink ] Lithuanian developer Nordcurrent has yet again updated its restaurant simulat | Read more »
Badland Daydream Level Pack Arrives to C...
Badland Daydream Level Pack Arrives to Celebrate 20 Million Downloads Posted by Ellis Spice on December 19th, 2014 [ permalink ] | Read more »
Far Cry 4, Assassin’s Creed Unity, Desti...
Far Cry 4, Assassin’s Creed Unity, Destiny, and Beyond – AppSpy Takes a Look at AAA Companion Apps Posted by Rob Rich on December 19th, 2014 [ permalink ] These day | Read more »

Price Scanner via MacPrices.net

Holiday sale: 13-inch 128GB MacBook Air for $...
 Best Buy has the 2014 13-inch 1.4GHz 128GB MacBook Air on sale for $849.99, or $150 off MSRP, on their online store. Choose free home shipping or free local store pickup (if available). Price valid... Read more
13-inch 2.6GHz Retina MacBook Pro on sale for...
Best Buy has lowered their price on the 2014 13″ 2.6GHz/128GB Retina MacBook Pro to $1149.99 on their online store for a limited time. That’s $150 off MSRP and the lowest price available for this... Read more
Kodak Returns to CES With New Consumer Produ...
Former photography colossus Kodak is returning to CES for the first time in three years where the Kodak booth (#21818 South Hall 1) will showcase a wide range of innovative, imaging-related products... Read more
Invaluable Launches New Eponymously -Named A...
Invaluable, the world’s largest online live auction marketplace, hhas announced the official launch of the Invaluable app for iPad, now available for download in the iTunes App Store. Invaluable... Read more
IDC Reveals Worldwide Mobile Enterprise Appli...
International Data Corporation (IDC) last week hosted the IDC FutureScape: Worldwide Mobile Enterprise Applications and Solutions 2015 Predictions Web conference. The session provided organizations... Read more
Hello Vino Wine App Launches “Safe Ride Home”...
Hello Vino has announced addition of a new “Get a Safe Ride Home” feature in its Food & Drink app with a direct connection to Uber, the technology platform that connects users with rides. The... Read more
DEVON-technologies Releases DEVONthink To Go...
Coeur d’Alene, Idaho based DEVON-technologies, LLC has updated DEVONthink To Go, its mobile companion to DEVONthink, to version 1.5. The update includes an iOS 8 extension, compatibility with the... Read more
The Apple Store offering free next-day shippi...
The Apple Store is now offering free next-day shipping on all in stock items if ordered before 12/23/14 at 10:00am PT. Local store pickup is also available within an hour of ordering for any in stock... Read more
It’s 1992 Again At Sony Pictures, Except For...
Techcrunch’s John Biggs interviewed a Sony Pictures Entertainment (SPE) employee, who quite understandably wished to remain anonymous, regarding post-hack conditions in SPE’s L.A office, explaining “... Read more
OtterBox Defender Series Case For iPad mini 3...
With their innovative Touch ID technology and ultrathin profile, the latest tranche of Apple iPads are more desirable than ever, and OtterBox has just announced the Defender Series custom-engineered... Read more

Jobs Board

*Apple* Store Leader Program (US) - Apple, I...
…Summary Learn and grow as you explore the art of leadership at the Apple Store. You'll master our retail business inside and out through training, hands-on experience, Read more
Project Manager, *Apple* Financial Services...
**Job Summary** Apple Financial Services (AFS) offers consumers, businesses and educational institutions ways to finance Apple purchases. We work with national and Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.