On Wednesday, 6 February 2013 at 07:56:26 UTC, Don wrote:

It would be great if people with extensive experience in other languages could give a brief description of the structure of the corresponding libraries. (Also include pseudo-standard libraries, for example boost in C++).


I know very well the BCL in C#, but I don't think is possible to map existing D modules to the same hierarchy, because D is lacking the ideea of namespace. More than that, the way things are organized in BCL doesn't match the D phobos rules, only the System namespace in BCL contains more than 300 different types with thousands of functions. I don't think anybody will like a system.d file containing that number of elements.

The class hierarchy in main BCL assembly (mscorlib.dll) is organized as follows (important classes - almost everything in C# is a class) from D point of view:
- system - basic types, general purpose functions;
- system.collections - object ranges;
- system.collections.generic - generic ranges;
- system.diagnostics - debug helpers;
- system.globalization - locale support;
- system.io - streams, files, readers, writers
- system.reflection - runtime traits;
- system.resources - Windows resource management;
- system.runtime.interopservices - WinAPI;
- system.runtime.serialization - runtime serialization;
- system.security - general purpose security functions;
- system.security.cryptography - encryption algorithms;
- system.text - text encoding/decoding support
- system.threading - threading support
- system.threading.tasks - task based threading, asynchrony

Another important assembly (lib will be the immediate equivalent in D) is the system.dll assembly containing following important namespaces:
- system - general purpose types;
- system.codedom - compiler tools. somehow equivalent to ctfe in D; - system.collections.concurrent - shared collections and algorithms - system.componentmodel - particular cases of interfaces, events, classes - system.configuration - user settings, reading registry, ini files or various forms of persiostent data; - system.diagnostics - profiling, performance counters, unit testing; - system.compression - well known compression algorithms and associated streams;
- system.io.ports - general purpose port interaction functions;
- system.net - various communication protocols
- system.security - various authentication systems
- system.text.regularexpressions - regex;

This is not a comprehensive list, there are more assemblies in BCL(eg: system.core.dll assembly contains also some important classes like linq extensions or system.xml.dll which contains all xml related stuff), and the namespaces above were shortened (eg: in BCL C# has system.net.mail for SMTP/IMAP or system.net.mime namespace for mime encoding).

Regarding code organization, C# compiler is not dependent of the file system, there are no files or packages, you can code any number of classes in the same file or you can even code a class in multiple files (partial classes).


Reply via email to