On 10/06/2015 7:02 p.m., deadalnix wrote:
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.
I'm well aware.
I've been hammering out over long term to learn the underlying technologies.
For example writing a PE-COFF linker.
My experience is well ugh lets just say, if something seems hard and
almost impossible maybe something isn't quite right.
Unfortunately I'm in a war of attrition trying to learn x86 and friends.
And its a long one!