if you are currently writing native code (Obj-C, C#, Swift, Java, C++)
First time I heard that Java falls into the “native code” category.
There are processors that can run Java bytecode natively.
Perhaps, but despite that, Java still isn’t a “native” language.
The longer it goes on, neither is C# really.
This article is bad for you.
At the risk of creating yet-another harmful “Considered Harmful” blog post, it’s recently become more and more apparent to me that writing native code, on any platform, is a bad idea in the long run.
Performance should matter to far more people than it actually does. We seem to be experiencing a blessed recess from Wirth’s Law at the moment (probably corresponding to the less-blessed lull in Moore’s Law), but even though I carry around in my pocket more computing power than existed in the entire world thirty years ago, it still can’t render a webpage without lagging and stuttering.
Revealed preferences though. Plenty of people complain about the bloat of some sites. Very few avoid visiting such sites.
And even if the app crashes completely, it looks like sometimes people don’t/can’t go elsewhere:
“Facebook may have even gone so far as to test Android users' dependence on its app. Reportedly, it knowingly introduced crashing glitches to see whether or not people would abandon Facebook if they couldn’t use its native app on Google’s platform. It doesn’t have anything to worry about, according to the findings – users would rather stick to the mobile website than lose contact with their online friends.”
That’s because they literally can’t, there are no comparable products to facebook. Where else can you go where all your friends are already there.
The most well known of these are NativeScript and React Native.
Hmm, I’ve not heard much about NativeScript. This statement didn’t make sense to me until I realized NativeScript is telerik’s own product. So this whole article is just a marketing pitch I guess.
So two technology stacks jump out at fitting what the author seems to want, Java and Flash. Flash has reached the end of its useful life but Java is still going strong. ReadyTalk’s Avian provides us a way to run Java on IOS and from my experiences it works rather well.
I’m sorry, but C++ runs on everything, and no, the web is not a machine. If a web browser runs on it, your C++ program will. And native C++ code has magical properties that the web ecosystem tends to ignore, for example, letting users decide which version of the software to run.
“Having to install something will create a barrier for people to use your program” is a bad excuse not to write software we need.
The web was NOT designed by geniuses as far as I can tell.
That’s one of the things I was thinking of when I said “we’ll figure out how to run it on any important platform sooner or later”.
What does “Native Code” mean?
I opened this with the expectation that it would be a discussion of embedding platform/compiler/CPU specific code in your program, such as what C/C++ let you do. I’ve definitely been bitten by instances where a specific check or expression relied on some quirk or feature of a CPU and silently failed in a weird way when the code was moved to a different platform.
What the author writes makes very little sense to me. But I’m not very knowledgable about system architectures and nomenclature.
The naive perspective here is the right one: The article takes for granted that there’s a clear and obvious meaning. There’s not. Higher-voted comments are discussing systems that do JIT or in-advance compilation to convert virtual machines and interpreters into machine code; that really blurs the line quite a lot, and has become quite advanced.
I’d suggest that a reasonable meaning would be programming in a style or language or mix of languages, such that you get better performance by taking advantage of the platform’s specific capabilities. That might or might not involve directly writing assembly (even just worrying about struct alignment and cache page sizes is a form of platform integration). But honestly there are too many possible meanings there, and anyone trying to talk about that should be very specific.
Of course, to some people the distinction is simply the web vs everything else… which is also oversimplified. Integrating with facilities specific to the operating system, especially GUIs, is the main advantage to leaving the web. But that’s a totally different topic and I’d hope it would be called something else…
Snakeoil vendor advises larger doses of snakeoil: film at 11.
No. Just No.