The Schizophrenic State of Software In 2014 209
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."
common platform (Score:4, Insightful)
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
Deliberately missing browser features (Score:5, Informative)
Re:Deliberately missing browser features (Score:5, Insightful)
Operating system publishers leave features out of their browsers on purpose to push their proprietary native app platforms.
Well, that and the fact that every technology in history that has attempted to offer native access and functionality to remote web sites has gone on to become one of the biggest Internet security problems of its generation.
Re:Deliberately missing browser features (Score:5, Funny)
What do you mean, this was the point of ActiveX. ActiveX didn't cause any security concerns.
It isn't like when someone is asked to accept to install something, they will just hit Yes, to get it out of the way.
The Web isn't a good way to do high performance computing. The good news is, most people don't need high performance.
Re:common platform (Score:4, Insightful)
Dude, you should definitely start programming in HTML5, I'm pretty sure it's exactly what you're looking for.
Thinks that you can NOT do in HTML5:
- Use local storage exceeding 5MB.
- 3D graphics (WebGL is poorly supported so far)
- Tilt and shake gestures
- Device location and orientation
- Audio recording
- Camera
- Text to speech
- Speech to text
- much more.
Re: (Score:2)
-Local Storage: Not the best idea, the point of a web based application is your data is on a centralized location. Your local PC doesn't qualify, small amounts is handy for performance, but if you are going past 5MB then you are probably doing it wrong.
-3D graphics: Ill give you this one, but it would be rather limited to games, and some smaller subset of applications, not a full deal breaker.
- Tilt and Shake: Ill give you that one too. The time HTML5 was made these ideas were to new to be realized as use
Re: (Score:3)
- Audio recording: good in theory, scary in use. Having a web browser listing to your audio could cause ease dropping software.
Yeah, so? If you want to write an application which records or manipulates audio, then this is a pretty important requirement. It just goes to show that this notion that all modern applications should be written in HTML5 is wrong. There's a lot of things you might want to do on your computer which just don't lend themselves to HTML5/Javascript/PHP/Java.
Re: (Score:2)
Java script has the basic software engineering freatures... It doesn't have the advanced ones though.
IF While For Varables List Strings Functions and classes.... That is the basics.
Re: (Score:2)
also, you cannot write a decent application, since javascript currently is the only supported language and it lacks basic software engineering features.
I've heard rumors that software exists that takes code written in one language and transforms it, or "compiles" it if you will, into another language. But maybe that's just an unworkable academic idea.
Re: (Score:2)
Audio and video recording are both pretty simple, as long as you don't mind using Flash to do it.
That's about as viable a solution as using ActiveX. Flash is nearly dead now anyway; in a few years it'll have completely disappeared.
Re: (Score:2)
"That's about as viable a solution as using ActiveX."
Not so, since it can run in all major browsers on all major platforms.
"Flash is nearly dead now anyway; in a few years it'll have completely disappeared."
Sure... once those particular features have been copied by HTML 6 or 7.
Be Thankful (Score:5, Insightful)
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?
Re:Be Thankful (Score:4, Informative)
Re: (Score:2)
Re: (Score:2)
I forget why, but I do remember that the IBM JIT JRE for the Treo 650 was the cat's pajamas in 2004. I certainly wasn't using it for games, maybe a mail app?
This was before cheap OpenGL silicon, so the visuals were ugly, but k9mail really isn't much different 10 years later.
Re: (Score:2)
When it's plugged in, that is... the battery has been shot for a long time.
BREW (Score:3)
Re: (Score:2)
Mobile phones have always been programmed in something.
Obviously for as long as mobile phones have had embedded processors (and that is a long time though i'm not sure it goes right back to the beginning of mobile phones) then someone has been writing software to drive them just as people have been writing software to drive dishwashers for as long as dishwashers have had embedded processors.
But that is a very different thing from the wide use of third party apps on phones. Prior to the iphone appstore there were some attempts to support third party apps on phon
Re: (Score:3)
Re:Be Thankful (Score:4, Insightful)
Ask if anyone thought Objective C or Java were going to be important programming languages on phones in 2005?
Java is indeed a resource hog, but I think it's ubiquity was already embedded in the ARM platform long before 2005 - actually pretty much a given for mobile development. Objective C is much more of a surprise. Had it not been for the advent of "iphone apps" I think it would have remained relegated to the cubicles of NeXt geeks. The syntax is simply too obsucre (manufactured to obscure it's underpinnings) to attract sane developers already invested it other popular high level languages.
Re: (Score:2)
Re: (Score:3)
Obscure syntax, lack of quality stack overflow answers to questions, terrible API, reliance on XCode...I found it an absolute nightmare, and I code in C++.
Re: (Score:2)
I found it an absolute nightmare, and I code in C++.
Well, thar's 'yer problem.
It's been a decade since I've done any Objective-C, but, coming from a C++ background, among others, the advice I found useful was to think of it as a way to get C to do smalltalk, not a way to add message passing to C++.
Re: (Score:2)
Well, thar's 'yer problem.
Yes :-)
It's been a decade since I've done any Objective-C, but, coming from a C++ background, among others, the advice I found useful was to think of it as a way to get C to do smalltalk, not a way to add message passing to C++.
Smalltalk was a little before my time. I learned OOP on Java (yikes!) and Python then got a job doing C++ (even more yikes). All the objective C I did was on my own. It also didn't help that the mac I had was an old macbook with tiny screen - it makes storyboarding and XCode awful to use, and I never got ninja enough with the syntax to just slam it out in vim. I got the feeling it could be a language I could learn to like, but after I hopped off the Apple bandwagon at the Iphone 4 and got a droi
Re: (Score:2)
Programming is always going to be a mess and there will never stop being new platforms.
That's like saying text encodings will always be a mess. They have been, but UTF-8 [youtube.com] has come along to save us all from the hell of multiple incompatible encodings. It's fast getting towards the stage where everyone has standardized on it. Something similar could be said for USB too.
If a beautiful OS takes off (something that ISN'T OS X, Windows, Android OS, iOS or Linux before anyone thinks I'm taking sides), and with it, comes a beautiful language (fast, terse, flexible, and allowing code that's easy t
Re:Be Thankful (Score:4, Interesting)
But from the business side it sucks. Also as a developer you have to be careful you don't get yourself locked into one technology. To me learning new stuff is part of what makes my job enjoyable but far too many of us get comfortable and find ourselves reaching into our middle years with skills that are no longer in demand.
I don't get it. Why do you think that learning (Score:2, Interesting)
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
Re: (Score:2)
"Ask if anyone thought Objective C or Java were going to be important programming languages on phones in 2005?"
Repeat what I wrote above:
The Motorola Razr, which came out in 2004, while not Android was still a full-blown smartphone that supported Java apps. Yes, Java programming for phones important even then.
Re: (Score:2)
Define "supported" and "Java apps". At the time, Java was even more fragmented than it is now. Java could mean all kinds of things, but the Java you found on a Motorola Triplets phone or its descendants (including the RAZR, which I owned two models of) was pretty mean. Java applets had to be specifically designed to run on specific device families, and the applets for a Siemens or Nokia phone would commonly crash on a Motorola phone, and vice versa.
Re: (Score:2)
"Define "supported" and "Java apps". At the time, Java was even more fragmented than it is now. Java could mean all kinds of things, but the Java you found on a Motorola Triplets phone or its descendants (including the RAZR, which I owned two models of) was pretty mean."
Nonsense. Between 2004 and 2006, Java was fully owned and developed by Sun Microsystems, and there were 3 versions: Enterprise Edition, Standard Edition and Mobile Edition (officially renamed in 2006 to EE, SE, and ME.
The Razr supported ("supports", since I still have mine and it's still working) full standard Java ME, and anybody could get the SDK and compile programs for it. While some phones might crash ME programs, that's the fault of the phones that didn't properly support ME, not a problem with Jav
Re: (Score:2)
There weren't just three versions: ME was far from homogenous. Most people think that J2ME is synonymous with J2ME CLDC MIDP. I spent 3 months in 2005 writing a computer-assisted interviewing app for PocketPC in J2ME CDC PP, which is closer to a cutdown J2SE than to CLDC MIDP; although I try to make it clear on my CV, I have to be prepared to explain it when I go for interviews.
Re: (Score:2)
The Razr supported ("supports", since I still have mine and it's still working) full standard Java ME, and anybody could get the SDK and compile programs for it. While some phones might crash ME programs, that's the fault of the phones that didn't properly support ME, not a problem with Java.
Reading comprehension failure level: maximum. I didn't say it was a problem with Java. What I said is that those phones had shitty Java support. Since I've owned and hacked on the V300, V500, V555, the original RAZR and two of the later RAZRs and run dozens of different Java MIDlets on all of them, I am well-versed.
But as for "define apps"... I don't get what you're trying to say. No, they did not have accelerometers or GPS or compass, because the phones in those days didn't have those features. But they could access things the phones DID have: buttons, screens, speaker, vibrator, etc.
Yeah, and the other thing those phones did have, again speaking of those crappy Triplets phones and their descendants, was a very slow processor and very little memory. They weren't capable of ru
Re: (Score:2)
Yep, pretty much any language out there, from programming languages to spoken... is a mess.
Adobe Air (Score:2)
isn't this what Adobe Air was supposed to solve-- write one client to rule them all?
Re: (Score:2, Interesting)
Adobe products are an interesting case of trying to solve systemic problems, and inevitably creating new, worse ones. Except photoshop. Photoshop is software that is just useful and nothing else.
Re:Adobe Air (Score:5, Interesting)
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 [sparkchess.com] 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.
Re:Adobe Air (Score:4, Informative)
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.
Re: (Score:2)
Pre-HTML5 it was. Steve Jobs killed it on his anti-adobe rant for the iPhone.
Re: (Score:3)
Adobe provides the AIR SDKs for fr
Schizophrenic (Score:4, Insightful)
Re: (Score:2)
Fear Not! (Score:2)
Origin of schizophrenia (Score:2)
Insensitive Clod (Score:3)
I'm writing stand alone Desktop programs.
haxe language (Score:3, Informative)
That's why we need more people using languages like this: http://haxe.org/ [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.
Re: (Score:2)
Wow, that's some ugly syntax for a modern programming language.
Re: (Score:2)
It's derived from Actionscript3, which itself is derived from JavaScript which is loosely derived from C. If you don't like squiggly bracket and full-featured type systems, then it's not for you.
Re: (Score:2)
yet another language doesn't solve anything, the issue is one in the realm of managemnet
Re: (Score:2)
That's why we need more people using languages like this: http://haxe.org/ [haxe.org]
It seems as if have seen a hundred new languages, all allegedly solving the problem of programming, and none of them succeeding. That's because the difficult problems are not at the level of syntax.
Nothing New (Score:5, Funny)
Re: (Score:3)
They're not locked in. They can leave at any time. They choose to stay.
Re: (Score:3)
omg ! (Score:2)
omg, the world is complicated, the sky is falling and we're all going to diiieee!
It's called "diversity", not "mess", and one of those days you'll be fucking glad that we have it, because otherwise, as me and some other researchers have proven ten years ago, in a monoculture one zero-day in the wrong hands means game over, Internet [lemuria.org] in something like a few hours.
Be glad we have this "mess". It's going to save our collective asses one day.
Server not fragmenting?? (Score:4, Insightful)
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?
Re: (Score:2)
I can answer one of your questions for you:
PHP? Please, please don't. There's simply no good reason to use it, especially when there are CMS's in other languages that work at least as well as Wordpress, Drupal, or Joomla.
The difference... (Score:2)
A server developer can be delusional and think their particular pet technologies are the only ones in the world and that *everyone* is on board. The target users will be non the wiser. About the only aspect that he calls out that is fairly fixed is the notion that *EVERYTHING* must be http based (which I hate, the http protocol was designed around certain usage scenarios and it is atrocious for a lot of uses but it gets shoehorned into them anyway).
Meanwhile, on the client side, if you do want to hit 100%
Cuts both ways (Score:2)
Almost every major framework now has MVC capability, JSON API capability, and package management to name a few.
But you can say the same thing about pretty much every well-used client framework. Most of them use some form of MVC now, or at least separate concerns... most all of them use JSON/HTTP to talk to servers now, most all of them have ways to extend with frameworks or modules or what have you.
I can't think of any server innovation that is not mirrored on the client side. That's why I can't see label
Re: (Score:2)
So spot on.
Server technology is not just fragmenting, it's fractal! At any aspect you peer at, you can see a thousand more technologies below...
How is this not ideal? (Score:4, Insightful)
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?
Re: (Score:2, Insightful)
Yeah, sure you want your mail server talk IMAP. SMTP on mail servers is so nineties!
Incoming mail access protocol (Score:3)
Recovering the cost of running a server (Score:2)
Re: (Score:2)
Ah, so it's a problem for the people with a specific business model that requires having precise control over both ends of the connection, making them fundamentally incompatible with openness and interoperability. Okay.
Myself, I'm not very sympathetic, as I actively want to see those business models fail and get abandoned. But now I have a better understanding of why someone might dislike the situation. Thanks!
Re: (Score:2)
If everyone did that (Score:2)
This guy doesn't get it. (Score:2)
Web APIs unimplemented in Safari (Score:2)
Re: (Score:2)
Don't repeat yourself (Score:2)
Re: (Score:2)
The real problem is "what is a platform?" If a platform is sufficiently different from the other platforms then it ought to have programs rewritten for it (because they'll be different and therefore not repeated); if it is not sufficiently different from other platforms than it doesn't need to exist (in fact, the platform developers themselves violated the DRY principle).
How different are platforms anyway? (Score:2)
If a platform is sufficiently different from the other platforms then it ought to have programs rewritten for it (because they'll be different and therefore not repeated)
How are you defining "different" in light of the principle of separation of data from its presentation [wikipedia.org]? Desktop, mobile, and web platforms are all equivalent to the same linear bounded automaton and in theory should work with the same data model. In this respect, no computer "is sufficiently different". True, the view should be rewritten to take advantage of each platform's strengths. But because splitting an application such that the model runs on a server and the view on the client precludes offline opera
What "marginal market share"? (Score:2)
I don't really see it as being that bad (Score:2)
For the most part there's only minor syntax differences in modern languages anyway. It's all arrays, hashs/dictionaries iterators and if statements with a bit of gui programming.
Heck, even the gui programming follows the same basic p
Change propagation; resource management (Score:3)
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 [wikipedia.org] 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 [wikipedia.org] and releasing their non-memory resources. Others use tracing garbage collection,
Re:Change propagation; resource management (Score:4, Insightful)
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.
Xamarin solves some of this (Score:4, Informative)
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.
PLEASE LOOK UP SCHIZOPHRENIA (Score:4, Funny)
Patents (Score:2)
Software patents are destroying software. I used to develop software. I'm glad I no longer do that because I don't want to deal with all the patent trolling going on. I watch friends who are still in the field, the news, etc and am so glad I'm not them. Time to kill the trolls. Patenting in general needs to be killed. It has gotten far out of hand.
Exactly two kinds of software (Score:2)
So, there are only two kinds of software, eh?
You've got your server software.
And you've got your client software. And your client software is a mess.
Wish I were in "IT" and could sum things up so succinctly.
Re: (Score:2)
yeah we're clearly doing it wrongly where I work, what with the database, middleware, infrastructure and proxy layers around the servers.
Swings and roundabouts (Score:2)
Schizophrenic, he keeps using this word... (Score:2)
one of these things is not like the others. (Score:2)
Client-side is a mess. Everything needs to be built (at least) three times, once for the web, Android, and iOS. In the browser you have to content with JavaScript, browser API’s,CSS, and rendering differences.
if your application looks the same on a webpage as it does on a smartphone then YOU ARE DOING IT WRONG. Hell, if your application is on a webpage then almost assuredly, YOU ARE DOING IT WRONG.
If you are writing a desktop, tablet, mobile or server-side application, you can use Qt to do it all.
- desktop: OS integration, sound, graphics (transparently software or hardware based), multi-touchscreen support (for tablets)
- mobile: Android/iPhone ports, multi-touchscreen support, direct display buffer access and
Microsoft is mostly to blame. (Score:2)
Open and mature client technologies have always been a threat to MS's core business.
For GUI stuff: Lazarus (Score:4, Informative)
http://lazarus.freepascal.org/... [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.
C and C++ work everywhere (Score:3)
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...
Re:What was the state of server side progamming? (Score:5, Insightful)
The common server side platform is x86 VPS (Score:2)
Re: (Score:2)
His point was that any number of language+library stacks give such similar abstractions for everything from HTTP to database persistence, it doesn't even matter which one you pick.
Re: (Score:2, Insightful)
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 s
Re: (Score:2)
I say scrap it and start over from scratch!
I agree. Unfortunately starting over from scratch usually ends up being this [xkcd.com].
Unsupported web APIs (Score:2)
When a platform allows only one language (Score:3)
XNA, iOS, and the web (Score:3)
Re: (Score:2)
someone developing for the web platform can use any language he likes as long as it's JavaScript.
Someone developing for the web platform can use any language he likes as long as it compile to JavaScript. Much of the JS actually running in browsers was generated from one sort of framework or another.
Re: (Score:2)
Offline mode (Score:2)
Re:Like slashdot? (Score:4, Informative)
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:
Re: (Score:2)
Does the goofy interface really do that page refresh thing? I suppose the only people who are using it are those who weren't here when it was introduced.
Re: (Score:2)
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.)
This guy [slashdot.org] seems to be complaining about that too.