Ask Slashdot: What Would Happen If All Software Ran On All Platforms?
Slashdot reader dryriver writes:
We live in a computing world where the OS you use -- Windows, OS X, Linux, Android, iOS, others -- often determines what software can and cannot be run on a given electronic device. (Let us pretend for a moment that emulators and other options don't exist). What if -- magically -- such a thing as as Universally Compatible Software Application were possible. Software, in other words, that is magically capable of running on any electronic device equipped with enough CPU, GPU and memory capacity to run the software in a usable way.
Example: 3D CAD software that runs on Windows 14, Playstation 7, an Android Smartphone, Nintendo's latest handheld gaming device and an Ubuntu PC in exactly the same way with no compatibility problems whatsoever occurring. What would and would not change in such a computing world?
He also asks an even more important question: will this ever be possible or feasible from a technical standpoint? So leave your best answers in the comments. Will it ever be possible to run all software on all platforms -- and what would happen if we could?
Example: 3D CAD software that runs on Windows 14, Playstation 7, an Android Smartphone, Nintendo's latest handheld gaming device and an Ubuntu PC in exactly the same way with no compatibility problems whatsoever occurring. What would and would not change in such a computing world?
He also asks an even more important question: will this ever be possible or feasible from a technical standpoint? So leave your best answers in the comments. Will it ever be possible to run all software on all platforms -- and what would happen if we could?
We've already got that. It's called Java.
This is your sig. There are thousands more, but this one is yours.
with all the virtualization stuff, remote desktop and more... well, I think it isn't a problem
We are getting there...
Of course it's technically feasible. It's called universally agreed upon standards and conventions.
CLI paste? paste.pr0.tips!
It's already possible. People have booted up Windows 95 on their Apple Watch. It's just not enormously practical. For one things, apps tend to work better together when they agree on things... things to do with the OS. Secondly, input devices. You can run Windows on your apple watch, but there is no mouse. Thirdly, performance.. the more different the platform the more emulation has to be done. Fourthly, intellectual property. Simulating the OS is a lot of work (Wine), and running it in an emulator hurts performance and gives a disjointed experience.
But... it can be done.
nt.
Are we emulating the hardware to match the differences in architecture (arm vs x86) or is it some goofy extraction layer (with apologies to WINE)?
If it's the latter, than it would be a lot like the internet back in 2005 with IE6 breaking web standards against other browsers and having to test it against multiple browsers to see what works.
Oh you said magic so I should disregard the nit picky things. Since we're assuming utopian technological advancements, then we'd probably only see two main platforms (laptop and mobile) since everything would be software agnostic.
We are kind of sort of heading that way now with JavaScript. Ask anyone who has experienced the horrors of node.js and writting your own threading by using callbacks instead of the OS APIs?
Before that there was Java. How great would it be if Java won and we all were stuck using it?
Talk about a loss of freedom.
It gets worse ....
Guess which OS you would use at work? Windows. Which OS would grandma still use? Windows. Why?
Active Directory, exchange, office 365, and other manageability means corporations would still use it for control and auditing compliance. Nothing comes close. Want to process credit cards? PCI lockdown has 20 Group policy objects to implement dictated by insurance. Grandma would still use Windows because it's idiot proof. Though some are using iPhones and iPads now but Facebook and email are the only needs she cares about. Not software
http://saveie6.com/
Even within the same operating system it is hard to keep software compatible between releases. In theory it's doable only if hardware development were to freeze all across the board. Then eventually over a long period of time the goal might be achieved (for some definition of "achieved").
The real world has too many moving targets, too many shifting sands.
If software was universally compatible and behaved the same way on all devices, it would be a security nightmare as it would have to implement all the security holes and other bugs of every platform to do so. So say Windows has a zero-day exploit in URL handling and Linux one for file handling. This universal code would have to reimplement the Windows bug in Linux and the Linux bug on Windows, or the two versions of the program would behave differently. If that isn't what you're talking about then you're talking about Java.
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
For highly cpu and memory intensive applications I don't see how this would work. The vast majority of software runs at only a few percent of what a CPU is capable of mostly waits on IO. However for HPC applications the memory and processing usage are often tuned down to the cache line level and that pretty much requires low level access to the system.
Even more extreme are things like BLAS which is tuned to different cpu archs. Running an optimized BLAS vs unoptimized BLAS is usually 10x the performance or more and having a simulation go from a month to 10 months would not be acceptable.
Computer modeling for biotech drug manufacturing is HARD!
Having all applications run on all platforms is a dream since the beginning of times, SW wise :-)
Some people mention Java and that it is already happening, but I'd say that it isn't.
Even applications on the same platform, say Windows, can't always run on all variations of Windows, and the same goes with Linux unless you are able to do some or a lot of tweaking.
However, IF it could be made, then we would have a level playing field and the platform producers would have to improve their own platform to make it viable for users and customers.
Just like in the car industry, where roads, parking refueling locations and other infrastructure is the platform and the cars are the applications.
But it won't happen, and just like biological mutations, even if at one point it could be made, things will evolve and people will want different solutions to different situations, so it will mutate away from each other.
Like a mainframe won't easily run a mobile phone application or vice versa.
Nice dream but N/A
Fast and universal: Java and many others
Universal and rich: a browser or a VM
Fast and rich: here is where most live
I doubt that you can have all three
And the situation is back to the current state.
One question is if this really is desireable...
A lot of software require specific hardware to run in any usable way (3D, high end gaming), so what would be the benefit of running it on underpowered hardware?
What if we required that all computers be Turing complete?
There is not much freedom on mobile phones yet. What about a GNU/Linux phone that can run Android in a VM?
Might we see a Windows phone that can run desktop software first, including an Android emulator? (perhaps too CPU hungry to use it for long)
We don't have to imagine, once upon a time software came in a form that you could cross-compile for a variety of platforms CPUs etc. At least until it became a WinTEL virtual monopoly.
The same thing that happened during the mainframe days, when we could use all sorts of terminals and terminal emulators we wanted.
We would bitch about the speed.
I would have woke up, thinking it'll be the best idea ever. Only to find out, it's called a web app.
Of course it's technically feasible. It's called universally agreed upon standards and conventions.
And webapps are slowly exactly becoming this.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
The problem with something like this always comes down to the fact that applications have to be coded to the lowest-common denominator of functionality of all platforms. That's the situation both Java and Web apps tend to find themselves in.
Does your OS have some cool notifications subsystem that other platforms don't have? The universal app can't use it (or if it does only for those platforms that support it, it's hardly running identically on every platform anymore). Or how about if your hardware has something fancy like Apple's new Touch Bar? Can't use that either.
This is the problem we always see with desktop Java applications. They can typically do well with the basics, but if you want to tie-in to some stand-out feature that isn't available on every platform, you're generally SOL (unless you want to rely on JNI, and perhaps filling in missing functionality on other platforms with custom native libraries I suppose -- but again, that's not exactly cross-platform code, and requires a ton more work.). With web apps we see a similar issue; you're constrained by what the various standards allow, and can only escape that with plug-ins.
We also see this in the video game console world. Sony did some really cool things with the PlayStation 4, like adding the touchpad to the controller, the programmable-colour LED array on the back of each controller, and the second screen functionality that allows you to use a tablet or phone as a wireless secondary information display. Unfortunately, most cross-platform games tend to ignore these features (to varying degrees), as they're simply not available on the PC or Xbox One.
In the world you describe, there really wouldn't be any ability for anyone to stand above the crowd with new special OS or even hardware features (beyond maybe some low-level performance tweaks), because as soon as you did so, you would be incompatible, and either nobody would use it, or you'd have to permit all of your competitors to also implement your new feature.
This reminds me somewhat of the following example: OS/2 ran Windows 3.x programs better than Windows 3.x did. It could pre-emptively multitask Windows 3.1 applications at a time when Windows itself couldn't, and a single errant Windows application could bring down the whole system, or fail to yield() and simply take up all the processing time for itself. Because of this, too many big development companies simply targeted the lowest-common denominator and wrote Windows 3.1 code for use on OS/2 (WordPerfect is a great example -- they went out of their way to tout OS/2 compatibility, but in reality their OS/2 version was the Windows 3.1 version with some OS/2 templates and WPS integration tools slapped on top of it). And we all know what happened to OS/2 (or I suppose I presume we all know -- I guess you could be 16 or 17 years old and not know what happened back then. When did I start getting so damned old???)
Yaz
Where ALL software runs on ALL platforms.
Developed in the 17th century by Aloha LikeLike, a Hawaiian Chief Information Officer. It was later stolen by Captain James Cook on his first voyage, so they ate him on his return.
OK, I added that bit about Cook. This and other random crap fantasies, like Java. JMHO.
It's called the web.
Ok, that was the words. What it would mean to have the exact same software in all platforms is that someone could build a truly universal syncronizing platform.
This means that you could seamlessly move not just your files, but also the running sessions of your applications using a single protocol, instead of depending on individual per-app hacks or remote terminals. You could copy the content to your device, edit it with local apps and return it to the server. Just like git version control, but for all kind of content and work sessions, not just code.
Singularity: a belief in the "God" idea with the "demiurge" relation inverted.
Why? Because it would need to be able to run on all possible future hardware, regardless of whether that hardware is aware of needing to be backward compatible with anything. The code would need to somehow be able to look at its hardware environment and modify itself to be able to communicate and fulfill its purpose within that environment, even if that environment is some kind of mushroom from an exoplanet three galaxies away. NP-completeness would be this thing's first trick, and it's arguably a form of mind control.
I mean, that's obviously stupid, and I'm obviously drunk, but be careful with the word "universal."
If software could run just as well on any OS, even though it's vastly different, it would mean that the magic is serious enough to negate any kernel and driver differences, which in turn would mean that algorithms and bugs don't matter, which will lead to the total collapse of the software industry as we know it. It will be replaced by something magical, with no need for software developers or researchers. In fact, the entire world will probably change as a result of such magical discovery, and send the entire technological industry into upheaval.
3D CAD software that runs on Windows 14, Playstation 7, an Android Smartphone, Nintendo's latest handheld gaming device and an Ubuntu PC in exactly the same way with no compatibility problems whatsoever occurring. What would and would not change in such a computing world?
Confusing operating systems and devices is a problem here. The devices (desktop computer, Playstation 7, an Android Smartphone, Nintendo's latest handheld gaming device) should all be capable of running the GNU operating system, which you may know by another name (Linux, OSX, Ubuntu, but *not* Android, and probably not iOS).
We already have a standardised set of software that runs on pretty much every platform, and it gives us the wonderful plasticity and variety in our technological world today. The problem is not that it doesn't exist; it's that people (and corporations) are apt to make their own solutions and encourage the use of software that doesn't work everywhere.
Ask me about repetitive DNA
Sun Microsystems? It's you? AGAIN?
Lisias@Earth.SolarSystem.OrionArm.MilkyWay.Local.Virgo.Universe.org
I've been doing web stuff for a decade, pretty much since the whole Web 2.0 thing was a fad. It pays the bills, but I always ask myself: why are we doing this to ourselves? HTML was originally a document format, not an application framework, and dear god does it show. From the kludges that we tacked on to maintain state to the horrifically bad data serialization/transfer methods. All of this stuff was solved decades ago with simple network aware applications. Yet here we are in a world where PHP, of all things, is one of the best programming languages for networked applications for the simple fact that its built-in comparison operators map so well to the (equally crappy) HTTP variables.
I don't know how to get out of this trap, but dear lord I wish somebody would figure it out.
It is more software that runs on no platform, because the JRE is always fucked up :P
... I have a pretty clean idea of what will happen in MY workplace. Different users will ask to have back their old software that were forced to dismiss for compatibility reasons. Why? Because changing a software every DECADE is seen as a trauma, users are so used to a specific piece of software (and version) that every change is seen as a setback. Management will reject every proposal from the IT guy (it's a small firm) because old software "is good enough", newer software "cost money" and ever free alternative software is seen as "unnecessary and more troubles than benefits".
Cross compile all you want, Autocad won't run well on my mobile, I guarantee it.
If you look at new versions of Windows/OS X/Linux, you get new APIs like UWP, DirectX 12, Xcode, Metal, systemd, Vulkan and so on. The only way "everything could run on everything" would be if every OS-level API was available on every platform. And that closed source software is compiled for every instruction set, but I'll assume they'd do that. In theory it's not hard, it's just making a free cross-platform standard like POSIX or Java or Vulkan. That however ignores the practical reality that these companies are competing. They don't want to comply with a standard if they can make more money if they don't by adding more features or being more flexible to change or simply to not be compatible.
That the standard is there also doesn't mean the resources to implement it will be there. For example, for a long time Mesa's OpenGL implementation was ~5 years behind the latest official version. Now it has caught up but it didn't happen by itself, only through big resources from Intel and to a lesser degree AMD. The WINE project can read the programming API for DirectX, doesn't mean a compliant implementation will appear from nowhere. And sometimes there's plain old disagreement like when Google forked the Linux kernel to do wakelocks or the systemd vs non-systemd debacle. So in practice it's pretty hard.
That said, to shine some light in an otherwise glum post it usually converges slowly once the API is sufficiently settled. For example take USB device classes, it standardized many common hardware devices to the OS. If you don't have lots of vendor-specific parameters to set the user API can be standard too. This is a keyboard, this is a mouse, this is a memory stick etc. and you don't need a specific driver for every piece of hardware. You have libraries like Qt too, write towards it and it should run on Windows/Mac/Linux. Containers and such might also make it easier, heck doing a web application is a common way to make it run everywhere... it's happening in many ways but it'll still take decades.
Live today, because you never know what tomorrow brings
I doubt it will ever be possible because ISVs are not interested in that, in fact they actively oppose that. Every modern proprietary OS tries to become a walled garden for its own apps - even Microsoft has felt victim to that with their Store.
Still it's quite possible nowadays if you are ready to sacrifice your CPU/Storage resources: in Windows/Linux/MacOS you can run pretty much every modern OS (except Mac OS X which requires certain hacks) by using a VM.
Why don't software vendors create software which can run on all OSes? That's because different OSes have very different APIs, different users, different use cases, and while ostensibly you can port your application to Qt/C++, there's still a problem with your target audience: users of another OS might not need your software so your money will be spent in vain. Also, while Qt is ostensibly multiplatform, you will still have to maintain and verify compatibility with every target OS, because they all work differently - which is very costly and time consuming.
to connect to mainframe.
Done.
Think back to the chips in later Apple hardware that let older Apple software run.
Other efforts like:
BASICCODE https://en.wikipedia.org/wiki/...
"A BASICODE program stored on cassette could be loaded and run on any computer supporting the language."
Domestic spying is now "Benign Information Gathering"
They want a closed garden that they control. Openness is for hippies, shareholders desire exclusivity and profitability. Microsoft had to have its face shoved into a brick wall to convince them to be as open as they are now.
The user interfaces for different platforms have to be different. Otherwise you end up with Skype 7.x, where we have a UI on the desktop which has been designed for a smartphone.
Low pointing accuracy on smartphones means large targets and huge icons. Short conversations on smartphones means lots of space wasted on speech bubbles. Likely content on smartphones means emojis pop up when you're sharing code snippets, making them unreadable. Restricted input methods on smartphones means ignoring platform conventions like Ctrl+B for bold text.
Conversely, try getting 3DS Max 2017 UI onto a smart watch. Regardless of compatibility, it's simply impossibe.
Sean Ellis
Follow OfQuack's antics on Twitter.
That WAS the case around 1998! Nokia phones had a Java virtual machine. Linux had one. Windows and Mac had one. It was universal. Granted, it was still limited (you couldn't run the same apps on phones and desktops), but that was more of a technological problem than anything else (phones were puny compared to desktops, whereas the gap today is much narrower).
It was nearly 20 years ago... Desktop apps in Java barely exist today.
Maybe Webassembly will succeed?
There are well designed pieces of software that can run on any device. Linux (the kernel) can handle basically anything. Any software written in and interpreted language or a virtual machine (Python, Java, JavaScript) runs on anything where the interpreter/vm can. Even well engineered C can run in almost anything, given the right compiler.
Yet, there is great incentive on having "exclusive" software. And there is also badly written software. So, all software will NEVER run on all platforms.
"Even Microsoft"? I don't hate Microsoft or abhor their products, but they were the ones who made wall gardens the status quo. I am glad they decided to open up a bit more the last decade.
The problem with the question is that there is not just 1 type of platform. There are innumerable platform definitions, whether it be a 2D or 3D gaming platform, a windowing environment, a massively parallel cluster computing platform, etc. At some point, someone decides to extend the platform definition to account for a new capability. Reaching consensus either takes time or results in forks.
"I have been around the world and found that only stupid people are breeding" -- Harvey Danger
Different operating systems were designed for different purposes and different hardware. Universal Application is not only unnecessary, it's unwanted.
All we have to do is get rid of Greed and fix the USPTO system.
Or you could stop trying to go back in time and pretend that virtualization and emulators somehow don't exist anymore, since their existence tends to be the entire point of this question. With the hardware race to keep Moore's law alive as long as possible, we've had "enough" GPU, CPU, and memory in hardware for quite a long time. We've had to artificially sustain hardware sales with premature obsolesce, forced by vendors who "no longer support" a given platform that is often still viable to run the latest software offerings. Again, Greed steps in.
MS would at least loose a large chunk of market share, because many people use their OSes simply because the tools they need for professional work do not work on other systems.
then yes. Until then (Star Trek), no. We have seen UWP. I have, anyway. That is proof enough that not only won't it happen, it better not happen.
If we had 3D CAD software that ran exactly the same on every device, I'd get a subdermal chip and run everything on that.
Afteral, why would you need a screen, speakers, input or output if it runs exactly the same on computers that do have those?
Software will not run exactly the same on every device, because the capabilities of the devices differ.
If they didn't, we wouldn't have different devices in the first place.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
We'd have all the Windows crapware running on Mac and Linux :-(
Slashdot, fix the reply notifications... You won't get away with it...
It's happening, and it's called WebAssembly.
Why are these important questions?
No!
This thread is ignoring the entire "industrial controls" family of hardware and software. Some things are different because they need to be. Example -I would never consider using windows in an application that has safety implications. In fact it's shrink wrap license specifically disallows this use. Some examples of a safety application can be found here
Rockwell automation
Emerson Process
AE Solutions
Sometimes the right tool needs to be used.
The W3C and others have done a great job of providing solutions like WebCL, WebAL, WebGL, Canvas, WebAssembly, etc...
We have a platform which is able to be used to make universal applications so long as the browsers support it. Web browsers are pretty close to being universal as well now that most browsers use the same core engines and only Apple seems to be dragging their feet.
Many projects are getting better at offering development tools which suck less for HTML5 applications.
Once we get a tool like Qt for web apps, it will become normal to program for web first.
HTML, CSS and JavaScript are fantastic but they don't lend well to application development. More technology is introduced all the time to move away from coding directly for these systems and instead can compile from more structured systems. A good early attempt for example is PowerBasic which makes writing real applications that run everywhere easy. Sadly, the user experience is quite bad. But it's a great start.
Linux wouldn't be any more popular than it is totay.
Applications is not what's stopping people from adopting one platform over another. It's the ease of use. And Linux is made by and for, elitists that cling to the terminal for dear life.
Sorry, it may sound a bit harsh, but this *is* a stupid idea. Different platforms have different abilities and are built and designed for different purposes.
To accomplish a "works everywhere" approach, every platform would have to have all abilities. To use the phone app on your desktop PC, it would need the proper hardware. How much sense would that make? Or a GPS in the same desktop system? Likewise, how do you put a quad-output video card into a mobile phone?
This is a pipe dream of people who only work with software, and totally forget that it needs hardware to run on.
What platform do you use to write the platform that can run all software?
Will it be able to run on itself?
Will it be able to run on the version of itself that checks to see if an arbitrary program will run to completion -- the unsolvable halting problem -- before running it?
Will it be able to run on the version of itself that only runs programs that won't compile?
And so it goes ...
You do realize that as we all log in via our web browsers that we are already experiencing this gentlemans dream.
I'm on linux, some of you are on mobile phones or tablets, and some of you are on OSX while others windows.
We are collectively using different devices and the websites looks and reacts the same for all of us.
If you look at for instance google docs so that you are thinking more along the lines of an application, you can more clearly see that what this gentleman wants IS RIGHT HERE, YOUR USING IT RIGHT NOW.
I do not know how people possibly be blind to the fact that we already have a cross platform medium, your using it right now!.
I think this boils down to humans will just not do this. We like our differences. People pick Microsoft, Linux, or Apple for specific reasons. And they each innovate in their own way. I think that's good. Standards are good but they limit what you can do because you have to agree to the standard. One possible way around it is AI. A framework that, once installed, sees what kind of computer it's on and specializes the application code to the OS and hardware. But testing would probably cost way to much.
Java was going to be that magic universal development language. We are already living that dream.
We will be no longer forced to update software because of a platform or hardware upgrade. In the past users replaced applications for others because it won't run on a newer machine or update operating system. This is good for the user because it will save money, but bad for the software industry.
I will be still running AfterDark Screen saver on my PC.
If you were to make software run on all platforms. You limit yourself to the weakest factor in that platform. It's why universal apps is a bad ideal because making them run in mobile vs a core i7 desktop is a huge difference. That's just one platform but a huge swing in hardware capabilities. Software or apps need to be developed for the hardware and devices and not as a uniform system designed for so many hardware variables. That way you can take advantage of the hardware to its fullest without going beyond its capabilities.
If it didn't matter what hardware you ran apps on, then iPhones would take over the world, as technical superiority would go away and the only decision factor for hardware would be a design decision, which Apple and iPhone clearly own.
Since all software worked everywhere, there would be no advantage at all to open source or free software, all software would become close source almost instantly
So, the result would be to enrich Apple.at the expense of Microsoft and Google.
No, the hardware manufacturers and the software companies ( MS, Oracle, Adobe, IBM ) are n each others pockets/pants...
All the way up to the elbow.
Actually, it's not. I can plug my phone into an external display add a keyboard and input device and have a portable CAD workstation. Alternately, I could carry both a phone and a laptop. Phones are very fast and very capable in terms of computing power. Fast CPU with a good GPU. If you look inside a modern lapropos the PCB space is approaching that of a phone. Imagine an office without dedicated computers but instead phone docks. For many workers this would be fine.
There are already some great answers here - but I think the question is not exactly right.
There's a difference between a hardware platform and the OS that rests upon it.
Imagine a free, universally available, top notch OS that works on all hardware platforms. Okay - not all platforms. There's a (ever-reducing) point where an OS is more than is necessary - such as the code required to drive an electric toothbrush. However, as we continue to develop hardware implementations, it is becoming increasingly cheaper just to use the same codebase for everything - so yes, at some point even a toothbrush could be available as a hardware platform.
Once you have a good OS that runs on all hardware platforms - the requisite toolchain is available to run all software on all platforms.
Well... or fail gracefully (playing Doom on my toothbrush may be different unless it has a built-in screen and more than one button!)
A universal non-proprietary OS won't be (and cannot be) owned or commercially sold.
It's probably going to be Linux; Linux is about as close as you can get right now, and it conforms to Linux's own motives.
Timeline? I reckon that Linux needs another twenty years before Apple, Microsoft and other outliers throw in the towel.
This comment was written with the intention to opt out of advertising.
Almost no one would make fun of this lame what-if post. Oh Crap!
What would happen if ALL slashdot readers were replaced by way too serious people? ...stupid char length limits.
Well, for one thing we'd be able to fight off any alien invasion by uploading a virus to their ship!
Just one Word:
Perl
What are the mistakes of "classic" BASIC and what makes "classic" BASIC "classic"? Are there specific features that make "classic" BASIC "classic" or is it just that it happens to be the first implementation of BASIC? How have other programming languages of the era and since avoided these mistakes?
Guys,
There is a Linux version that can run on a set of CPUs & GPU concurrently, can migrate thread among them seamlessly, and not needing VM. The concept is the reverse of gm, instead of a CPU ford looks like many, it abstract many CPU cores to look like one. Please google Popcorn Linux if interested.
Cheers ......
I wish they could get one piece of software to work 100% reliably on one 100% reliable operating system. Even that seems too much of a challenge.
Popcorn Linux.
http://www.popcornlinux.org
The question is not how to do it. It is "what would happen". So, Java is not the correct answer (though, yes, given enough h/w resources, one might use Java to achieve that -- yes, even games -- that's what "enough h/w" enables).
This post would require a much deeper analysis, but from the use of Libreoffice in different OSes, I suppose life would be freer.
Mind you, there are other things to be dealt with, not just applications, e.g.:
- lines in text files on Windows end with two characters (CR, LF) whereas on Linux with just one (LF);
- fonts can make your life miserable, but you can install the same font on different OSes;
- user interfaces need adapting: desktops cannot usually zoom with two fingers, letters may be unreadable at 4K on a 5-inch screen, a big keyboard may be required for fat fingers, a big screen if you don't want to hold the tablet in close to the face etc. -- but gestures and shortcuts could nonetheless be standard across platforms;
- then there's the question of supported file systems and the mapping of file attributes onto them (e.g. Windows and Linux use different kinds of permissions, it's not just about NTFS or EXT4)... I think something like UDF might evolve to be an answer to that need (right now, there are problems).
Well, that would be a start.
This is already happening with docker. Docker has made the whole java container business obsolete in less than a year. Now it is eating the OS market with containerization of the OS level, like Rancher OS.
See subject: I've been waiting for this in 2018 https://community.embarcadero.com/article/news/16418-product-roadmap-august-2016/ for this to be on all major OS platforms https://tech.slashdot.org/comments.pl?sid=10324921&cid=53984051/
Not webpage based (w/ all of its security flaws in SQLInjection, CSS & IFrame override/exploit, & javascript slowness & security abuses...)
Not interpreted slower runtime driven code (as in the case of .NET or Java) ...But rather TRUE 'stand-alone' non-interpreted single .exe code as it already exists on Win32/Win64 currently.
APK
P.S.=> I've already gotten the *NIX vs. Win32/64 stuff worked out (drive letters vs. mounted devices &/or WinSock2 vs. *NIX sockets differences) so it's just a matter of waiting for Borland to finish it up in 2018 & then? "Savoir Faire is EVERYWHERE..." baby (for the most part on ALL the majors & in 64-bit form, not just 32/64 on Windows, 32 bit on MacOS X/iOS & Android already)... apk
Whatever magic you come up with, a program is not magically going to have the best possible interface for all of: Gamepad input, Joystick input, Keyboard input, mouse input, VR-based input, brainwave-reading inputs, 3" screens, cinema screens, projectors, monochrome LCD displays, ...
So unless you are hereby volunteering to customize all programs in the world for all possible input and output methods (not to mention all the algorithm choices so it runs optimally both on e.g. a low-end CPU with lots of RAM, a high-end CPU with much less RAM and a GPU etc.), trying to make a "universal" program will give you either universal shit or something that works well on 1 or 2 devices and on everything else leave the users run screaming for an alternative that actually was optimized for their device.
Didn't UCSD call this p-code 30 years ago?
No he asked for a way to do all software executable on all platforms. And that's Java.
And he also asked what happens when all software use it. Well a lot of software do. However a lot of them is then compiled to native code that doesn't follow the "compile once run everywhere" design goal. But looking at Java software that exists and is runnable on any platform that supports Java we do have businesses that run some of their software on a Java only platform.
What we see on Java only platforms is that the operating system becomes a replaceable components. And so does hardware to a greater degree as native applications often has limited hardware support. I can't install FreeBSD on a Raspberry Pi and expect all FreeBSD software to work. But i can install Java and expect Java applications to work. Do if Raspberry Pi has power enough to run my applications i can just use it. And I can test with different operating systems and see what is best for my application.
So what we can already see is that Java applications gravitate away from windows into Unix-likes. People run it on Linux, FreeBSD, Solaris, various IBM mainframe operating systems. And even on Java processors. Then on top of that people use x86, AMD64, Sparc, power, ARM and a number of other otherwise incompatible processor types. What people use depends on what's best for their applications.
So yes if this was extended to other applications such as games and Photoshop we would see a rapid decline in Windows usage and a rise in practically everything else.
But the hardware market would be more profoundly changed. We would see ARM, SPARC and POWER desktop computers and workstations. That would put serious pressure on Intel and AMD especially when it comes to the expensive high end Xeon and Opteron products. We would see more competition and a rapid decline in processor pricing. Just like we have seen on other markets that already lack vendor lock in.
On the enterprise server market we haven't really seen much price decline but that's because the target audience isn't very price sensitive. But we have seen a more rapid growth in performance per processor and as such a decline in the price/performance ratio.
Death of mac os being only on apple hardware as they will need to do something to market there os as being the best Linux based os for home / small business users.
Smartphone and Consoles really don't have the ram / cpu to do really pro cad / Photoshop work and phones would need like an usb keyboard + mouse + big screens to pull it off as well. Also any system with a locked in app store may have a hard time getting pro priced software in them unless they cut there cut of the cost down to like 10-15% and remove some of the sand boxing.
Windows may hang on just for all of the enterprise stuff and for home users to that Linux to geek for them to work with.
There's a lot of software that just doesn't make sense to port to other systems than the ones it is currently running on.
An abstract example, we have the software package FOO, which is created to run on a server system with 1 terabyte of RAM and 1000 cores. It probably doesn't even make sense to run it on a mobile phone.
You come across this a lot when you write portable software, where somebody spends years making something that is so generic that it can run on "everything", but it still doesn't in the end, because you have memory constraints, processor constraints, disk I/O constraints and so on.
Creating software that runs everywhere is usually a huge waste of time. I try to write code and software which is portable, but you just have to be portable enough. Even that can be hard sometimes...
Of course its possible. Several options exist. It involves using a cross platform library that provides the same API on all OSs and hides the OS level variances. To make this really work well of course a complete and powerful API is needed to account for the unpredictable needs of a wide variety of programs. Preferably, APIs for audio, graphics, 3D, video, access to audio and video input output devices, and so on is needed. One such library that has done this is Qt. As far as languages, C/C++ were designed to be cross platform but I do not recommend these in applications due to how difficult it is to write software without security problems with them. I am quite fond of Python and Qt used together.
There is also Java which is another good option.
It would save time in the long run for an application developer, if they found that a cross platform library needs a new feature for their app, to add this to a cross platform library, rather than code OS specific code directly into their application. This avoids having to port applications to a changing list of target platforms, and it tends to easier to add a compatability layer once to a library and then call that hundreds of thousands of times from app code, than it would be to change possibly hundreds or thousands of lines of app code. If you have a function that accesses OS level feature, and is called a thousands of times from applications, and you need to port that app to a new OS, its easier to make a single change by adding a new compatability binding for the function for a new target OS, rather than change the many thousands of invocations of the function.
.... It would all taste overly similar, offer less variety, be overall worse for people that are used to customizing specifically to their own body system.
Is this a good metaphor? I don't know. But I think the point is the question is a bit simplistic.
... In terms of nutritional value and caloric value.
It would all taste overly similar, offer less variety, be overall worse for people that are used to customizing specifically to their own body system. Is this a good metaphor? I don't know. But I think the point is the question is a bit simplistic.
What would also be interesting is similarity of user interface and functions between software, especially for 3D CAD software. The goal being easier transference of skills between platforms. This type of software tends to be complicated with a steep learning curve, making it difficult for people skilled in software A to be considered for work being done with software B.
Employer: "You're perfect for the job, your skills, experience and knowledge are *just* what we're looking for! One final question: What type of pencil do you use?"
You: "Staedler."
Employer: "Whoops, sorry, we only hire people who use Koh-I-Noors. Goodbye."
a GNU/Linux phone that can run Android in a VM
Android is Linux.
Whose userspace is largely incompatible with that of common GNU/Linux distributions.
Standards
You can run Windows on your apple watch, but there is no mouse.
There's no mouse on my laptop either, but there is a trackpad. In a pinch, can't the whole face of a smartwatch be treated as a trackpad, with slide moving the cursor and tap producing a click? Or does the fact that the finger covers up the display make this impractical?
with all the virtualization stuff, remote desktop and more... well, I think it isn't a problem
Remote Desktop works only while you are connected to the Internet. This might be good for someone who is always in range of Wi-Fi while not driving, but not somebody who rides transit. A city bus moving at 45 km/h (28 mph) doesn't stay in range of a particular hotspot long enough to associate, get an IP address, and have the client reestablish a secure connection. If you're already paying a fiber, cable, or DSL ISP every month for a connection at home, paying a similar amount to a second cellular ISP for a connection in a vehicle might not be in your budget.
There's more ways than Java.
No sig today...
Not gunna happen while we have Microsoft
Webapps are slowly becoming something alright.
Just like git version control, but for all kind of content and work sessions, not just code.
As far as I can tell based on your description, that would require "all kind of content and work sessions" to be in a form that can be easily diffed. And if the user works on two offline computers before they have a chance to get back to the Internet and commit changes to the user's session, the application will have to provide some sort of interface to resolve merge conflicts. I shudder to think of what that might look like.
If the hardware is Turing-complete
Then it cannot physically exist because a Turing machine has an unbounded tape, while the observable universe is bounded.
I don't hate Microsoft or abhor their products, but they were the ones who made wall gardens the status quo.
I am aware that the Xbox 360 walled garden and the Xbox Creators Club developer program preceded the similar App Store and iOS Developer Program in iOS 2 (then called iPhone OS 2). But games for the click wheel iPod also preceded iOS 2, and the developer program for those was even more closed than the iOS Developer Program. Furthermore, the Checking Integrated Circuit in the Nintendo Entertainment System and code signing in the Atari 7800 preceded even that.
It's possible, my pet project for the past ~decade has been a system that works on everything: computers, phones, arduinos, etc - the biggest constraints are the hardware limits of each platform while making things generic enough to plug and play in a way that lets you just add a device to the system and have it scale automatically (a PC - windows, linux or mac - is super easy to code for but something like an Arduino which even with a custom threading engine can manage ~2-5 threads in pseudo-real-time all of which must be incredibly slim mean the linker has to intelligently break off only the critical components of an application and even then doing things like drawing to an LCD have to happen in a VERY efficient manner compared to a PC to avoid serious amounts of flicker.)
... if the only real advantage they had was that certain apps ran only on that platform (aside: looking towards Redmond...)
For one thing, the differences among the four major browsers (Chrome, Firefox, Edge, and Safari) are smaller than the differences among the five major desktop and smartphone operating systems (Windows, macOS, X11/Linux, iOS, and Android). For another, web apps have only one "app store": a domain and TLS-capable web hosting. You don't need to pay for a subscription to multiple platforms' developer programs, and you don't need to wait for multiple platforms' censors to release your application.
Diversity decreases the threat profile, you don't want every device having an identical attack surface. Think of humanity; a virus which is potentially lethal to one person may not even give another person a cold, even in the absence of immunity due to previous exposure -- this is thanks to genetic diversity. If every human was genetically identical then we could easily be wiped out by a single well-evolved virus (maybe not too well-evolved if it exterminates the host..).
All of the systems that profess to make something "run on all platforms", all the way back to the original high-level languages like Fortran and Algol, are really trying to go the other way - patch over the underlying hardware to make everything look like a uniform platform. Java doesn't run on all platforms, any more than Pascal did; rather, it runs on all interpreters, with a different one for each system that makes a uniform platform. One could say the same of operating systems too; the "driver" is the shim and flexible glue between the uneven hardware reality and the nice level abstract OS platform.
Even beyond the legal bullshit, programmers can usually become experts in several languages, but it's a hard to become well versed in more than one GUI because there is no reason for anyone to make their GUI have less lock-in. To them, more lock-in is better.
https://www.youtube.com/c/BrendaEM
We've already got that. It's called Java.
Except that Java is incredibly slow and cannot adapt to local devices well. A far better example is a VM image. These now run at close to native speeds and you can customize te GUI as you see fit. We already have cloud computing that uses VMs to allow anyone to run anything on shared resources. I expect that this will grow and spread. Whether it will get as far as the article suggests I have no idea but I expect it will go a lot further than it has already.
Do you REALLY want to run a CAD software on a nintendo-like screen, no mouse, no keyboard? Some hardware/software combinations simply does not make sense. Just think about all the fuss about mobile websites, and that was just for screen resolutions (no, NOT for bandwidths)... Most of the times, user interfaces are projected for a particular kind of device and does NOT bode well on a different one. P.S.: No, java is NOT the answer to portability...
It's called GCC
Captain Obvious strikes again?
The OS then would be the specific featureset. Stuff like this happens already. In professional web development it's almost academic which OS you use on your desktop for development. Apart from some neat platform specific tools like Kaleidoscope, CodeKit, etc. that might tender to specific preferences of certain developers it's just about of nil significance which OS you use.
macOS has a neat for-money FTP client called Transmit, Linux usually has it integrated into the Filemanager.
But Atom, Geany, NetBeans, PhpStorm and so forth including local AMP or other devstacks Stacks run just about the same on all desktop OSes. ... OK, BSD might have some trouble getting some to run.
The OS is all about what you prefer at certain fringes of your work. If that's the case, that is a good reason to move to a FOSS OS btw. Which is why I moved from macOS back to Linux after 12 years and got a new 300 Euro netbook rather than the new 2300 Euro MB Pro - although I do like the massive trackpad and the keyboard - neat hardware from apple once again - no doubt.
My 2 cents.
We suffer more in our imagination than in reality. - Seneca
Actually, no. The closest to that that we had, in the late 80s and early 90s - Unix on a variety of computer platforms - we have implementations that were very incompatible w/ each other on a source code level, where compiling, say, a package for SunOS/Solaris was not compatible w/ Ultrix or AIX. In fact, that was one of the early promises of Windows NT - that one would get a common platform that ISVs could compile to multiple platforms. So a CAD package could have been designed for NT/Alpha, an animation package for NT/MIPS and so on.
It's another thing that Intel obliterated the performance advantage of RISC w/ their core architecture, as well as all the FUD about Itanium. Even though the latter failed to ever gain any traction, it did manage to obliterate any interest in the RISC CPUs, and drive them into oblivion.
Really, it would.
Damping absorbs vibrations. Dampening is caused by moisture.
It's already possible to write an application that will run on any platform with things like Java and Web applications, so long as the platform allows it. It doesn't matter because the platform people have to choose to allow applications to run on it (e.g. Apple won't allow Java on iOS, despite having no technical reason) and the application people have to write for it (Microsoft would never port Office to a universal runtime)
when the next software update was released.
What would happen? Why worry about it? It never will happen so it's not worth taking your time to think about.
And the answer why is right there in the article blurb. I want you to really consider what it would be like trying to control a complex 3D cad program with a Playstation controller. Or a dinky touchscreen-only interface on your phone. Picture how bad that would be.
It will never happen because nobody sane would ever want this.
Weaselmancer
rediculous.
The autism-hating, custom EpiPen-hating, Musk-hating Slashdot troll!
Not that covers as much different hardware platforms and operating systems. And also none that are as fast and efficient as Java has become. Web applications for example doesn't run on headless machines which includes most embedded systems. Not to mention that JavaScript is several magnitudes slower than Java. Unless you compile it with Nashorn and make it run on the JVM. Then it's a lot faster but still not as fast as Java.
Of course the are CIL but it as well do not have supported for all the hardware and software platforms that you can run Java on. And it isn't as fast as Java.
If we had it, someone would sue. Sometimes the purpose of incompatibility is to get you to buy the vendor's hardware. If you could run iOS applications on non-Apple handhelds, you can bet your ass Apple lawyers would become involved.
Also, cross-platform tends to assume a point of view, where the user is someone you respect and are trying to serve. That is often not the case, where the user is the fuel for serving someone else's agenda. e.g. ads. When you adopt this more conventional users-are-the-product PoV, compatibility isn't going to make your top ten wishlist items.
Example: 3D CAD software that runs on Windows 14, Playstation 7, an Android Smartphone, Nintendo's latest handheld gaming device and an Ubuntu PC in exactly the same way with no compatibility problems whatsoever occurring.
The Playstation sells to console gamers and home theater enthusiasts with a big screen HDTV. Your CAD/CAM program has to be something that market needs and wants and can use effectively.
You are a cunt. My hordes of Indian H1-Bs are gonna Virtual Machine your ass with their EJBs and J2EEs.
Get ready to have your Beans POJOed into the Java!
Such as? Mono/.NET doesn't even work well on Linux. JavaScript and other scripting languages do not have nearly as broad platform support as Java. Not to mention that it requires more CPU and memory to run limiting their hardware support by increasing minimum requirements.
Mono/CLR is based on better specifications than java but lacks in implementation.
Not that covers as much different hardware platforms and operating systems. And also none that are as fast and efficient as Java has become.
On the other hand, I can run CCL or SBCL on pretty much anything, and none of it treats me like a complete idiot as efficiently as Java does. Java is very good at that...
Ezekiel 23:20
All our city buses (nultiple operators) have had free wifi for a few years now (smallish UK city).
Buses in Fort Wayne, Indiana, USA, do not. What action should people living outside your "smallish UK city" take?
Seriously, this user has submitted many open ended, or inexperienced questions. Check out the users submission history: https://slashdot.org/~dryriver
No, all software anywhere will never happen. Period. You would have to force everyone to code in specific cross platform languages and frameworks, and force hardware vendors to only develop based around specific platforms and restrictions. It will never happen. Imagine not having Arduino as a platform, because it's limited power and function is great at embedded systems. Platforms are selected for specific software based on what the developer wants to create. Low power? Graphics power? CPU power? Different use cases need different platforms.
none of it treats me like a complete idiot as efficiently as Java does. Java is very good at that...
I'd say that's a failing of Java, it usually protects you from such things.
The cesspool just got a check and balance.
Isn't this the problem that Java was trying to solve?
I know this is tangential to the original question, but the Human- Machine interface issues are an interesting problem as well. Imagine running something on your laptop, you have a touchpad and keyboard (relatively 'full size') while on a smartphone, you may have access to a keyboard, but it is far from 'full size'. Figuring out how to manage the same input/output/display to support these differing capability sets seems a serious problem all by itself.
As long as you can emulate one platform in another, this is possible.
But the question is very narrow minded, as the entire point of differentiated platforms is that they have different capabilities. For example, if one platform exposes N-point touch input, but no mouse. And another has no touch input, but exposes a 3-axis pointing device. The software for one will never be able to correctly run on the other, because the the -physical- constraints on the platform.
And then there is the example of quantum computing. There's no way to port it to today's iphone, and no polyfill is theoretically possible.
And that's just the tip of the iceberg. What about computers that aren't even von neuman machines?
Really? Because I'm not seeing orders of magnitude difference here... typically Java seems to be no more than 2-5x faster.
https://www.paypalobjects.com/webstatic/blog/node_java_perf.gif
http://benchmarksgame.alioth.debian.org/u64q/javascript.html
http://dvschroeder.blogspot.com/2013/07/java-vs-javascript-vs-python.html
A random string of ones and naughts will produce a posting when run on Slashdort, fake news on Facebook, an ad on Google, a game on a Playstation, money on a mainframe, progress on a Cray, a tune on an iPod, a virus on a PC, an act of userfriendliness on a Mac, a pretty picture on SGI, a mushroom cloud on an ICBM. It would cause the stock market to crash, but make an Airbus fly. Just because that's what those machines do.
I agree here. I've seen a lot of abstraction libraries that attempt to make cross-platform development easy, and even some work on interpreted languages to make cross-platform execution possible. I can write CLI PHP or Python scripts that, by and large, work on all major hardware and software platforms, but there are still quite a few gotchas, particularly when it comes to file systems. That extends to web apps as well, and it's pretty easy to build PHP, Python, Ruby or whatever your flavor is for web apps.
But when it comes to GUI applications, I haven't seen anything that comes close to Java. I'm not always the biggest fan of Java, but at the moment, JVM is the only cross-architecture platform that really does deliver. It's not always pleasant, but I have yet to have a Java app fail when moving between *nix and Windows.
The world's burning. Moped Jesus spotted on I50. Details at 11.
We have the answer: the closest thing to a universal computer we are going to get is the IBM System/360 and its successors System/370, System/390 and System/Z. It may not be perfect, but it's better than the alternatives, so better abandon those. Especially you young Unix weenies.
Oh, and the world would be a peaceful place if everybody spoke Texan English, wore tan skin and worshipped the Flying Spaghetti Monster. Let's make great American blues again.
Intel has decided cpus are fast enough. If its slow, its bad design.
They do the job, for the most part (excluding gotchas like file system differences), but just try to develop a GUI application in even the more modern interpreted languages that will run reasonably well in multiple environments. Java, whatever you think of the language, still has the upper hand in portable applications.
The world's burning. Moped Jesus spotted on I50. Details at 11.
ARM's architecture is at least still nominally RISC, and I suspect at this point the number of ARM chips out there in the wild outnumbers Intel chips, I'd say RISC is still very much alive.
The world's burning. Moped Jesus spotted on I50. Details at 11.
It goes against the definition of computer software itself. There may be examples of instances that come close, but the question itself is fundamentally flawed. Well, I suppose it isn't really, because the question said if it could magically happen. So it's a thought-experiment, and isn't based in reality.
Carry on.
My beliefs do not require that you agree with them.
Right off the bat; applications would have to be much much bigger than they currently are, since each application would have to include it's own drivers, garbage collection, etc etc. That in turn makes applications far more prone to bugs and exploits as well. Then there's the fact that a successful exploit would have far more reaching consequences. Instead of say a Windows 10 only exploit, you had an exploit that affects everybody who runs the exploited software. Which leads to the question "How would a anti-malware program even work in such an environment?" When you're allowing direct access to disk I/O, networking, system buffers and memory, how does a security program monitor all that and distinguish good from bad?
I'm no computer scientist by any means; but I do know that there were and still are good technical reasons why we evolved systems that handle all the common chores to support running applications. While software portability is desirable, there is a limit to that. There just isn't a need to run mainframe programs on your cellphone for example. If I understand the underlying theory correctly, any Turing complete machine can run any program intended for any other Turing complete machine. So, in theory your cellphone could run a mainframe application but it would do so in a painfully slow, so slow as to be useless, manner. The current digital universe is very roughly divided into broad areas of utility. You have your mainframes which overlap large servers, which overlap small servers. Then workstations which overlap desktops which overlap portable devices. I think it is those areas of overlap that prompt the posters question.
I need a wheelchair van for my son. Help me get the word out. https://www.gofundme.com/wheelchair-van-for-jj
Hey assholes, I don't know if you realise this, but whatever garbage ads you are running on your site are redirecting my mobile browser. Fucking fix this shit you asshats.
In the 80s and 90s, being able to run a specific application meant something. You had to have the right combination of hardware and software to make it all work.
But now, a whole LOT of stuff runs in a browser, and runs the same across platforms. Which platform it happens to be is mostly irrelevant. Most people won't even care which platform they are using.
So we don't need a Mac version or a Windows version or a mobile version. Just something that runs in a browser and done. Oh sure, there will always be certain applications that require a native application. This is going to be a smaller and smaller number every year.
Sig for hire.
If all software ran on all platforms. Windows would die and something like Linux/OSX would completely take over. One would be user friendly (osx-like) and the other would be designed for hardcore computer users.
A lot of people have switched from a desktop or laptop PC to a smartphone or tablet as a primary personal computing device. And in many cases, this smartphone or tablet runs Android (which uses Linux as its kernel but admittedly isn't GNU/Linux).
Or you could stop trying to go back in time and pretend that virtualization and emulators somehow don't exist anymore, since their existence tends to be the entire point of this question.
In my experience, interpretive emulation eats up 90 percent of CPU time in the interpreter. Or what kind of emulator did you have in mind?
With the hardware race to keep Moore's law alive as long as possible, we've had "enough" GPU, CPU, and memory in hardware for quite a long time.
Enough GPU, CPU, and memory to run something natively != enough GPU, CPU, and memory to emulate it.
For the same reason we don't have a single 'car standard' where every car sold has the exact same feature set. Same size engine, same tire size, same number of passengers, same radio, same transmission, etc... People actually want different cars. Some want a pickup to haul or tow things. Some want a little sports car that one carries two people. Others want a mini-van to haul their 5 kids or the soccer team around. Yes, some things would be easier if every car had the same parts and features, but most people don't want that situation. Same with your computer hardware and operating system. People want different things.
Actually it's JVM. It can run more than just Java. I have ported GCC to it as a target (fully featured for at least C and C++, including pointers, trampolines and long jumps). I only lacked standard libraries to make it useful.
All the replies I looked at seemed be oriented towards narrow silos like Windows/Linux/Mac.
This question makes no real sense at all other than as a discussion generator. Why in the world would you want your Dyson network aware fan to be able to control a car or nuclear plant? We have computers in so many things now with so many different functionality requirements, input/output requirements, storage/memory configurations that asking if we can ever have all software work every where is like asking if a single type of wheel can work everywhere.
Not just no but hell no!
Isn't compatibility one of the largest reasons for containers and standard building configurations for environments? I would argue that if all software ran everywhere it also means that everywhere when a vulnerability is found creates a large security issue, as seen with Java already. This is one of the large reasons why containers are the future for programs. All OS' can be agnostic and the container will have all of its libs etc.. and the OS will run it happily. It prevents security issues by jailing the application except for key things like storage and solves this issue in a better way. I know personally when I went to containers and started controlling the dev environment once we had more than one cook in our programming kitchen things got a lot smoother. VM's were the first wave of this, and now containers are the second wave.
Don Lancaster has been promoting Postscript as a general purpose computing language for many years.
I don't like it, I think it's slow and difficult to write. But if a machine has a postscript interpreter, it's another option.
Contribute to civilization: ari.aynrand.org/donate
Same thing would happen as if pigs could fly... ANARCHY!!!
It'd be ANARCHY!
Linux would be king if all software were crossplatform and most of the software would then become open source. Garageband and iMessages are the only things keeping me from moving completely away from Apple. Microsoft only has the video game advantage so if Linux had the same titles available, why bother giving up my privacy and freedom of customization if I don't have to? And then for arguements sake, let's analyze the companies as a whole. Mico$oft and Apple don't hold a candle to Linux in the 503c Non Profit market. If it comes down to picking a platform known for generosity and a community that actual works together and each has a say in things, Linux also wins. Hell, White Hat or Black, Linux already is the OS of choice regardless of the hypothetical world proposed. That should tell you something in itself. Most servers also run Linux. And another thing, I honestly don't understand why the U.S. Government uses Window$ unless Cortona has dirt on everyone. It's bad when the FBI directors cover their own webcams. Matter of fact, Linux is NEVER in the news. You know why? Privacy. Security. No backdoors. Even if software were all crossplatform, the cores and kernels of the "Big Three" would still have to be different enough to hold patent rights, except Linux doesn't use such proprietary garbage and allows everyone to look at and improve the code. Think community watch of diehard nerd rednecks vs. mall security guards that need the extra cash. The uniform is nice, but I'd feel safer around the guy with a fishhook in his hat. Weird analogy, but most of us Linux users are just as passionate about being a Linux user as the typical redneck is about being redneck and we don't like people pretending to have authority (Window$ and Mac) all that much and it is sickening to see everyone convinced that they have to use them. Literally, people would still choose one or the other over Linux because of fear and ignorance they'd both have to spread to stay on top. "Gotta have windows to be a good business." Gotta have a Mac to be creative." Bullshit. I've used Linux long enough to know better.
Source-level compatibility, so you have to recompile your source for each different chip, but you only need to write your app once.
Write up here
www.sprysoftware.com
I don't know the meaning of the word 'don't' - J
Java script doesn't have platform dependency ... it has interpreter dependency. Nodejs makes it run outside browser on windows , Linux , and wherever else you port nodejs.
How's life in the hypocrite lane?
Such as? Mono/.NET doesn't even work well on Linux. JavaScript and other scripting languages do not have nearly as broad platform support as Java.
Spot the script kiddie.
No sig today...
If all software ran on all platforms, all software would suck, and as a result, all platforms would suck too.
All software includes real time software, right? So every platform has to be an RTOS. It also needs to NOT be an RTOS, at the same time. So right away, that's impossible, and the "UCSA" in question is faced with a FUNDAMENTAL issue.
Wii Bowling requires a Wii-mote, and is tested as such. Would it work as well with a touch screen? What about with a keyboard and mouse? What about with a keyboard? What about just with a PS2 controller? What about with a flightstick?
Replace "Wii Bowling" with any production application, with a SQL database, with gvim, with World of Warcraft, with a home coded neural net, with an arcade game, with whatever. Which of those have inputs that would be useful?
A program optimized for a 4k Display, running on a 1080p television would be lame, right? What about a tiny app that makes assumptions about resolution running on something much bigger?
So, already the idea sucks because the INPUTS and the OUTPUTS are vastly different across devices.
Lets take to internals. If you don't have enough RAM, do you swap to hard disk? Do you swap to SSD? Wait, swapping to SSD totally hammers its reliability. Do you build future programs for a small amount of RAM? Not everything scales with the user's demands. Some machines are very good at some kinds of memory operations, and others better at others. This guides how programs are built and tested on those architectures. The "UCSA" programs would have to establish limits on RAM, just as you say, but there's a bunch of factors about RAM besides quantity. By the time you are done enumerating, you don't have something very universal.
Finally, the one part that has gotten real and persistent attention- what about the CPU? Every CPU is good at different shit. Hardware optimizations can make a big difference. Intel's transactional opcodes can vastly increase performance on some chips, cause hard lockups on other (bugged) chips, and are not present at all in any of Intel's competition. Languages that compile to bytecode instead of opcode skip this, and Java and other cross platform approaches give a good chance of code that is hardware independent. But Java has to virtualize a lot of the assumptions made as well. The "UCSA" will have at least as many assumptions as Java. It will require an additional layer of API to talk to the drivers, which will not be trivial with stuff that needs to talk to graphics cards. This additional layer will need to support all the varieties, meaning that an update to Vulcan will require a new version, as will an update to Direct-X, etc.
Also, this approach is entirely future-blind. What does a chip with a built in FPGA look like to your universal software thing? Does it have to universalize FPGA programming and utilization as well? An algorithm meant for FPGA usage may be shockingly slow if dragged into the CPU and executed. What if the universal software needs random numbers? There's a huge difference in how random numbers can be, and this cannot be virtualized away. If you expose that your numbers are generated by the CPU instead of an exeternal RNG, then the application can refuse to run without secure random numbers, making it not universal. If you abstract that away, then your crypto program may never run the way it needs to- it may be totally useless. What about something further away, like a quantum compute card, or whatever?
We already have this capability. It is called docker/pick your own. Your software can be anywhere, anytime, on demand and scalable with some form of load balancing. It is taking the world by storm and turning the deployment model on its head.
This is not even a question anymore. Millions of applications around the world today run on platforms they were never written for because of docker and the containerization technology. It has turned the development model on its head, spawned devops and it run by most of the top 500 companies in the world today. Go and have a long look at https://hub.docker.com/ and pick your application. The beauty of this technology is not only does it not care what platform you run an application on, their are literally millions of docker images available for you to choose from so you don't have to build them yourself. You get to stand on the shoulders of giants and get to work immediately. Example Case: This user installs Docker on his home NAS. Now can run ANY application listed on docker hub.
Features, Performance and Usability
Casteism
That would be like all cars running on all roads, or all trains running on all tracks.
Cars are pretty far along, but not 100%.
Trains are not too bad, but only maybe 90% (?)
Computer platforms are like every town build their own dirt tracks, of whatever type and width they felt like ! 8-)
Seriously, anybody who doesn't use Electron is fucking retarded, and it almost makes me not want to run their software.