Why the Standard Library
Zachary Lund
admin at computerquip.com
Thu Jan 19 13:26:10 PST 2012
On Thursday, 19 January 2012 at 21:22:23 UTC, Zachary Lund wrote:
> On Thursday, 19 January 2012 at 19:06:41 UTC, Alex Rønne
> Petersen wrote:
>> On 19-01-2012 19:52, Zachary Lund wrote:
>>> I've been wondering in the back of my mind for awhile now and
>>> it really
>>> hasn't bothered me much but I figured I might as well get it
>>> off my mind.
>>>
>>> Why is there a need for a default "standard" library? I can
>>> understand
>>> about some of the core stuff, but hell, even threads can be
>>> handled via
>>> a 3rd party library. Why must Phobos or any library be a part
>>> of D itself?
>>>
>>> I'm unfamiliar with the reason for C++ having a standard
>>> library as well
>>> (which I bring up when people bitch about poor design or
>>> something
>>> similar which I usually get no viable or any answer at all).
>>> More of an
>>> ignorant question probably but oh well...
>>
>> Without a standard library, interoperation between libraries
>> becomes a huge pain, because there's no standard
>> interface/design for various things such as threads,
>> containers, bigints, networking, file I/O, etc.
>>
>> Not to mention, if a standard library didn't exist, you'd have
>> to adapt your build system to whatever arbitrary amount of
>> libraries you need to use.
>
> C++ has interoperability between containers and allocators
> which have done much good. However, they hardly have any
> libraries that force preferential design that doesn't require
> flexible implementation.
>
> Things like bigint and networking are not based on optimized or
> flexible implementation but on ease of use. You generally
> choose a BigInt library that is the easiest to use, not the one
> that has the most flexibility when it comes to which
> implementation it uses or the one that is most optimized. Also,
> I'm not sure who would reuse the std.socket design. There are
> plenty of libraries that give a more robust and clean interface
> to sockets.
>
> I don't mind robustness but I do not like being forced onto a
> preferential design (which doesn't require flexible
> implementation) simply because it is in the "standard". I do
> not think the etc.curl or std.bigint promote library
> interoperability. Thus, I do not think these modules belong in
> the library considered "standard".
>
> Also, libraries aren't really that big of a pain to add to a
> build system. It's generally just a matter of finding where the
> library is. On Linux, this is simple. On Windows, it generally
> requires either environmental variable or user input. I don't
> see any way around this nor do I find putting everything into
> one glob of a library a solution.
I also forgot to mention about library reuse. You don't tend to
use BigInt libraries all the time. In 6 years of programming,
I've not used a single one. Nor have I used regex in a C program.
Nor have I needed the constant use of MD5 hashing. And I sure as
hell did not need the constant use of CURL or ZLib nor have I
ever even used those libraries.
More information about the Digitalmars-d
mailing list