Slashdot Mirror


Cross With the Platform

Tim Bray tweeted, No platform has hit the big time till it's been flamed by JWZ. He was referring to this rant in which Zawinski systematically dismantles any claim the iPhone has to cross-platform compatibility. "I finally got the iPhone/iPad port [of Dali Clock] working. It was ridiculously difficult, because I refused to fork the MacOS X code base: the desktop and the phone are both supposedly within spitting distance of being the same operating system, so it should be a small matter of ifdefs to have the same app compile as a desktop application and an iPhone application, right? Oh ho ho ho. I think it's safe to say that MacOS is more source-code-compatible with NextStep than the iPhone is with MacOS. ... they got some intern who was completely unfamiliar with the old library to just write a new one from scratch without looking at what already existed. It's 2010, and we're still innovating on how you pass color components around. Seriously?"

49 of 307 comments (clear)

  1. UIKit != AppKit by Anonymous Coward · · Score: 5, Interesting

    The OS is the same, but UIKit is NOT the AppKit. It's like bitching against linux when trying to build your Qt code against gtk.

    1. Re:UIKit != AppKit by phantomfive · · Score: 5, Insightful

      He does have a point though, and I have also felt that while UIKit gets the important things right, it feels a little rushed around the edges. And it was rushed, so that's not surprising.

      His example there is pretty clear, instead of using the perfectly good class NSColor, they rewrote it differently as UIColor, leaving some important functionality out. You can deal with it, sure, but it's kind of annoying.

      Still, I don't know who was expecting any sort of compatibility on the GUI portion of the iPhone, since the paradigm is completely different. It doesn't even make sense to think that you wouldn't have to rewrite the front end. On the other hand, I haven't found any problem porting C code or C++ code to the iPhone; I don't claim to be an expert but it does use GCC. In other words, it is highly compatible with existing code, but you'll have to rewrite your user interface. Which is probably what you were planning on doing anyway.

      --
      Qxe4
    2. Re:UIKit != AppKit by Linker3000 · · Score: 5, Funny

      Meh - the fix to get the Dali clock working is trivial - rename all pointers to smell like the colour yellow, and change all LONGINTs to SURREALs.

      --
      AT&ROFLMAO
    3. Re:UIKit != AppKit by Chris+Mattern · · Score: 4, Insightful

      It's like bitching against linux when trying to build your Qt code against gtk.

      It's like bitching against something billing itself as "Linux desktop compatible" when your Qt code isn't supported on it, only gtk. Which would be a legitimate gripe; "Linux desktop compatible" should support Qt as well as gtk.

    4. Re:UIKit != AppKit by Sir_Lewk · · Score: 2, Insightful

      it is highly compatible with existing code... ...but you'll have to rewrite...

      *head kersplode*

      --
      "linux is just DOS with a UNIX like syntax" -- Galactic Dominator (944134)
    5. Re:UIKit != AppKit by Assmasher · · Score: 3, Interesting

      Thank you for that :). I was having a shitty day - it's a little bit better now.

      --
      Loading...
  2. #ifdef APPLE_HARDWARE by syousef · · Score: 4, Insightful

    #ifdef APPLE_HARDWARE
          doItTheirWayOrHitTheRoad();
    #endif

    You complaining about a company that retains control of whether or not you can release the app to the device even if it conforms perfectly to their APIs. If that's not a deal breaker for you why do you think that complaining about shitty incompatible frameworks or passing colour components on slightly different programs is going to worry them? You're wasting your breath.

    --
    These posts express my own personal views, not those of my employer
    1. Re:#ifdef APPLE_HARDWARE by 10101001+10101001 · · Score: 5, Interesting

      You complaining about a company that retains control of whether or not you can release the app to the device even if it conforms perfectly to their APIs.

      Um, not quite. The company doesn't control whether you can release the app to a device. The company controls whether the app will run on a device (either by buying the app through an app store or paying a set fee to the company). This isn't too far off from the XBox 360, either. To some extent, it's not that far off from most any commercial library/OS (the main difference is whether you effectively pay the fee upfront or whether they try to nickel and dime you later).

      If that's not a deal breaker for you why do you think that complaining about shitty incompatible frameworks or passing colour components on slightly different programs is going to worry them?

      Apparently the Dali Clock is a rather old program (nearly 20 years) that's been ported to a variety of platforms. Presumably, the author chose to port the Dali Clock to the iPhone precisely because it was supposed to be relatively trivial to port from a Mac OS X version. The blog highlights how untrue that ended up being; comments on the blog suggest it's because Apple provided multiple graphical APIs and if the author had been lucky several years ago, he would have chosen the one that worked on the iPhone.

      In short, it doesn't sound like the author bought his iPhone to write apps for it. It was more a porting exercise to see just how trivial the task would be.

      You're wasting your breath.

      No doubt. But, then, most blogs are a "[waste of breathe]". These comments, both yours and mine, would likely qualify as well. I don't think that'll stop me from commenting or considering the blog for what it is, a recognition of Apple having the same sort of failings that Microsoft does: designing too many APIs/interfaces/file formats, dropping support for them whenever they can, and generally being about as bad as any other platform when it comes to having a unified, solid solution to the many problems that exist for the developers. I will give Microsoft some credit, though, for generally waiting longer than most public, commercial software companies in maintaining strict backwards compatibility.

      --
      Eurohacker European paranoia, gun rights, and h
    2. Re:#ifdef APPLE_HARDWARE by Anonymous Coward · · Score: 4, Insightful

      "I will give Microsoft some credit, though, for generally waiting longer than most public, commercial software companies in maintaining strict backwards compatibility."

      I no longer program, I moved on to a field where computers are ancillary to my line of work and happy about the reboot, but I remember this being the case even a few years back. Microsoft maintains strict backwards compatibility at all risks.

      And this is the big difference between Microsoft and Apple. Microsoft cares more for their developers and the companies that make money off of them than they do their users. Apple cares more about the users than they do about the developers.

      Microsoft has routinely left in holes in their OS that can't be easily fixed because a major software developer can't be bothered to fix their software.

      Apple, on the other hand, I've seen them send out pretty terse notes to their major developers letting them know that if they don't change their use of an unexposed API (one they found has a hole it in...generally why Apple doesn't doesn't publish APIs until it is ready because they want to make certain it is ready for public...and apparently it applies to the iPhone as well)...and Apple will specifically tell major software houses that if their software isn't fixed in 30 days, it will cease working for anyone that updates their computer.

      That said, I don't really care for Apple's walled garden approach to the iPhone and for those of us nerds, it is a major problem (I've had to jailbreak just for simple things like Googlevoice front ends...or tethering)...for the average user? not a problem. The point is, Apple cares far more for the user than the developer. Microsoft doesn't give a fuck about the user so long as the developers are happy.

      So give credit to Microsoft for maintaining backwards compatibility, but you are just thanking them for providing a buggy OS that allows viruses to run rampant.

  3. Re:Could be worse by Bert64 · · Score: 3, Insightful

    Windows mobile probably has more of a backwards compatibility problem than the iphone... The core OS of the iphone is the same as normal OSX and it's only the interface APIs which are different - and rightly so, the whole interface is fundamentally different in how you interact with it.
    Windows mobile on the other hand is a whole different os with a completely different kernel.

    --
    http://spamdecoy.net - free throwaway anonymous email - avoid spam!
  4. Re:Could be worse by beelsebob · · Score: 5, Informative

    The only valid complaint I see in this whole article is with NSColor/UIColor – NSColor really should be in the Foundation API (common to both Mac OS and iPhone OS), not the AppKit/UIKit APIs.

    His OpenGL example is hilarious. "Oh my god, I can't use glBegin and glVertex"... Function calls which have been deprecated in OpenGL since version 2, that was 15 years ago!

    As for UIKit being very different from AppKit... Well of course it is! UIKit is for building touch based UIs, if you transfer the exact same things as you have on Mac OS straight over, you end up with a shit mishmash of rubbish. The important thing here is that both APIs share their Foundation API (the basic programmery stuff you need like dictionaries, arrays, strings, etc).

  5. Let's look at what JWZ said... by el_flynn · · Score: 4, Interesting

    In TFA, JWZ said "It was ridiculously difficult, because I refused to fork the MacOS X code base: the desktop and the phone are both supposedly within spitting distance of being the same operating system, so it should be a small matter of ifdefs to have the same app compile as a desktop application and an iPhone application, right?"

    FLAMESUIT ON
    At the risk of being shot down by every MacOS/iPhone hacker here... There are two main points that JWZ makes which are quite interesting:

    1) I refused to fork the MacOS X code base
    2) the desktop and the phone are both supposedly within spitting distance of being the same operating system

    So the beef he has, while totally valid is because of:

    a) refusal to fork the codebase
    b) assumed that both iPhone OS == MacOS X

    Hmm. I understand the refusal to fork the codebase, but if that's what's _required_ then that's what needs to be done to have the app on the iPhone. And what's the other bit about "assume" making an ass out of you and me? Ditto for the OpenGL/OpenGLES rant...
    FLAMESUIT OFF

    --
    The Wknd Sessions - Malaysian and South East Asia independent music
    1. Re:Let's look at what JWZ said... by SharpFang · · Score: 4, Insightful

      IF the code requires forking, THEN it should have no pretenses about being cross-platform compatible.

      Which was the original point.

      It's not a complaint that iPhone is devilishly difficult to program. It is not. The complaint is that it's devilishly difficult to write an iPhone/desktop cross-platform compatible app, which should have been easy if the device actually was cross-platform compatible.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    2. Re:Let's look at what JWZ said... by mwvdlee · · Score: 3, Interesting

      I don't really care about developing for any Apply product myself, so I haven't looked into it in-depth, but does Apple actually claim OS-X and iPhone development is cross-platform compatible?

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    3. Re:Let's look at what JWZ said... by jo_ham · · Score: 2, Insightful

      So, in your world, the API for a variable resolution, mouse+keyboard driven GUI should be the same API as a fixed resolution touchscreen? And you think it's "incompetence" that the APIs are different for two interfaces that are different in size, input device and resolution, one of which can be rotated on the fly into different orientations?

      You are surprised that an app that has existed for nearly 20 years on multiple platforms wasn't trivially easy to port to the iPhone because the developer was just too stubborn to understand that perhaps the API is a little different on the iPhone than on OS X despite them being "within spitting distance of each other" (which they are, below the GUI)?

      Sure, there are a couple of inconsistencies that could have been in core frameworks shared by both platforms, but they are hardly game changing or enough to whine on the internet about.

      Next you'll be telling me it should be super easy to make a KDE app look *identical* when running on a Gnome desktop with no inconsistencies or graphical issues at all. I'll bet that was super easy to get all the bugs ironed out of that. I'll bet it took less than an afternoon to fix it.

    4. Re:Let's look at what JWZ said... by larry+bagina · · Score: 2, Funny

      just think of how many more iphones they would have sold if it had a scroll ball/mouse instead of this touch shit. Users don't want to run a single application, they want to move windows around and navigate menus and right click on shit. lame.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    5. Re:Let's look at what JWZ said... by 3dr · · Score: 2, Informative

      JWZ's rants hinges on two points, based on assumptions that are false.

      The first being, that iphone OS is (or should be) identical to OS X desktop/cocoa. I've been developing on OS X desktop for about three years, and iphone about a year. Never have I heard the claim (by Apple or anyone else) that the code is portable. It simply is not. In fact, Apple's iphone introductory videos explicitly mention that developers must think differently about a portable device in terms of what kinds of apps are good for portable devices, how the user interacts with it, etc. I do agree with him, that if the libraries are named the same and represent the same technology, they should work identically.

      Other people are picking up this idea of source compatibility and running with it, but it's a straw man because Apple never claimed 100% source compatibility.

      And second, he assumes OpenGL ES is identical to OpenGL. I think that a reasonable person, when hearing the release of an API specifically for embedded systems, would think there may be some limitations or differences in the new implementation since by definition, embedded systems have limitations and features different from the desktop environment. So he learned that there are API differences. Some people would just move on with this newly found knowledge, while others blog a rant about it.

      Much ado about nothing.

  6. Re:We get it already by FuckingNickName · · Score: 4, Insightful

    No. People like making money with the iPhone. But development in the classical sense, i.e. "growth; progress", does not occur on iPhone.

  7. Re:Something tells me he orders BigMac at Burger K by SharpFang · · Score: 4, Interesting

    The problem is not that the UI is -completely- different.

    It's an UI that is massively the same, just ran through a bulk rename, shuffle parameters order around in function calls and explode/implode some methods / typical sequences.

    The UI -could- have been VERY similar, with only minimal differences easy to #ifdef through - the underlying philosophy is. Instead, there was some active effort put in making it totally incompatible, where making it compatible would be easier and more obvious.

    A typical case of "an extra week of writing code can save you a hour you'd spend on reading documentation instead."

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  8. Re:We get it already by phantomfive · · Score: 2, Interesting

    I think the GP is right, I for one at least really enjoy programming for the iPhone. Core Animation is a thing of beauty. If you haven't seen it, you should check it out. Objective-C is what C++ could have been if they had done it right. The default GUI elements make it easy to create decent looking apps. Overall, if you ignore the DRM, programming for the iPhone is quite nice.

    --
    Qxe4
  9. Re:Could be worse by blackraven14250 · · Score: 4, Informative

    Function calls which have been deprecated in OpenGL since version 2, that was 15 years ago!

    Unless I'm missing something, or you're living in 2020, OpenGL version 2 was released in 2005, and you're 10 years off.

  10. Re:Could be worse by blackraven14250 · · Score: 3, Informative

    Oh, btw, it was deprecated in OpenGL 3.0 - 13 years off from being accurate.

  11. Re:We get it already by FuckingNickName · · Score: 4, Insightful

    Objective-C is what C++ could have been if they had done it right.

    No, there is no real way of objectifying C well, because C is essentially a low level systems and high performance macro assembler, designed for people who want to and need to care about the underlying system. Now, C# is a fairly good language with C-type constructs,and Java is ok-ish, but they are managed languages more abstracted from the underlying hardware.

    Objective C is an attempt to mix macro assembler with the beautifully pure OO language that is Smalltalk, giving the advantages of neither.

    I did like Objective C when I first learnt about it, about 16 years ago. I was a teen and my knowledge of languages extended little beyond BASIC, C, C++, Forth and a vague understanding of LISP. I craved something fit for a more high level purpose. Objective C is an experimental half way house which has been hanging around because C++ is so bad and Jobs happened to run NeXT, but it's no pleasure.

  12. Re:We get it already by bostei2008 · · Score: 3, Insightful

    Objective-C is what C++ could have been if they had done it right.

    You are kidding, right?

  13. Who is JWZ? by AmonTheMetalhead · · Score: 4, Insightful

    And why should we care?

    1. Re:Who is JWZ? by elrous0 · · Score: 2, Funny

      Duh, he's the guy that created Babylon 5.

      --
      SJW: Someone who has run out of real oppression, and has to fake it.
    2. Re:Who is JWZ? by SuiteSisterMary · · Score: 2, Interesting

      IOW, he's an archetypical cyberpunk character. Former hacker and coder who now runs a bar/nightclub, who sometimes dispenses wisdom from on high, and whom newbs deride and experienced people listen to.

      The only thing missing is moving stolen data or cyberware, and/or arranging squads of disparate professionals to perform quasi-legal or illegal actions against corporations, generally on the behalf of other corporations.

      --
      Vintage computer games and RPG books available. Email me if you're interested.
    3. Re:Who is JWZ? by Sir_Lewk · · Score: 2, Funny

      Oh damn, I never even thought of it like that but you're incredibly right. Next we're going to find out he carries a katana and delivers pizza for the mob in his free-time... :O

      --
      "linux is just DOS with a UNIX like syntax" -- Galactic Dominator (944134)
  14. Re:Apple is like... by Kooty-Sentinel · · Score: 4, Insightful

    No.

    More like Audi/BMW putting a 250 km/h speed limiter on the car you just bought. Sure, you can go ahead and remove the limiter yourself, and why the hell not change the fuel mappings on the ECU while your at it? Audi/BMW will not support the modifications nor honor the warranty on your car, but there's nothing 'physically' stopping you from making the modifications. They are by no means obligated nor legally required to tell you how to circumvent their limitations and reverse engineer their software.

    When an engine suddenly catches on fire doing 270 km/h+, or you suddenly loose control on the car, the last thing they want is for you to point the finger at them and say: "Well you technically allowed us to do this". They are just doing everything possible to cover their asses.

    Look at Windows Mobile for a minute. Stock installs are actually quite decent. But when Joe Sixpack starts installing "Bubble Popper 2.0", and "FREE XXX PIX" on his phone, and the phone shits a brick, guess who takes the blame? Yeah, Microsoft and their "damn unreliable OS".

    --
    Your evaluation period for Productivity 1.0 has ended. Please purchase more coffee to continue using this product.
  15. Re:Could be worse by Trepidity · · Score: 2, Insightful

    In fact, you shouldn't be using them on the desktop either, if you're at all concerned about performance

    If you mean, are making an AAA game title, sure, but then your job is probably "3d graphics programming specialist" or something, so you can jump through whatever hoops are necessary. There's a huge range of apps for which performance is not really a concern; they ran fine on hardware of 10 years ago, so they ought to be able to run fine on today's. xDaliClock is one of those.

  16. Want Real Cross-Platform? Try ZooLib! by MichaelCrawford · · Score: 2, Funny
    While the 68k Classic Mac binding hasn't been maintained for a while, it wouldn't be hard to get it working again. That would enable you to use the same client code all the way from the Mac Classic running System 7 to Mac OS X, Windows 7, Haiku, BeOS, Linux (mostly), BlackBerry and the iPhone.

    All with one set of C++ client code, compiled to native executables for each platform.

    If you want iPhone support, you'll need the Subversion source base; the code works, but we haven't rolled a release for a while.

    Its Open Source under the MIT License, chosen specifically to be compatiable with both GNU GPL and proprietary development.

    --
    Request your free CD of my piano music.
  17. Re:Stop making apps, start making web-apps by vadim_t · · Score: 5, Insightful

    No thanks.

    Personally, I hate web apps. They're still vastly inferior to desktop applications. They need a constant connection, are less responsive than a desktop app, are limited in the GUI they can have, work or not depending on the browser, and are in many cases outside of my control, which is excellent for lock-in.

    There still are many places where I have no internet connection. It happens when travelling in the underground. It's frequent above the ground in a train in some areas. It's unaffordable when roaming. It doesn't work in the middle of nowhere. I find it unacceptable to lose access to my stuff just because I happen to be somewhere without a cell tower.

    What we need is more open architectures, where anybody can make anything they want without interference.

  18. Web Apps Don't Work When You're Not Online by MichaelCrawford · · Score: 4, Insightful

    What's worse, you're at the mercy of the web app vendor. If they take down their app or start charging more money for it, you're SOL.

    --
    Request your free CD of my piano music.
  19. Re:Could be worse by zippthorne · · Score: 3, Insightful

    No, performance is *always* a concern on a battery powered device. Every single instruction has a cost in ergs. You don't want to waste them.

    --
    Can you be Even More Awesome?!
  20. Re:Could be worse by Skowronek · · Score: 3, Insightful

    The problem with this "explanation" is that the application's effort to use vertex buffers is significantly higher than the effort to use immediate mode.

    A hardware implementation of IM (like the one in Silicon Graphics machines) would probably bring much higher energy efficiency than carefully packing up VBOs with software. Even when there's no hardware implementation, the packing up can be equally well performed by a driver, thus just shifting the energy consumption around, not increasing it.

    Thus, immediate mode is actually at worst just as efficient as VBs for small vertex counts or dynamic objects, and at best allows hardware acceleration where there is none with VBs.

  21. Re:Never underestimate... by x2A · · Score: 2, Funny

    Blame and credit alike... it does claim that if you read C code into memory, that it can then parse the read C, but I don't think it could parse the read C, which is why the java is being used for things it really doesn't want to be used for in Egypt to this day.

    --
    The revolution will not be televised... but it will have a page on Wikipedia
  22. Re:Something tells me he orders BigMac at Burger K by bar-agent · · Score: 2, Insightful

    The problem is not that the UI is -completely- different.

    It's an UI that is massively the same, just ran through a bulk rename, shuffle parameters order around in function calls and explode/implode some methods / typical sequences.

    The UI -could- have been VERY similar, with only minimal differences easy to #ifdef through - the underlying philosophy is.

    No, the UI is completely different. Events are completely different, because of multi-touch-related stuff, and consequently, everything else needed to be rewritten as well. It shares naming conventions and some concepts with Mac OS X's AppKit, but that's all. Focus is different, windows are different, views are different, the first responder is mostly unused, etc.

    --
    i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
  23. Re:Could be worse by beelsebob · · Score: 2, Informative

    The problem with this "explanation" is that the application's effort to use vertex buffers is significantly higher than the effort to use immediate mode.

    No, no it's not.

    Immediate mode requires at least as many (usually more 3 times more) calls as you have verticies in your model, during which the GPU is wasting time, and the driver is doing complex things to pack data into buffers in graphics memory.

    Meanwhile, vertex arrays require a single upload of a constant array to graphics memory, which happens quickly as a single memcpy, and then frees the graphics card to get on with it. After that point, all the CPU need to is yell at the graphics card "now render this".

    The *reason* we've moved from immediate mode to vertex attribute arrays is because they're faster and more efficient. Of note, these days, even shader pipelines are more efficient than fixed function ones, because the fixed function pipeline is commonly implemented in the driver as a shader. A shader that is doing a bunch of stuff you don't need it to, along side the stuff you do want to happen.

  24. Re:Could be worse by PopeRatzo · · Score: 3, Interesting

    Can I take this opportunity to mention that I find programmer-fights fascinating?

    Carry on, guys.

    --
    You are welcome on my lawn.
  25. Re:Stop making apps, start making web-apps by arth1 · · Score: 2, Insightful

    Personally, I hate web apps. They're still vastly inferior to desktop applications. They need a constant connection, are less responsive than a desktop app, are limited in the GUI they can have, work or not depending on the browser, and are in many cases outside of my control, which is excellent for lock-in.

    Hear, hear!

    In addition to not being future-proof. I predict that any data will be inaccessible in a mere decade or two, and you can't just boot up a 15 year old and compatible version of your web app, even if the company should exist down the road.
    Which, incidentally, is a big problem. As an example, much of JWZ' source code is 20+ years old.
    I for one, is happy that he didn't store it with a properietary editor running under EMBED, stored in Netscape's old roaming storage. :-)

    Speaking of... who sits on the old Netscape source now? Oracle?

  26. Re:Stop making apps, start making web-apps by Trepidity · · Score: 2, Interesting

    Not sure it answers all your concerns, but on the iPhone at least, you can package up a web-app so it installs locally. Then it's basically a local app that happens to be written in Javascript and render via the Webkit toolkit.

  27. Re:Could be worse by Skowronek · · Score: 5, Interesting

    Entirely correct @ shaders.

    However, I have to take exception with your description of immediate mode - the reason it performs so poorly now is that modern graphics chips are designed pretty much exclusively for DirectX (at least, this goes for ATI).

    On machines where immediate mode performance was actually some kind of a priority (for instance, SGI Octane IMPACTSR and relatives), executing a glVertex command amounted to 3 memory writes into a command FIFO that was mapped into a fixed address in userspace which was accessible with a short form of a SW opcode (remember, this is MIPS, there is a range of 64k addresses that can be accessed without loading a base register: -32768 to 32767).

    The hardware even managed the hiwater/lowater status of the fifo, and notified the kernel to perform a context switch to a non-gfx process when the gfx process was filling up the command FIFO. Those switches were as a matter of fact "virtualized" (before it was cool) by a combination of hardware, kernel (if hardware contexts are exceeded) and userspace - not entirely unlike what DX10 ADM was supposed to be, except this was in 1995.

    For large static meshes (only transforms applied with Vertex Shaders), buffers are definitely going to perform better, because the meshes can be located in local memory (VRAM). However, if something is dynamically generated, immediate mode in a good implementation is no slower than a memcpy, and it does not require a kernel transition to submit a command buffer to card's ring (like modern cards like to do).

  28. If it's already cross-platform, why the grief? by MichaelCrawford · · Score: 2, Insightful
    I think JWZ's crucial mistake was in expecting the Mac OS X source to just work out of the box on the iPhone. Apple never made that claim. It's the wrong approach to take.

    While there are many conceptual similarities between the two operating systems, they are different enough that they really should have been considered separate platforms from the very start.

    I've been doing cross-platform development for twenty years. Don't Even Get Me Started.

    --
    Request your free CD of my piano music.
  29. JWZ is an important figure in the history of by aussersterne · · Score: 4, Informative

    web (specifically, web browser) development, with Major (capital M) contributions to the mozilla/netscape/firefox ecosystem since before mozilla/firefox existed as projects in their own right (going all the way back to Netscape 1.0), as well as fingers in things like Emacs and popular X applications.

    --
    STOP . AMERICA . NOW
    1. Re:JWZ is an important figure in the history of by OzPeter · · Score: 2, Interesting

      And why should we care?

      web (specifically, web browser) development, with Major (capital M) contributions to the mozilla/netscape/firefox ecosystem since before mozilla/firefox existed as projects in their own right (going all the way back to Netscape 1.0), as well as fingers in things like Emacs and popular X applications.

      Yes, we know he is a smart cookie, but that still doesn't answer the OPs question.

      After looking at the webpage of the app in question (as posted by someone else here - I had never heard of the app before) all I see is some nostalgic clock App that seems to be being forced into a cross-platform test case where it doesn't really fit, and then complaining about the process. And then gratuitously throwing in some rant about the $100 developer cost. Yet nowhere have I seen any claims that a) OS-X and iPhone OS are meant to be *cross-platform* at all, and b) that the developer registration cost has ever been anything but $100. All I have seen is someone who disagrees with Apples development process for OS-X and the iPhone and does so in the same way as a multitude of un-notworthy people have done before.

      So to me, none of this is really newsworthy and I am also left with the OPs question being unanswered.

      --
      I am Slashdot. Are you Slashdot as well?
    2. Re:JWZ is an important figure in the history of by Anonymous Coward · · Score: 2, Informative

      Lurk Moar!!

      You've never heard of all the cool JWZ screensavers.....uh...ok. Apparently you are new to this.

      JWZ didn't need a URL; in the day it was just "about:jwz" and the netscape spinner turned into a compass.

      As he mentions in his blog, he sells beer now due to the utter stupidity of all that lurks in computerdom.

      He is noteworthy because people do follow him, what he says does matter because this isn't his first slashdotting.

      It's a social thing

  30. Re:We get it already by ThePhilips · · Score: 3, Interesting

    As for "messaging", well, just because Objective C calls it a message and C++ calls it a polymorphic method call, it doesn't mean there's a relevant difference.

    You apparently never tried to implement the message passing in general or in C++ in particular. I unfortunately did.

    It all boils down to the trivial problem: given an object, one should be able to call a random method on it.

    C++ forbids this due to strict typing and compile time binding. Nor you can't represent a method as a variable. Nor implementing hundred/thousands of abstract classes is practical or sane.

    Objective-C has that as a feature. Selector is a basic data type.

    You can queue up selector/object pairs in ObjC for later calling - you can't anything close to it in C++. Thus no native messaging in C++.

    P.S. One can implement that also in C++ - see all the insanities TrollTech had to go into to do it in Qt. They use strings to identify methods during compile time, create class vs. method tables during link time and during run-time perform look-up on the table to identify the method's entry point.

    P.P.S. loosing v. losing. Give me a break, man. It's Monday. I obviously meant "losing".

    --
    All hope abandon ye who enter here.
  31. Re:We get it already by FuckingNickName · · Score: 2, Insightful

    It all boils down to the trivial problem: given an object, one should be able to call a random method on it.

    C++ forbids this

    What you might mean is, "I can't build up a random method call at runtime in an ANSI standard way". Your "trivial problem" is soluble at compile time, as is the intention for statically typed languages.

    Nor you can't represent a method as a variable.

    However "insane" you like to think it is, a method isn't a variable (although you can indicate a particular non-static method of an class in a variable using member function pointers). You probably want to use an pointer of abstract base class type, i.e. interface. Why do you keep wanting to defeat static typing?

    You can queue up selector/object pairs in ObjC for later calling - you can't anything close to it in C++. Thus no native messaging in C++.

    I don't define messaging as "queueing up a random sequence of method calls chosen at runtime for later calling". Again, you're probably looking for some array type from which elements are consumed to call methods (perhaps chosen using member function pointers) via a pointer typed to an abstract base class.

    If you want to be able to queue random calls to /anything/, represented in some language-defined way as calls with all their parameters, just because it's nice to say you can, you are probably looking for a completely dynamically typed language like Smalltalk.

  32. Re:We get it already by ThePhilips · · Score: 3, Insightful

    However "insane" you like to think it is, a method isn't a variable (although you can indicate a particular non-static method of an class in a variable using member function pointers).

    Method pointers are bound to a class.

    That means code need to know explicitly the interface to call a method.

    You probably want to use an pointer of abstract base class type, i.e. interface.

    When you get a pointer to the object of a base class, you can't upgrade it inside of the message dispatch - because that would require the message dispatch to know all the hundreds/thousands interfaces used all over the program. And that's simply impractical, most of the time impossible.

    Why do you keep wanting to defeat static typing?

    I'm not.

    It was you who tried to indicate that the messaging is somehow implementable with polymorphism. And it is not. As you yourself point out between the lines: it is simply incompatible with static typing.

    If you want to be able to queue random calls to /anything/, represented in some language-defined way as calls with all their parameters [...]

    That what messaging often boils down to.

    Constantly serializing/deserializing is way too expensive.

    [...] you are probably looking for a completely dynamically typed language like Smalltalk.

    ... of which the Objective C is one of the descendants.

    The End.

    P.S. I have tried to implement messaging in C++ at least twice. Once by serializing the calls, second time by trying to have interfaces for all used methods. First failed due to miserable performance. Second failed when more people were assigned to the project and it became impossible to maintain -in any sane fashion- list of used interfaces and dispatch code was constantly broken due to changes to the other parts of the software.

    --
    All hope abandon ye who enter here.