Linux: still better for coding
Something like one year ago I switched from Linux to Mac OS X. It wasnot an easy switch if you think that my desktop on Linux used to be this one, that is, just fvmw2 with a minimal configuration, super fast virtual desktop, border-less windows.Why I switched after more than 12 years of Linux? Actually I didn'tdecided to switch, just I got a macbook because I wanted to hack a bitwith the iPhone SDK and with Mac OS X itself. I installed Linux and MacOS X in multi boot, and for a few weeks the user interface of Mac OS Xwas impossible to use for me. But after a few more weeks I was using only Mac OS X for everything.
For the first time I had a system that was working out of the boxin all of its parts, it was a good desktop experience with consistentbehavior. Screen sharing was cool when working with remote people, noneed to hack configuration files or to check why my webcam was notworking. To try new programs was as simple as downloading the diskimage, opening it, and click on the icon. And.. as optional,the system still usable and responsive while it was performing a lot ofI/O! Not something Linux users are used to see.
Note that I'm not the kind of guy that don't want to hack with the system he is using. I even wrote, my drivers, in the past.But it was years ago and I was still willing to trust that Linux afterall was young and that it was improving in the desktop side. Now enoughis enough, with my computer I want just to focus on what I'm doingwithout spending hours trying to fix unrelated desktop stuff.
The strength of Linux, or why Mac OS X is weak as development environment
When I say environment I don't think about an IDE orsomething like this. I used to program with a terminal and vim, and Istill code this way on Mac OS X, so in this respect nothing changed.What I'm missing are a number of important tools that made the Linuxexperience so much comfortable. So here is my list of what's wrong withMac OS X, or if you want to read it the other way around, of what iscool with Linux.
Valgrind. If you are serious about writing C code you can't live without valgrind.Valgrind turns you into a better programmer. The code you produce istimes more reliable after you discover this tool. It is invaluable, andguess what... it started to be usable for Mac OS X only lately, thenSnow Leopard came and broken everything already. There are patches thatmake it barely working with issues (AFAIK things will get better whenthe new source code of Darwin will be relased), but, this is one of themost important tools of a C developer together with the compiler, itmust be rock solid.
Apt-get. Homegrow, Fink, and alike, are great tools, butseriously, they are no way as cool as the apt-get in a gooddistribution like Debian or Ubuntu. You can find tons of libraries,full systems, with perfect dependencies, fully managed by people thatare serious users of this projects, that will tell you that somethingchanged in this new release when you upgrade, "do you want toautomatically fix your old config file?" or things like this.
And... the coverage of tools is impressive. Fromthe mainstream to the almost unknown library, there is almosteverything. Want the GD lib for Tcl? There is. Want an old release of alib? Sure. Documentation, full application servers, everything. I canturn a freshly installed Debian system into a production server witheverything inside to run a web application in one hour or less (everysystem administrator can). It's wonderful. And guess what? Developersneed to simulate the systems they are developing for, in short time andwithout too much efforts in order to be productive.
API stability. Mac OS X API, excluding the POSIX calls, changesimply too often for my tastes, and there is nowhere the same amount ofinformation you can find about Linux. For instance I compiled nmapyesterday for snow leopard, and guess what, it was not working, unableto open the interfaces. The compiled binary I downloaded frominsecure.org worked against the loopback interface but not against thewifi one. The interface to capture raw frames from the airport extremechanged again with snow leopard, breaking valuable programs like Kismac. It's not an open platform so this changes are even worse.
/proc filesystemI know Mac OS X exposes similar informations in other ways, but Isincerely miss the proc filesystem, it was a quick way to explore whatwas going behind the scenes without having to remember hard-to-remembernames to grep.
Compiler. Don't know why but gprof does not work with thestandard GCC (the one installed by the official Apple SDK). Tried tocompile applications with --arch i386 too, still not working. I betthere is a trivial way to fix it, didn't googled, but it's not OKprofiling does not work out of the box with the official compiler.
This are the things that I'm remembering just now, but thereare more, little problems that I encounter in my everyday programmingexperience with Mac OS X that I didn't had with Linux. I still continueto use Mac OS X as my first development platform because while I code Ialso want a good desktop to surf the web, tweet, chat, and so on, butin order to do my paywork (that's about web development mostly) and myopen source development with Redis I've to use a Linux box constantlyin order to be more productive.
页:
[1]