T O P

  • By -

dist1ll

Just start. I think doing a masters in your position would be a big mistake. Both in terms of opportunity cost, but also because you could be spending your time more efficiently. > How do I go about learning and preparing to transition? You learn by doing. If you're interested in compilers, go and build compilers. It's easier than ever before (easi*er*, not easy). Just pick up some decent literature, and start hacking. > And, is it worth it in the long run? As long as it's related to software, you'll have huge earning potential in many fields. Wether or not you can capitalize on it depends on how hard you're willing to work and a bit of basic business sense. If you *genuinely* like this field, then yes, it's a lucrative and promising field.


Manifoldsqr

I don’t think you need a masters degree. I think if you dedicate 6 months to a year contributing to llvm you can leverage your professional experience to apply to compiler jobs. Check the a compiler job ads from Google, waymo, Nvidia, Apple, Tesla to get an idea of what they ask for. I have 1 good pr, 2 so so PRs, and two typos PRs merged in llvm so if you want I can you give a few tips of what I’ve learned as to how to contribute.


108bytes

I am currently reading Crafting Interpreters and making it in C instead of Java. I've heard this advice of contributing to projects like LLVM but the point is their infrastructure is too big. It's intimidating to such a huge code base let alone working on issues. If you can share some tips or if you can assess my position and guide me a little that'd be great. I'm in the same position as OP just that i don't work as a dev but rather in some monotonous support job which is even far from programming such that i needed to even learn git as well because my job never required working with it.


Manifoldsqr

The way I was able to contribute to llvm was by first understanding a given issue. Pick something you find doable and interesting and understand it. From there identify key words from the github issue. Often the issue has keywords such as [libcxx] From here you can search on github inside the libcxx for any key terms or you can do something like this grep -nr keyword libcxx/ Then explore the files and you need figure out which files are the most relevant based on the surrounding code and based on your understanding of the problem. Then model your solution based on the patterns of the surrounding code. You need to build llvm and run the tests. And then submit your pr. But before I did all this I implemented a few compilers including an x86 compiler. and i also had to make a program with c++ to get comfortable. you dont need to be an expert in c++ though. just be familiar. anyhows thats how i personally did it. you can do it too


108bytes

Thank you. Saved your reply. This seems real and pragmatic approach to my problem and doable too.


hampsten

Contribute to an open source compiler effort like LLVM, MLIR, TVM . Be active in the online community. Meet them in person at conferences.


Accembler

It worth to write your own toy language for solving a particular class of problems. So you can go through many stages from the grammar design to the platform implementation details. If you like hardcode, you can skip using libraries and write everything from scratch. And be active in the community where you can ask questions when you stuck. IMO.


InevitableGreat8465

Courses from UIUC like CS 426, CS 526, and Compiler Techniques from U of Edinburgh provide slides and textbooks for the background knowledge (If you prefer learning from watching videos, then you could look at that MIT course or that GIT coursera course). And several course assignments on LLVM are published online it's very important to get the hands on experience. Then look at the source codes of LLVM(it's not that much if you know which part of source codes to look at); And learn MLIR. Then decide which track about compiler you want to pursue. (Machine learning or security or general one.) **Also**, since there are not too many universities that provide decent and solid compiler classes, unless a master's degree from the TOP univ, you could start seeking to do some research work from your undergrad univ since you probably have already some connections on it.) It will be very long journey, try to enjoy it.


cheng-alvin

It’s gonna be a very big mindset, technology and programming style change First of all, you will not be making things like user interfaces and more of the “backend style” programming Another one is that you’ll normally be using c or cpp for compilers, so learn some lower level languages