The Role of the Operating System In the Future
liteswap writes "Linux geeks love Linux and Windows mavens won't quit Microsoft -- but will we really care that much whether a machine is running Linux or Windows in future?
As Sun announces Solaris support for Red Hat Linux applications, the need to specify the OS for a particular application will fade away, and the application and the x86 platform become the critical things -- at least that's what this Techworld feature argues..." Maybe a long time from now this will happen - but I don't see it happening RSN.
I've been contemplating the OS situation for years (ever since I first tried to run a multinode BBS under DOS' DesqView) and only recently has a possible endgame become visible to me: emulation.
.SYS driver like we had in the DOS days that basically handled everything.
Software needs an OS layer, the OS layer needs an abstraction layer to hardware, and the hardware needs a communication layer to all the various mechanisms (drivers, BIOS, interface protocols, whatever). It isn't just a simple 16-bit
We've seen so many emulators (Macs running Windows emulators running Mac emulators) on so many platforms, but what has allowed so many to come to the market in such a short period of time? Processor speed, I'd say.
Now that processors are incredibly fast, we're likely to see little performance increases in the tasks that 90% of the world uses PCs for: displaying text on a screen, inputting text into a form, and sending that text to a printer. Sure, Vista will incorporate a new video structure and 3D-gaming and heavy-use databases will always need faster processors, but MOST users are still just text viewers.
The next step, I believe, is creating a more realistic "standard" emulation structure for software. I think the F/OSS market is awesome because you can generally cross-compile a lot of code on various operating systems, but they still need modifications to the specifics of the OS or the hardware you're running on. What I really think will be the next big thing will be a TRUE hardware abstraction layer in the OSes (H.A.L.I.T.O.S.es?). Is it possible? I'm not sure, but it makes me wonder.
Why do people bust their asses constantly updating WINE when the OSS community can work towards a more amazing result: a standardized implementation structure that lets you write software once, and have it run on any OS that has a HAL to translate that implementation structure to what the hardware requires.
I know -- that's what the OS is supposed to do, but it fails. Yet do MOST applications really need the extreme features we have in customization (different video cards, hard drive controllers, network interfaces, etc)? Or would MOST applications run just fine (on high end processors) if they can say "Write pixel at X,Y" or "send data chunk to IP address" or "Write this data to this store" etc?
Maybe I'm talking out of my ass (I haven't programmed anything significant since MajorBBS mods in C over 15 years ago), but it seems like that is where software has to head. A completely transparent "mini-OS" that offers all software written for it a very standard set of instructions for the most popular functions. You're not going to write 3D games in it, but that's not the target market. 3D games will always push the envelope and come BEFORE the hardware can handle it. We're talking about basic implementation of basic software, yet it is this basic software that we waste billions of man-hours of labor on trying to get working on various OSes and hardware combos.
Now that I think about it, wasn't NT supposed to be the magic system? What exactly happened there? (Don't just say "Microsoft.")
I really, really, really don't care what OS I'm running on any of my machines. What I care about is:
Right now, for me, the only OS that fits that bill is linux. I seriously don't care that it's linux, but for all the reasons above, it's my choice. (I know there are other candidates, I'm only speaking for my criteria.)
In the meantime, I am grateful for MS, as a steady source of income for me as I consult and help people keep those machines running.
And then work on the LSB. I'd like it if I could even just use generic "linux" applications on Debian as opposed to only ancient versions of RedHat.
/* FUCK - The F-word is here so that you can grep for it */
The only development software that has come close to giving us platform independence are interpretative languages like Perl and Java, but that promise is still elusive. Java still seems to have stalled, and with projects like Mono, it almost seems like Microsoft may ultimately, though possibly unwillingly, get the upper hand.
The world's burning. Moped Jesus spotted on I50. Details at 11.
Leaving abstractions aside, of course the choice of Windows or *nix matters. Because of Windows' layout and the way that certain applications are built into it (IE, Windows Help, etc) there are reliability issues that cause many more maintenance-related reboots than on Unix. When was the last time you rebooted a Linux machine because the Help system in KDE needed updating?
Also, there are certain OS-specific things which usually cannot be solved in hardware (assuming you're running on the best you can afford). Need an FS that handles massive sparse files correctly? Maybe that means you need Reiser on Linux, or ZFS on Sun... (I have no idea if this is true). Maybe Windows just CANT do this well, regardless of CPU power. Do you need to hot-swap NICs, CPUs, and add/remove memory and CPU power on the fly? You probably have to go to AIX then. Didn't we just read an article about how Windows takes 5x the number of CPU cycles to start a process?
If you consider the OS tightly coupled to the app, or the app requires specific capabilities from its OS, then app concerns will dictate the OS.
I want to delete my account but Slashdot doesn't allow it.
Unfortunately, until a real interoperable, cross-platform, web-based OS comes out, we are stuck with what desktop we use. Even on the web, there are still certain sites out there that I can't visit because I choose to use a Mac over a Windows machine. Until people stop writing code that is OS specific, it will matter. God knows I am looking forward to the day when my OS is web-based!
Yes, I really think it does matter which operating system is used, and it should matter to everyone: developers, purchasers, and--unless they are very short-sighted--end users.
I seem to recollect this was the idea behind Java bytecode. Doesn't matter what OS, or even hardware, it should work. But then everyone started adding to it....
I've heard about Solaris to Linux ABI for years. I dug this up from 2 years ago: http://developers.sun.com/solaris/articles/support _for_x86.html.
So is this something new or something that now works now that the Linux ABI has stabilized? Or is this easier now that Sun is shipping x86 systems or what?
Inquiring geeks want to know the point of running Linux apps on their Sun boxes.
I think the role of languages that don't rely on a specific platform will become much more important in the future. I write my software in Python and it works wherever Python works (well, not really thanks to GTK+, but its getting there!). As these languages and toolkits mature, I think we'll start to see less of a dependence on the OS
but will we really care that much whether a machine is running Linux or Windows in future in future?
I dont care what OS is running now, as long as I can read slashdot and look at pr0n!!!!
And All I Ask is a Tall Ship And a Star to Steer Her By
Right around the time Linus Torvalds announced his employment with Transmeta, he said something to the effect that the world already had a portable byte code, and that byte code was x86.
*'in future' repeated for emphasis
I read
Particularly with players like Microsoft that will never allow applications run on anything but Windows, due to secret APIs and other such lock down features, not to mention the fact that the corporations will let themselves be locked in.
Anyway, from an ideal point of view, this would be great, from a capitalist point of view (or a Microsoft/lock in point of view) this is a terrile idea and their view on it will keep it from happening.
How is what you are describing not the Java -- bytecode, JVM model?
The browser will become more of an OS. Google is already using it like such.
"Sufferin' succotash."
I've heard that one from Sun before.
Even if every operating system could run any application written on any developement platform, there would still be operating system preferences.
Performance, dependability, Security, Hardware requirements, and even things like boot time will still drive people to prefer certain operating systems over others.
What software an OS runs is generally second in consideration to me, as there are usually equivalent packages to perform the same tasks on other platforms.
... what did you expect, something profound?
You just listed 7 reasons why you really do care what OS you run. It is impossible to separate the OS from the factors that you listed. As impossible as separating Internet Explorer from Windows.
but the programming world has a serious lack of portability. Programmers refuse to attempt to write portable code, and they cite (with justification) the lack of any libraries which allow them to do so with ease. Microsoft, Apple and Unix have three very different programming APIs, and Microsoft + Apple continue to try to make sure their APIs diverge from each other. MS being the worst...they "invent" a new language all their own and encourage the use of it by mob force.
The nuts and bolts of the world are still in C/C++, and will be for the foreseeable future. C/C++ still lack any standardized support for GUIs and threads. C/C++ are still the most flexible languages (in a non-CS professor approved sort of way).(This is not a "my language is better than yours post")
For a long time we're going to care about our OS because our programs will only run on one certain one, even if we don't really care what OS we use.
"x86 platform become the critical things"
Why? If you are going to abstract the OS why not the ISA?
IBM actually has been doing this for years with the System38/AS400.
The came up with a "prefect" ISA. When a program is installed it is converted to the actual ISA of the machine it is running on. IBM went from a CISC to the Power ISA without a hiccup.
I have wondered why Linux hasn't come up with a similar system. When you install and RPM or some other style of package the system could "translate" from a perfect ISA to the native ISA of the system you are running on.
Sort of like Transmeta did but do it at install instead of runtime.
Think of it as a just at install compiler vs a just at runtime compiler.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
For the those clueless people, like myself, RSN does not stand for the "Royal Singapore Navy" or the Religious Science of Nashville but for "Real, Soon now" which to the initiate could alternately mean "Real Soon, Possibly Never".
I guess you need to be a science fiction fanzine fanboy or a regular reader of "Chaos Manor" to know this. Tribal Knowledge...
Your browser does not talk directly to hardware. It has very limited ability to control devices and that control is provided by the OS. Think about what you are saying. There are a wide variety of services that are provided by the underlying OS that your browser has no ability to do. Your browser does not talk directly to your hard drive, or your graphics card. It leverages the existing windowing environmnent to display information. It communicates with the OS to handle user input.
They will most likely suffer all from the same (protocol) bugs, be vulnerable for the same attacks and ultimately be virus compatible. Diversity is good. Lets just have two or three major operating systems in the future, probably running the same applications, but not on exactly the same code base on a nice interactivity layer.
My wife's sketchblog Blob[p]: Gastrono-me
I have to wonder what Sun is thinking just ignoring the conflict between their CDDL and the GPL.
http://www.gnu.org/philosophy/license-list.html
Does RedHat has some kind of magic wand that makes all of the license problems go away? Is there a way around the issue I'm not aware of?
I'm interested in knowing how this would be feasible.
http://www.maxineudall.com/2010/02/should-economists-be-sued-for-malpractice.html
Our primary concern is to use software and not all software is going to run on all platforms so we choose the platform that runs the software we want, very redundant. Until this changes the status quo wont change. And a lot of people aren't going to move stuff to linux because it's not worth the expenditure, remember the nightmare ID software wrote about supporting a huge number of unstandardized distros/configurations and how problematic it was for them. Similarly a lot of stuff isn't going to be ported to windows for whatever the reasons. But you cant just use *any* OS and for the forseeable future that aint changing.
This sounds a lot like the promises made by SUN circa '97 when the Java propaganda machine was in full swing. Though I do think this sort of cross compatibility is more attainable then the goals originally set by the Java project--I commend the effort.
Whoever wrote this was obviously hallucinating. As long as Microsoft continues to make applications for Windows only, the OS will matter. It's called a monopoly: it's the key to Microsoft's success and they'll do almost anything to keep it that way.
Yeah... I think maybe you're wrong. When an OS uses device drivers, it's essentially creating a Hardware Abstraction Layer... and All software, and programming languages are moving towards more abstraction. The idea that a program will run across multiple platforms is a testament to the abstraction of the hardware, and the generic features of the OS (threading, file system, etc). Maybe the point is the UI of the OS is going to become more important, as we run out of features to abstract. Heaven knows we programmers wouldn't mind some things being simplified... (Asynchronous sockets anyone?) Don't get me wrong, I love c++, but the OS is getting abstracted away, and that's okay.
Thats exactly what Inferno (a plan 9 derived OS) does already.
Limbo code is compiled into architecture independent byte code which is then interpreted (or compiled on the fly) on the target processor. This means that any Inferno application will run identically on all Inferno platforms.
...which is why you will soon see MS doing things to intentionally break packages like Qt. MS knows it's coming too, and they will have no real way to fight linux then.
Right now, the only thing keeping most people with MS is software selection. Most industry applications are written for windows, non-cross compatible. As more and more companies start using portable windowing libs, we will see a take off in linux usage. It's really a no brainer: You need an os on 100 computers to run your application. Do you choose the OS with a price tag of 100 bucks, or the one with a price tag of 0, that's easier to maintain than the one with the 100 price tag?
Mod me down with all of your hatred and your journey towards the dark side will be complete!
First, Java, while not as successful as Sun hoped (what is?) hardly "failed miserably." Prior to C#, what other options were there for object oriented, garbage collected high level languages? People used C++, which, while in some ways stronger than Java, is hardly comparable. Java (partly) filled a void that, hopefully, C# will fill in an even more convincing way.
Second, machine independent bytecode isn't really the crux of the issue, I don't think. I say this for two reasons; first, x86 is pretty much the standard at this point (I say this from a G4 Powerbook, but with Apple and Sun shipping x86 machines, the desktop, workstation, and much of the server market seems to be going x86); second, any language with cross platform libraries and compilers is "write once, run anywhere;" VMs are only interesting (in the context of compatibility) insofar as they are "compile once, run anywhere."
The OS is already a hardware abstraction layer; it allows you to ignore what kind of I/O devices someone has, what size their disk is, how much RAM they have, and so forth. The technology to write code that works across multiple platforms was realized decades ago, and we use it daily. The only reason we're still talking about this is essentially an economic one--while each OS is an implementation of a standardized hardware abstraction layer, there are simply multiple OSes, which means multiple standards. The obvious solution to this is to be able to a) run multiple standards on one machine (either by running multiple OSes or by an OS that is compatible with, or emulates, the syscalls and libraries of another OS) or b) use a higher level language (like Java) that has its own standard and its own abstraction layer for each OS it is compatible with.
In other words, standardizing platforms is easy; getting people to agree on a given standard is hard. Being compatible with multiple standards is a good bit less hard, and we've been doing that for at least a decade as well.
failed? how so, it's everywhere, from browsers to enterprise multi-tier architectures. sales of java-based application server infrastructure (weblogic, websphere, etc.) is growing at triple-digit rates each year. Of course, it's not the single one world standard Sun hoped for, but its sure not dying or stagnating. Sure, in the small and mid range scripting langauges are popular as a simpler way to get stuff done, and I hope that new virtual machines for these langauges in the future pose a real threat to java/j2ee. What else is there, CORBA (stagnating and dying for sure)? dot-net ?
Then over here, we have the one bad, sulky operating system. Who is this making these horrible noises and faces at everybody else over here in this dark corner? Why, my goodness, it's Microsoft! What's the matter, Softie, don't you want to play nice with the other systems? Oh, I see, you want all the other systems to *DIE* so you can be all by yourself. OK, I guess that's a "no". Well we're going to go on having our little party together and maybe you'll get the hint and just go away...
But I still don't see it real soon, even if MS suddenly does a Grinch and grows it's heart three sizes bigger and decides it's going to play nice after all. Witness the fragmentation even within an OS's community (distro vs distro, desktop vs desktop, editor vs editor), and I don't think you'll get the vi/Gnome/Debian bigot and the Emacs/Fluxbox/Slackware bigot to say "Eeeeeh...what's the difference?" But then again, my crystal ball *is* due for a polishing...
Hi all,
;)
I don't know why anyone would think OS installations will not matter. The facts remain that despite the platform differences, the old mighty dollar rules the world. I don't care if it's Windows or Linux or if it's running on an x86 or PowerPC... I do care how much it costs though. I mean, a Windows license will ALWAYS cost you a few bucks, whether you're VMware'ing or not... or else it's piracy right?
Let's think about this for a second: automotives.
Think of the automobiles as a platform (x86) and the OS is the drivetrain. Will there ever be 100% seperation from our great oil-based engines? Of course! Will there ever be full independance from that same engine, not really... dependance is driven by the masses and despite how good water-driven cars are for the environment, they aren't a replacement for those who drive for speed and leisure.
The application might become independant, but the choice will always be left to the consumer and the consumer is - realistically - so multi-faceted that there will be no mainstreaming. Sure we might see changes in trend, but never full independance.
I'm sorry man, if you think a Utopian Star Trekkie society will ever happen, you're dreaming in technicolor.
Just my 0.02$
Jacob
The operating system will continue to become less and less important as modern operating systems become closer and closer to being mere variants on the underlying Unix design that has taken over the market.
When an OS is made with some feature that Unix can't duplicate, while retaining security and stability, operating systems will again matter.
It seems to me that, until we can make document file formats (think MSOffice versus OpenDoc) not matter, talking about the whole OS not mattering is a bit premature. We live in a time when we discuss at great length file formats and the future readability of Word documents. Solving *that* problem (any word processor can figure out any other word processor's file format) would appear to be a much simpler problem than abstracting the OS. Walk, then run.
The more you regulate a company, the worse its products become.
I just purchased a nice cs101 book for java 5.0.
Why?
Because my computer science department wants to standardize on java in addition to c++. Why standardize on Java? Because its the most sought after language in business.
Don't believe me? Go to www.monsterboard.com or some job site and look at jobs in your area. Java is the most sought after language with c/c++ second, and perl third.
Java is essential for any big ecommerce servlet. Php is not there yet and neither is c#.net in terms of scalability and maturity.
Java is a success.
http://saveie6.com/
Java, while not as successful as Sun hoped (what is?) hardly "failed miserably." Prior to C#, what other options were there for object oriented, garbage collected high level languages?
Um... you mean apart from Smalltalk, Python, Dylan, Common Lisp, Objective Caml, and the dozens of other object-oriented garbage-collected high-level languages that existed before C#, and, in several cases, before Java either?
Not to mention Objective-C and C++ itself with the Boehm garbage collector...
So far, with very few exceptions, Microsoft has a way of tainting anything that might be considered a standard for information interchange on the data side. On the app side? I have yet to see an implementation of anything but stuff that works on a Microsoft platform save a few MacOSX apps... anything "universal" quickly becomes "universal only if you're on a Microsoft platform." And as long as an OS is considered a marketable product, they will do everything they can to keep you locked in with their apps and their OS.
The 'dream' of platform independant code is still just a dream. Java keeps being 'almost there' but it still just doesn't perform the way I think it should. Or maybe the problem is just me -- I just can't imagine it... that is the role of the OS being minimized to the point that it doesn't matter.
the need to specify the OS for a particular application will fade away This just in! Bill Gates says that Windows will start supporting OSX and Linux programs. In other news, people all over the country are being hospitalized as exhausted pigs plummet from the sky.
The only way to tell the difference between a hamster and a gerbil is that the hamster has more white meat.
We can now run Solaris 10, running Linux compatibility, running WINE, on a single machine, and thereby run most software - only MacOS apps remain to be included. Each compatibility layer eats some performance, but we can run it on a Niagara T1, for a hefty price. When these apps have simple IPC, across the OS divide (like local socket messages), there will be huge demand for multiprocessor workstations that can run any app. I expect Intel will have the demand for their customers first, and are positioned with their leadership in massive multiproc servers to deliver to the lower end, too. And IBM needs to flex their PowerPC muscle, both to reclaim face lost by Apple's defection to Intel, and to deliver apps to all those OSes run by IBM's various customers. I expect to see such "power user" mP workstations targetting that market by 2007.
--
make install -not war
You know how sometimes they make X-rated movies and name them after Hollywood films.. like "Saving Private Ryan" becomes "Saving Ryan's Privates"... well, do you think anyone ever considered turning "Tron" into "Pr0n"? Think about it.. machines having (byte)sex.. Think of the marketing... "Pr0n - where the only viruses are sexually transmitted"..
Yeah, and personally, I use Python and OCaml quite a lot more than I use Java. But--though I wasn't explicit--I meant languages with industry acceptance. Sure, Galois might use OCaml, Python gets some use in the Web, and Mac developeres use Objective C, but none of those are languages that enjoy wide acceptance, disappointing as that is. None of those have anywhere near Java's penetration, making Java quite a bit more successful than the original poster claimed.
;)
Also, in my experience few people actually use the OO features of OCaml.
I'd go a step further (higher). As more and more things are moving to the Web, and as web application are getting richer and richer, I'd guess that in the next 5 or so years the OS will become quite irrelevant to the end user, who will access a lot more "desktop" applications through a web interface.
Simpy
you may not care which OS you are running if the apps you like run everywhere, but someday,somehow, for some reason, you will want to be able to get to the source code - you will want to not be locked into choices that some corporation makes for you, or at least to be able to read over that code to make sure its doing what its supposed to and not too much more.
if you really hate some choice Linus makes, go fork off your own branch -- if you don't like a choice Bill makes, or Steve makes, well, you're sort of stuck.
-- Talk is cheap. Supply exceeds Demand.
Talk is cheap. Supply exceeds demand.
This used to be a major selling point, as all the mainframes and minis were wildly different, and IBM minis need porting even when moving from system 3 to 34 to 38 to AS400. You could write your code once for Unix, instead of porting it every eight months as the vendors messed around with you.
--dave
davecb@spamcop.net
``As Sun announces Solaris support for Red Hat Linux applications, the need to specify the OS for a particular application will fade away''
...) binaries for ages. Has that taken away the need to specify the OS for applications? Java promises to run the same binary on all major platforms. Has that caused applications to not be bound to any particular platform?
Oh, come on, don't be ridiculous. Don't pretend you don't know that GNU/Linux and Solaris are _very_ similar to each other, compared to Windows.
The BSDs have been able to run Linux (and SCO, and HP-UX, and SunOS, and
Please correct me if I got my facts wrong.
Read ALL of the first page of links
http://www.google.com/search?&q=what+is+the+diffe
please.
Java has nothing to do with JavaScript ant the J in AJAX is JavaScript
--meh--
The OS matters and MS is making big headway in that front. They are doing it right in the face of all their naysayer's, and the irony is those self-proclaimed geniuses are missing what's happening right in front of their face.
For example, the Apple crew touts being first to market with features like indexed searching as reasons why they will beat MS. All the while MS is quietly getting XP Embedded in ATMs and Cars. MS can ad a search in an update (e.g. Vista), but Apple isn't going to power any BMWs with OSX 10.5, but MS already does with XP Embedded.
MS is diligently working with GE (one of the worlds largest companies, 1st or 2nd place) to advance home automation, and integrate with household appliances. Home automation is the FUTURE of computing, period. MS is working hard to penetrate the Home Media market (media center, Xbox, IPTV, etc.), the phone market, and many other fronts. You can say they won't make it, but they are doing a hell of a job to date. Look at the next generation of television, IPTV. MS is starting to get so far ahead of everyone else it's getting sad. Take some time and watch the demos, they are very impressive. The zealots keep saying it isn't true, but they have been saying this since Windows 95. They were wrong then, and are wrong now. Apple and RedHat don't have any big exclusive deals with Verizon or SBC to power IPTV, but MS does. Those deals are getting fiber brought to everyone's doorstep. IPods are cool, but they are a novelty device and they aren't going to power the home of the future, but at the current rate, MS will.
Phones: Mobile 5 blows the doors off of all business class phones today with the exception of RIM's. With the exchange integration, RIM won't be able to compete... MS phones will support Push with more then a 100,000,000 people overnight. RIM is struggling to top 5,000,000. Linux phones are a nice idea, but they don't offer push, and the ones at present can't hold a candle to Mobile 5. Then there are PDAs. MS has crushed Palm, and Nokia's hail marry is neat, but won't beat Mobile 5.
The bottom line is if you like MS or not, they are growing in many areas that aren't being publicized. The naysayers are a sleep at the wheel. The platform of the future isn't going to come from Google, Sun, and certainly not Apple. MS is getting in at the ground floor of these industries and they have far more money to fight off the others.
The platform matters. I know so many of you are out of your mind pissed at me for writing this. I'm sure some of you will have some wiki-pedia posts to try and make your case, or some blog of an anti-ms zealot. And to you I say; it doesn't matter if you use a Windows computer for surfing the web or not, you aren't going to be escaping MS powered operating systems anytime soon. History will prove me right.
Think of it as mobo vs Java.
Or Microsoft vs Bluetooth.
Or any number of different battles where hardware vendors are ideologically divorced from software vendors. Until there's another bridge OTHER than operating systems, there'll be a need for OS makers and OS characteristics and architecture will continue to be very much relevant.
We make flexible hardware designs so as to sell to as many audiences as possible, rather than make monolithic, single purpose machines. Software, on the other hand, seems to want to be divorced from hardware, sending only instructions that make the system come alive for a stated purpose.
The hardware abstraction layers, drivers, and other linking/interpreting mechanisms between hardware devices and software's desires mandate OS's to do the work they were intended to do: clean up, registration, and membership within the state machine as described so aptly by von Neumann.
It's goofy to think of a world without an OS... except in dedicated devices.
---- Teach Peace. It's Cheaper Than War.
Ten or so years ago it was possible to run Windows applications (via Wabi) and Mac software (via a product with an unmemorable name) on top of SPARC/Solaris. It was possible to run Solaris apps, Windows apps, and Mac apps simultaneously on one system. Unfortunately both Windows and Mac apps were constrained by the speed of the underlying hardware and the need for processor emulations. With Sun and Apple now building X86 hardware, is it time to re-introduce those tools?
Its hard to express how little enthusiasm I have for this. I mean, the various BSD's have had Linux binary compatibility layers for what, 5 years or more?
;-)
So Sun's mightly Solaris is finally catching up to a dying OS? Ouch.
Rob Pike's Systems Software Research is Irrelevant seems to be on the topic.
The reason why C/C++ lacks any standard way of doing threads or graphics is precisely because they were meant to be portable. That's where libraries come in. To do all the specialized stuff that varies according to the hardware being used. You probably wouldn't use the same graphics libraries on a digital computer watch that you would on an animation workstation. Likewise, threading is going to be much different on a Z80 (which is still a widely used CPU) than on a PowerPC. Hardware has different capabilities, and while it might be nice to think that you could have a general interface to those capabilities that is standardized and transcends different architectures, the truth is that sometimes the differences require an altogether different approach and hence, libraries that reflect these approaches, in order to get the job done.
Doesn't anyone remember the days of installing DOS BEFORE installing Windows? I am fairly certain that Windows is still just a bloated application bundled on top of and embedded into an old out of date DOS version that has been patched and patched over the last 20 years. Isn't that what they tried to do with IE? Didn't they try to convince us that it was part of the OS? Nobody talks about X being an OS... It's the same situation.
I believe the solution is simple: distribute software in a form that can easily be transformed into native code.
What I have in mind is something like parse trees in some standardized format, which would then be compiled to native machine code before the program is run. Couple that with a standardized API (shouldn't be too difficult for most stuff), and you've got machine-independent code that will run at full native speed once a simple compilation step is taken (simple, because lots of analysis and optimization can be done before code generation).
I have a proof of concept sitting on my harddisk; currently the parse trees are interpreted and the language is very limited in scope, but I'm working on x86 and PowerPC code generators, and the language can be extended; it just takes time.
Please correct me if I got my facts wrong.
The Jargon File explains many of these terms, has some interesting notes on hacker culture, and is sometimes plain funny.
Please correct me if I got my facts wrong.
Folks are going to think this comment is rather blue sky, but the only thing which matters is your Information and *Access to your Information*.
A catchy term for this could be called "Info Spaces". (I didn't invent that.)
Imagine you have a computer tucked away in your basement which only exists to hold any and all information you have ever referenced or created. (Or you could use a public utility.)
Computers in your house let you access your Information, as do wireless laptops, networked screens, and PDA's..
As does your cell phone or PDA when you are away from home..
As does a screen at the library, work, coffee shop, or school.
As does an Info Room at home, work, the airport or hotel (full video conferencing.)
As does a regular POTs phone at the street corner (If any still exist).
The application really will be a slightly important thing as it provides an interface to the information you wish to manipulate. As all data in this world will be Open Format in this fantasy world (with translators for outdated closed formats.) You will have your choice of interfaces [applications], including fetching your favorite program from your home server written in universal executables (or even outdated binaries) which are translated on the fly to whatever terminal or server your are accessing your Info Space from.
The whole Computer, CPU, OS, Network, Application thing is utterly meaningless.
Only your Information and it's context are important.
What IS required for this to exist is a secure, reliable, failsafe, private, non-IP encumbered way to blat these Info Objects and their relationships all over the globe without exposing anyone to invasion, risks, or corruption of their INFORMATION.
I guess you'll also need the ability to perfectly identify an individual as well. (Oops.. there goes privacy?)
I do realize that is an unattainable goal and against the corporate and even government interests.
But it is an interesting goal nevertheless.
Now please do tell me exactly why I'm wrong...
It's easy to abstract across operating systems as far as file access, networking access, and so on.
But a modern OS draws windows, dialog boxes, buttons,... and each program interacts with a host of other programs via any of a number of methods. Getting the same program to do DDE and OLE on Windows and the equivalents on Mac can mean radically different architectures.
I agree. Regardless of what some people say Windows is an inferior development platform. Most cross platform code these day's is written on the Unix side and then ported to the Windows side. I mean for christs sake why can't I use a cout statment with a qt based application in Windows? WTF? If I sound frustrated that's because I am. Normally I am a happy developer coding along in Linux, but every month or so I must take a week of my life to port this crap to windows because most of my GD users are to F'in lazy to use a real OS.
MOD ME DOWN...my Karma was just about even again.
So as soon as you windows users quite using that damn OS the sooner the world of software development can move forward. Until then expect second rate application on Windows.
what?
Slashdot is clearly behind the curve on this one.
Point #1: Embedded devices
Do you know what "OS" is running in your digital camera? Your DVD player? Your MP3 player? Your GPS system? In the majority of cases, the answer is no.
Point #2: Web applications
Google search, Google reader, gmail, Flickr, etc. They look the same to me whether I'm running Linux, Unix, OS X, BSD, etc.
Point #3: Cross platform apps
Python coding and development feels the same on Windows, Linux, and OS X. Makes no difference to me. Ditto for editing with vim. Quite a few other languages and applications are identical, too: Inkscape, The Gimp, etc.
This one is so obviouse (sic) its (sic) as if you didnt (sic) even read it.
Indeed.
Hey, I finally got my first freak! Took you long enough!
Yes, Java-the-platform is in a way its own OS, but on the other hand, Java sits on top of whatever native OS. How about thinking about it this way: I don't have to clean format my hard disk and get all new apps if I install Java. Java may be its own API on top of an OS, but not only is it not tied to a particular native OS, it doesn't whine, fret, or threaten if it is not your exclusive API, and it plays with the other kids.
I can have Java, Python, Ruby on Rails, and even Mono coexisting in the same partition on top of the same OS. They can interoperate through files. While this is not always politically correct from SUN's way of thinking, I can also interoperate Java and C++ in both direction (Java calls C++ or C++ calls Java) using the JNI. I can interoperate Python and C/C++ and on Windows I have Python hosting ActiveX controls to do visuals which in turn can call Java signal processing plug-ins -- it is sort of like the Far Side Cartoon of the cops who find a man swallowed by a crocodile in turn being squeezed by a boa (perhaps a python?) and are required to sort that mess out.
While there is a thing such as "Internet time", I think there is a 10-year rule in effect for the maturation of major pieces of software. From the time of Windows introduction in the mid 1980's to the time of Windows 95, COM, and ActiveX, when Windows acquired the features that made it what it is today was about 10 years. Java is around its 10th anniversary in 2005. Maybe Java/Swing has acquired enough features and enough performance enhancements to be taken really seriously.
... about cross compatability. If it becomes possible to write a program that can run on any machine, then all the problems we have now will only be amplified.
Take the irish potato famine as an example. Because of their farming methods, all the potatoes they were growing were the same genetic type. Because of this, when a potato virus went around, since it could infect one, it could infect ALL of them. Hence, all of the potato crops got ruined.
The same would happen with computers. What largly protects *nix and OS X from viruses (Hell, I haven't even needed to install an antivirus on my mac) is the fact that most viruses are written to work on Windows. Now, if a virus on windows could infect them too, suddenly every computer would become a target (there is no where to run! hahaha!).
On a side note, If a push for super cross-compatability starts to form I can bet you that Microsoft (and maybe apple) will be against it but the AntiVirus companies will be for it.
Speaking is NOT communication
It is just a really crappy emulator. The reason that you don't see multitasking in the JVM is the same reason you didn't see it in DOS. Everyone is compiling their code to run in machine language (Yes, Byte code.) The JVM is following in the footsteps of the "IBM PC". An increadably crappy design that after years of manpower, and millions of dollars is finally getting to a point where it is good. (If you haven't looked at it in a while, it's time to reevaluate)
There is no reason that an OS couldn't be written for Java, and that OS could support multi-tasking. One thing to keep in mind is that the target audience for java, and the limitations of Java don't lead to the kind of enviroment that would encourage a company to write a full OS to run on it. Besides, since the platforms that have JVMs on them can load multiple instances of the JVM, what little incentive is left disappears.
Shortly after Java was introduced, I would always laugh about the whole write once run anywhere claim. Java was a crappy emulator that was inconsistant across platforms. One program would have three different outcomes on three different platforms. At the same time you could get something like a C64 emulator that would run on 20 different platforms, and get exactly the same results every time.
I believe the biggest hurdle to Java compatibility was that they wrote the emulator first, and then tried to make the processors after. This meant that when one implementation behaved differently than the other, you could not point to the physical reference platform and say, "look, this is how it runs or real hardware." Not suprisingly the Java processors never took off
We'll agree on that one. The diversity of hardware platforms means that OS development will always be a moving target. And the fact that platforms aren't very nicely optimized for application performance given hardware architectures is a disconnect that will dog us for ages.
Still, the GUI gave a unified methodology to apps that was an understandable metaphor for both coders and hardware guys. Windows, for all of its problems, cut away the mind-numbing printing and communications difficulties in i86 hardware. MacOS was too brittle; it was the Mac-way or the highway. In the middle was too little too late.
The DIY of the late 70's and early 80's led to this. I wrote some of my own OS variations before Linus was out of diapers. But they were primitive, for primitive hardware. So many languages, so many platforms, so many diverse needs. OSes will take centuries to go away until a new model is invented for non-monolitic/state-machine-dependent hardware. SciFi. I'm waiting for it, but it'll come long after I'm dead.
---- Teach Peace. It's Cheaper Than War.
I constantly switch between Windows and Linux (so that I can test the apps that I write on both platforms) and I usually hardly notice what OS I'm using. I'm using all the same tools on both operating systems already (although not the same binaries):
- gvim
- gcc (on windows from www.mingw.org)
- blender
- gimp
- OpenOffice
- xchat
- bash (on windows from www.mingw.org)
- firefox
- thunderbird
- and so on...
Greetings,
Project Manager of Crystal Space (http://www.crystalspace3d.org). Support CS at http://tinyurl.com/cb3x4
Holy shit, your comment began with
Yeah... I think maybe you're wrong.
Lumbergh, is that you....???
Java is essential for any big ecommerce servlet.
s/servlet// && examine 'amazon.com' && say that again;
(Hint: Amazon.com OBIDOS = HTML::Mason + mod_perl)
Also, s/amazon.com/ticketmaster.com/ && remove HTML::Mason for another test case.
You see, this "Java is the only option" nonsense is nothing more than a meme started by people like this:
"There won't be ANYTHING we won't say to people to try and convince them that OUR way is the way to go. " --Bill Gates
But since you're just at CS101, I don't expect you to be anything but clueless in this matter, so don't feel bad.
autocad came from unix back in the day tyvm
no, programmers who actually want to not live in their parent's basement use the language that will keep them employed.
i've been programming java for quite a while and it's not as bad as you language snobs claim it is. It reminds me a lot of the folks that became linux haters when it became popular. it's not high school anymore guys, you don't have to hate the popular folks anymore.
PHP is the solution of choice for relaying mysql errors to web users.
Diversity is good. Lets just have two or three major operating systems in the future, probably running the same applications, but not on exactly the same code base on a nice interactivity layer
Why is the second paragraph (2 or 3 OS) better than the first (having applications run on any OS)? Is '2 or 3 OS' more diverse than 'any OS'?
This is a pipe dream. The OS will continue to matter as long as there is money to be had by locking customers into a specific platform. As odd as it sounds, many customers WANT to be locked in to a specific vendor.
.NET. Despite the propaganda from Mono, .NET is a Windows-only platform, and will remain so for the foreseeable future. Mono is merely the Wine of the .NET world: you'll hear stories about .NET apps that will run on it, but try as you might you can't get any of the ones you need to run under it. What good is a crossplatform backend when the front end GUI is still inextricably tied to one OS?
Platforms will matter because your applications will remain platform specific. The big push in corporations right now is to migrate everything to
If major web sites and applications are still coding for specific browsers, my hopes for a cross-platform world where OS doesn't matter are very very slim.
A Government Is a Body of People, Usually Notably Ungoverned
Wine has been trying to give us this world for some time. They've taken us a certain distance toward this destination as well. If it ever becomes "perfect", then one big part of that is done. If Cygwin ever becomes "perfect", then the x86 platform wil pretty much be OS-asgnostic to run nearly any app. DarWine can help bring MacOSX into the fold, and perhaps there will be something akin to cygwin to allow Windows to run MacOSX-x86 apps as well.
That's actually somethign I'd liek to see happen. I don't want to NEED any particular OS to play my favorite gaem or run some EDA tool I'm intersted in. I want to choose the best app for my particular needs, and I want to choose the best OS to run it on. I don't want the choice of the correct app force me to choose an OS I'd otherwise prefer to avoid.
Being an old Amiga nut still, I'd love to see something similar to Wine, that would allow me to run MacOSX-ppc apps and games on my PowerPC based Amiga machine. Sure, I've heard great things about OSX, but the realities of requiring certain apps for general use made me choose a WinAMD laptop instead of the iBook I pined for for many months. The Amiga is a toy to play with even more than the iBook would have been, but as I already have the thing due to my rediculous obsessive desires, it'd just be cool to run someone else's PPC apps on my oddball PPC hardware and OS. Of course that won't happen, but the situation described in this article doesn't necessarily need to be specific to the x86 platform.
I'd also think that if all popular APIs were brought to all OSes, then a simple compiler flag could give us an x86 binary to run under any x86 OS, a different flag could generate a ppc binary to run on any ppc OS, another flag could generate an Arm9 binary to run on any arm9 OS, etc. with all binaries coming from the same app/game sources.
I'd also love to see the ability to change out one implementation of an API in a particular OS for another implementation of the same API for that same OS. If for some reason I might decide I'm not fond of Microsoft's implementation of tcp/ip, I'd like to swap the whole thing out for Jim-Bob's implementation of tcp/ip for Windows as one possible example. Kerberos thoughts anyone?? Or if I don't like George's implementation of sdl for FreeBSD, I'd like to be able to change out the whole thing for Sam's implemtnation of sdl for cygwin. Or whatever other combination of OS vendor and API vendor might ever appear that might work better than the default install for that CPU/OS.
What a world that would be, I'd love to see it someday.
It depends. If you are a developer and considering Java to support a shrink-wrap product, one is perhaps fussy about the user experience. If you are developing apps for use by students in your own class at the U, for a small community of colleagues, or even developing a commercial app for a niche user community (consider all of the butt-ugly Visual Basic apps), precise look-and-feel is probably a minor issue.
The reason I am suddenly impressed with Java is that after 10 years of looking at it (OK, I developed some non-GUI apps in it), a requirement came along for an x-ray image viewer. I was under the impression that displaying a gray-scale image from computed pixels was a real big deal like it is in the Windows API with CreateDIBSection, but it turns out that Java now has this BufferedImage class that does the job simply and cleanly. Create a BufferedImage, set pixels wholesale with setRGB(), and drawImage() the BufferedImage to a Graphics object in the Swing paintComponent method. It also turns out that copying that image to the system clipboard is equally simple.
BufferedImage may have been around for a while, and imageFlavor (for the clipboard) has been around since Java 1.4, but these things haven't been around since day 1 sometime in 1995.
Anyway, the app my colleague and I coded up in a week (there was also a learning curve on layout managers) worked just fine on Windows and just peachily on Debian and Solaris. Oddly enough we hit some roadblocks with OS X, that product that is supposed to be much more Java, image, and clipboard friendly. One issue was setting the transparency values in setRGB() -- not an issue on OS's which don't think there is a need for transparent images, but our x-ray picture was invisible initially on OS X; a second issue was a mangled paste into a native OS X app -- turns out Java 1.5 Release 3 for OS X came out last week Monday PM and the version of Java 1.5 I was using was installed last week Monday AM.
Writing an image viewer where you compute your own pixels has always been considered an advanced topic in the GUI business only of interest to game programmers, and after two weeks I have such an app running on 4 OS's. It dawned on me that this could be the death of the Windows monopoly.
Yes there are hangups. My one pending UI gripe is the Java JFileChooser "Files Open" dialog widget. On Windows, it takes seemingly forever to come up the first time you do a Files Open -- on Debian it just pops right up, so much for Linux having second-class Java VMs. The Windows Files Open has text selection defaults that make it efficient to navigate directories and select files with the keyboards while the Java Files Open is just plain stupid and maddening.
But consider my 10 years rule. Java came out in 1995. Since there were other ways to do GUI, people didn't put up with Java Swing shortcoming and walked away. But 10 years later, I am telling you that Java Swing has had perhaps enough improvements made (there is an enormous amount of help on the Web getting up the layout manager and other aspects to Swing learning curve) that it deserves another look.
I agree with what you said. I also agree with what I said, :-). Windows is an example where it has, for a good while, been entirely impractical to avoid targetting it due to its ubiquity in the market. That will change, in time. All things do.
There are between 10 and 20 computers on a car. Windows XP does run on some - the non-critical user interface ones. The real critical ones cannot run windows because it is not hard real-time. (They can't run linux either)
There are others that are not hard real-time, but don't interface with you directly either. Any clue what they are running? I didn't think so - nobody is telling. (You might know what one particular company runs on one or two particular computer(s), but that is all. Ford does things different from GM, who is different from Honda who is... (though of course with partnerships you will often find one brand's parts in a different brand which would include computers with the OS)
I'm sure there is one production car somewhere with a computer running linux. Odds are there are many - in fact I wouldn't be surprised if most cars had a computer running linux. (Likely violating the GPL, but that is a different story) Linux is free, and developers know it. Even for the big car companies money is important. Saving just 1 dollar on the cost of a car can add up to millions over the life of the car, and Microsoft cannot match the price of linux in the long run. (The car companies need computer experts anyway, so linux experts are just a line item with no additional cost other than time - which is spread over millions of cars)
Microsoft Windows overall makes up less than 50% of all operating systems in use. PCs are not the only part of the computer world, just the one with the most money. Most computers are embedded in something else and you never know what OS is running. (Often it is just a dos like boot-loader written in house)
Code for Linux will often run will little changes on *BSD and Solaris (and other POSIX systems). However often autoconf or the like is required to deal with the minor differences. (Linux doesn't have strlcmp, to name one common limitation) The remainder tend to be things that OS specific anyway (ifconfig). Unfortunately there are critical places where there is no standard and should be.
When you move to OSX or BEOS you discover that the windowing system isn't X, and that drops compatibility way down. However you can use qt or other libraries to deal with these differences - if you care to.
There's really no reason for C/C++ to have any "extended" libraries for these other functions, because such libraries already exist. They just aren't part of the ISO C/C++ standards.
The problem is there's a lot of them, and they compete with each other. For instance, to do 3D graphics, there's OpenGL and DirectX. To do windowing/GUI stuff, there's MFC, Aqua (or Cocoa, or whatever it is on Macs), Qt, Gtk+, Motif, etc. To do sound, there's ALSA, ARts, esound, helix, gstreamer, xine, etc.
It would be theoretically possible for the ISO to pick one of each and make it part of the C/C++ standards, but this would be a fruitless effort if most of the people using these languages ignored the new standards. I'm sure there's many examples of well-meaning standards committees choosing certain technologies and declaring them to be standards, only to have everyone decide they don't like them and ignore the new standards, leaving them to lose all importance.
So, in my examples above, you may have noticed many proprietary, OS-specific libraries, such as DirectX, MFC, etc. These obviously can't be used in any standard because they're not cross-platform. There's not much point to the ISO getting involved if they're just going to tell everyone to use MS software, since Mac and Unix have significant userbases. So, they'd have to pick one of the cross platform libraries, like OpenGL, Qt, Gtk+, etc. Well, these libraries directly conflict with Microsoft's own libraries, and worse, they remove the vendor lock-in that MS has. So MS certainly isn't going to accept such a new standard, and since they have a huge marketshare, them not accepting a new standard will have the effect of it not being used.
Maybe one day in the future, certain cross-platform libraries could be standardized on, but today, there's just no point as long as there's an abusive monopolist who doesn't want anyone using any software other than their own.
The answer of course is software. Legacy software keeps us tied to our old systems, and new software gives us features we need. MS does a really stupid thing when they don't support previous versions of software well on newer versions. I'm sure they do it in the name of short or medium term profit gains to sell more software... and it has worked so far. But they can't do that forever.
As for emulation, have you noticed how much more resources each new version of Windows needs? When the push the limit of the new hardware, it's going to be hard to emulate until it's at least 2 - 5 years old.
As for Java... I'm sorry, I know people tell me all the time it's great, but I have yet to have a Java app that really impresses me overall. I think it's great for producing software for multiple platforms, and it has a nice API, but it really isn't that great from a consumer perspective. At least I personally haven't used one Java GUI program that doesn't take up more memory and CPU than its alternatives. (Plus, Sun needs to get to making that 64-bit java plugin for Firefox.)
"he drew his sword Ringil that glittered like ice... and he wounded Morgoth with seven wounds..."
A o(n) algorithm is an o(n) algorithm. It doesn't matter what the language is. Unless you get into something radical like a lisp based functional langauge its pretty much the same.
The one odd thing about java I noticed so far is the lack of pointers. I wonder how you can create a dynamic structures without them? I did some practicing with C++ and pointers are essential as well as call by references to create any dynamic structure. I see there are custom libraries in java for things like stacks but its nice to write your own rather than use a premade api. There may be another way but for now I am just learning the basics right now in java.
But really I just want to learn to program. I cam apply it to any language and the HR weenies like code you can show them in a language required for the job. The market is hot for java for many server based apps so I am going to use java for my software and maybe some c. Perl is nice but I have seen my share of ugly code and my fear is my first jr programming job will require me to decipher the ugliest things known to man.
but really C like programing styles can apply to any language once you are know what you are doing. Its similiar. The only thing you need to specialize is learning api's and libraries which employers like.
http://saveie6.com/
You're wrong because certain work relies on hardware, such as games, development, and (as you said) anything relying on identity. Accounts Receivable can be done as you describe, but not much else. Oh, and Accounts Payable.
In Soviet Russia, hot grits are with Natalie Portman and all your base are belong to us.