On Wednesday, 10 June 2015 at 04:55:43 UTC, Rikki Cattermole
wrote:
I think that a lot of the people asking for a 2.067 LDC are
just users
of D, and (I am including myself in this group) a lot of those
people
don't know the first thing about LLVM or good complier design
in
general. While it may seem dishonest for people to ask for
these things
and not help, keep in mind that the vast majority of
programmers are not
even able to help.
I for one would love to help. But I barely understand X86. Not
to mention having to get a setup going ext. Not really worth it
right now for me.
Although I'd rather work on SDC instead of LDC. Primarily
because well it's so shinyyyyyy.
I would be happy to write a book to teach compiler development
from everything from basic x86 encoding to complex optimization
strategies. If only I knew it and yes I know they exist just
wrong method for teaching it IMO.
Lately, I've been listening to a playlist of interview,
presentations and other thing involving Elon Musk. The playlist
is hours long and I'm listening to it while doing other things.
After selling paypal, Musk wanted to use part of his money to
revive the desire to explore space. What he plan to do is to send
a plant on Mars, a very symbolic stunt that would, he hopes,
renew the interest in space exploration, maybe increase NASA
funding or whatnot.
Thing is, he doesn't know about space that much. He has a physic
major working on batteries, and then went to have a payment
processing company. So he could have said, like you guys, "well I
don't know much about space/compiler let's wait for others to
make things happen". But nope, he went to talk to space
specialists, engineer and scientists, and then, went got in touch
with some Russian to buy refurbished ICBM in order to start
experimenting.
One of the notable thing is how amazed people are that he went to
buy ICBM from the russian. Well guess what, that is one of the
cheapest thing that can go into space, so if you want to make
something happen, that is an excellent starting point.
I can continue the story with myself (because everyone knows I
compare to Elon in so many ways, and he is greatly inspired by my
vision and capability to make things happen). Recently I got to a
point on SDC where working on the GC became an important item.
Thing is, I know about compiler not memory allocator. Having low
level knowledge of how the CPU operate does not provide me wisdom
about what kind of algorithm and datastructure will behave nicely
on a typical wokload.
So I went to read tcmalloc source code, jemalloc source code,
libc's malloc, I read a ton of paper about various allocators,
and went after Jason Evan - one of the great perk of working for
Facebook is to have all these amazing people who can make you
feel like an idiot because they know so much more than you do -
as to get as much of the "why" as possible. the code told me the
"what/how" but that is not sufficient to get a good grasp of the
matter at hand.
Making things happen is not about waiting for the wisdom to fall
from the sky to deliver you the deep and arcane knowledge of
compiler/memory management/rocketry . It is about learning enough
to get started, and then start do do thing while continuing to
learn more.
To get back on point, yes some task in LDC or SDC (or DMD, or
GDC) require some good knowledge of compiler stuff. Obviously,
these are compiler, and I'd add D compiler, which involve a
certain level of complexity. But let's be honest, a good chunk of
the work is not guru level compiler arcane. Most of the work is
actually dumb shit that just need to be done like it is for all
other software.
You don't wait to know how to paint like Rembrandt to start
painting. Because that will never happen. You just paint dumb
shit again and again, trying to make the new shit a bit less
shitty than the old shit. You do that while studying Rembrandt's
techniques. And, after thousand of painting, you finally get
there.