The Schizophrenic State of Software In 2014
jfruh writes: "The current state of the world of software is going in two radically different directions. On the one hand, server-side software is maturing, with wide consensus on tools and techniques that can be used across platforms. On the other hand, client-side programming is an increasingly fragmented mess, with the need to build apps for the Web and for multiple PC and mobile platforms, all natively. But of course, the server and client sides have to work together to deliver what people actually want."
If only we had some standardized, ubiquitous platform for delivering information and applications to all sorts of devices. A platform that permitted linking between apps in a sort of "web" instead of having everything be isolated and separate. A platform that didn't require approval or payoff of competing third parties. Man, I must be dreaming.
captcha: mourning
Programming is always going to be a mess and there will never stop being new platforms.
This is something to accept in an industry that is by definition always going to be on the bleeding edge of change.
It is part of the fun --- go back 30 years and it was mainframe vs. personal computer and IBM PC vs. Apple vs. Commodore --- in the 1990s hardware graphics acceleration and web browser and GUIs were the agent of change.
Ask if anyone thought Objective C or Java were going to be important programming languages on phones in 2005?
Priest: "Universe from nothing, no laws of physics, sped up time"+ huge discrepancies. Creationism? No. Big Bang Theory
I do not think it means what you think it means.
That's why we need more people using languages like this: http://haxe.org/
I discovered it a couple of months ago. It has its quirks, but not having to worry about rewriting your entire app for another platform is a blessing. And no messy VMs needed.
Programming always has been, and always will be, a mess. There is a reason that maybe two percent of the people in the world can actually do this work -- the other ninety-eight percent are sane and don't think like psychotics locked in the Red Bull factory.
I fail to see how AIR is a problem worse than Phonegap or what Chrome is offering right now as a wrapper over html5.
Making a cross-platform game is world of pain, especially when you're small.
I was able to make my chess game available on web, as a chrome app, as a native app for PC, Mac and Linux and for mobile on iPhone, iPad, Android tablets and phones, even the now-dying Blackberry Playbook. The game is quite complex but 99% of the code is cross-platform, there are very few platform-specific lines.
I've been considering porting it to HTML5 but the amount of work needed is too much for one man. The AI is straighforward (Javascript and AS3 are closely related), but porting the UI, the multiplayer code and then tweaking it to make sure it works with all major browsers is not something I'm looking forward to. With AIR I can keep my sanity and concentrate on features.
Perhaps you can run what you like on nearly any OS but...
Do you use NoSQL? Relational?
PHP? Some kind of CMS, or roll your own with Rails?
Store content on AWS? Or some other cloud? Or just local?
Or perhaps you want to simply use the Google App Engine or other systems like it, and have everything hosted without fuss... or rent an elastic compute server and run your own custom Erlang server.
Not to mention you really can't run everything on every OS, as there are still plenty of Windows server specific technologies I didn't even mention but tons of people use.
And you think server stuff is LESS fragmented?
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Well, there is consensus if you ignore detractors within your own community. I have noticed that companies where a particular web developer culture is strong tend to hire people who agree with the current development teams and exclude those who do not, so you rapidly get clustering that feels like consensus, but is really just group think.
IMHO, the ideal situation is, you define standard formats and protocols, and then you give everyone the freedom to use whatever technology they want to interoperate using those protocols.
Want to write your mail server in Java? Python? Prolog? I do not care as long as it speaks IMAP. Want to write your mail client in C#? Objective-C? Ruby? I do not care as long as it speaks IMAP.
Isn't this exactly how things should be?
Yes, you are dreaming. Operating system publishers leave features out of their browsers on purpose to push their proprietary native app platforms. Ever tried using WebGL, the Stream API, or with content types other than pictures and videos in Safari for iOS?
Or refusing to let us link to a specific comment? (Pick any comment and try to come up with a link you can send to someone.)
From the classic interface, try this:
Client side can be made a bit less painful with Xamarin. You can use one language (C#) for all platforms, and share a fair bit of code between platforms.
Of course you still need separate code to give a native UI on each platform, and different packaging to get the application out there.
Gone are the days of being able to target Windows to get over 90% of the client side market. There is real fragmentation, and innovation is happening quickly. There are many benefits to this, but stability in client side frameworks is not one of them.
I so hate when people confuse it with multiple personality disorder. And so do I!
will work for dragon quest localization
SWF was amazing for its time. Streaming vector animation with synced sound over modem speeds. Even today you need a hodge-podge of technologies - SVG, Javascript and a bunch of libraries to achieve what you could do 17 years ago! And I'm not even sure you can stream a svg animation+sound.
SWF has 2 shortcomings:
- it's proprietary
- it doesn't integrate seamlessly with its environment (browser).
For standalone apps, these are not big issues.
I find the solution to that is lots of well organized libraries. I wrote an mp3 tagger and it compiles on Windows, OSX and Linux because I use Poco and QT for everything instead of writing it myself.
I do give up some of the whizz-bang features of the language for the sake of keeping it simple, but my code base is the same on all 3 platforms.
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
http://lazarus.freepascal.org/...
It just compiles to Linux, MacOSX and even Windows. And for all three you get a statically linked library. And in all three you get a native GUI with the GUI elements the user expects.
I haven't tried Android or Windows CE support, but they are claimed to work.