On Thursday, 8 October 2015 at 10:59:04 UTC, Ola Fosheim Grøstad
wrote:
On Thursday, 8 October 2015 at 10:31:57 UTC, Chris wrote:
On Thursday, 8 October 2015 at 09:45:53 UTC, Ola Fosheim
Grøstad wrote:
That's not vague at all.
1. Define the target, then you can figure out the features.
Then define the target. Make some suggestions.
I've already raised this topic in a thread where I asked where
D sits in the web space. And I did that because it has been
said that vibe.d defines a key application area. However, that
is a very hard market to capture which many expressed in that
thread.
I think D could do well if it focused on engine-level system
programming and made sure it was absolutely top notch for that
purpose. (Game engines, search engines, ray tracing engines, in
memory database engines, business logic engines, etc).
The current focus goes the other way. The current assumption is
that engines are written in C/C++ and they are used to complete
applications in D. That would make D an application level
language, which makes success _very_difficult. As time
progresses I believe it makes less and less sense to do a full
application in languages like C/C++/Rust/D...
I agree that D should be strong in this area (engine level). On
top of that you can stack powerful libs like Phobos. I use D as
an engine in some projects and I'm thinking of using it for this
purpose in other projects further down the road, for example
using D as an engine for simpler, high-level languages like
linguistic analysis tools where rules are defined by
non-programmers at a higher level.
But by no means is it necessary that D be confined to this
particular use case. An "engine language" can be extended with
libs. However, you have to draw a clear line between the standard
library and the language. This border is a bit blurred in D. Then
again, I don't know how Go and Rust will fare in a couple of
years' time. The lines seem to blur over time, because any
language is pretty useless without at least one powerful library
to its name.
But if you create an "engine language" then you also need to be
very good at exporting APIs. Like having compact and readable
API definitions in D that lends itself to auto-generating
interfaces for other languages (Python, Ruby, Go, Javascript
etc).