www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Re: Standard Library Concerns (Phobos / Tango)

reply Sjoerd van Leent <svanleent gmail.com> writes:
Walter Bright Wrote:

 What I see as the goal for Phobos/Tango is for there to be a compatible 
 core, so that users can mix/match what they need from either library.

To be frank, I don't see the problem in having two standard libraries. However, their purpose can be quite different. The Phobos library to me appears to be minimalist and ideal for those who need a small runtime library, such as example drivers, embedded systems, thin clients, etc. The Tango library on the other hand appears to be much more of a library for bigger applications, and provides a lot of practical functionality which todays applications need, such as webservers, database I/O, etc. This is a logical outcome, because D although being a system language, can be used in places where VM'd languages are used at the moment but also can be used for those C applications we need to have the machine going in the first place. Regards, Sjoerd
Feb 12 2008
next sibling parent reply Alexander Panek <alexander.panek brainsware.org> writes:
Sjoerd van Leent wrote:
 To be frank, I don't see the problem in having two standard libraries.
However, their purpose can be quite different.

To be frank, I don't see how the purpose is different. :)
 The Phobos library to me appears to be minimalist and ideal for those who need
a small runtime library, such as example drivers, embedded systems, thin
clients, etc.

This is not entirely true. The Tango core is very well decoupled from the rest of the library, rendering it very useful for exactly those things.
 The Tango library on the other hand appears to be much more of a library for
bigger applications, and provides a lot of practical functionality which todays
applications need, such as webservers, database I/O, etc.

Tango only provides the tools to create such applications. It does not, however, include a web server or database bindings/mappers. That's a seperate project called DDBI on DSource (http://dsource.org/projects/ddbi/).
Feb 12 2008
parent Kris <foo bar.com> writes:
Alexander Panek Wrote:

 Sjoerd van Leent wrote:
 To be frank, I don't see the problem in having two standard libraries.
However, their purpose can be quite different.

To be frank, I don't see how the purpose is different. :)
 The Phobos library to me appears to be minimalist and ideal for those who need
a small runtime library, such as example drivers, embedded systems, thin
clients, etc.

This is not entirely true. The Tango core is very well decoupled from the rest of the library, rendering it very useful for exactly those things.
 The Tango library on the other hand appears to be much more of a library for
bigger applications, and provides a lot of practical functionality which todays
applications need, such as webservers, database I/O, etc.

Tango only provides the tools to create such applications. It does not, however, include a web server or database bindings/mappers. That's a seperate project called DDBI on DSource (http://dsource.org/projects/ddbi/).

aye ... and those webserver packages (along with various other server-related services) reside in the Mango project on dsource. They're built upon Tango, but not shipped as part of it.
Feb 13 2008
prev sibling parent reply Bill Baxter <dnewsgroup billbaxter.com> writes:
Sjoerd van Leent wrote:
 Walter Bright Wrote:
 
 What I see as the goal for Phobos/Tango is for there to be a compatible 
 core, so that users can mix/match what they need from either library.

To be frank, I don't see the problem in having two standard libraries. However, their purpose can be quite different. The Phobos library to me appears to be minimalist and ideal for those who need a small runtime library, such as example drivers, embedded systems, thin clients, etc. The Tango library on the other hand appears to be much more of a library for bigger applications, and provides a lot of practical functionality which todays applications need, such as webservers, database I/O, etc. This is a logical outcome, because D although being a system language, can be used in places where VM'd languages are used at the moment but also can be used for those C applications we need to have the machine going in the first place. Regards, Sjoerd

People seem to forget that C++ really has multiple "standard" libraries too: the one inherited from C, the C++ native one (STL/iostreams), and then Boost. Then on top of that just about every single GUI toolkit has its own set of utility classes because first off templates were extremely unreliably when most of the GUI projects were started, and second the official standard libraries try so damned hard to be platform-neutral that they are often not that useful for getting real work done. So I agree. There's absolutely no problem with multiple "standard" libraries. People will use what suits them, and the chances of one library pleasing everyone are slim in a multi-paradigm language like D. The main difference in the D situation is that all those various C++ libraries can be linked together and used in the same app without requiring modification of your compiler's installation. --bb
Feb 12 2008
next sibling parent Graham St Jack <Graham.StJack internode.on.net> writes:
On Wed, 13 Feb 2008 00:44:56 +0900, Bill Baxter wrote:

 Sjoerd van Leent wrote:
 Walter Bright Wrote:
 
 What I see as the goal for Phobos/Tango is for there to be a
 compatible core, so that users can mix/match what they need from
 either library.



I absolutely agree. I see this as a very high priority.
 
 To be frank, I don't see the problem in having two standard libraries.
 However, their purpose can be quite different.
 
 The Phobos library to me appears to be minimalist and ideal for those
 who need a small runtime library, such as example drivers, embedded
 systems, thin clients, etc.
 
 The Tango library on the other hand appears to be much more of a
 library for bigger applications, and provides a lot of practical
 functionality which todays applications need, such as webservers,
 database I/O, etc.
 
 This is a logical outcome, because D although being a system language,
 can be used in places where VM'd languages are used at the moment but
 also can be used for those C applications we need to have the machine
 going in the first place.
 
 Regards,
 Sjoerd

People seem to forget that C++ really has multiple "standard" libraries too: the one inherited from C, the C++ native one (STL/iostreams), and then Boost. Then on top of that just about every single GUI toolkit has its own set of utility classes because first off templates were extremely unreliably when most of the GUI projects were started, and second the official standard libraries try so damned hard to be platform-neutral that they are often not that useful for getting real work done. So I agree. There's absolutely no problem with multiple "standard" libraries. People will use what suits them, and the chances of one library pleasing everyone are slim in a multi-paradigm language like D. The main difference in the D situation is that all those various C++ libraries can be linked together and used in the same app without requiring modification of your compiler's installation.

That is indeed the problem, and it needs to be fixed urgently.
 
 --bb

Feb 12 2008
prev sibling parent Jarrod <qwerty ytre.wq> writes:
On Wed, 13 Feb 2008 00:44:56 +0900, Bill Baxter wrote:
 
 People seem to forget that C++ really has multiple "standard" libraries
 too: the one inherited from C, the C++ native one (STL/iostreams), and
 then Boost.  Then on top of that just about every single GUI toolkit has
 its own set of utility classes because first off templates were
 extremely unreliably when most of the GUI projects were started, and
 second the official standard libraries try so damned hard to be
 platform-neutral that they are often not that useful for getting real
 work done.
 
 So I agree.  There's absolutely no problem with multiple "standard"
 libraries.  People will use what suits them, and the chances of one
 library pleasing everyone are slim in a multi-paradigm language like D.
 
 The main difference in the D situation is that all those various C++
 libraries can be linked together and used in the same app without
 requiring modification of your compiler's installation.
 
 --bb

You are correct that C++ has multiple standard libraries, but you neglect the key point: They all work together, and for the most part they offer complimentary rather than competitive functions (ignoring of course the C and C++ standard libs which clearly do clash but for a valid reason) Furthermore, the overall compilation result of C++ code -does- depend on a single specific 'standard' runtime library for entry point/exit handling and several other things like signal/exception handling and what have you. Boost also does not replace nor prevent the use of the STL/std, and does not offer a lot of functionality provided by the stock standard libraries (I'm pretty sure boost does not provide POSIX or system API). I would call boost more of a heavily packed utility library. On the other hand, in the case of Tango and Phobos you have to replace one of them to use the other, and their API compete with one another to the point of complete redundancy. This is a big difference compared to the C++ situation.
Feb 15 2008