Best Developer Tools for OS X 201
NoviceW writes to share that there are plenty of interesting articles written about Mac OS X applications for switchers, but not many guides focused on programmers switching from other operating systems. This guide lists a few of the more prominent tools for Mac developers, what other tools can't you do without?
Objective-C (Score:2)
Re:Objective-C (Score:2)
Re:Objective-C (Score:2)
Re:Objective-C (Score:2)
Re:Objective-C (Score:2)
So does Perl.
Yeah. :) Until you try calling a function with a struct as a parameter. Or try doing anything even remotely object-oriented.
Those are the two big things that finally drove me from Perl to Ruby. I could never go back. Ruby has almost all of the nice things of Perl, with almost none of the insanely stupid bits.
Re:Objective-C (Score:2)
This reeks of fanboy, sorry.
Re:Objective-C (Score:4, Interesting)
You obviously don't know how to program in C++:
class Silly
{
public:
static const char *GetName() {return "SillyClass";}
}
printf("%s\n", Silly::GetName());
A couple of notes:
1) In general, C-style fixed length character arrays (and indeed C pointers of all types) should be avoided in C++, which together with the STL, has much more robust mechanisms that do most if not all of the same jobs. The example above is however excusable due to the fact that is is returning a pre-compiled constant via a constant pointer -- it is also both simple and understandable to those not familiar with the STL.
2) C library functions such as "printf" should also be avoided for the same reasons. It is only present in my example because the parent post used it, and things are generally clearer if a reply utilises the same idioms as the original.
Finally, it pays to learn at least the rudiments of a language before publicly claiming that it cannot do something. The use of the "static" keyword to declare class variables and methods is kindergarten C++, not "deep voodoo" that only gurus know about.
Comment removed (Score:5, Insightful)
Re:Objective-C (Score:2)
Seriously, though, can we get a C-syntax version of it already? It's FRICKING UNREADABLE.
I hope you're joking, but I don't think you are. Objective C has one of the most readable syntax of any language I know.
[newImage initWithContentsOfFile:fileName];
Re:Objective-C (Score:3, Interesting)
newImage.initWithContentsOfFile(fileName);
This tells me:
- I'm working with an image, not a pointer to an image (or I would've used ->).
- initWithContentsOfFile() is a member function, not a member variable.
I get none of that from Obj-C, though that's probably just because I'm not familiar with it. But that doesn't mean that the language isn't unreadable. Why? Well, I can honestly say that I've tried to learn Obj-C's syntax. I learned C-syntax early,
Re:Objective-C (Score:2, Informative)
initWithBitmapDataPlanes:planes pixelsWide:300 pixelsHigh:400 bitsPerSample:24 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:nil bytesPerRow:1200 bitsPerPixel:24.
In your world, that would be
initWithBitmapDataPlanesPixelsWidePixelsHighBitsPe rSampleSamplesPerPixelHasAlphaIsPlanarColorSpaceNa meBytesPerRowBitsPerPixel(planes, 300, 400, 24, 3, NO, NO
Re:Objective-C (Score:2, Informative)
When i first learned about Objective-C, I had some trouble grasping the idea too but it turned out that I was getting confused due to now knowing enough about the languagee and not taking time to learn the new terms.
The [ and ] means message passing is being done. Note, that is "message passing" not "calling function" You need to change your thinking and world whe
Re:Objective-C (Score:2)
It took me a day or two to adjust my thinking to Objective C, but from then on it makes perfect sense and is much more readable than C. I jump back and forth between the two syntaxes too. Python uses the dotted style.
Re:Objective-C (Score:3, Insightful)
Reading your post what's interesting is that the languages you found easy to move around in were all procedural, so I wonder if the problem is actually to do with making the procedural / OO transition? I'll confess that having been programming since the early 80s, I still don't 'think OO' in the way I see younger developers do (someti
Re:Objective-C (Score:3, Insightful)
Re:Objective-C (Score:2)
Re:Objective-C (Score:2)
Re:Objective-C (Score:3, Interesting)
I'm a bit of a heretic, but I think Appl
Re:Objective-C (Score:2)
No. It's proof that it doesn't work for statically typed languages with limited dynamic capabilities. (Maybe that's what you mean by "real", in which case we have an irreconcilable definition dispute). The Python bridge works quite well; in fact some things in Cocoa are easier to do in Python than ObjC.
I'm a bit
Re:Objective-C (Score:2)
M$ has worked very hard in making C an OOP-like language. It's not that C doesn't allow you to do everything that C++ or Obj-C does .. they are after all just languages (besides which, Obj-C and C++ were originally just precompilers that gener
AppKiDo (Score:4, Informative)
X11? MAMP? (Score:2)
Also... Why is MAMP listed? Isn't the 'A' in MAMP installed by default even if it's not OS X Server?
I think what's missing is DarwinPorts... that's a nice fast way to install stuff.
MAMP? oh yeahhh... (Score:4, Informative)
well - MAMP (mamp.info [mamp.info]) does give you everything in one package, with the newest versions (Apache 2 & PHP 5)...
and it really invites to screw around with the setup.
before MAMP i often hesistated to install experimental stuff, now i can just drag the one(!) folder to the trash and start with a fresh install.
things i did with MAMP which were hard to realize otherwise (sitting with the powerBook on the couch) include
and much more...
it really helps if you enjoy messing around with a server setup and want to learn how everything works without srewing up your Mac OS install
Shark. (Score:5, Informative)
'nuff said.
--ryan.
Re:Shark. (Score:2, Interesting)
Vi (Score:5, Interesting)
Anyway, like any good *nix, OS X comes with vim pre-installed. Just make sure you have X11 and it is business as usual just like it was back on my old Sun Sparcstation 1 running SunOS 4.1.3
Re:Vi (Score:2, Informative)
Have you added cscope [sourceforge.net] to yours yet?
Re:Vi (Score:3, Funny)
Re:Vi (Score:2)
However, for those of you more comfortable with emacs, you should check out aquamacs [aquamacs.org]. It's got some nice features specific to OS X.
Also, I don't really want to start a flame war, just point out the aquamacs link for those looking for a nicer emacs experience on OS X.
Re:Vi (Score:3, Informative)
But I have to say, that in all my years programming, I have never been more productive than when using emacs on a widescreen with 2 vertically seperated windows open at all times. And if neccessary, a few additional console windows. The hands never leave the keyboard in that setting. You have svn/shell/dired/ssh/editing/documentation readily available, all only being a tenth of a second away at your fingertips. Even for file management that tha
Re:Vi (Score:3, Funny)
Re:Vi (Score:2)
(Actually there is one other editor I loved, back on the Atari ST, which I think was called Tem
Cyberduck (Score:2)
It rocks!
http://cyberduck.ch/ [cyberduck.ch]
Re:Cyberduck (Score:3, Informative)
http://rsug.itd.umich.edu/software/fugu/ [umich.edu]
Free Pascal (Lazarus in future?) (Score:2)
I use Free Pascal on my Mini which gives me access to existing Delphi code as well as native interfaces. (Code Warrior Mac/Carbon code is easily converted, as Carbon headers come with it)
I have ported some GUI apps using Lazarus (Lazarus.freepascal.org), but the Carbon native port is not ready, and these run under XDarwin.
Re:Free Pascal (Lazarus in future?) (Score:2)
There is some XCode integration for FPC btw. The last release was the initial XCode support, in the next release (within a month) it should work better.
MacDevCenter (Score:5, Informative)
Also, Server Logistics [serverlogistics.com], a Mac based web hosting company with cred, offers pre-packed mySQL [serverlogistics.com] for free. Gotta love that Aaron Faby.
Re:MacDevCenter (Score:2)
Once you have X11 installed you can add ... (Score:2)
Once you have X11 installed then you can also get
1) Inkscape [inkscape.org] (Universal)
2) Gimp [gimp.org] (Universal)
I'm sure there are
and KDE, Gnome etc. (Score:2)
Once you have spent around a day watching fink compile all the libraries and applications for you KDE runs superbly on a mac. You can either alloiw it to manage the desktop and run fulll screen or simply run a toolbar in the manner of the dock. I would then highly recommend Kate - the KDE advanced text editor which is excellent f
Re:and KDE, Gnome etc. (Score:2)
Is KDE
Re:and KDE, Gnome etc. (Score:2)
Eclipse (Score:4, Informative)
Of course, Eclipse is a good tool because it is multiplatform and highly extensible. I find it great for java and python (through pydev) work on my Mac and other boxen.
or NetBeans (Score:2, Informative)
And if you're new to Swing development, Matisse (the GUI designer in NetBeans) really helps a lot... it makes it easy to develop java GUI's in the same way that Visual Studio makes it easy to develop winforms GUI's.
If you're a java develop
Re:Eclipse (Score:2)
Re:Eclipse (Score:2)
Everybody RTFA Now! (Score:2)
They did. FTFA:
ZigVersion (Score:2, Informative)
Re:ZigVersion (Score:2)
Interesting. An easy to use GUI for accessing Subversion could be very useful. Having helped Windows users with their WinCVS and TortoiseCVS for years though, I wonder if it won't have many of the same usability problems as the former. The number one problem with WinCVS is that users get confused switching between the explorer and CVS viewers for the same files. Tortoise solves that problem by working as a plug-in that lets users perform CVS commands by selecting and right-clicking in the regular explorer a
TextWrangler, Sampler (Score:4, Informative)
Although I've come to use emacs more and more for quick source modifications and when programs are only 1 source file, I still appreciate the use of a good IDE like xcode (although I do think that visual studio is still a bit better) for the simplicity in navigating a large project. On the other hand, emacs does far better than xcode or visual studio at automatically indenting code.
I've found that the OSX developer program Sampler (which comes free with the developer distribution) is also a great program useful for getting a quick feel for where the bottle necks in my program are. Sampler is really intuitive to use, and it provides a nice way of navigating the calling tree of your program allowing you to see how different functions are spending what fraction of compute time. The only thing about Sampler that bugs me is that if I save the data, I haven't figured out how to get the data in terms of percents (as opposed to sample counts) when I load it later.
Re:TextWrangler, Sampler (Score:3, Informative)
However the reason I lean towards IDEs like Eclipse today, is that while Emacs may be a wonderful editor, it gets really painful really fast when you're navigating across a project with many files in many directories.
Re:TextWrangler, Sampler (Score:2)
I use it every day, and it was worth every penny (Text Wrangler is the free version which is still pretty feature complete).
We use SVN at work and the integrated SVN tools (runs against the local repository), are great. They also support CVS, although both of these features require purchasing the BBEdit version of the product.
Another of those nice features available in both versions is the ability to open a file remotely via ftp/sftp.
(Also obviously has synt
Re:TextWrangler, Sampler (Score:2)
Use Shark, not Sampler (Score:2)
The only reason to be using Sampler instead of Shark is because you haven't found Shark yet. Shark is part of A
Smultron (text editor) (Score:2)
http://smultron.sourceforge.net/ [sourceforge.net]
Re:Smultron (text editor) (Score:2)
Re:Smultron (text editor) (Score:3, Informative)
That's mostly the same as Emacs' default key bindings, you know.
Re:Smultron (text editor) (Score:2)
Correction re: Parallels (Score:2)
Re:Correction re: Parallels (Score:2, Informative)
Java (Score:2)
Re:Java (Score:2)
It always gives me a kick to see my Java app, developed solely on Windows work almost flawlessly on Linux or OS X. I say almost but there are some minor UI inconsistencies that I need to fix. You mention
Re:Java (Score:2)
You have to set a system property. Something like apple.laf.useTopMenuBar=true, or something like that.
Re:Java (Score:2)
Re:Java and OSX integration (Score:3, Informative)
Re:Java (Score:3, Informative)
It always gives me a kick to see my Java app, developed solely on Windows work almost flawlessly on Linux or OS X. I say almost but there are some minor UI inconsistencies that I need to fix. You mention for example the menu bar should go at the top, but it doesn't in my app. Also, my menus look a bit stupid since it uses the Windows conventions for menu structure for underlining accelerator keys, e.g. File.
Both Apple and Sun have developer guides for fully integrating your Java Swing app into Mac OS X.
Re:Java (Score:2)
Also, here's how to manually create a Mac OS X application bundle from a Java program. The example is for an SWT program, but there would be no changes needed for a Swing app. In the shell script, just make sure that you add all necessary Mac-specific command line options.
http://www.eclipse.org/swt/macosx/ [eclipse.org]
Re:Java (Score:2)
How about Java? You run it on Mac OS-X and it looks just like an OS-X app, complete with top menu bar. All this and you don't have to change the source from Windows. I don't know if there are subtle differences to "real" OS-X apps that Mac heads would see, but from my point of view it works well.
A properly configured Java Swing application is, as far as I can tell, indistinguishable from an ObjC-Cocoa application from the end-user's perspective.
I haven't developed using SWT, but the only SWT app that I
Quicksilver (Score:3, Informative)
Re:Quicksilver (Score:2, Informative)
If you don't like to take your hands off of the keyboard, you need this!
Beyond Compare replacement? (Score:2)
Re: (Score:2)
Re:Beyond Compare replacement? (Score:2, Informative)
FileMerge and BBEdit/TextWrangler (Score:3, Informative)
Also, BBEdit/TextWrangler both have a good compare utility and TextWrangler is free.
My favorite though is CodeWarrior's compare utility. It is simple and easy to use but CodeWarrior is now dead. Plus, there would be no point in buying CW just for its compare utility. Still, it's probably the one I use the most.
Depends on what you do (Score:3, Informative)
If you do Java, you have Eclipse or IDEA, both of which are streets ahead of XCode for Java coding. XCode doesn't even compare here.
And if you do Profeesional PHP coding (yes, it does exist), you may as well spend the money on the Zend IDE, since there is no other PHP IDE on OSX that shows classes and offers code completion and debugging as Zend does.
You can of course use Textmate for RoR, since it seems it was engineered with that in mind mainly, but you can do just as well for any of the PHP, Ruby and Python (and Perl, for that matter) group with the respective Eclipse plugins.
I personally use Subethaedit for quick single file editing and Eclipse for anything else. Textmate and BBedit offer me nothing that Exclipse doesn't.
Finally, a good knowledge of vi/vim is a real plus since it's what is easiest to use when you need to edit files quickly in the terminal. Trying to futz around with a GUI editor when you're editing init.d scripts etc is a waste of time. Plus vi will be on any and every Unix type machine you will ever find.
qt 4.0 (Score:3, Informative)
JEdit (Score:2)
I enjoy using JEdit [jedit.org]. It does syntax highlighting and all the indention things programmers need. I usually find myself going back and forth between vi and JEdit, depending on what I'm doing.
Of course, you can use MySQL with Java these days too, using the connector. But I don't of a better tool than the commandline mysql tool, with which you can write queries and format them to make sure your code is w
Missing from the list: Realbasic (Score:5, Interesting)
For the right job RB is a great tool.
Re:Missing from the list: Realbasic (Score:2)
Subversion (Score:2)
My favorite right now on the Mac is svnX: http://www.versiontracker.com/dyn/moreinfo/macosx/ 24158 [versiontracker.com] There are others, but they all have their various quirks that have kept me coming back to svnX.
If anyone knows of
SubEthaEdit (Score:4, Informative)
Tools for web (not 'Mac') developers maybe (Score:3, Informative)
So, for Mac application developers, here's a better list:
- BBEdit - the best text editor, period.
- Interface Builder - the best GUI builder.
- Shark - if performance is important then there's no better tool.
- Xcode - well, there's really no other choice these days, and it's getting better.
- AppKiDo - for quick reference to the Cocoa APIs.
- Terminal - good enough for me.
- OmniGraffle - for application/class modeling and design.
There are many other important and useful applications, but these ones really are the core essentials for application development (at least for me). Anything I left out?Re:OS X Native Development Pointless (Score:5, Insightful)
One can run Linux alongside Windows on the same hardware. Why, then, has Linux application development not shrivelled up? Why are there native Linux applications? Perhaps it's because if a user has chosen an 'alternate platform' such as OS X or Linux, they're not going to be very happy about having to run Windows too; dual-booting is never as pleasant as running a native app, and perhaps - just perhaps - there are things OS X, Linux, et al can do that Windows can't.
And besides, with more Macs being sold, perhaps marketshare isn't everything. An audience of several million is still an audience of several million...
Re:OS X Native Development Pointless (Score:2)
But the serverside is a different story. Still mostly services based, but way more money involved
Comment removed (Score:5, Insightful)
Re: (Score:2)
Comment removed (Score:4, Funny)
Re:PHP and professional in the same sentence? (Score:2)
Perhaps you're unaware that sessions are merely just an identifier (either sent through a cookie, or through the urlstring) telling PHP where it can fetch unique data.
This is nothing new, and has been the recommended way of doing persistence/state handling on the web for quite some time.
PHP does not teach you bad coding habits, as there's more than one way to do something - sure, it does offer you "the easy way" quite often, but if you're the one to tak
Re:PHP and professional in the same sentence? (Score:2)
That's just it, the "easy way" should, more often than not, be the right way. That is what pisses me off about PHP. It is so damn easy to write bad/insecure code. To do things right, you have to remember tons of rules and best practices. On the other hand, doing things the Right Way in Ruby on Rails, for exampl
Re:PHP and professional in the same sentence? (Score:2)
That this comment has been moderated anything other than troll is a sad indictment of Slashdot's current breed of moderators. Someone who is obviously a failing developer (ie they can't build a web application in one of the web's most heavily used languages) gets to +4 Interesting? That's really sad.
Re:PHP and professional in the same sentence? (Score:5, Informative)
I am pretty sure PHP can do more than just web guestbooks. You know, little things, like running Friendster [photomatt.net], Yahoo [oreillynet.com], and GAIA Online [gaiaonline.com]. I've also run apps like the OSS Horde/IMP [horde.org] web-based mail front-end with tens of thousands of users. I reuse PHP code all the time. And if you add in some of the code optimizers and server accelerators, you can really make PHP sing.
You also wrote, "Thanks for wasting years of my life and teaching me bad programming habits, PHP." Which bad habits would that be? There are good and bad ways of writing PHP, just like there are with ANY computer language.
Re:PHP and professional in the same sentence? (Score:4, Funny)
Re:PHP and professional in the same sentence? (Score:2)
Don't forget my favorite: http://www.rubyonrails.org/index.php [rubyonrails.org]
Omigosh. That's hilarious. Must be that Ruby On Rails is just too powerful to run a typical web site.
Re:PHP and professional in the same sentence? (Score:4, Insightful)
I'm really tired of people equating PHP with bad programming and amateurish developers. PHP is a language as is Ruby, Python and Visual Basic for that matter. They're tools, nothing more.
Whether or not YOU choose to employ good coding practises or not when you code in PHP that's up to you. I'm sure there's bad Ruby and Python coders out there too. Granted, PHP may encourage inexperienced developers to take the easier, less maintainable way. But it doesn't mean that that's what happens every time.
Don't bash the developer for the language they're using. Just because you seem to become a worse developer because of it doesn't have to mean that it happens to the rest of us.
Re:PHP and professional in the same sentence? (Score:4, Insightful)
One thing I've learned over the years is you can't ever fully divorce a language from the paradigms burned into its users' heads; they are continually reproduced as if you'd wired in an unconscious brain to fingers macro. Once an idiom is common in a community of programmers, it stays there until it is forcibly ejected by deleting the language and API features it depends on.
What was best feature of C? That the Kernighan and Ritchie were master programmers, and everybody learned from their book. Many also used Kernighan's Software Tools books, and since books on this topic were far fewer in those days, many also had Kernighan and Plaugher's Elements of Programming Style.
The biggest problem with Java is the nearly reflexive bloat of Java Programmers who were weaned on enterprise APIs. The problem with PHP is the opposite: the very first steps a PHP programmer tends to take instruct him on how convenient mixing business logic and HTML is.
There is nothing that prevents you from writing great enterprise PHP software, other than your own habits. But don't underestimate the force of habit.
Re:Umm ... (Score:2, Offtopic)
Keyboards have cursor movement keys nowadays. No need anymore for an escape mode. (even though some people idealise that out of principle now)
Re:Umm ... (Score:2)
Of course, with VI both also require extra keys.
More importantly, since you address typing, the shift-alt states are covered by a normal typing posture. The escape key is not. It is out there somewhere up left.
Re:Xcode - Yeeeeechhh! (Score:2)
NeXT was known for their quality dev tools. what happened? is xcode a rewrite or the evolution of projectbuilder?
This is funny, as I don't think XCode is all that bad. But then ag
Re:Xcode - Yeeeeechhh! (Score:3, Informative)
I would be very surprised if Xcode didn't include optional support for the new free Intel compilers in its next major version (3.0 with OS X 10.5 "Leopard", probably), but I don't think it'll be
I'll see your anecdotal evidence.... (Score:3, Informative)
Well, I've been using XCode for some time now, and not had the problems you're describing. I run it on a next-to-last generation AlBook (1.67GHz G4 with 1GB of RAM), and at least for pure Java projects, its text editing is just fine, it jumps to methods and classes at perfectly reasonable speeds, and the only persistent problems I've had with it is an odd tendency to lose track of how far it should be indented in large files, and a lack of support for the Expression... dialog for debugging Java projects.
S