Josef Templ wrote:I have now tried to answer this question and put together...
In short words the answer is "they split to prevent circular import". That is only one side, so the answer is not full.
For example
Files hasn't import other
System modules except
Kernel, however it is also split for abstract layer and realization layer. This allows to replace realization even "on the fly".
The only module in
System which has
WinApi except
Kernel is
XYplane. It "is provided for compatibility with the book "Programming in Oberon" by Reiser/Wirth. ... It is
not recommended for use in production programs."
The name
Host is meaningful. It means that this folder depends on the host OS. It can be Linux, Windows, Mac etc. If we add some functionality for writing things to console (more general to
stdout) this functionality should be cross-platform and consist of two parts: abstract layer and realization for the current platform.
This will allow the developers for other platforms (me, Alexander, Igor, ...) to make the realization for other platforms. And the software developed once will run in multiple platforms even without been recompiled. The
StdLoader will load the realization for the interface from the
Host folder. And for Windows the
WinApi will be used to read and write data to terminal or a file, for Linux it will be
libc library for read and write data to console or a file.