Post a Comment
It was sad to know that the java bridge was deprecated by apple. There was a time when Java used to be a first class citizen on OS X. Sadly that is not the case anymore.
The good news is that the Ruby Cocoa bridge is still there. So programmers who dont wanna learn Objective C do have a chance of writing good apps.
Of course Apple itself broke Drb in ruby as a part of the 10.5.3 update: http://www.ruby-forum.com/topic/154556
OS X may not be the developer's heaven as it is made out to be.
You say "learn Objective-C" as if it is this huge chore you have no hope of ever completing. Even with all the fanciness of version 2.0, Objective-C is still just sliver-thin superset of C. I think it is easier, at least in certain regards, for a Java developer to pickup Objective-C than to switch to Python of Ruby.
I hope it doesn't sound impolite, but... you usually don't "learn" ObjC, you *do* it - at least if you come from a C programming background. As you mentioned, ObjC is a superset of C, while, for example, C++ is another language, and so is JAVA. So let's assume you have good C knowledge, did some C++ and are familiar with concepts from the field of object orientation, then ObjC won't be a hard learning time for you. And if you're familiar with JAVA, ObjC isn't a big deal, too, because many elements of the language will look familiar to you. For non-Apple programmers, a look at GNUstep on x86 is worth taking.
At least I may say this from my individual experiences, maybe it's different when you're coming from "VisualBasic". :-)
If we oversimplify thing, yes, Objective-C is C with a dash of Smalltalk, just as C++ is C with a dash of Simula. I agree that C++, Java and C# are much easier to switch between, given their common ancestry and design philosophy, but, except for a few fairly small conceptual differences (e.g. message passing vs. method calling), when it comes to syntax, design patterns and so on, Objective-C is not that drastically different from them.
Sorry, but Objective-C is crap, in my opinion. The syntax is too arcane, and the whole sender-receiver model is unnecessarily ambiguous. It makes C++ look incredibly elegant, by comparison.
Sorry, but Objective-C is crap, in my opinion. The syntax is too arcane, and the whole sender-receiver model is unnecessarily ambiguous. It makes C++ look incredibly elegant, by comparison.
That's your opinion and I respect it.
But would you care enought to argument you point of view ? You know arguments, facts.... because it seems that you dislike Objective-C simply because you don't understand it and find it ambiguous. This really gives you less credibility than you surely deserve.
Oh, I understand it. I just don't like it. Here's are some examples of why I don't like Objective-C. It has a late-binding contract so, when you call a particular object method, there is no guarantee that the receiver will even process it. You don't know until RUNTIME. That's weak and error-prone. Contrast that with C++, which has very strict compile-time type-safety built into it. Additionally, I don't like the syntax for Objective-C. It looks like it was put together by someone who thought that things like consistency and readability are secondary considerations. The code just looks UGLY. Contrast that with C++, with namespaces, visibility modifiers, better inheritance semantics, and there's no competition.
Oh please...
Java developers value portability. Java + Cocoa ties you to OS X while incurring the overhead of the JVM. Ergo, few (any?) developers used the Java Cocoa bridge. Right from the start, it was a solution going in search of a problem.
No one, not even Java developers mourn the demise of the Java Cocoa bridge. Neither should you.
stop complaining about Java and OS X. There are hardly any applications that require java 1.6 and most of those are simply compiled with 1.6 and do not really use any features not present in 1.5. Also there is a 1.6 for mac although it is still not a final version. Yes it sucks that even though Sun java is not open source it takes so long to get it to MacOS but the problem is nowhere near the magnitude that it's being presented.
To me the best thing about OS X compared to windows is that you get free and very powerful development tools. Xcode is great but then again there is the issue of objective-c ... Oh and the author of the article commends Apple for being able to say enough is enough but they paid dearly for that ability and are still paying for it. Adobe anyone? I guess this is the risk of relying on 3rd party vendors but what I really respect in Apple is that they acknowledge the risks and try to offer alternatives to their valued customer base. A good example is the office suite. While it's not as powerful as MS's own it is a lot cheaper and quite capable.
This is how you do a menu with a textbox in .net
<Menu Height="25" VerticalAlignment="Top">
<TextBox Width="50"></TextBox>
</Menu>
Not exactly rocket science...
Welcome to 2006. Winforms has been deprecated for a very long time now.
That's all well and good, but it's still slightly irrelevant. How many end user applications are written in .NET? How easy is that to accomplish in C++ unmanaged code which is what the majority of desktop applications use?
AFAIK obj-c is managed (it has gc, so it almost has to be)
Regardless, I would say 90-95% of windows apps are managed. Only the most performance sensitive stuff is written in unmanaged code nowadays, and we are even starting to see that phased out.
If you want to talk deprecated, nothing written in the last decade should have been using c++. On windows anyways.
Edited 2008-06-02 13:36 UTC
"I would say 90-95%. Only the most performance sensitive stuff is written in unmanaged code nowadays, and we are even starting to see that phased out.
If you want to talk deprecated, nothing written in the last decade should have been using c++."
That's true of internal corporate apps, where performance and end user experience matter less, and a lot of code is "throw-away".
Anything public facing, shrink-wrapped proprietary or open source, or otherwise, and desktop or systems oriented, is almost always C/C++.
For software that is not forced on it's users (like internal corporate apps), performance, lnf, and overall end user satisfaction, matter very very much. If all those things are not excellent, the software is ignored. For accomplishing these things, C/C++ usually offer the best solutions.
Woah, now that's something unusual
The question I'd ask as a reply to that is something like "says who?". This depends on so many factors, that stating something like this is more like the 640K should be enough that anything else. Just as one example, where I do my stuff, we develop mostly algorithms, with the gui coming much later, and since almost all the algorithms are written in c++ and on windows, it comes easier to create an mfc gui for it. We also use c# and Java when the need arises, but it's not a goal, it's the tool. I never use a language or a tool because it's suddenly fashionable, I always use that in which I can do what I have to do more conveniently - from a certain point of view.
Woah, now that's something unusual
The question I'd ask as a reply to that is something like "says who?". This depends on so many factors, that stating something like this is more like the 640K should be enough that anything else. Just as one example, where I do my stuff, we develop mostly algorithms, with the gui coming much later, and since almost all the algorithms are written in c++ and on windows, it comes easier to create an mfc gui for it. We also use c# and Java when the need arises, but it's not a goal, it's the tool. I never use a language or a tool because it's suddenly fashionable, I always use that in which I can do what I have to do more conveniently - from a certain point of view. Maybe I should have been more clear. The official way to develop windows apps is .net, and has been for a very long time now. You can use MFC if you want, you could even use Tcl if you really wanted to. But the api that is being actively worked on and encouraged by the guys doing the OS is .net.
Oh boy! I remember upgrading my 512K computer to 640K!
It's a known fact of life you need at least 1Mb to get anything done. How was anyone getting anything done those days :-)
Edited 2008-06-02 15:19 UTC
How would you implement garbage collection without a garbage collector? a google of http://www.google.ca/search?hl=en&client=firefox-a&rls=org.mozilla~...
leads me to believe there is a vm.
Err... No, end-user applications are virtually never written in .Net. Just corporate stuff - the same kind of stuff that might otherwise be written in Java.
You also seem to have this problem with dates.
10 years ago was 1998 - Microsoft were still trying to get away with using a modified, non-standard version of Java.
The first release of the .Net framework was in 2002 - a mere 6 years ago. It wasn't usable for anything much until version 2, released in 2006. Realistically, developers could have started writing end-user apps in 2006. That's only two years ago.
As for WPF, that's only available in .Net 3.0 (early 2007), and only got support from Microsoft's tools in .Net 3.5 (late 2007). Any applications written with that won't even have come close to being released yet.
Clearly, you're not a software developer. Not on Windows anyway.
The vast amount of software written for windows used to be done in VB, not C++, or VB for the front end and C++ as COM objects. Since the shift to .net, everything that used to be done in vb, and most of what used to be done in C++ is now being done in .net. If you are talking about software pushing hardware to the limits (games, cg software, etc), yes, typically it is still done in C++. Other then that it is almost totally .net (with some notable exceptions).
10 years ago was 1998 - Microsoft were still trying to get away with using a modified, non-standard version of Java.
I was not developing professionally on windows at the time (was a Java guy), but I have been using .net since the first beta, closer to 2000, which was 8 years ago, so it feels like a decade ;-)
Like I said, I have been writing windows stuff with .net for closer to 8 years now. Granted, they were trivial things, but still.
3.0 was a bit before vista, which was mid 2006. There were some early tools for WPF, but the first real designers only really became available early 2007 (as an out of band CTP release).
The problem with WPF is not the tooling, it is the vast armies of Winforms developers who don't know how to code a UI with anything but a visual designer. The studio tooling for WPF is (imo) some of the best work they have done so far, which is saying something because MS does great designers. However, you need to actually know WPF to use it properly.
I've been writing software for close to 15 years now, professionally for about 8, professionally on windows for about 3.
Oh, really? The ATI/AMD control panel comes to mind. It is quite the consumer application and has nothing to do with corporate activities other than the fact that it was produced by a corporation and is distributed by the same. And this is hardly the only example.
"The first release of the .Net framework was in 2002 - a mere 6 years ago. It wasn't usable for anything much until version 2, released in 2006. Realistically, developers could have started writing end-user apps in 2006"
The .NET framework was very usable out of the gate, I developed tonnes of stuff with it using Visual Studio 2002, I also used 1.5, which came out with 2003, and version 2, which came out in 2005, not 2006.
Just because you think something is not useful, doesn't mean that others don't. Clearly you aren't a software developer, at least not on Windows anyway.
1) GC in ObjC is optional, and many (most?) apps don't use it.
2) GC and "managed code" (whatever that means -- usually it seems to mean a VM) are entirely separate considerations. You often have GC without a VM, and it's quite possible to have a VM that doesn't do GC. (I believe that this is the case with LLVM, although it gives hooks to implement your own GC)
Actually, most applications written for Windows are inhouse apps written in Visual Basic or C#. Most developers for Windows are working for a company writing apps in VB, VB.NET or C#. Therefore, most user apps are written using the .net framework (or the vb6 runtime, which predates the .net framework)
WPF is only available in Visual Studio 2008. The 2005 plug-in was never release for production use.
If I had time to hand code forms I would be writing in C++, not using a RAD environment.
Winforms is here and will be here for a long time yet. WPF is pretty much unused. I know of no one using it in production.
As with all discussions of this nature, use the right tool for the job. C/C++ is the correct tool for most platforms without a strong framework (LINUX for example.) Java is the correct platform for weenies and losers. Win32 is the only API if you want nice lean apps wich are pretty much unmaintainable, MFC and ATL are slight movements in a positive direction, but still way off the mark. Winforms is pretty much the only choice for DotNet (especially if you want to be cross platform) and Objective C is for the Mac. All other discussions are window dressing ;-) YMMV
Edit: messed up spelling.
Edited 2008-06-03 11:31 UTC
Yeah, I sorta disagree.
Your right that the 2k5 designer wasn't ever RTM'd, but that doesn't mean it can't be used to learn. WPF not only addresses the (valid) points in the article about the inflexibility of winforms, but it flips it around and makes the mac environment look inflexible by comparison.
You are right that WPF adoption has been extremely limited, but for the purposes of this conversation winforms is being used as a straw man.
As for hand coding, you don't need to hand code, but for the best experience you want to be in split screen (which is what the designer gives you by default), and be switching back and forth between the designer and the code. XAML is a high level declarative markup language, and it is really not hard to learn at all if you have any web experience. The benefits are definately there, and (IMO) make it the best tool for the job for any ui that goes beyond typical LOB stuff.
Just so we are on the same page, check this out http://www.beacosta.com/blog/?p=40 . I like to pull that out in any discussion on why WPF is worth learning, just because so many people really don't understand how wide the gulf is between it and winforms.
Agreed on pretty much all respects except for the winforms one ;-) But I have the perspective of a web guy who does occasional smart clients, and the soul of an early adopter, so I guess i fall into the YMMV disclaimer
Edited 2008-06-03 12:29 UTC
GNUstep Renaissance (http://en.wikipedia.org/wiki/GNUstep_Renaissance), which also runs natively on OSX, has been around for quite a while now too. The only downside is that it never gained enough traction in the community to force us to write a GUI designer for it.
Strange, but IIRC, I once read about how Windows gained market share by charging people for their dev tools rather than give them away.
IIRC, it goes like this: In those times, hardware prices are sky high, so Windows dev tools, at those times, looked cheap, especially compared to those UNIX ones. Moreover, Microsoft opened up their specs and so there was a lot of freeware compilers that were lousy, but got the job done. This allowed hobbyists and professionals alike to be drawn to the Wintel platform. When they achieved dominance, the cost of a dev licence hindered freeware development and this, in turn, allowed Microsoft to quality control the software produced for Wintel, to a small but noticeable extent.
However, I would agree that leeching off developers is a suicidal move since they are any platform's greatest asset. Not the users, but the developers. Just ask any open source developer in touch with the times.
Moreover, notice how hardware prices have plummeted for the past decades. If Microsoft kept the hardware to dev tool price ratio, I would bet that those dev tools will have to cost less than to make a burger.
While I liked the article, I found it funny that the author portrayed Microsoft as a company that does not use its own APIs.
I guess Office, Internet Explorer, Live Messenger, Streets and Trips, Visual Studio and every other program MS has ever released were written without an api of any kind at their disposal. lol.
I believe the point the author was trying to make is that, for one, Apple themselves are using, for majority of their apps, the framework they are promoting as preferred for OS X development, unlike Microsoft, who still develop most of their software in Win32 instead of .Net. Also, especially when it comes to UI, most new objects in Cocoa and most new frameworks are "librarized" version of code Apple had to implement for their apps, while other frameworks (including .Net) are usually formally designed and then the features they implement are used in actual apps. I personally am still on the fence as to whether this necessarily leads to better framework quality, but still it is an approach quite different to Microsoft's.
As I pointed out in a previous post, most developers don't write the kind of publicly-consumed applications that Microsoft produces (ie. Word, Excel, Visual Studio, IE, etc). They write line-of-business applications that pertain to their particular business use-cases. C/C++ isn't a good tool to use in those scenarios, but .NET/Java are excellent for that purpose. Hence, that's why Microsoft advocates .NET (and Sun advocates Java) for LOB apps. I've never heard Microsoft suggest that you should be using .NET to produce an app like Word. It's just common sense: Use whatever tool is most appropriate for the job. Apple is handing every developer a hammer, regardless of the problem, when they really only need a screw driver. The reason is simple: They want to tie you to their platform, no different than Microsoft or Sun or anybody else. At least with .NET and Java, you can run your code on other platforms.
Edited 2008-06-02 18:36 UTC
As I pointed out in a previous post, most developers don't write the kind of publicly-consumed applications that Microsoft produces (ie. Word, Excel, Visual Studio, IE, etc). They write line-of-business applications that pertain to their particular business use-cases. C/C++ isn't a good tool to use in those scenarios, but .NET/Java are excellent for that purpose. Hence, that's why Microsoft advocates .NET (and Sun advocates Java) for LOB apps. I've never heard Microsoft suggest that you should be using .NET to produce an app like Word. It's just common sense: Use whatever tool is most appropriate for the job. Apple is handing every developer a hammer, regardless of the problem, when they really only need a screw driver. The reason is simple: They want to tie you to their platform, no different than Microsoft or Sun or anybody else. At least with .NET and Java, you can run your code on other platforms. "
Perhaps on the Windows platform but I'm truly hardpressed to find Java/.NET applications [mono the exception for GNOME, in part] on Linux and OS X that are Client-Server based applications in the traditional client-server model.
How much of KDE is written in C/C++ and how much of it is written in Java/.NET?
How much of GNUstep is written in C/ObjC/ObjC++/C++ and how much is written in Java/.NET?
How much of OS X is written in Java/.NET versus C/ObjC/ObjC++/C++?
How much of LaTeX Tools are written in Java/.NET?
How much of Adobe's applications are written in Java/.NET?
Intuit? Corel? Oracle? Sybase? IBM? Sun?
What are Safari, Firefox, IE, OmniWeb, Konqueror, Opera, et. al are written in Java/.NET?
The article is honest. Microsoft wants more people to move to .NET but realizes cutting ties with C/C++ and demanding people switch to C# for general application development would produce an abandoning ship to Linux and OS X tenfold more than they already do.
I think you kind of missed my point. Most app developers don't write the kinds of apps that would require C/C++. Your average corporate or small-business developer doesn't need the horsepower or complexity offered by C/C++; so, .NET and Java applications really work well in those environments. In my company, for example, our support devs write data collection apps in C#. Most of the data goes to payroll/accounting or HR. More and more of those apps are moving from client machines up to web servers. But web applications aren't always possible/useful to all users; for example, the sales folks who are on the road all the time need apps which do projections for them, keep track of expenses, and other stuff. They don't want to VPN into the corporate network to do all of those things, so client apps work for them. The devs who are writing these apps are using C# because C/C++ would be overkill for what they need. The apps are corporate, highly targeted at specific scenarios, and relatively simple. That, really, is what most devs do in the real world. They aren't writing Internet Explorer or KDE or whatever. For THOSE guys, yeah, sure, I'll grant you, C/C++ is the better tool. But those guys only represent a thimbleful of the larger market for developers. All that you have to do is crack open the classified ads and see what sorts of jobs people are looking for. It's a common theme: Java, .NET, databases, web development. You won't see many jobs for C/C++ developers, on average, compared to the others, and I think that is reflected in Microsoft's emphasis on managed code.
I think most of Microsft new apps are .NET apps. For example, World Wide Telescope is a .NET app. And I believe that the Expression suite (Blend, Media Encoder, etc) are .NET apps. Sure, older apps like Office aren't .NET, but there's no reason to rewrite what already works for no reason.
Also, I recall it took Apple years to finally write the Finder in Cocoa (it was a Carbon app for years).
For the VAST number of line-of-business applications, .NET (or Java, if you don't mind a GUI circa 1995) is more than adequate; and, quite frankly, it's advisable, given the RAD development model. Not a lot of people actually write huge apps like Visual Studio or Word. Those that do should pick whatever tool is most appropriate.
...right tool for the right job.
What I did like about this article was that at least it shows that there are good tools and good languages available on the Mac, some guys here may not have used a Mac before or maybe assumed it wasn't up there with other platforms...
Personally, I love Cocoa and Obj-C, but I also love Java, Ruby/Rails and Delphi too... I am just getting into MacRuby too, which might be an interesting way to write apps for the Mac too...
I like Win32 too, sure it has it's problems, but it gets you there in the end (most of the time)... I haven't used C#/.Net very much, but the little I did do was pretty cool...
Oh, just in case anyone is still wondering about how hard it is to learn Obj-C, I came from a C/C++/Java background when I first used Obj-C and had no problem adapting, very very simple... Ruby is more of a mind bender in a lot of ways (good ways ;-)
I don't think its the language that is hard, it's just learning the new APIs, that goes for .Net, JFC, Rails and so on...
The theorical advantage of Java is portability.
- Why are the SUN's cross-plateform application (for instance Open Office) not fully written in Java ?
- Will we ever see a VirtualBox written in Java ? I doubt so...
Numerous other apps could be written using the advantage of portability, however I've never seen photoshop or Cubase written fully in Java. Now a simple clue. Portability's drawback is performance...
Beyond the portability myth are simple facts...
.Net: I'm sorry I can't think of any application that is used everyday by million of users and is written using only .Net/C#....
I have no doubt this is a great plateform for developping application I just wonder why even Microsoft doens't use it for all their home-made application...
Objective-C: Is a very simple OO language, basically an OO layer (the smalltalk way) above plain C.
In contrast, Apple uses this language in virtually all their apps. Millions of people use ObjC written applications. There are thousands applications written using ObjC and Cocoa (or GNUstep).
Guess what ? I love ObjC
RE[2]: Comment by GStepper
RE[4]: Comment by GStepper
Paint.Net 3.31 alone has 2 millons of downloads from downloads.com (and there are other mirrors)´
nikon capture nx is another tool that needs .net (and judging by it's speed is using it alot)
I really hope that Paint.net or nikon capture nx are not the best examples you can give of a high profile .Net apps, because their usage numbers and the category of their users somehow pale in comparison to those of, say, Motion, Soundtrack Pro, Color, Logic or Aperture. (and those are just the apps made by Apple)
The reason you can't is because the only way to really tell a .net app at this point (from a user point of view) is the unhandled exception dialog.
Dragging the exe on to Reflector is more technical, but yields faster results.
Microsoft Management Studio for Sql Server is at least in part written in DotNet. The shell app seems not to be (or MS hacked it to look like it isn't), but the tonne of assemblies it uses say different.
This is the worst series of fanboy articles disguised as technical. This guy has simply no clue, even if he claims to be a developer.
Pearls of wisdom:
* Summary : "WinForms is bad. Java is much better designed."
That must be because basically not a single Java desktop program is installed on ANY of my PCs while I use many Winforms ones. Go figure.
* Summary : "Apple loves developers so that's why they give developers tools out for free. Microsoft instead tries to monetize its developers... thus Microsoft don't understand that more developers means more software for your platform"
Yeah very! Could it be that Apple desperately needs more developers while Microsoft has loads of it writing new apps?
* Summary : "Great! Apple "innovated" (lol!) by introducing Core Audio, Core Video, Core Data so developers don't need to write their own modules! YaY!"
Do you mean Apple introduced what Windows provided like 13 years ago? YaY!
(and these last two are my favourites...)
* Citation: "Finally, Apple also gives away Quartz Composer, which I have to give a shout out to. Although I have no practical use for it, I'm sure someone does, and it's really rather funky."
no words for it...
* Citation: "For example, a kind of "palette" window used for inspecting and adjusting object properties was used in iPhoto and other applications. This is something that lots of software can make use of, and so with Mac OS X 10.5, a system-level palette window was introduced. Instead of a proliferation of slightly different first- and third-party implementations of the concept, Apple has taken a good idea and exposed it to any developer."
System-wide palette for developers to use... rather innovative ;-D
I mean, if this guy is pretending, he's great... really...
If he's not pretending... gosh! If I was Jobs, after reading this, I would wonder "Where the hell am I doing wrong?!?!?" ;-P
* Summary : "WinForms is bad. Java is much better designed."
That must be because basically not a single Java desktop program is installed on ANY of my PCs while I use many Winforms ones. Go figure.
A well designed API from a programmers point of view doesn't necessarily mean you will see it a lot as a user. The majority of client side code you will come into contact with as a Windows user is going to be written in Win32. No one will claim Win32 is well designed, not unless they've had 5 - 6 beers.
* Summary : "Apple loves developers so that's why they give developers tools out for free. Microsoft instead tries to monetize its developers... thus Microsoft don't understand that more developers means more software for your platform"
Yeah very! Could it be that Apple desperately needs more developers while Microsoft has loads of it writing new apps?
You've missed the point. Apple needs many 3rd party developers and they've done a lot to reduce the barrier to entry by making their development tools free. Microsoft too need as many 3rd party developers as they can get. Sadly, the tools are all commercial. Stuff like Shark, Instruments, the stuff in /Developer/Applications/Performance all come for free with Xcode, but you'd need high end VS to get it.
* Summary : "Great! Apple "innovated" (lol!) by introducing Core Audio, Core Video, Core Data so developers don't need to write their own modules! YaY!"
Do you mean Apple introduced what Windows provided like 13 years ago? YaY!
You accuse the author of being a fan boy, and yet you make asinine comments like this? You have clearly no idea what Core Audio and Core Video do.
System-wide palette for developers to use... rather innovative ;-D
Have you see the palettes he's talking about? When Apple introduces a new UI theme/widget, it's available to all developers from the get go. How long did it take C++ developers on Windows to get access to ribbons?
Though I agree with you that Quartz Composer is a waste of time though it does allow you to create some very amazing looking demos. Pity I have the artistic ability of a hippopotamus.





