Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

gifford

macrumors 6502
Original poster
Jun 11, 2007
422
0
Miserable England
...or at least thats what some people think.

I have heard many people suggest this, but they normally just say "its better" without examples. Can someone who believes this to be the case fill me in on exactly what it is I'm missing out on in the windows world??
 

synth3tik

macrumors 68040
Oct 11, 2006
3,951
2
Minneapolis, MN
Windows is full of a bunch of junk code that really doesn't do much.

A friend of mine has the theory that. since cocca is based on objective c, and objective c is based off of C, then why not just write a program in C instead of calling up a ton of references.

I use a lot of his programs, they are small but very powerful and take realy advantage of the core OS.
 

gifford

macrumors 6502
Original poster
Jun 11, 2007
422
0
Miserable England
Although it was a bugger to learn initially, and coming from a mainly web background (AS, PHP, Javascript, Perl, HTML etc BASIC and handily C) I'm totally in love with Objective C and Cocoa xcode Interface builder. IMO it is the most logical and well thought out ANYTHING I have ever used.

I have played with C++ and Java many times over the last decade, but neither gripped me.
'C' I find interesting due to how low level and basic it is. It is the only other language I have found pleasant to use.

I just find it hard to imagine a world on the PC, as well thought out and logical as what i find on the mac, which is why I'm posing the question really, I have not programed for PC for 10 years, so am out of the loop.
 

UK-sHaDoW

macrumors newbie
Dec 30, 2007
21
0
Win32 is Horrible. A lot is junk code, for backwards compatibility.
A lot of people give up on coding straight win32, and use some other widget toolkit like qt. I think a lot of commercial programs are qt.

cocoa is quite nice from the start.


c# is good. To improve on that you would use ruby or python on os x.
A friend of mine has the theory that. since cocca is based on objective c, and objective c is based off of C, then why not just write a program in C instead of calling up a ton of references.

Why not write everything in c? Java VM is written in c. Pythons interpreter is written in c. The idea is to take some load of developer, so you have less bugs, and develop quicker. Especially with OO. How about c++ that has OO? But often c++ is often said to have a stupid amount features, and is powerful but its easy to mess up on. People use the analogy that c++ tries to a squid, by nailing lots tentacles to a dog. Objective C is nice simpler alternative to c++.

Trust me when i say c gives you the capability to create a lot of bugs. You may think its bug free, but people will always find a way to break it. This is why prefer to use a decent high level language when i can. Since most of time the computer is waiting for user to input, rather than acutally doing anything, so you would hardly notice anything user wise.

Anything for performance i use c/c++
 

kainjow

Moderator emeritus
Jun 15, 2000
7,958
7
I'm totally in love with Objective C and Cocoa xcode Interface builder. IMO it is the most logical and well thought out ANYTHING I have ever used.

I think Xcode is good, but not great. I am used to it now since I've been using it for 6 years, but it seems complicated for beginners. I think Visual Studio is easier to learn.

C# and .NET is really good.

.NET is a nightmare for distribution if you're targeting XP (who isn't?). I developed a shareware C#/.NET app a few years ago and had to write my own .NET downloader into my app's installer. I don't see .NET useful in the real world for desktop applications - more so for internal/web apps.

- - -

People are afraid of Cocoa because Objective-C is new to them and doesn't have any of that dot notation (well with Obj-C 2.0 it does) and such. Cocoa forces you to learn new concepts, and most people don't like learning new things.
 

yeroen

macrumors 6502a
Mar 8, 2007
944
2
Cambridge, MA
Mac OS X is superior because it's UNIX. From the developers perspective if you want to use an IDE, Xcode is free and really slick, but you still have all the traditional UNIX goodies at your disposal. Unlike Windows you don't have to shell out hundreds of dollars for a full featured development environment (Visual Studio).

I find Mac OS X to be far better documented than Windows and OS X's Darwin subset is in fact transparent because open source.
 

Catfish_Man

macrumors 68030
Sep 13, 2001
2,579
2
Portland, OR
What are the benefits of Ruby over Objective C?

Much more expressive and intuitive. Ruby code, in general, will be shorter and easier to read than equivalent Objective-C code. It also can be used interactively, and doesn't have the lag of compile times slowing down your develop-test loop.

On the other hand, it's much much slower, can't use C libraries directly, doesn't have named arguments (I think? Could be wrong on this), doesn't have compile time error checking, and is a second-class citizen with Cocoa.

Both are good choices for many things :)
 

WildPalms

macrumors 6502a
Jan 4, 2006
995
2
Honolulu, HI
Anyone who has used Win32 and still thinks that development on Windows is better than the Mac is either a masochist or just plain lying through their teeth. DirectX is even worse...

...and that sums it up nicely. I do code in Ruby and it's perfect for the target audience, but as stated, it wont be as fast as Objective C or C, but then, I dont have to code in 14 times as many lines of code.

Horses for courses ;)
 

HiRez

macrumors 603
Jan 6, 2004
6,265
2,630
Western US
Much more expressive and intuitive. Ruby code, in general, will be shorter and easier to read than equivalent Objective-C code. It also can be used interactively, and doesn't have the lag of compile times slowing down your develop-test loop.
I might argue about the readability. Not that Ruby is bad, but I personally find Objective-C/Cocoa code very easy to read. Another big advantage to Ruby is you can use it with Rails for web applications. Objective-C currently has no real web application framework (WebObjects doesn't count).
 

SC68Cal

macrumors 68000
Feb 23, 2006
1,642
0
The difficulty with Objective C today is the fact that many of the great NS libraries only operate on Mac OS X today. It's a shame, for all the power of Objective C and the NS classes, you're only able to release to (at best) 6-7% of the world (depending on the math you use).

Or at least, that's what it appears from the outside looking in. I imagine Objective C programmers working in mixed operating environments are few and far between. They've got to be outnumbered by the Java and C# programmers.
 

displaced

macrumors 65816
Jun 23, 2003
1,455
246
Gravesend, United Kingdom
Win32 is a mess. But, for many purposes, Win32 is dead.

The .NET Framework is actually quite nice. The class library is nicely organised - its functionality is very 'discoverable' in that finding the right bit to do what you need is almost always a logical process of exploring the hierarchy. It does an excellent job of hiding the vagaries of Win32 and provides a great amount of flexibility. Many languages can be used for .NET development, with each of them compiling down to the same instructions -- language choice really is a matter of syntactical preference, since the same functionality is identical to all.

.NET does in fact take some ideas from Mac OS X. For example, installing a .NET app is as simple as placing all the apps' files in one location (much like OS X's app bundles), although it's a half-baked concept in .NET since Windows doesn't have the notion of a bundle -- rather, MS refer to is as 'XCOPY deployment' - a pretty archaic term :D However, their ClickOnce deployment method is very good, with automatic dependency installation and application auto-updating provided 'for free'.

I'd really love to get into coding for OS X. The tools and the technology look great -- I just need to sit down and spend some time with Objective-C.
 

gifford

macrumors 6502
Original poster
Jun 11, 2007
422
0
Miserable England
The difficulty with Objective C today is the fact that many of the great NS libraries only operate on Mac OS X today. It's a shame, for all the power of Objective C and the NS classes, you're only able to release to (at best) 6-7% of the world (depending on the math you use).
programmers.

Though I believe with the help of the iPhone the potential market could well more than quadruple within a few years.

Another big advantage to Ruby is you can use it with Rails for web applications. Objective-C currently has no real web application framework (WebObjects doesn't count).

That would be my dream come true, I'm so fed up with the current mess of web technologies. I have been writing in javascript all week, and I just want to scream.
 

Gelfin

macrumors 68020
Sep 18, 2001
2,165
5
Denver, CO
Anyone who can give a general "X is better than Y" answer in such a broad field is either lacking perspective or betraying a prejudice.

In my opinion, Visual Studio is a more robust IDE, but Interface Builder is a more satisfying UI design paradigm. Comparing Objective-C and C++ would be a whole separate broad topic; they each have traits to recommend and condemn them. Cocoa seems like a tighter object framework than the giant random Katamari of Windows APIs, but you can still get down into some pits of weirdness once you have to accomplish things for which there isn't an NS* class.

Bottom line, when I'm working on either there are a few cases where I think to myself it's a shame I can't do something the other platform lets me do more easily.

synth3tik said:
A friend of mine has the theory that. since cocca is based on objective c, and objective c is based off of C, then why not just write a program in C instead of calling up a ton of references.

I could comment at greater length, but all I will say is to wish him luck and let us know how that theory works out for him.

displaced said:
Win32 is a mess. But, for many purposes, Win32 is dead.
The .NET Framework is actually quite nice.

If Win32 is dead in favor of .NET, then Microsoft truly is sunk. I've used .NET, and I'm afraid I'm a bit of a non-fan. It makes programming very, very easy for me, but it seems to do so at the expense of making it very, very difficult for everyone else in the process, which I take as the exact opposite of my job as a programmer. Making sure the correct msvcrt.dll is available is an annoyance. Making sure the correct 40MB runtime environment is available is a deployment nightmare, particularly if you're trying to deploy an application with a word like "lightweight" or "thin" in its title to users at the far end of a very skinny pipe, or deploying to, say, a government agency with strict policies against installing things like .NET runtimes (no, really, this happens). I'll use C# for rapid prototyping or for tools that will never see the outside world, but it has always disappointed when I've tried to create things I'd actually give to a customer.
 

displaced

macrumors 65816
Jun 23, 2003
1,455
246
Gravesend, United Kingdom
Anyone who can give a general "X is better than Y" answer in such a broad field is either lacking perspective or betraying a prejudice.

Agreed entirely. I tried to refrain from OS X dev. vs. Windows dev. comments, since these comparisons can only really be made on the details (and I don't know the details of OS X development, although I'd like to!). I suppose some kind of observation can be made based on the end-products of these development tools. I must say that purely from a user's standpoint, OS X has some truly excellent software which works in ways I simply couldn't imagine trying to implement on Windows. So there's clearly a fair amount of goodness in Cocoa/Carbon/etc.

Bottom line, when I'm working on either there are a few cases where I think to myself it's a shame I can't do something the other platform lets me do more easily.

Indeed. There are always instances where things could be better. Both MS and Apple seem quite good at addressing these cases in updates to their frameworks and tools.

If Win32 is dead in favor of .NET, then Microsoft truly is sunk. I've used .NET, and I'm afraid I'm a bit of a non-fan. It makes programming very, very easy for me, but it seems to do so at the expense of making it very, very difficult for everyone else in the process, which I take as the exact opposite of my job as a programmer. Making sure the correct msvcrt.dll is available is an annoyance. Making sure the correct 40MB runtime environment is available is a deployment nightmare, particularly if you're trying to deploy an application with a word like "lightweight" or "thin" in its title to users at the far end of a very skinny pipe, or deploying to, say, a government agency with strict policies against installing things like .NET runtimes (no, really, this happens). I'll use C# for rapid prototyping or for tools that will never see the outside world, but it has always disappointed when I've tried to create things I'd actually give to a customer.

I completely understand the problem of framework deployment. Since the majority of my work goes into a corporate environment, I simply deploy .NET Framework versions out to desktops using SMS and ensure that Dell bundle them on our standard RIS images (which Dell are very good at keeping updated). Essentially, I treat .NET Frameworks the same way I treat security updates -- deploy and forget.

Of course, this is no good for disconnected clients. There's always going to be the issue of deployment size. However, the actual 'hassle' of ensuring the Framework is available at install-time doesn't really exist anymore. ClickOnce publishing is very good. Standard dependencies such as the Framework itself are simply included with the installer. Additional dependencies such as SQL Compact Edition are just a checkbox-tick away from seamless deployment. Additionally, versioning isn't much of a problem, since 1.1, 2.0, 3.0 and 3.5 happily co-exist on the target machine.

Is it classically 'tidy', 'small' or 'thin'? Nope. But deploying .NET Framework can be made transparent to the end-user, and is in fact transparent by default if building deployments using VS2005 or 2008 (2003 was clunkier, for sure).
 

HiRez

macrumors 603
Jan 6, 2004
6,265
2,630
Western US
Cocoa seems like a tighter object framework than the giant random Katamari of Windows APIs, but you can still get down into some pits of weirdness once you have to accomplish things for which there isn't an NS* class.
This is probably my biggest complaint about Cocoa: it just doesn't address enough functionality yet. If you want to make a TextEdit clone, you're all set with Cocoa. But for lots of other things consider yourself out of luck unless you want to burrow down through layers of prehistoric cruft into the ugly underworld of the old Mac Toolbox and friends, where you will be dealing with things like extremely obtuse C and C++ code (and code examples), FSSpecs, malloc, and Pascal string conversion. I've had to go there for things like accessing FireWire/USB ports, QuickTime, Core Audio, CD/DVD burning, Quartz, and CoreImage functions (and previously databases) and it is not fun. And as previously discussed, there is no option at all for web development.

Apple is very slowly adding NS* classes for some things, but at a glacial pace. QTKit and Core Data are a nice start but the vast majority of QuickTime, which you could argue is the very heart and soul of the Mac experience, is still inaccessible to the Objective-C/Cocoa programmer. So the result is that even though you can happily speed through much of your development in Cocoa and Objective-C, you are bound to hit roadblocks for many projects where things just get ugly and frustrating.
 

ppc_michael

Guest
Apr 26, 2005
1,498
2
Los Angeles, CA
I'm surprised there's praise here for C#. I think it's the most pitiful horrible language this site of VB. But I'm more of an old-fashioned programmer, so maybe it's just me.

(Objective C + Cocoa, on the other hand, is just plain delicious.)
 

pilotError

macrumors 68020
Apr 12, 2006
2,237
4
Long Island
God I hate programming windows...

Everytime they hand a project off to me, I force them to port to Linux if its non visual.

I think the worst part about it is what comes afterwards... IT Lockdown. The IT Desktop weenies make me nucking futz making me jump through hoops to run the applications I built. I think anyone in a Large Corporate environment must go through the same thing.

I've been trying my hand at coding OS X, but it's a tough sell in the corporate world. I guess I need to find a job at a creative company instead of Wall St.

In all fairness, If you can code, you can really make applications do just about anything in Windows. It really is the everything including the kitchen sink platform, but prior to .NET, it just sucked, mainly because you ended up using several sets of API's to accomplish any task.

I spend most of my days in Linux / Unix now, which is what attracted me to OS X to begin with. I think I'm just bored of Windows at this point ;)
 

neoserver

macrumors 6502
Apr 24, 2003
335
0
Like it has been mentioned before, the win32 API, is annoying at best to use.

The .NET framework makes things MUCH easier to develop on the Windows platform... If you don't need to interface to COM objects. Once you need to start building Interop interfaces, and marshalling your calls, it goes downhill real quick... .NET is also, like Cocoa, a single-platform technology. It doesn't help those who want to be cross-platform whatsoever.

Until Mono can support System.Windows.Forms, it isn't a viable option for today's big apps.
 

fredrikaustin

macrumors newbie
Jan 20, 2008
5
0
longtime windows programmer on os x

I normally avoid debates like this, but since I was here (posting the question about malloc problem on Leopard), and have been working across all platforms for a year or so ....

After 20 yrs of windows programming, mostly game development, I'm now doing scientific software that is cross platform (windows, os x, linux). I love it. Probably because learning new environments is fun, and as the wall st. poster pointed out, after working in windows for a long time you just get bored - you want something new, (anything!).

That said, when I have lots of complex coding to do, I force myself to work in visual studio on windows - because it's integrated build/debug cycle just completely rocks compared to anything else available on any platform - and it's not hard to understand why, since MS has employed an army of very smart very well-paid people for a very long time building these tools. (BTW, very functional versions of these are available freely - VS2005)

I love the unix/linux thing, and I love working on my mac, I'm just not nearly as productive on it. I'm hoping this will change as I learn gdb/xcode better, but I think it's fair to say this still has catching up to do compared to vstudio for effeciency - again not hard to understand why - these guys target 1 processor family running 1 operating system, unlike gdb etc... BTW, I work almost exclusively in VC6, which is probably a decade old by now. I haven't used xcode 3 yet.

Finally, I'd be one step closer to trashing my windows PC if I could find anything that worked half as well as OneNote for keeping notes on my many complex projects. OneNote and VisualStudio are the only reasons I own a windows computer, and why it is my main work machine still. (when I 'play' now, it's always on the mac)

-fa, austin tx
 

gifford

macrumors 6502
Original poster
Jun 11, 2007
422
0
Miserable England
Dont get me wrong, my intentions with this thread was not to start arguments. I'm genuinely curious as to the benefits and downfalls of each platform.


I must say I have had much frustration grappling with core audio in the past and wished for higher level control with various other areas of osx. This has been one of my only gripes.

I'm also hoping for some kind of web strategy from Apple, does anyone have any idea of the likelihood of this happening?
 

SC68Cal

macrumors 68000
Feb 23, 2006
1,642
0
Apple has no web strategy. WebObjects would have been that market, but they haven't exactly pushed that one very hard.

Don't get your hopes up.
 

Sijmen

macrumors 6502a
Sep 7, 2005
709
1
I think Win32 is horrible and I hope I'll never have to write a 'real' application using it.

The .NET Framework on the other hand is pretty nice for Windows development. Windows Forms works fine, and it's easy to get stuff working. Some things are lacking though, for example the Cocoa drawing API is much better than GDI+. Windows Presentation Foundation looks interesting but seems to have a long way to go.

As far as I'm concerned, I like Cocoa and Objective-C more. Everything seems so much more mature, finished, and often easier (not always). Key value coding/observing/binding are nice, Core Data was a bit difficult at first but still rocks, and Core Animation looks interesting too, although I haven't used it yet.

And luckily there's no Xcode Foundation Team Enterprise Edition.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.