Assumptions and Operating Systems

2 points by dasmithii ↗ HN
While undertaking a somewhat substantial project on the systems level, I've become uncertain about standards of operating systems. For example, almost every OS provides a C compile (if they don't, I won't bother). However, other language interpreters/compilers aren't nearly as ubiquitous. Python has become popular, and large projects such as Red Hat have embraced it, but can I assume its presence while designing cross platform software?

What about other languages and libraries? Considering all mainstream platforms (Unix, Linux, Windows, OSX, Android, iOS), what compilers and libraries are found within each?

Forgive me if I've neglected literature. My knowledge on this front is fairly limited. Links for further study are welcome.

4 comments

[ 2.5 ms ] story [ 20.7 ms ] thread
At the systems level, C compiler and POSIX API are pretty much a given. Once you venture beyond that the platforms start becoming very different. But you could note that except for Microsoft Windows, all the other environments you mention are basically variants of Unix. So you will find pretty much the same facilities if you stay close to the hardware level - which in my lexicon is what systems level is all about.

If you need a GUI, you could consider that HTML5 compliant browsers are everywhere. You would only need to write a minimalist web server (there are hundreds of examples around) to interface your systems level stuff to a user interface.

Perhaps if you gave some more information you'd get more pertinent suggestions. Why neglect the literature? How can you expect to write systems level stuff without a solid foundation of knowledge????

While I haven't used it personally, I've heard of people shipping Node.js as part of iOS apps (and, for that matter, as part of Firefox extensions), but even without Node.js, most of these devices will have some JS runtime, in or outside of a browser/webview.

As for Python, I would be less hopeful about the presence of Python on smart phones and tablets, although I suppose anything is possible.

Usually you are cross-compiling to target mobile platforms, so you don't generally need to worry about a given toolchain being present on the device itself.

I doubt you would be able to do "systems" level programming in either JavaScript or Python.

If you are thinking of cross-compiling, then you could look at Go from Google - it has many of the advantages of C, yet a lot of conveniences afforded by Python and similar languages.

I'm fairly sure they're not writing device drivers or TCP/IP stacks, so they likely don't depend on a systems level language. A lot of work has gone into enabling people to write their apps using these interpreted languages, but the availability of one particular language or runtime on a mobile device is not always guaranteed.

I think they're asking what their options are, really.