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.
We can hire 25 Elbonian programmers to deliver on time and under budget! ... no, um, we call those "features" here.
I'm writing stand alone Desktop programs.
I am Slashdot. Are you Slashdot as well?
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.
I would, except the Web is the worst platform for delivering applications EVER.
So-called "standards" are not consistently supported, even when they're not shifting under your feet... CSS, JavaScript, XML, etc. all hacked-together kludges to add interactive functionality to a medium designed for statelessly delivering static documents... broken security models, latency issues, content management systems that are more time-consuming and painful to use than just programming the damn site...
I say scrap it and start over from scratch!
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?
How can a developer "Just recognize you need to compile for different build targets" if one platform runs only Objective-C++, one platform runs only verifiably type-safe .NET CF bytecode, one platform runs only Java bytecode, and one platform runs only JavaScript?
Java ME might have been popular in Europe. But in Slashdot's home country (the United States), I seem to remember that mobile phones were more likely to support BREW than Java ME, and BREW's digital signature policy blocked developers from self-publishing their applications. I'm told that trying to develop an app and get it approved for all the phones of all the carriers was at least as bad as trying to develop for a game console, and few companies tried.
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:
For the most part there's only minor syntax differences in modern languages anyway.
For one thing, if I make a change to a program in one syntax, how do I propagate the change to corresponding programs in other syntaxes? Having to make the same change manually every time introduces violations of the DRY principle that lead to errors. For another, management of resource lifetime differs. Some languages, such as C++ and CPython, use reference counting, which allows deterministic semantics for finalizing objects and releasing their non-memory resources. Others use tracing garbage collection, which requires finally clauses that are trickier to handle when a non-memory resource outlives the method that allocated it.
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.
Windows Phone 7 ran only verifiably type-safe .NET CF bytecode, and standard C++ isn't verifiably type-safe. Xbox Live Indie Games on Xbox 360 was the same way. The only language that was really usable on WP7 and XBLIG was C#; other languages required unsafe constructions (forbidden by the platform's policy) or the DLR (not present in the Compact Framework) or both. Java ME phones ran only Java ME bytecode. For a few months, iOS ran only Objective-C++ as a measure to fight the use of Adobe AIR, though Apple removed this restriction after it started to affect games' scripting. And of course, someone developing for the web platform can use any language he likes as long as it's JavaScript.
I so hate when people confuse it with multiple personality disorder. And so do I!
will work for dragon quest localization
DdJ was probably talking about the side of the mail server that stores received mail and presents it to the MUA, not the side that accepts outgoing mail from the MUA (SMTP AUTH) or forwards it to other mail servers (SMTP). Though the I in IMAP doesn't officially stand for incoming, you can think of it as if it did.
I don't get it. Why do you think that learning five, or a dozen, or fifty ways to do the same damn things is fun?
This is precisely why CS (really IT) is such a horrible field - you have to spin your wheels, faster and faster, just to do the same damn things, over and over.
Boy how I regret wasting time studying this field! Learning new things in science or math areas is fun, even history or psychology, medicine, neuroscience, the world is wide open.
CS/IT has become all about learning yet one more way to glue a database to a user interface. Yawn. Barf.
No wonder fewer people of quality, especially women, eschew CS/IT. it is a horrible, soul-deadening area to work in.
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.
It was the other way round 10 years ago. Back in 2003 the dominant consumer OS was Windows, with more than 90% of all consumer computer interaction going through a PC running Windows. On the server side, you had Windows NT, Solaris, Linux and various other *NIX's. Nowadays the server market is much more unified, with either Windows or Linux dominating, and most server-side software is now tailored to one or the other, or both. However, the consumer market has changed considerably, with many new OSes and API's joining the party, including all the smartphone OSes from Android to iOS to webOS to Windows Phone 8 and it's associated Metro interface and API's. Software hasn't become schizophrenic, it's always been like that
If you gave me a choice between a printer and a giraffe with explosive diarrhoea, i'll get my ladder and my raincoat
AIR now days is excellent and has become a truly viable solution for mobile and desktop/web for pretty much any project. The best part, is that you can develop AIR apps without having to use Adobe's IDE Flash Builder, which has fallen to neglect on their part IMO. I use InteliJ IDEA for AIR( Android, iOS ), Java/Android, and all of my web dev. It handles ActionScript 3 like butter and has really streamlined the process of deploying to and debugging different targets.
Adobe provides the AIR SDKs for free without any sign-up and if you don't mind signing up with their EVIL Cloud service, their profiler Scout is available for free as part of the Gaming SDK. The Gaming SDK also includes open source frameworks like Starling and Away3D. And despite being called a gaming SDK, these are for the most part vanilla frameworks that will let you build anything -- but of course favor game dev -- and they can all be downloaded separately from GitHub.
I do not think it means what he thinks it means. http://en.wikipedia.org/wiki/S...
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.
The article (which is shit, it's just the rambling of a web developer) says that you need to do development many times in different languages for each platform.
Yet C and even C++, real programming languages and not toy or hipster languages, will actually work everywhere and can satisfy all requirements : client-side, server-side, iOS, Android...