Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am curious, has the knowledge of the inner workings of an operating system helped you in understanding a computer programming language? It may have helped you figure out programming faster than someone with less knowledge of the underlying concepts of the Operating System?

share|improve this question

closed as primarily opinion-based by gnat, GlenH7, MichaelT, jwenting, Bart van Ingen Schenau Sep 18 at 7:32

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

7 Answers 7

up vote 11 down vote accepted

I think for most people you'll find the inverse is actually true - having a good programming knowledge helps understand the OS much better. When you understand things like pointers, stacks, heaps, queues, interrupts, program counters, threading, boolean logic, and supplement that with a smattering of computer architecture, you'll find that it's easier to understand what the OS is doing. And then you're also in a better position to evaluate your OS.

share|improve this answer
    
+1 which in turn improves the product development. –  Aditya P Mar 24 '11 at 17:35
    
Code first, yes, but threads are decided by the OS. When I learned this, a lot of things started to make sense, so definitely read some OS structure when you start getting into threads and network code. I have yet to understand how a main thread can schedule a way to interrupt itself, have an open Q on that one in the other stack exchange, heh. –  Stephen J Nov 16 '13 at 1:16

No.

Most OS's are confusing and difficult to understand.

Indeed, OS considerations make some programming language concepts needlessly difficult.

Specifically, the way OpenVMS and Z/OS include sophisticated file formats as part of the OS is very confusing because it makes a lot of I/O part of the programming languages (COBOL, PL/I, FORTRAN) on those systems.

I/O is not part of a language, it should be an add-on library.

share|improve this answer

It's hard to know if my understanding of the OS (or more fundamentally, how computers work) helped me learn programming more quickly or not, I've never learned to program without that knowledge and both kind of grew together. What it really did help with is tracking down errors by understanding what my software is actually doing to the hardware.

It also really depends on what programming you are doing, I'm sure it's possible for programmers to spend their entire careers without ever considering the OS as the programming languages they use have abstracted the underlying infrastructure (as is their purpose).

share|improve this answer

I have found that understanding exactly what the code you're writing does is key to becoming a better programmer. When you understand what is happening when the code is executed two things happen. You're better able to remember what to do to accomplish a given task thus helping you to be faster. The other thing that happens is you're able to make more informed decisions about what exactly you'll do in your code. That being said I think understanding your operating environment is a very large part of understanding what your code is doing during execution. So YES I feel strongly that understanding Operating Systems has greatly improved my programming abilities.

share|improve this answer

Yes, knowing how the stack works for a specific architecture helped me wrote C/C++/asm code faster with confidence.

share|improve this answer
1  
Surely a stack is a programming construct, although it's supported by specific instructions in most processors it's there to support programming methods and isn't a function of the computer as such. You could get by without a stack. Just a thought. –  Lazarus Mar 24 '11 at 10:05

In regards to learning a language It does not have much or any influence, In regards to increasing your productivity during development. Yes it helps. Its definitely better to know. You will find some interesting answers here. Hidden Features in your operating system that increase productivity?

share|improve this answer

The best thing that one can do to improve one's ability to learn new languages is to learn how to read EBNF-encoded grammatical productions. This skill allows one to learn a language from the inside out. The EBNF-encoded grammatical productions for any given language explicitly state what is legal and what is not.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.