On Friday, 15 November 2013 at 08:50:14 UTC, Paulo Pinto wrote:
On Friday, 15 November 2013 at 07:13:34 UTC, Jeremy DeHaan
wrote:
Hey everyone!
I have been experimenting for the past couple of days with an
idea I had, and since I recently made a little progress I
thought I would share some of what I have been doing with you.
What I have done, in a nutshell, is began the process for a
language converter that takes D source files, converts them
into Java source files, and then compiles them as Java class
files so that they can be ran on Java's VM. It is extremely
limited in what it can do right now, only being able to
convert/compile a simple Hello World program, but I was proud
of myself for getting even that far so I wanted to brag. :P
You may want to ask, "Hey, man. D is a great language. Why
would I ever want to convert it to Java?" Normally, you
wouldn't. Java blows. What I am envisioning for this project
is something quite magical in my opinion. If we can take D
code and have it compile into Java class files, we can then
compile them into Android dex files. This would make D able to
build and run on Android devices through its VM. Sure, people
are working on getting D to compile to ARM binaries, but this
could be another option as a Java alternative on
Android.(eventually)
Unfortunately I do not know much about compilers, but even in
the last couple of days I feel like I have learned a great
deal about what kinds of stuff goes into them. Eventually I'd
like to make a full blown compiler that takes D code and can
go right to dex files, but that would be something that would
happen way down the road. In order to get D working on Android
sooner, I figured a language converter would be the easier
route.
I can, and would love to go in to more detail about this, but
it is getting late and this post is already quite long. Maybe
I should start a blog about my D escapades? Anyways, I would
love to hear feedback on this idea! Thanks for your time!
It is an impossible task, because many of the D semantics
cannot be expressed in JVM/Dalvik bytecode.
--
Paulo
Like what? Barring low-level device access, they are both turing
complete languages and given the necessary transformations a
complete program in one can always be statically* translated to
the one in the other. However, efficient java code would be a
different matter.
*very important. There are many code-level concepts in D that are
not expressible in the JVM, but a static translation doesn't need
to honor those: it simply needs to make a program that has the
same observable effects for any given input. This is definitely
possible, although quite possibly monstrously involved when done
in detail.