Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I've always thought Apple was pretty clear in the direction they were headed when Jobs made his car and trucks analogy at All Things D. The iPad is meant for the 90% of current users as their main device. The PC is for the heavy lifting for those in fields such as audio, video and science. There may be a time where a tablet can meet these needs but I certainly don't think we're close yet.


One thing about Jobs... he was good at saying, "XYZ is a bad idea" right up until the day he announces "we're doing XYZ and it will change the world".

Once Apple can get iOS working well on x86, they'll do the same.


> Once Apple can get iOS working well on x86

I'd be willing to bet a lot of money that iOS already works well on x86 and has never not worked well on x86. After all, the core OS maintains ongoing heritage with an x86 OS, and every single app in the store has already been successfully compiled for x86...


Every app that has been run in the "simulator" has been compiled on x86. The simulator is not one. It's really a cross-compiling trick.


> The simulator is not one. It's really a cross-compiling trick.

Uh? No, that's the exact opposite, the simulator is exactly a simulator. What it's not is an emulator: it does not emulate an ARM device, it simulates an iPhone by running iOS/x86.


Possibly a naive question: what's the difference between a simulator and an emulator?

Presumably an emulator copies the actual instruction set, while a simulator... only pretends to copy the instruction set?


An emulator does exactly as it says: it emulates. It creates an environment that appears to a running program to be identical to the real thing. This is done by emulating the hardware (e.g. BSNES), emulating the runtime environment for a native binary (e.g. VMware), or most commonly, a mixture of both.

A simulator -- at least in the world of Apple iOS development -- does not attempt to emulate iOS hardware, or even the iOS operating system. All the simulator does is provide a virtual display and launches an instance of Launchpad.app. Your app then runs within that virtual display, and talks with natively compiled copies of the iOS APIs, but otherwise it's a normal Mac OS X process that can be viewed and poked with Activity Monitor, or top, or whatever.

The simulator doesn't need to "boot up". There are no virtual drivers. There's no memory management. There's no emulated silicon whatsoever.

The only downside to this approach I can see is that the simulator can't be used to test some things like resource limits, and some things behave very differently, like OpenGL. But you have to test on real hardware anyway, and Apple have made native testing just as easy as simulated.


Thanks a lot for bringing up this subject. I feel unimaginably ashamed for never considering iOS Simulator was in fact, as the name might suggest, a simulator!


In the iOS sense of the question:

An emulator would be binary compatible with the actual device by emulating the ARM instruction set on top of x86. The iOS simulator doesn't do this but instead runs a flavor[1] of iOS natively directly on x86 that is API compatible but not binary compatible (i.e. compiled binaries for the simulator cannot be ran on the devices).

[1] The simulator OS also has distinct limitations that diverge from the real device or what you would expect from a truly emulated environment. There's no motion detection, no GPU performance, no accelerometer or compass, location data is simulated, multitouch input is limited, some frameworks are not available, etc).


Even if the environment was "truly emulated", there would still be no motion detection, accelerometer, compass, location data or multitouch input.

Nor is it likely for the emulated environment to be able to provide a sufficiently accurate performance analogue to the devices' CPU and GPU.

The simulator is the ideal development environment: stupidly fast, and completely reliable for most day-to-day development tasks. For Apple to provide more accuracy in the simulator would be a waste of their time, when you can just as easily run your app on a device.


If you look at many iOS libs they are actually fat binaries, meaning they usually have x86, armv6, and armv7 executable code in them.

On iOS cross-compilation only occurs when you target an iOS device such as an iPhone which generates armv6 and armv7 code.


> every single app in the store has already been successfully compiled for x86

Really!?


Theoretically it would be possible develop your app in Xcode and only ever compile it for ARM and test on the actual device.

But if you use the iOS simulator to develop/test your app (which I imagine every developer does), then you're running your iOS app natively on OS X, linked against a version of all the iOS libraries compiled for x86.


No, actually. There are a couple of third-party development tools for iOS which only compile to ARM (and which therefore can't run in the iOS simulator), notably Adobe Air for mobile, and that Delphi for iOS thing. 99.999%, though; anything written in Xcode, and anything written with the majority of third-party tools, has been run in the simulator.


From what I understand, the problem with x68 is the lack of processors that can compete with ARM on battery life, which is one of the most important aspects of a portable device.


Intel has and is shipping x86 SoC processors which can compete (perhaps not beat) with ARM power efficiency. [1]

On the flip side, ARM doesn't scale as well as x86 to higher power outputs.

[1] https://en.wikipedia.org/wiki/Atom_%28system_on_chip%29


> I certainly don't think we're close yet

Perhaps not for the Hacker News audience. I'd assert that an iPad -- perhaps with a bluetooth keyboard -- is already enough computer for 70% of western world.


> Perhaps not for the Hacker News audience.

I'd say especially for the HN audience.

A lot of people around here live most of their lives in the terminal, using Vi and Git. They have no reason to work on a beefy machine, as long as they can access more hardware somewhere else. It could be a server in the closet, or "the cloud".

When I bought my first laptop and started doing webdev in 2001, I noticed that all I needed was enough power to play music, edit text and run a web/database server. It worked great with win2k WAMP on a P2 266 MHz, 96 MB, 4 GB. My much more powerful desktop was suddenly left powered off most of the time.


In fact the only total, absolute, complete deal breaker is Cmd+Tab instead of reaching for the home button+screen.


If computing history has shown as anything, nothing really is 'enough' for any part of the world.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: