On 2/8/15 3:00 AM, Jacob Carlborg wrote:
On 2015-02-03 19:00, Russel Winder via Digitalmars-d wrote:
Learn lessons from SBT vs. SCons/Gant/Gradle: SBT is a Scala build
system using Scala programs as input.
Some Scala folk got religious about Scala being the only right language
for Scala builds, and created what has become SBT. Because of the way
statically typed Scala works as a domain specific languages there are
performance and expression issues that means SBT is getting a reputation
in the very companies that should be supporting it that it is "the
enemy".
It's kind of the same in the D community. Before Dub existed I started
to work on both a package manager (Orbit) and a build tool (never
officially announced). I used Ruby as the description format for package
files a build scripts. Ruby is a language which allows you to create
DSL's both with a declarative syntax and still support imperative code.
Example:
target :foo
if System.osx
target :foobar
end
Of course that was completely reject since it was Ruby and not D.
Although, for some reason Make is acceptable in the D community. It's
basically only D or a markup language that will be accepted.
Ehm. This part sounds unnecessarily a bit political - NIH syndrome,
closemindedness of the D folks toward using anything else but D and
make, and such.
I do remember one action I took "against" Ruby - replacing a 109 line
Ruby installer script with 13 lines of makefile code:
https://github.com/D-Programming-Language/installer/pull/10/files. It
would be difficult to construct an argument against that work.
Ruby and Python have all my respect as an outsider of their respective
communities: they have users who enjoy them and get work done using
them. That's always a good thing in my book.
That said, I wouldn't feel easy appealing to Ruby or Python for D
internal work for reasons that I consider entirely practical and
non-political:
* One more language for the maintainers to know and use.
* One more dependency. Although scripting languages are ubiquitous
enough, I can tell from direct experience that versioning and dependent
packages can be quite a hassle.
* Escaping into a high-level language seems as much "cheating" as
escaping into a low-level language. If C or C++ would be needed instead
of D for a task, it is worthwhile exploring how to make D a better
replacement for them . This has been historically a good and important
goal to pursue. Similarly I'd rather explore what it takes to expand D
into high-level territory instead of escaping into a high-level language.
Andrei