Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

[flagged]


> You do not need to be 'goes to MIT' level of smart, but you do have to understand the basic concepts, which I think is an absolutely manageable amount - about a scope of a couple hundred page paperback or a single challenging CS course worth of info to get started.

You certainly don't need to be from 'top 3 college in US' at all. Neither did the creators of Zig (Andrew Kelly) and LLVM, Swift and Mojo (Chris Lattner) ever did.

All you need is genuine interest in compilers, the basic CS fundamentals including data structures and algorithms. Start by building a toy compiler and then study the existing open-source ones and make some contributions to understand how it all works.


I don’t know about Kelly but Lattner certainly did. UIUC is pretty top for CS. That’s where NCSA is, as in NCSA Mosaic and many others.


Puff piece? Attack vector? It’s just a personal story.


IMHO the best tutorial is Crenshaw's "Let's Build a Compiler" series.


Thank you for the recommendation! I was looking for compiler texts that take a more practical approach.


So few people trained or specialized in language implementation and compiler writing actually get the chance to write compilers. Those jobs are just so rare that many people in that area re-specialize into something else (like AI these days).


It is a Chicken-or-Egg problem, as most commercial attempts at compilers were awful partially compliant bodges, and or expensive.

The GNU gcc groups win is rarely considered these days, but kids who were stuck with masm, risc asm, or Basic thought they were heroes to the hobby.

Slowly, the FOSS compilers grew in features, and commercial entities realized it was less risky to embrace an established compiler ecosystem, and paid people to port in an experienced user-base.

Starting from scratch is hard, as people often make the same logical mistakes. =3

"There are two mistakes one can make along the road to truth...not going all the way, and not starting."(Prince Gautama Siddhartha)


They aren't that rare. And AI is expanding the niche because making parallel linear algebra go zoom zoom is compiler work. There's also a lot of quantum compiler work.


Ya, I almost got a quantum compiler job at Alibaba (they decided to go in a different direction), and a job with Microsoft working complied ML support for Julia also fell through (I passed the interview, but they couldn’t get the head count) before ultimately joining Google working on developer experiences.


All those LLVM forks need maintainers, too.

Then there are the people building compilers accidentally, like in the <xyz>-as-code space. Infrastructure automation deal with grammars, symbol tables, (hopefully) module systems, IRs, and so forth. Only the output is very different.

And of course the toolchain space is larger than just compilers. Someone needs to maintain the assemblers, linkers, debuggers, core runtime libraries. If you are building a Linux distribution, someone has to figure out how the low-level pieces fit together. It's not strictly a compiler engineering role, but it's quite close. Pure compiler engineering roles (such as maintaining a specific register allocator) might be quite rare.

It's a small field, but probably not that obscure. Despite the efficiency gains from open-source compilers, I don't think it's shrinking.


> This is a personal puff piece.

Seriously? She's posting on her personal blog (that's what her substack is). Up front she says that one of the two kinds of people she's writing for are those who are interested in her personally.

> she needn't use

There are a lot of things that people needn't do, like absurdly talk about "attack vectors".


I might have been a bit harsh in how I phrased it, however if it's just a personal blog post, it does not belong on HN. I don't think most people here are interested in strangers' personal lives.

If it was her who posted it, she should've made it more clear that this is a 'personal journey' post. If it was someone else without her permission, then that should've not done so.

If you look at most of the discussion that emerged around it, it's about the relative technical merits of various compiler frameworks and techniques, and getting a job working with compilers, which I think most people expected to read about.


There's so much wrong with this ... no it wasn't her who posted it, and no one needs her permission to do so. (And how do you know that they didn't get it?) And if it didn't belong on HN then it would have been flagged and killed. It wasn't because it isn't just about her personal life--it has useful and appropriate content for readers of HN. again, up front she says that there are two kinds of people she's writing for. (Even then, the "personal journey" aspects of the article are largely relevant for HN readers interested in being compiler engineers.)

And do you really have no sense of how utterly absurd

> she needn't use the title of 'Becoming a Compiler Engineer' as an attack vector

is? Her title is perfectly reasonable and beyond any rational sensible intellectually honest good faith criticism.

The fault you seek lies entirely within.


First you chew me out for pointing out that this isn't a very good resource for compiler stuff as its more of an autobiographical post.

Then you turn around and claim that this was a technical article after all. And no, the advice of 'you have to be among the three dozen people that get accepted to MIT to do math' is an unnecessarily elitist piece advice, that's not even necessary, as I (and a lot of others) pointed out there are a ton of good books and resources you can just get started with.

I know HN disallows editorializing, but the title reads like it'll be an useful resource on compilers. The writer obviously chose that title in context of her personal blog, where it makes sense, but I maintain that a strangers life update is not interesting to the rest of us, and if I were the writer, I wouldn't be too happy if someone decided to direct a ton of eyeballs to my personal post.

I'd implore you to look around in the thread, most people had different expectations and complained about the same thing I did. Still the post was useful, since an interesting conversation happened around the topic of compilers.

And I'd like you to realize, that you are just one person sharing his personal opinion, not some arbiter of moral goodness, please stop attacking me, and I feel bad for having to defend myself.


P.S.

> First you chew me out for pointing out that this isn't a very good resource for compiler stuff as its more of an autobiographical post.

I never did any such thing. I didn't even bother to read past that false claim as I expect the rest to be similarly false and dishonest, and won't respond to anything else from that source.


LLVM is certainly not a recommended way to start. That would be to start with a small lisp or ocaml compiler. There you have all the batteries included and the project would still be small enough.


Honestly I've read a ton of scaremongering about how awful and complex LLVM was, and I too assumed the worst, but the API is surprisingly benign and well documented for how difficult a task it accomplishes.

I also checked out Cranelift which was recommended to me as a battle-tested but easier to use alternative, and honestly I haven't found it to be that much simpler.


Sure if you want to build a lisp clone.

Anything else, you're better off starting off with LLVM. Especially if you want a compiler job.


I've got compiler jobs without ever touching LLVM. Even gcc has a better codebase and performance. If just its maintainers would behave as nice as the LLVM maintainers who are really nice.

Eg with gcc you can write a jit in pure C. With LLVM you'd still need C++ for name lookup hooks. With qbe you won't need any of this. With lisp much less.


Yes, I'm sure you got a compiler job without touching LLVM.

Doesn't mean it's good advice for someone getting into a field where LLVM is the technology used for 90% of the jobs.


You got me to check out GCC and QBE, and I say, not having to bother with SSA does seem to make things a bit easier, with GCC's Gimple being a kind of pseudo-assembly language, and Generic being almost C.

Still I think once you get over the hurdle of SSA-ifying your procedural code, LLVM is all right, and seems to be a lot more feature rich (I might be stupid, but I don't see how to make stack maps in GCC).

Also GCC is very lightly documented while LLVM seems to have quite good docs and tutorials.


You don't need SSA for LLVM.

Just emit load and store instructions, and it'll be converted automatically.

What SSA gives you is substantially easier analysis and optimizations on the intermediate representation, so much that all compilers use it (yes, even GCC).


Interesting how titles alone has been getting the front page recently.


[flagged]


> Without being too mean-spirited about it, her success is mostly due to luck, reputation, and factors other than expertise such as checking off the right demographic boxes, or being charming in some way.

How do you know this? Just because some people have written dissertations on compilers and didn't find work? OP seems very talented. And doing compiler work for a blockchain is not the most competitive position. I did the same thing for a while, and I don't even have a computer science degree (nor do I "check HR boxes"). And her article has lots of information that would be helpful for someone looking for a compiler engineering role


>How do you know this? Just because some people have written dissertations on compilers and didn't find work?

Yes, I said exactly that. It's because virtually nobody who studies compilers ever has a job doing that, and this is a girl literally from MIT we're talking about. It's not as much about expertise as about the hiring end of things IMO. I could be wrong but I'm just connecting dots and making educated guesses here.

>OP seems very talented.

As a human being, or perhaps even as a generic new grad, sure. She might also be more studious than I'm expecting. She said she wrote a novel, which is cool. How much time did she spend doing that versus actually studying compilers? I'm comparing her to the kinds of people I would expect to be doing compiler work.

>And doing compiler work for a blockchain is not the most competitive position. I did the same thing for a while, and I don't even have a computer science degree (nor do I "check HR boxes")

There's always an exception to the rule. For what it's worth I would not expect you to be a competent compiler engineer either, especially without a degree or killer experience. I might believe it if given enough evidence but first impressions say no.


You say this:

> For what it's worth I would not expect you to be a competent compiler engineer either, especially without a degree or killer experience.

Which indicates to me that you think a degree would be evidence of me being a competent compiler engineer. But when OP gets a degree from MIT (and does part of a graduate program in compilers), and then gets hired, you suggest that she has substandard skills compared to what you would expect from someone in her role. I'm not sure why me not having a degree would count against me, but her having gotten a degree doesn't seem to count in her favor


She's taking a very standard junior engineer route into a specialized technical field. It's perfectly normal to be hired at that level without having deep expertise of the topic. I don't see what you're getting so worked up about really.


a gurl

There's are reason your previous comment is dead.


It's incredibly rude, and wrong, to assume that a woman was hired because she "checks off a bunch of HR checkboxes" rather than skill or hard work when you know nothing about her.


Not just a woman, but an Asian woman. Let's not even begin to think of her as an individual.

The comment is not merely rude, it's blatant bigotry.


> Without being too mean-spirited about it

You must be referring to something other than your own comment.


> Lots of people study compilers and even do theses and dissertations on the topic, and absolutely can't find work doing that.

What's your point? Maybe those people aren't as good as her at turning their academic knowledge into real-world skills. Clearly the main reason she ever got hired anywhere was because she passed the interviews, which should tell you that she knows her stuff. Being charming and having contacts only gets you so far; nobody will hire you to work on compilers just because you smile and drop names.


Well, you know, she's female.


> There are two equally disappointing outcomes I can see here. One is that she realizes that she was just lucky, and she isn't an expert like this. Another is that she never realizes how much luck was involved and begins to think she is the shit because she made it.

From the article: "I am super-lucky in a lot of ways".

> I'm just not going to expect much good advice about to get hired from a fresh MIT grad who checks off a bunch of HR checkboxes.

What exactly is wrong with the advice she does give? And exactly what "HR checkboxes" does she check off? C'mon, don't be coy.

Despite not basing your comments on the content of the article, you seem to have a lot of knowledge about her skills. Or perhaps it's just a common bias against people referred to as "her".


> Her accomplishments are impressive and well deserved

what exactly are those even? that she went to MIT? from her linkedin she's at some blockchain startup (for only 4 months) doing "compiler work" - i put it in quotes because these jobs actually happen to be a dime-a-dozen and the only thing you have to do to get them is pass standard filters (LC, pedigree, etc.).


The article says

> I was a compiler engineer at a startup in New York City. In that role, I worked on extending a preexisting open-source programming language.

> I am now a compiler engineer at a large, post-IPO tech company in the San Francisco Bay Area. I work on making programming languages run faster.

The 4 month startup is the former.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: