APR is a noble effort, but it isn't even widely adopted in Apache projects - for example Harmony. A particular weakness of APR is that it assumes a UNIX environment with all the toys that brings with it. For example, the APR interfaces for signal handling are a poor match to those of some operating systems and people using them could find their code distinctly unportable.
Just to clarify writing real operating systems in managed environments is difficult and a research area (see Singularity, Java OSs like JNODE). It strikes me that what your saying is that using a managed language to simulate part of an OS won't give the student the complete feeling of what it's like to program in an unmanaged environment. I imagine that this is largely done due to the constraints of what you can teach in a course. When I've taught classes involving C and C++ I've also ended up teaching utilities like electric fence and purify. These tools would be out of place in an OS but you have to teach them unless your number of students is small and you can hand debug every program that's being written - reducing the debugging burden and obvious pitfalls (e.g. returning the address of a local variable in C/C++) is the reason for using a managed language.
I think the issue here is that courses that are superficial are not useful if you want someone with detailed knowledge. I think that's kind of a no-brainer and not something that relates to a particular programming language. Maybe knowledge of C/C++ is an indicator of someone who has more than just superficial knowledge though:-)
There are real issue with OS design and the use of pointers though:
(Real World) Scenario 1: Imagine a micro-kernel that allows messages to contain addresses, for example a shared buffer being used to draw fonts into between an application and the font server. Now imagine that your OS needs to support 32 and 64 bit, big (e.g. PowerPC) and little (e.g. Intel) endian architectures. As your application can generate 4 different types of address you need to either run a mega server that knows how to handle all 4 types of request, or 4 individual servers each configured for the respective address size and endianness. In both situations you are likely to end up with a large (100s of MBs) memory overhead.
(Real World) Scenario 2: Imagine a monolithic kernel where device drivers are written in C, often by people only concerned with getting their flavour of architecture to work with their hardware. If you try to use this device driver on an a architecture with a different endianness or address size what guarantees do you have that the driver will work? From my experience, little (unless someone else tried it before you and fixed the problems).
I believe that constraining programmers is often the right thing to do; you can design out potential bugs. The programmer should also be aware of why they are being constrained though - ie higher levels of abstraction are better (by design) but you need to keep sight of the bottom of the stack and not be superficial, unless the course is an introduction (which many are).
Other projects doing the same/faster thing..
on
Java-Based x86 Emulator
·
· Score: 3, Informative
There are at least 2 solutions doing a similar thing. The open source binarytranslator.org/PearColator offers x86 and PowerPC emulation: http://binarytranslator.org/ There are attempts to integrate this into the JNode open source Java OS to make a JNode/GNU stack.
Much debate occurs in the UK as to whether the way our A-level exam system (the exam grades that matter when applying to Universities) is set up ensures that standard remain consistent. Knowing the qualifications assessor in our UK computer science department, they repeat this concern. They also know the games that must be played to ensure that applicants using the UCAS system (the service that handles UK University admissions) choose this University first. ie University's in the UK ask for high A-Level entry requirements so that when applied for in the UCAS system, they're not put down as a 2nd choice.
The assessor here also backs up your assessment of American qualifications (entry requirements here are higher than Stanford and MIT). Oddly rather than championing the French exam system (as often occurs in the UK) they believe countries such as Algeria (iirc) have the best systems. In those countries, students are told how well they did in relation to the rest of the applicants who took that exam. If you're top of the country, then our assessor will have no problem entering you into the department. Much less messy than point systems, grade letters, and interviews.
I've also heard that exam systems back up a countries idea of themselves in the world. More insecure countries like to have thoroughly rigorous exam systems, secure countries like to think theirs is best.
To answer the original question, if I were judging the quality of a course or institute to attend, I'd base my assessment on the staff and research that goes on. If you think that research is cool then you should have no problems with the course - it'll be taught by the same people.
SuSE is probably the best distro. around! If you want to spend all year installing then debian is fine. It's hardly a viable distro for non-techies though. RedHat and Mandrake put out lame broken packages based on non-standard compilers. IMHO if everyone used SuSE the world would be a better place. The news about the layoffs really is sad.
APR is a noble effort, but it isn't even widely adopted in Apache projects - for example Harmony. A particular weakness of APR is that it assumes a UNIX environment with all the toys that brings with it. For example, the APR interfaces for signal handling are a poor match to those of some operating systems and people using them could find their code distinctly unportable.
Just to clarify writing real operating systems in managed environments is difficult and a research area (see Singularity, Java OSs like JNODE). It strikes me that what your saying is that using a managed language to simulate part of an OS won't give the student the complete feeling of what it's like to program in an unmanaged environment. I imagine that this is largely done due to the constraints of what you can teach in a course. When I've taught classes involving C and C++ I've also ended up teaching utilities like electric fence and purify. These tools would be out of place in an OS but you have to teach them unless your number of students is small and you can hand debug every program that's being written - reducing the debugging burden and obvious pitfalls (e.g. returning the address of a local variable in C/C++) is the reason for using a managed language.
:-)
I think the issue here is that courses that are superficial are not useful if you want someone with detailed knowledge. I think that's kind of a no-brainer and not something that relates to a particular programming language. Maybe knowledge of C/C++ is an indicator of someone who has more than just superficial knowledge though
There are real issue with OS design and the use of pointers though:
(Real World) Scenario 1:
Imagine a micro-kernel that allows messages to contain addresses, for example a shared buffer being used to draw fonts into between an application and the font server. Now imagine that your OS needs to support 32 and 64 bit, big (e.g. PowerPC) and little (e.g. Intel) endian architectures. As your application can generate 4 different types of address you need to either run a mega server that knows how to handle all 4 types of request, or 4 individual servers each configured for the respective address size and endianness. In both situations you are likely to end up with a large (100s of MBs) memory overhead.
(Real World) Scenario 2:
Imagine a monolithic kernel where device drivers are written in C, often by people only concerned with getting their flavour of architecture to work with their hardware. If you try to use this device driver on an a architecture with a different endianness or address size what guarantees do you have that the driver will work? From my experience, little (unless someone else tried it before you and fixed the problems).
I believe that constraining programmers is often the right thing to do; you can design out potential bugs. The programmer should also be aware of why they are being constrained though - ie higher levels of abstraction are better (by design) but you need to keep sight of the bottom of the stack and not be superficial, unless the course is an introduction (which many are).
There are at least 2 solutions doing a similar thing. The open source binarytranslator.org/PearColator offers x86 and PowerPC emulation:
http://binarytranslator.org/
There are attempts to integrate this into the JNode open source Java OS to make a JNode/GNU stack.
There is also the VEELS/JXEmu system:
http://nil.ics.uci.edu/~gal/?page=VEELS
which appears not to be publicly available.
Much debate occurs in the UK as to whether the way our A-level exam system (the exam grades that matter when applying to Universities) is set up ensures that standard remain consistent. Knowing the qualifications assessor in our UK computer science department, they repeat this concern. They also know the games that must be played to ensure that applicants using the UCAS system (the service that handles UK University admissions) choose this University first. ie University's in the UK ask for high A-Level entry requirements so that when applied for in the UCAS system, they're not put down as a 2nd choice.
The assessor here also backs up your assessment of American qualifications (entry requirements here are higher than Stanford and MIT). Oddly rather than championing the French exam system (as often occurs in the UK) they believe countries such as Algeria (iirc) have the best systems. In those countries, students are told how well they did in relation to the rest of the applicants who took that exam. If you're top of the country, then our assessor will have no problem entering you into the department. Much less messy than point systems, grade letters, and interviews.
I've also heard that exam systems back up a countries idea of themselves in the world. More insecure countries like to have thoroughly rigorous exam systems, secure countries like to think theirs is best.
To answer the original question, if I were judging the quality of a course or institute to attend, I'd base my assessment on the staff and research that goes on. If you think that research is cool then you should have no problems with the course - it'll be taught by the same people.
Boj
SuSE is probably the best distro. around! If you want to spend all year installing then debian is fine. It's hardly a viable distro for non-techies though. RedHat and Mandrake put out lame broken packages based on non-standard compilers. IMHO if everyone used SuSE the world would be a better place. The news about the layoffs really is sad.