Can you run your apps on each other's operating systems?

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
Locked
User avatar
DavidCooper
Member
Member
Posts: 1150
Joined: Wed Oct 27, 2010 4:53 pm
Location: Scotland

Re: Can you run your apps on each other's operating systems?

Post by DavidCooper »

pcmattman wrote:The original subject makes me imagine more a compatible binary - the binaries on your OS can run on mine without recompilation. This is why I brought up Java.
gerryg400 wrote:
The subject wrote:Can you run your apps on each other's operating systems?
Since we develop OS's, the question should possibly be "Can you run other people's apps on your operating system? The answer to this is, I suspect in some cases, "yes".
If you reword the question as you have done, then yes - compiling from source counts. If you are implementing POSIX, the apps that run on your operating system would likely run on mine and several others here, but there would be an intermediate compile step first unless by some miracle you implement system calls exactly the same as me. :)
I wasn't considering Java as it's bytecode has to be interpreted, but I notice that it can be run directly through Arm processors now, so if that extends to other processors it could get a lot more interesting.

In answer to Gerry, aiming for compatibility with POSIX or Menuet are currently on my list of possible routes to follow. I'll need to research it in detail before making up my mind, and there may be a few others to consider as well.
Help the people of Laos by liking - https://www.facebook.com/TheSBInitiative/?ref=py_c

MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
gerryg400
Member
Member
Posts: 1801
Joined: Thu Mar 25, 2010 11:26 pm
Location: Melbourne, Australia

Re: Can you run your apps on each other's operating systems?

Post by gerryg400 »

In answer to Gerry, aiming for compatibility with POSIX or Menuet are currently on my list of possible routes to follow. I'll need to research it in detail before making up my mind, and there may be a few others to consider as well.
I should say that you don't have to follow Posix exactly, and certainly you don't have to fully implement it. Some parts of Posix are just too weird. I have implemented just enough to get some 'normal' gnu normal applications configured, compiled and running. To be honest, it wasn't the hardest part of getting my system running, in part I guess because my kernel is rather Posixly-shaped.

Also just to note, as pcmattman said, Posix doesn't define binary compatibility, just source code.
If a trainstation is where trains stop, what is a workstation ?
User avatar
DavidCooper
Member
Member
Posts: 1150
Joined: Wed Oct 27, 2010 4:53 pm
Location: Scotland

Re: Can you run your apps on each other's operating systems?

Post by DavidCooper »

NickJohnson wrote:The issue here is that a machine intelligence like this would only have raw web pages to feed it. It could work for searches, assuming the overhead on processing is not too much, but not for "simply telling you the answer." How would it know which sources are right? If web pages become obsolete, where would its information come from? How could this ever possibly replace something like a forum, or a opinionated blog?
Firstly, a lot of Web pages are there to provide information which isn't going to change in the future, so once a search engine has hoovered up all the knowledge within it and can present it in ways targeted to individual people asking questions, so few people will ever read the original source that it is likely to disappear (if it was written by some individual rather than being owned by a library or institution of some kind). It will certainly disappear from people's radar as they will never click through to it any more or even see it in lists of search results. Certain sites will be maintained regardless of how many people actually reach them. Hobby sites which provide enormous amounts of information (mainly overlapping with other sites, but presented in different ways, and some with added teaching via interactive programs) will tend to disappear from the Web when their owners die or can't be bothered going on paying for stuff that's only ever looked at by search engines, and even interactive teaching programs will be outmoded by those generated by A.I. once it gets on top of visual processing and can see as well as we do.

How would it know the sources are right? Well, how do you know what's right? You don't always know, but you usually have a good idea because you can compare information with what you already know and see how well it sits with it. If it clashes badly with what you know (or think you know) then you will rate it as improbable, whereas if it fits well you will rate it as plausible. If many independent sources agree with it, the probability of it being true may increase, depending on whether all those sources are genuinely independent and are using radically different ways of coming to the same conclusion. An intelligent machine would do exactly the same thing. It may be possible for it to get the wrong idea about how things are for a time, just as we can, but eventually it will learn something which leads to a serious contradiction in the machine's most favoured model of reality, at which point that whole model might fall apart and be replaced with another one. I don't think a machine would have to study a great deal before its most-probably-correct model of reality began to tie in with what the scientists and academics generally hold to be true, but it would always apply probabilities to everything and never state that what it's saying is absolutely true. It would also list rival possibilities for people who want to follow them, so ideas about the Earth being flat (which might still be mathematically possible) would get a mention in the small print. Your own machines would have a very good idea of what you know, what you're interested in and the kind of answers you're looking for (I expect most people will be looking for mainstream stuff most of the time), so the answer you get would be tailored to suit you as an individual.
The main problem is your apparent disconnect with reality: you present such a technique (assuming you even have it) as a panacea, even though it would be ineffective even at things you've mentioned, like driver writing and virus detection. Not to mention that computers simply don't (and, if trends hold, will not for decades) have the computational resources of even a single human, while billions of cheap human minds are at the world's disposal.
If you can follow a recipe, you can learn to program, but creating the recipe in the first place requires a little bit more work. The machine might be given a task to write a program that communicates with a piece of hardware using particular registers and command bytes. It would also be told how much data it needs to send or collect at a time and where to get it from or put it, plus any other details required for the process, and of course it knows the instruction set of the processor, how all the instructions work, and it knows all about the registers available. That's the same starting point as for any programmer. It also needs to be told whether the program's to work by polling status ports, using interrupts for each byte or pair of bytes transferred, or if it's to use the DMA (or any other system that may be used which I haven't read up on yet). Now it will need to plan how it's going to do things, working out what needs to be done first, second, third, etc., building up a map for how the program will work. I can't see that that involves any special ability so far. If A depends on B, B must come before A - it can reason its way to getting the order of the process sorted out. If part of the action needs to be repeated many times, it will have to recognise the advantage of using a loop, and again it will have knowledge in its database telling it that this is the best way to do things. That does require it to be able to recognise repeated patterns, but it could learn that from its knowledge database rather than having it directly programmed in, though knowledge about successful methods for doing things still counts as program code of a kind and could in time become directly programmed into the A.I. (possibly by the A.I. - just as we acquire skills and automate them to the point where we can carry them out as if they are instinctive responses). It should be able to recognise the start point and end point of the loop, and then it can look up its database to find out how to get a loop to end by putting a conditional jump into it. Having created the plan for how the program will work, it then needs to turn that into actual machine instructions, and that's just a translation process. I can't see any point at which any special kind of thinking has to be injected to make it happen, though some injected code could certainly speed it up, turning wisdom in its knowledge database into actual programmed systems which just do the right thing straight away.

As for how much in the way or resources such an A.I. system will need, that simply isn't known at the moment. Some ways of storing knowledge are enormously more compact than others, but my own calculations based on the information storage system I've designed for the kind of data required for its essential knowledge database suggest that it might be possible to hold a human-level intelligence in RAM on a current machine, though it wouldn't know as much as a normal adult and I haven't factored in any visual memory at all. With the speed of current processors, it would leave us for dead in thinking speed. If you then add a large hard drive into the equation and store data on it in a form where there is absolutely no duplication, I have no doubt that it could win any quiz show while answering questions in specialised subjects which it hasn't been warned of in advance against contestants who have specialised in those subjects all their lives. A TB of data is a million books, and a million books with zero duplication between them is a hell of a lot of knowledge. Going back to what you can store in RAM, a GB is a thousand books, and I doubt that many people could write a thousand books with zero duplication within or between them. Visual memories are a different story, but even there our visual memories are highly compressed (reduced in terms of stored components) and probably wildly inaccurate in all the unimportant aspects.
Help the people of Laos by liking - https://www.facebook.com/TheSBInitiative/?ref=py_c

MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
User avatar
DavidCooper
Member
Member
Posts: 1150
Joined: Wed Oct 27, 2010 4:53 pm
Location: Scotland

Re: Can you run your apps on each other's operating systems?

Post by DavidCooper »

Combuster wrote:To point out some of your recent mistakes:
I don't expect to see any sentient intelligence in A.I. - there will be nothing conscious in the machine capable of sentience.
And there is any in humans? What would it be?
If you want to argue that consciousness is an illusion, in which case pain is an illusion and suffering is fake, and morality has no role to play as there is no need to protect deluded zombies from suffering when suffering is nothing more than a fiction, then that discussion should probably move onto a philosophy forum. There is no "I" in any machine that we know how to make, but there does seem to be in us. If suffering is real, and it feels real enough, then something exists in us that suffers. I've spent months in the past discussing consciousness on other forums and don't intend to repeat it all here, but if you think there's no "I" in a person and that it's all an illusion (I wonder who it is that's being fooled into feeling pain), then you needn't worry about machines wiping us all out as you shouldn't imagine that anyone can be harmed by it.
Deliberate on this: A system is not intelligent unless it can give the wrong answer, even when it has sufficient knowledge (not information!) to give the correct answer.
Do you mean lie? Or do you think a calculator that makes errors is more intelligent than one that doesn't? Or, maybe you're just trying to show off your high intelligence by making a mistake? Perhaps the first of those possibilities is the most likely, so how do you program a machine to lie? When is it a good thing for it to lie? The morality module would dictate that the machine should lie in certain circumstances. When games are involved, it would also need to lie, but those lies would be true within the game. I don't think there would be any great difficulty in getting a machine to lie - you just have different levels of instructions for it to follow where the top level will require it to be moral and the next level may enable it to lie if its been told that it can lie for the purpose of some game, such as to pass a test where it can only succeed by lying.
In other words: using AI to mean any smart-looking method is not what is meant by the term, even though many such methods have been created in quest for true AI. How do any of your "features" survive the Turing test?
Do calculators just run "smart-looking methods" or are they genuinely intelligent? If a system can compare a whole stack of data and reject the stuff that doesn't fit the ones most likely to be the facts while collecting the stuff that does, that's a system which could once it has sufficient knowledge in it judge someone in court or run a business/government better than people can. Is that just smart-looking, or is it plain smart? Are people smart? With people, the order in which knowledge is collected leads to a great diversity of beliefs, many of them positively barking. With a machine, the order in which the information is entered is unimportant - the end result will be the same. The probabilities calculated for different bits of data (as to their truth) may vary for different orders of analysis, but they can be recalculated from scratch by going through all the data again in many different orders. Some of the probabilities may consequently change in chaotic ways, but if so that will actually help to calculate them better - I expect that most probabilities will stay much the same regardless of the order in which the data is analysed, but time will tell.

Once I've got my linguistics module running and have loaded a lot of knowledge into the system, I'll then have a better idea of how much else needs to be done. To pass the Turing Test, a machine will need to be able to identify a letter of the alphabet just from having its shape described, so it will need a visualisation module - even blind people can "visualise" things in terms of shape and relative positions of things, so that's going to take some work, and it's not necessarily going to be the kind of work that suits me. The machine will also need to simulate interactions in order to imagine events in the way that we can, so there's still going to be a long road to the finish line.
Help the people of Laos by liking - https://www.facebook.com/TheSBInitiative/?ref=py_c

MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
gerryg400
Member
Member
Posts: 1801
Joined: Thu Mar 25, 2010 11:26 pm
Location: Melbourne, Australia

Re: Can you run your apps on each other's operating systems?

Post by gerryg400 »

I'm not sure how what you desribe is A.I. Collecting data, applying algorithms even writing algorithms is a normal computing job, that can be done by ordinary computers and ordinary software. What is it about the system you describe that makes it A.I. ?
I don't think a machine would have to study a great deal before its most-probably-correct model of reality began to tie in with what the scientists and academics generally hold to be true
I think this is where you have it wrong. It's quite normal for intelligent humans (remember we're all intelligent in this context) to hold onto ideas simply because they feel like it. Even against the weight of evidence that others find irrefutable. Artificial intelligence (i.e. artificial 'human' intelligence) would need to exhibit stubbornness, anxiety, excitement, prejudice and every other thing that a human exhibits even when told not to. Even when there is absolutely nothing to gain. Otherwise it could easily be detected as artificial. As for passing the Turing test, a real A.I. may do the test (unless it was busy or tired or had some other personal reason not to) but being intelligent and perhaps being confident in it's intelligence might not even care whether it passed the test or not.
If a trainstation is where trains stop, what is a workstation ?
User avatar
DavidCooper
Member
Member
Posts: 1150
Joined: Wed Oct 27, 2010 4:53 pm
Location: Scotland

Re: Can you run your apps on each other's operating systems?

Post by DavidCooper »

gerryg400 wrote:I should say that you don't have to follow Posix exactly, and certainly you don't have to fully implement it. Some parts of Posix are just too weird. I have implemented just enough to get some 'normal' gnu normal applications configured, compiled and running. To be honest, it wasn't the hardest part of getting my system running, in part I guess because my kernel is rather Posixly-shaped.

Also just to note, as pcmattman said, Posix doesn't define binary compatibility, just source code.
You talk about getting normal applications configured, compiled and running, so that's not the same thing as having an app in a form which can run directly on different OSes without modification. If a really good app is made available for POSIX OSes and the source code isn't released, you aren't going to be able to adapt it to run on yours. Maybe that can't happen anyway if every different POSIX system need apps to be comiled specifically for it. That kind of complexity is something I want to avoid.
Help the people of Laos by liking - https://www.facebook.com/TheSBInitiative/?ref=py_c

MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
User avatar
DavidCooper
Member
Member
Posts: 1150
Joined: Wed Oct 27, 2010 4:53 pm
Location: Scotland

Re: Can you run your apps on each other's operating systems?

Post by DavidCooper »

gerryg400 wrote:I'm not sure how what you desribe is A.I. Collecting data, applying algorithms even writing algorithms is a normal computing job, that can be done by ordinary computers and ordinary software. What is it about the system you describe that makes it A.I. ?
What is it about people that makes it intelligence when they collect and process data? That's all we do, apart from added emotional baggage.
I don't think a machine would have to study a great deal before its most-probably-correct model of reality began to tie in with what the scientists and academics generally hold to be true
I think this is where you have it wrong. It's quite normal for intelligent humans (remember we're all intelligent in this context) to hold onto ideas simply because they feel like it. Even against the weight of evidence that others find irrefutable.
That's because they get emotionally attached to their beliefs, and that is why religious beliefs can put limits on their thinking ability by preventing them from even contemplating ideas they aren't allowed to think about, but it isn't just religious beliefs - whatever goes in first is very hard to shift, and people often go to extraordinary lengths to try to maintain crazy beliefs rather than junking them. The complexity of many things is also so great that people can't go through enough data to come to a proper judgement of how things really are. But are these flaws intelligence? No - they're barriers to intelligence.
Artificial intelligence (i.e. artificial 'human' intelligence) would need to exhibit stubbornness, anxiety, excitement, prejudice and every other thing that a human exhibits even when told not to. Even when there is absolutely nothing to gain. Otherwise it could easily be detected as artificial.
Artificial intelligence does not need to pass the Turing Test in order to be intelligent, or even to be more intelligent than people. It could leave us for dead in intelligence terms even if it was unable to lie and made no attempt to hide its intelligence. The Turing Test has never been my target - it's a side issue, but I don't think it will take a lot of effort to give an intelligent machine the ability to lie and to pretend to be a little dim on occasions as that would just be a kind of game playing in which it tries to produce the kind of output that a person would. It would know that people often come out with things that are irrational and could mimic that simply by going for some alternative theory about something with a lesser probability rating and putting it forward as if it was fact.
As for passing the Turing test, a real A.I. may do the test (unless it was busy or tired or had some other personal reason not to) but being intelligent and perhaps being confident in it's intelligence might not even care whether it passed the test or not.
It would never be tired and would not care about passing the test, but if it's asked to try to pass the test and has nothing better to do with its time, I see no reason why it couldn't do so. The Turing Test is of course heavily flawed, and many chatbots have appeared to be human to a significant proportion of the judges - they produce pretty awful output, but so do many people. The real test of A.I. will be its core intelligence, and in that it can demonstrate its massive superiority over people while at the same time failing the Turing Test. Passing the Turing Test by adding a bit of roleplay will be a very unimportant sideshow.
Help the people of Laos by liking - https://www.facebook.com/TheSBInitiative/?ref=py_c

MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
gerryg400
Member
Member
Posts: 1801
Joined: Thu Mar 25, 2010 11:26 pm
Location: Melbourne, Australia

Re: Can you run your apps on each other's operating systems?

Post by gerryg400 »

DavidCooper wrote:
gerryg400 wrote:I'm not sure how what you desribe is A.I. Collecting data, applying algorithms even writing algorithms is a normal computing job, that can be done by ordinary computers and ordinary software. What is it about the system you describe that makes it A.I. ?
What is it about people that makes it intelligence when they collect and process data? That's all we do, apart from added emotional baggage.
There's nothing intelligent about collecting and processing data. That's rather my point.

In fact intelligence, in some ways, gets in the way of performing those tasks. Computers are much better than humans at performing those tasks because computers don't have intelligence. It sounds like you are designing a computing system capable of storing and processing huge amounts of data and perhaps modifying its programme in response to in inputs and it's core, but that's not A.I.
If a trainstation is where trains stop, what is a workstation ?
pcmattman
Member
Member
Posts: 2566
Joined: Sun Jan 14, 2007 9:15 pm
Libera.chat IRC: miselin
Location: Sydney, Australia (I come from a land down under!)
Contact:

Re: Can you run your apps on each other's operating systems?

Post by pcmattman »

Maybe that can't happen anyway if every different POSIX system need apps to be comiled specifically for it. That kind of complexity is something I want to avoid.
Try implementing a POSIX subsystem and see how fast this perspective changes...
If a really good app is made available for POSIX OSes and the source code isn't released
... because "POSIX OSes" is an absolute joke once you hit the stupid OS-specific extensions each vendor has decided makes the most sense for their environment.
User avatar
NickJohnson
Member
Member
Posts: 1249
Joined: Tue Mar 24, 2009 8:11 pm
Location: Sunnyvale, California

Re: Can you run your apps on each other's operating systems?

Post by NickJohnson »

DavidCooper wrote:
I don't think a machine would have to study a great deal before its most-probably-correct model of reality began to tie in with what the scientists and academics generally hold to be true
I think this is where you have it wrong. It's quite normal for intelligent humans (remember we're all intelligent in this context) to hold onto ideas simply because they feel like it. Even against the weight of evidence that others find irrefutable.
That's because they get emotionally attached to their beliefs, and that is why religious beliefs can put limits on their thinking ability by preventing them from even contemplating ideas they aren't allowed to think about, but it isn't just religious beliefs - whatever goes in first is very hard to shift, and people often go to extraordinary lengths to try to maintain crazy beliefs rather than junking them. The complexity of many things is also so great that people can't go through enough data to come to a proper judgement of how things really are. But are these flaws intelligence? No - they're barriers to intelligence.
These "barriers" are in fact critical to human intelligence. A pure intelligence could be easily tricked by consistent but false information, and, more importantly, because it is perfectly predictable, could be exploited or be stuck in an infinite loop. For example, consider what would happen if your intelligence stumbled upon one of those theorems that cannot be proved or disproved, such as the continuum hypothesis. Without an emotion of "frustration" to prevent it from trying to think clearly, it would be stuck on that problem forever. However, with too much of this emotion, it would be lazy and give up easily. These seem like human emotions, but are critical to stabilizing any intelligence. This is only one example where an imperfect, arbitrary emotion is important. The human mind is a delicate balance shaped by millions of years of evolution: before you can match it in anything other than speed, you will have to refine an AI to a similar degree, which demands inelegance and complexity.
gerryg400
Member
Member
Posts: 1801
Joined: Thu Mar 25, 2010 11:26 pm
Location: Melbourne, Australia

Re: Can you run your apps on each other's operating systems?

Post by gerryg400 »

pcmattman wrote:
Maybe that can't happen anyway if every different POSIX system need apps to be comiled specifically for it. That kind of complexity is something I want to avoid.
Try implementing a POSIX subsystem and see how fast this perspective changes...
If a really good app is made available for POSIX OSes and the source code isn't released
... because "POSIX OSes" is an absolute joke once you hit the stupid OS-specific extensions each vendor has decided makes the most sense for their environment.
Isn't source compatibility much easier to implement than binary compatibility ? I guess the problem is that Posix compatibility is not really a goal of many app developers. They usually create a 'portable' app that runs on Linux (and/or windows and/or MacOsx). If it were to run on a purely Posix system (or indeed Pedigree) that would be just a happy side effect of the fact that Linux is a bit Posix.
If a trainstation is where trains stop, what is a workstation ?
pcmattman
Member
Member
Posts: 2566
Joined: Sun Jan 14, 2007 9:15 pm
Libera.chat IRC: miselin
Location: Sydney, Australia (I come from a land down under!)
Contact:

Re: Can you run your apps on each other's operating systems?

Post by pcmattman »

@gerryg400:
It's definitely easier to implement source compatibility, but like you said, it is rarely a goal for the average developer to consider (also, POSIX compatibility doesn't necessarily cover everything a lot of applications use). So people filled the gaps with OS-specific methods for doing OS-specific things and the result is that true 'portability' across many operating systems is an absolute PITA. A lot of this OS-specific stuff is covered in source code by #ifdefs and autoconf finds what's present and what's not... most of the time.

As I've hinted at previously in this thread, true binary compatibility would need everyone to agree on the exact same mechanisms for the exact same concepts, and perhaps even the exact same path layout and device naming scheme (you can't #ifdef BSD on a "universal" binary ;)). There goes much of the uniqueness of our operating systems! Alternatively, it would need everyone to agree on a completely new set of APIs that abstracts out the OS-specific stuff. Have a look at the UDI vs CDI vs SomethingElse battles for driver interfaces to see why this doesn't work.

The effort would be better put into using something that's natively binary-portable, such as Java or Python. If you write a Python application for Linux chances are I can run it without recompilation on Windows, OSX, one of the BSDs or even my own OS. And it's dead simple to do so.

I can't help but note that there are two conversations running here: one about AI (which I would think is off-topic?) and one about running applications on each other's operating systems. Perhaps a thread split might be necessary to split up the two conversations? Just my 2c. :)
User avatar
DavidCooper
Member
Member
Posts: 1150
Joined: Wed Oct 27, 2010 4:53 pm
Location: Scotland

Re: Can you run your apps on each other's operating systems?

Post by DavidCooper »

Hi Gerry,
gerryg400 wrote:There's nothing intelligent about collecting and processing data. That's rather my point.

In fact intelligence, in some ways, gets in the way of performing those tasks. Computers are much better than humans at performing those tasks because computers don't have intelligence. It sounds like you are designing a computing system capable of storing and processing huge amounts of data and perhaps modifying its programme in response to in inputs and it's core, but that's not A.I.
You're making arbitrary distinctions between different aspects of intelligence, labelling the most important ones as not being part of intelligence. It appears that whatever a computer is programmed to do, the skills it displays will disqualify those skills from counting as intelligence in your eyes, so in time there will be nothing left in humans for you to label as intelligence at all and the word will have no useful meaning.


Hi Nick,
NickJohnson wrote:These "barriers" are in fact critical to human intelligence. A pure intelligence could be easily tricked by consistent but false information, and, more importantly, because it is perfectly predictable, could be exploited or be stuck in an infinite loop. For example, consider what would happen if your intelligence stumbled upon one of those theorems that cannot be proved or disproved, such as the continuum hypothesis. Without an emotion of "frustration" to prevent it from trying to think clearly, it would be stuck on that problem forever. However, with too much of this emotion, it would be lazy and give up easily. These seem like human emotions, but are critical to stabilizing any intelligence. This is only one example where an imperfect, arbitrary emotion is important. The human mind is a delicate balance shaped by millions of years of evolution: before you can match it in anything other than speed, you will have to refine an AI to a similar degree, which demands inelegance and complexity.
If the machine is only given access to a small amount of knowledge, it could perhaps be tricked by a set of consistent but false ideas, except it wouldn't really be being tricked as it would still be stating things in terms of what is probably true if certain axioms are true. In reality, the machines would have access to as much information about the world as we do and would be no easier to trick than we are (and indeed far less so) - we don't know if we live within virtual reality, and they won't know if their inputs come from the real or virtual either.

The reason we don't get stuck in infinite loops is that we monitor what we're doing and recognise when patterns repeat, so if we notice that we're going in circles, we break out of the algorithm and do something else instead. There's no reason why a machine should behave in a different way - it should monitor its progress in the same way and back out when things are taking too long. Some people give up sooner than others, and the ones who keep going longer sometimes achieve great results by doing so - it will be the same with machines, and they'll be able to communicate with other machines to find out what's been done before so that they can avoid duplicating work done by others. They could discuss problems that went on longer than they were prepared to continue working on them and put together a list of such problems which machines with free time available could set about tackling in order to see if they can be resolved with a bit more effort, and again they could be abandoned if they go on beyond a certain point. In this manner, the ones which can be solved with the least work will be solved first, and more time can be put into the problems that take longer at a later date. Such problems could also be crunched in the background all the time while the machine continues to do its normal work if it has anything more important to do, and individual people who want to investigate specific questions could instruct their machines to go on working on the problem forever if want them to.


Hi pcmattman,
pcmattman wrote:As I've hinted at previously in this thread, true binary compatibility would need everyone to agree on the exact same mechanisms for the exact same concepts, and perhaps even the exact same path layout and device naming scheme (you can't #ifdef BSD on a "universal" binary ;)). There goes much of the uniqueness of our operating systems! Alternatively, it would need everyone to agree on a completely new set of APIs that abstracts out the OS-specific stuff. Have a look at the UDI vs CDI vs SomethingElse battles for driver interfaces to see why this doesn't work.

The effort would be better put into using something that's natively binary-portable, such as Java or Python. If you write a Python application for Linux chances are I can run it without recompilation on Windows, OSX, one of the BSDs or even my own OS. And it's dead simple to do so.
If you can run a Java engine on a computer to enable an app to communicate with an OS, it should be equally possible to have an equivalent of that which communicates with machine code programs to interface between them and the OS. The disadvantage would obviously be that such apps would only run on one kind of processor, but the code would run at full speed. With such a system, an app developer could put out a single version for x86 and another single version for Arm, and most machines would be able to run them regardless of the OS in use. Initially it would be a fairly small task to create this interfacing program as it would only need to offer a very small range of OS services. In time, that could be extended to do more advanced things, but this system shouldn't trample all over your unique OS design any more than a Java engine would.
I can't help but note that there are two conversations running here: one about AI (which I would think is off-topic?) and one about running applications on each other's operating systems. Perhaps a thread split might be necessary to split up the two conversations? Just my 2c. :)
The A.I. conversation is probably over: I certainly don't intend to go into any further details about it. It does have some relevance to this thread in that my reason for looking for a way to run the same app in machine code on multiple OSes was to see if other people in this community of OS designers had similar aims to my own just in case there was an opportunity to join forces with them to some degree in one or two projects. Making our OSes compatible in certain aspects would have been very useful and needn't have done any harm to our different designs. I'm actually surprised that you don't already have some common system in place to run simple apps from identical program files such that they run at full speed through the processor in machine code, but it appears that the problem is that there are already a number of other possible solutions which are pulling people in different directions, all of them either being hard to implement due to their complexity or needing you to warp your OS out of shape in order to fit.
Help the people of Laos by liking - https://www.facebook.com/TheSBInitiative/?ref=py_c

MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
pcmattman
Member
Member
Posts: 2566
Joined: Sun Jan 14, 2007 9:15 pm
Libera.chat IRC: miselin
Location: Sydney, Australia (I come from a land down under!)
Contact:

Re: Can you run your apps on each other's operating systems?

Post by pcmattman »

If you can run a Java engine on a computer to enable an app to communicate with an OS, it should be equally possible to have an equivalent of that which communicates with machine code programs to interface between them and the OS. The disadvantage would obviously be that such apps would only run on one kind of processor, but the code would run at full speed.
The concept of "full speed" is essentially negated by JIT compilation. This can potentially allow the code to run faster on more hardware as specific CPU features present on the host can be used. AOT compilation can only guess as to what CPU features it can use - and usually you look for the "lowest common denominator" set of features that'll work on the most machines.

And in case you don't know what JIT compilation is: it's converting the bytecode directly to machine code to run natively on the host system... at what you call "full speed".

So I will once again re-iterate the point I've been making in every other post, in a different way yet again: you would probably find it faster and easier to implement a Java runtime and JIT compiler than to get enough agreement from even a small group of people to achieve binary compatibility in more than one operating system. People just have a habit of not agreeing with each other - like I said in my last post: driver interface A vs driver interface B discussions always result in a lot of disagreement. What I didn't mention is that within UDI there are struggles to get everyone to agree on features - you can find evidence of that simply by searching the forums. ;)
User avatar
Solar
Member
Member
Posts: 7615
Joined: Thu Nov 16, 2006 12:01 pm
Location: Germany
Contact:

Re: Can you run your apps on each other's operating systems?

Post by Solar »

<slightly-off-topic-warning>

(This is not personal, pcmattman, you just hit a sore spot.)
pcmattman wrote:The concept of "full speed" is essentially negated by JIT compilation. This can potentially allow the code to run faster on more hardware as specific CPU features present on the host can be used. AOT compilation can only guess as to what CPU features it can use - and usually you look for the "lowest common denominator" set of features that'll work on the most machines.
I can't really stand that kind of argumentation. The chance that a piece of Java code can actually benefit from that kind of optimization is about on-par with the chance of someone providing AOT executables for a variety of platforms if the application is performance-critical.

To all the JIT fans out there: It's a solid concept. But please cut the biased fan-boy rah-rah, OK? JIT has advantages and disadvantages, AOT has advantages and disadvantages. We're not West Coast / East Coast rapper gangs dissing each other.
Every good solution is obvious once you've found it.
Locked