As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I recently switched over to a MacBook Pro so I'm still really new at Mac software ecosystem. What is the best guide or what tips do you have to quickly get adept at using Mac for developing on both Mac/Unix and MS platforms (*.NET, SharePoint, SQL Server, etc) using VMWare Fusion? For example, I've setup NetBeans, FlexBuilder, Eclipse, TextMate, VMWare Fusion, OpenOffice, FireFox, dragged Terminal.app to my dock, upgraded the Ruby installation and related gems and so on... Things I've not done but looking at (based on other's experiences) include QuickSilver (is it all that different than SpotLight?), MacPorts (or Fink?), getting started with iPhone, Android, and so on. You can tell from my inexperience that I don't know what the best ways of doing things are yet, and don't want to get in the habit of just installing things and then leave files and stuff laying around slowing the system down. If you have any really cool tips about setting up a developer's Mac please share them!
Update: The nature of my job is I'm always working with new/different technologies, some Windows/MS based, some not, and with the Mac (and Fusion) even the MS based stuff is more enjoyable to me.
I'd highly recommend MacPorts - you can quickly and easily install new packages with a simple
sudo port install package-name
Instead of having to deal with browsing a website to find the distribution, download a disk image, and run an installer, or downloading a tarball and untarring it, running a configure script, and running make, etc.
Find some cash and invest in extra memory for your mac. I know it's probably not the tip you want to hear, but honestly, it'll save you frustration in the long run. Apple ships these babies with way less memory than they deserve, and charges an arm and a leg for an expansion. I had a Mac Pro (quad-core Xeon) crawl to a halt until I got some real memory in there.
Another tip is to get a decent keyboard and mouse. Don't trust Steve Jobs with that "single mouse key for everything" crap. It works for ichat, not for real programming. Get yourself a real keyboard and a real mouse with multiple buttons. Configure your middle scrollwheel button to open expose or whatever it is that shows you all windows. Configure your fourth button for magnification.
Also, from your description it sounds like you don't really know what it is that you want to develop. If you're doing mac-specific things, get used to XCode ASAP and lose the rest. If you want to be doing windows programming, not sure why you would use a mac. If you want Java, you have Eclipse, you're ready to go.
Install all the Mac dev stuff, XCode etc., so you get the compilers.
For sure, Macports. Look through their catalog and install all the usual packages you're used to from Linux or other systems -- including development-related stuff like flex/bison, emacs, doxygen, m4, perl, python, etc.
I prefer "iTerm" over the built-in terminal. Don't forget to "export COMMAND_MODE=unix2003" that makes a number of things work the way you're used to.
I haven't given URLs for any of the things I've mentioned. That's what Google is for.
First, install XCode. This gives you the Mac OS X development environment, but most importantly it also installs GCC so you can build both your own projects and applications that are distributed as source code. After that I'd suggest checking out TextMate, a popular text editor for Mac OS X (as seen in the Rails screencasts). If you're an Emacs/Vim user, there's Aquamacs and MacVim.
Invest in a good text editor. See the following questions:
https://stackoverflow.com/questions/100084/what-is-a-good-gui-text-editor-for-the-mac
Mac text/code editor
And by 'invest' I mean both money and/or learning time.
XCode is a good enough editor for Objective-C, but I wouldn't use it as my primary editor for everything.
(MacVim is my choice)
Install the latest version of Xcode (you will need this even if your not developing macintosh/iphone applications)
Install macports for most of your OSS tools (you'll need Xcode first)
To run tools that aren't OSS or are windows only install virtualbox I know there are alernatives (VM fusion is highly rated) but virtual box is free
Install an IDE if you do not want to use Xcode as your IDE (for example eclipse and netbeans)
Finally if you have some cash
Upgrade the ram if required (sw developers love ram especially if you are running a vm :) )
A second display, I can't imagine developing with less than two displays
I did the same in August this year, I bought a Macbook Pro (the small of them but with 200Gb 7200rpm and 4Gb of RAM), and I can tell you about my experience.
I'm a .NET developer and been ASP programmer for more than 10 years, so all I did was Microsoft related, never ever, aparat of installing and playing with Ubuntu, I had experience in the Linux world.
But my mind was on the iPhone SDK development and I even paid my inscription on the iPhone developer Program, all was lovely, I just loved my new Mac! But... Mac programming is a hobby for me, and believe me, Fusion, and even with my 4Gb and placed 2Gb for each OS, does not move as better as in a "normal" laptop, so after 4 month of struggling I formatted my laptop and created a Bootcamp partition (WOW, now I can use it for Windows!) and Fusion can run that Boot camp partition like a Virtual Machine image, and that is good for little times that I need to do something quick.
What you refer and as Uri mention, I don't thing that you know what you are going to do, having a "bunch" of apps in the laptop does say that, because, all you needed is Eclipse for everything else and XCode 3.1 with the SDK for Mac related apps, nothing more!
I was like you, but I realized that I didn't open any other programs that those 2, and except for compiling Objective-C code, was the Mac your better choice?
Instead of vmware fusion, virtualbox.org is free and worth a look.
My choice for a great all-around text editor would be TextWrangler.
Make sure you install Developer Tools (XCode) from your OS disc (and don't try and install GNU version over the top of it :P).
You've already done everything I have, except I'm using Virtual Box instead of VMWare.
I've found OpenOffice to be very slow compared to the actual Microsoft Office for Mac. If you have some budget, I'd recommend that over OpenOffice.
I can second the recommendation for QuickSilver - it's one of the best launchers I've used.
For IM clients, if you have contacts outside of the AIM network then you may want to try Adium - a free multi-IM-network chat client that has handy things like searchable transcripts.
Another general utility that I highly recommend is iStat menus - it gives you a realtime monitor of CPU, memory, disk, etc. right in your menu bar.
QuickSilver is a very good option and yes, it is a bit different from Spotlight due to the large number of plugins you can have. If you have NetBeans, maybe you don't need Eclipse. I'd even say that with TextMate (my editor of choice too), you don't need NetBeans either :)
I second MacPorts, it is more up to date than fink and closer to the FreeBSD ports system (where I come from).
Install Windows using Boot Camp. You can then dual boot between OSX and Windows, use windows as normal for MS development, and OSX for your other non MS stuff.
Related
I have problem with the autocomplete in ActionScript (Flash CS6), so I tried to change the IDE.Unfortunately I find Flashdevelop but it's a windows version.
Is there IDE for developping in ActionScript (Flash) on Mac osx.
You can try Intellij IDEA (is not free like FlashDevelop), I use it and it is better then Flash Builder(I used both) it is missing a UI designer(I think there is a plugin, the developers I know hand code the UI in mxml(drag dropping is for beginners) but a UI designer is useful sometimes.
If you want to spend money, checkout FDT, IntelliJ IDEA and Flash Builder. If you look for something free, there's a free very limited FDT version.
Other then that there also were some standard text editor which people enhanced with some basic dev functionality, for example:
http://www.sephiroth.it/python/sepy.php tried this some years ago and it was unstable on macs. might have improved since then.
Textmate
jEdit
VI http://vrichard86.wordpress.com/2012/12/02/how-to-write-your-own-as3-project-using-vi-and-how-to-compile-it-under-ubuntu-linux-actionscript-3-0/
If you really want to develop bigger projects on a mac I would suggest using one of the paid projects, since productivty with the free products usually is noticable lower.
I found Sublime Text 2 (mac osx) is very simple and useful in AS3 in addition to that the autocomplete is very fast.
I'm in my second computer science course right now. I've enjoyed programming so far, but really have just scraped my way by. I've not done much programming outside of required class work. For similar reasons, I never really invested in downloading/learning software to help me program (IDE's, editors, compilers, etc).
I know it sounds tedious, but my current setup is: notepad++ for coding; Filezilla to transfer .cpp & .h files to school's aludra/unix and compiling; unix tells me where my bugs are and I go back to notepad++ to debug; repeat until done.
This isn't fun - and I know it could be easier. But I put it off knowing that I was soon going to switch to a Mac. And, tomorrow, I'm switching.
So...
How should I set up my Macbook for the best programming experience?
What IDEs and editors and debuggers and so on should I download?
How will Mac programming differ from PC?
I'm open to all ideas and comments, even the most basic.
(Background - I'm learning/programming in C++ right now. Next semester, my classes switch to Java. I'm also going to take a class in web development, with HTML/CSS/Javascript/PHP. My new laptop will be a late 2009 Macbook Pro with Leopard, or maybe Snow Leopard. Free would be preferrable for all programs.)
Thank you all.
How exciting for you, I'm sure your new lappy will be able to make your life as a novice programmer much, much simpler.
Here's what I would do.
Download and install eclipse. It's free, and it's a very good IDE to have if you're going to program java. There are versions available for c/c++ and php as well, and there is a silly amount of great plugins for just about anything you'll ever need. Get it here.
Get the subversive plugin to your eclipse. It will make your life so easy when it comes to managing your code through svn. You can download the plugin through eclipse.
Download Ruby. Ruby is (imho) a great language for beginners, and the irb environment is very handy for trying little things out. Get it here.
Get emacs. Emacs is a great editor, and it's free. Use it for editing your system files, or for coding if you find it suits you. Get it here. (I can also recommend Textmate, it's a really good editor, but unfortunatly not free. If you want to spoil yourself a bit, though, I'd really recommend it.)
If you're doing modelling, you should definitly treat yourself to a licence of omnigraffle. It will definitly make your life easier, and it will let you draw models like nothing else. Get it here.
I would advise you not to bother with macports. Generally I find it will install everything, everyone and their dog on your lappy evertyime you use it, and that gets tedious pretty quickly.
If you're doing any php-stuff, get MAMP. MAMP puts you three clicks away from a running apache, mysql and php-setup without you so much as thinking. Very good piece of software, I think. Get it here.
For the rest of it, just download stuff when the need arises. Most of the things you'll need to install comes in handly little installer packages, and you won't need to know much in order to get them installed and working on your computer.
All the best of luck to you!
You definitely need Developer Tools from Apple. They include:
XCode, a very good IDE and editor
InterfaceBuilder
gcc, g++ and clang to compile code, in various versions
gdb as debugger
Instruments for performance analysis
as well as a lot of other utilities to program in C, C++, Java, Objective-C and Objective-C++.
Python, Ruby and PHP interpreters and libraries come preinstalled with every Mac so don't bother installing it by hand. (the Apache web server is also included, so you only need MySQL to have a full MAMP stack)
The Developer Tools package comes with every MacOSX DVD but I recommend you to download the latest version directly from Apple (it requires a free Developer account).
Once you installed it put XCode in the Dock and that's it! No other stuff needed.
NB: This is the simplest and only supported way of getting compilers and debuggers for C-based languages, even if you won't use XCode as an editor.
Speaking of editors, I recommend you to stick to XCode for a while because it is simple enough, yet very powerful, and it's free.
If you don't like it try TextWrangler (free) or TextMate (paid).
Vim and Emacs are two other good editors, but I don't recommend you to try them right now because they use obscure and non-standard key combinations, so you will spend a lot of time learning how to use them instead of programming.
Anyway the best thing you can do is to learn one editor very well, the effort in learning it will surely pay off every day.
Eclipse is the best editor for java. It's available on a mac for free, just as it is on windows.
There's a good text editor made by barebones software called text wrangler. It's free, and is good about syntax coloring for basic editing.
The best of the best for web development on mac is a tie between text mate and coda. If you're going to be doing a lot of web development, they're worth the investment.
To run a test environment in mysql/php, download MAMP (the mac counterpart to WAMP). Google search it - it's free, and really easy.
Mac programming doesn't differ at all from windows programming if you're writing java, php, etc., because it all goes the same place. Java just boils your code down differently depending on your machine, but it does the same stuff. PHP will probably be held on some sort of linux distro, so it's the same on both. C++ is the same given the appropriate compilers.
Enjoy your mac!
Well, simple situation. I happen to be a software engineer who uses mostly Delphi and C# for software development. Delphi is great for desktop applications while C# is ideal combined with ASP.NET for web applications. However, I am considering to teach myself more about software development for the Mac. Xcode and Cocoa would be the environments to start with. Learning new languages is no problem for me!
However, before starting to write code on a Mac, I first need to buy one and they're reasonable expensive so buying one is a decision that will take me a few months before I know which one I need. So, to help me right now, I would like to know the possibilities that I have to learn more about Mac development without the need for a Mac!
For example, does OS X work in a VMWare environment? Are the development tools also available for Windows? Is there a clear API overview of the OS X libraries?
Or should I first buy a Mac, play with it for a few weeks and then decide on how to develop software for it? In other words, should I start spending now, or in a few months? :-)
Perhaps a macmini would be the best bet but failing that:
MacOSX in VMWare: http://wiki.osx86project.org/wiki/index.php/Vmware_how_to
Development tools for windows? I'd stick to XCode as it can compile multi-binary apps.
Here's the clearest overview I can think of: http://developer.apple.com/referencelibrary/MacOSX/index.html
Hope this helps!
Mac OS X works in a VMWare...
Unfortunately XCode works only on Mac OS...
There are versions of Max OS, which runs on x86 machines. You can avoid buying a Mac PC, but you have to pay for the OS and XCode...
EDIT: Xcode is free
You definitely want a Mac if you want to develop for the Mac. Even Java requires local testing.
That said, Macs are not very expensive and run Windows too.
If you want to learn and start programming before you have a Mac, I recommend either Java or .NET, specifically Delphi Prism.
See here my own first experiment with Delphi prism:
http://leaukiprog.blogspot.com/2009/07/delphi-prism-first-experiment.html
You can write a program for Windows, keep GUI code and other code separate and later replace the Winforms GUI with a native Cocoa GUI on the Mac.
I found that Pascal is a good language for accessing native APIs from .NET. Everything looks cleaner than with C#, I think.
The new version of Delphi Prism is coming out on the 25th, as far as I know.
You might also look into the GNUstep project. This will let you experience objective-c a little bit before you make the plunge, albeit with the GNU libs instead of cocoa.
Good Mac (or iPhone) software is an artisan product; it reflects the culture and tastes of Mac (or iPhone) users. Because the Mac is a premium platform, users tend to be more sensitive to the feel and polish of the apps. Thus to successfully program for the Mac/iPhone or even grok the Cocoa frameworks properly, you have to grok the Mac user experience. Although many coming from the Windows or other-UNIX world try to skip this step, they do so at their own peril.
So, as a Mac developer (who also writes for other UNIX OSes), my recommendation is buy a Mac and start using it, full time if you can. A Mac Mini is completely adequate for development and will set you back only a few hundered dollars, including the OS. Consider that on Windows, this is often less than the price of a full VS license. Everything else (Xcode, libraries, etc.) are free.
Once you have a Mac and begin to grok the feel of things, you'll discover that there are a number of development options. Besides the Cocoa frameworks--which can be used from Python (via the built-in PyObjC bridge), Ruby (via MacRuby or RubyCocoa)—-there are a number of other options. Qt from Nokia and Mono are viable. Often cross-platform apps written in Qt or Mono are disliked on the Mac because they don't feel "native" (see above), but really the problem is not the framework. If you get the Mac user experience you can write a very passable Mac app in a cross platform framework. You just have to intend to write a Mac app, not get a Windows app working on the Mac.
If you code in RealBasic or Lazarus, you can run and compile your apps for both Mac OS and Windows (and Linux in the case of Lazarus). RealBasic isn't that popular outside of the Mac Platform, and isn't free. Lazarus is still a little rough around the edges, but is basically a free version of Delphi.
Lazarus is working hard on a native COCOA port with the next major version of FPC (though that will probably be available only in 2011)
Macs use Objective C. The APIs are very useful and there are many tutorials online. You'll be using Xcode, the Mac equivalent to Windows' Visual Studio and Linux's Glade.
I love making cross-platform applications. In a few hours I can prototype an application in Mac and publish it online. Then it'll take a day or two to port to Windows.
A Mac looks expensive, but it's not if you look what you get for your money.
It is entierly up to you if you buy one or not. I guarantee you'll have a lot fun with it, next to programming. If you want a cheap Mac, just buy a Mac Mini for 500 dollars, which you can connect to the Display you already own.
I recommend doing this on Mac OS X rather than Windows, but again: it's up to you.
P.S. You can use VMWare, but I think it's slow if you have less then 4 GB RAM.
A Mac really isn't that expensive if you go down the second hand route, I was put off by the price of brand new Macbooks so I got a late 2007 model for £350 and added an extra gig of RAM to it.
Reasonably priced, less hassle for development as well!
If you want to have just a general feeling about ObjC and the object libraries, why not giving a try to GNUStep?
Take a look at it here:
http://wiki.gnustep.org/index.php/Main_Page
I see that more and more are using Macs for development.
Why is this? What advantages does the mac have?
Except for the obvious Microsoft languages, are there any that are not suitable for the mac?
And last, what is a recommended, not so pricey macbook for programming (C++, Java, Ruby, Haskell etc.)?
A mac is Unix based and more user friendly than most Linux distrib. They also have a nice set of software. Another reason could be that you can only develop for iphone on a mac (objective C).
I've been developing with a Mac for the past 4 years and never ran into issues (or at least, not more issues than on a PC). I've been developing in Ruby, PHP, C, C++, Ada, Java... I think that all the languages will work just fine, aside from Microsoft technologies such as .NET... but then you can get parallels, VMWare or bootcamp to bypass this.
You can get a Macbook for 1000$... it's still expensive, but totally worth it.
(source: akamai.net)
I already answered a bit to this question here.
The Mac is also very nice for web development. It is very easy to set up a local development environment as PHP, MySQL (I think; if not there's an easy installer), and Apache come preinstalled. There is a lot of nice web development software for the Mac, such as Coda, CSSEdit, and TextMate.
As for software:
C++: Use Xcode. It's quite nice (though I hear it won't win many converts from Visual Studio. Having never used VS I can't comment on that).
Java: Use Eclipse. But then, you probably already knew that.
Ruby/Haskell: Textmate!
Also, for GHC, install MacPorts and use that to install your haskell compiler.
Lastly, don't pay Apple's prices for RAM upgrades. You can buy standard RAM from any supplier for much less.
Any currently shipping Macintosh will be adequate for development (Mac Mini, Low end MacBook Pro) if you are a hobbyist or have small projects.
I find a 2.53Ghz MacBook Pro fine for my weekend projects, iPhone development and script hacking. For my Day job I'd have a hard time getting by with less than a top end Mac Pro with much less modest specs.
I do .NET development regularly on my macbook pro using Parallels. The performance hit is noticeable but not enough to matter most of the time. The worst part for me is the inconsistency in moving the cursor around in applications using the keyboard (CMD + left/right, etc). I don't know if it's from me messing around with Parallels keyboard binding settings or not, but even after 6 months, I still don't know the different shortcuts as well as I do in Windows.
Mac is intensely used by designers with photoshop, ilustrator or after effects.
Also there are more and more objective c programmers which develop iphone apps.
I believe that because the only eligible way to create iphone apps is to own a mac, developers were forced somehow to buy mac in their way to create apps.
I've been using MacBook Pro for a few months at home, and I was wondering if there's a good book or guide that can help me be a better programmer on Mac. Maybe Mac-equivalent of Beginning Linux Programming. Note I am not looking for resource on how to program Mac application, instead I am looking for more general guide of using Mac for general development environment.
As a background, I am a Windows programmer by day. I've also done some Linux and BSD over the years, esp in school, like socket programming, graphics, make install type stuff. At home, I'll be doing Java, Scala, PHP, etc. on Mac.
So far, I've been using Eclipse, QuickSilver, and TextMate. VMWare Fusion, XCode and NetBeans are set up, but I don't use them. A DVI KVM switch is hooked up to real keyboard, trackball, and monitor. Recently stayed up till late fighting with MacPorts, and figured out I needed x86_64. The most struggle I had was configuring PHP. I don't know why they don't ship with MySQL and GD library. I eventually figured it out Googling around, and built the extensions from source. I have a feeling that I didn't get the memo and didn't read some basic guide on how to become a programmer on Mac, like how the whole architecture works. How can a Windows programmer be sufficiently productive on Mac OS X?
Related: Setting up a Mac for programmers
Edit: The specific type of application I want to develop doesn't really matter in my opinion. It could be Java, Scala, PHP as I mentioned or Cocoa, C++, or whatever.
What I am looking for is specific book, resource, advice on how to be more effective programmer on Mac, preferably something beyond "install XYZ".
Having converted from Windows to Mac OS X about five years ago, I often find myself thinking the same thing. I just cannot be productive on Windows (as much, I can be productive) as I can on Mac OS X.
To be honest, there are lots of small differences between Mac OS X and Windows. I find the biggest reason for people thinking like this (at it normally only applies to gamers and developers) is that they are trying to use the Mac like a Windows machine. You need to learn to accept that you have to use the command key, not the control key, etc.
It sounds like you are using a Mac because you have to as opposed to because you want to. It really is a much better platform than Windows once you get used to it.
I think a lot of Windows programmers come to Mac and don't try to learn it properly because they are complacent thinking they know it all because they have "used Windows all their life". I guess once you discover Spotlight, Expose, Mac OS X Keyboard shortcuts, etc. You will find your self being MUCH more productive that you ever were on Windows.... and its actually a fun OS to use.
Checkout some of the best Mac applications you can get here and here. You can also do a search for "top 100 mac apps".
Also, I noticed you were trying to setup some kind of web server directly into Mac OS X. It does ship with one, but if you are going to add MySQL and some other extensions I wouldn't go the MacPorts route. Get VMWare Fusion or VirtualBox (open source) and run the server in a VM. Much cleaner. I have a subversion/trac FreeBSD VM that handles my local version control.
I would like to add that if you don't presently use Xcode, you should definitely learn it and use it asap. It's a much nicer IDE to use than Visual Studio and it will make your life much easier.
Don't forget you have probably spent years on Windows help sites, you're going to a small degree need to do that with the Mac. Whenever you have a problem about using the Mac, ask a question on ServerFault. We are all more than eager to help you out.
Good luck.
You seem to want an overview of how Mac OS X works at a system level, more than recomenations about tools and so forth. If that's the case, I'd start with the (very basic) Mac OS X System Architecture Guide from Apple, then move on to Getting Started with Mac OS X, which should give you enough of an overview to get started.
It's not clear from your question what you intend to actually make with your programming time, but if you decide to persue Cocoa/OS X development, I recommend Cocoa Programming for Mac OS X by Aaron Hillegass.
I have a similar situation like yours. I use Windows for development and about a year back purchased a MBP for home (as I shifted to an office). I find it really difficult to get any real work done on my MBP. Somehow am used to the Windows environment with dual screens. But let that not stop you. A couple of software which I suggest you should get are:
Transmit - Good ftp client
MAMP - Runs a webserver nearly out-of-the-box. Good for basic development
Quicksilver - Helps in quick finding of applications
Spaces along with gestures (Configure your gestures to move from one screen to another, I use three fingers glide. its amazing)
Entourage - for email
Terminal - for ssh (putty alternative) (included)
Dreamweaver/BBedit/Textmate (all pretty decent. but i love editplus on windows. not a fan of IDE)
I assume your question is not about learning COCOA and more about being more effective using a MAC. Well, the above tools might help you.
Unfortunately, your question isn't very clear as to what you really want.
If you're looking to write anything cross-platform, it can be very helpful to have a virtual machine for testing. When in Linux, I've always used VirtualBox, and it works on OS X as well.
Also, as for choice of IDE, a lot of it comes down to your preference. Eclipse is nice because there's a plugin for almost everything for it. My experience with TextMate is limited, but my local Ruby Users Group swears by it.
Finally, a suggestion for not just Mac, but any platform really. Learn your hotkeys, set up new ones for things you commonly do, and use them frequently. Not having to take your hands off the keyboard to click a mouse through a few menus can really improve productivity. It may take a little time for them to grow on you, but once they become second nature, you'll wonder how you lived without them.
Basically, you can apply all your Linux/UNIX knowledge that you already have to the Mac. If you use the Terminal (/Applications/Utilities/Terminal.app) you can run all your favorite UNIX commands. Mac has a special command called "open" which is equivalent to the Windows "start" command (used to launch programs and files). You can also use "open -a" to open an application by name (e.g. "open -a Finder").
You might want to reconsider Xcode. Xcode opens more quickly than Eclipse and provides very good syntax highlighting, brace matching, block indenting, and more. Xcode doesn't have to be used as an IDE, you can also use it as a code editor, just like you are currently using TextMate.
For code editing (and everything else), try Aquamacs (http://www.aquamacs.org). It's a Cocoa-native build of Emacs, and it's brilliant for any programming task.