List some points based on my personal experience, maybe not correct or profound.
Regret 1 Not using c++
I used java at that time. But my current research on efficient system always relys on c++. When I read the source of large-scale projects, they use advanced c++ feature frequently, e.g. template, c++11/14/17 feature. For those who are confident about their engineering skill and want to do research on system, using c++ in this project will be a good practice to learn and try advanced c++ feature.
Regret 2 Not learning llvm
LLVM acts as a fundamental tool in modern compiler stack. My recent project tvm also uses it for code generation. It will be great if you can use its IR or know its ideas.
Regret 1 The back-end is not good, including IR design, semantic optimization and register allocation. This forces me to do many task-specific optimization on the AST, which can cause the whole model overfitted to the dataset.
Regret 2 I was being too selfish that I didn't help many of my classmates who I care for. I still feel guilty today.
Regret 1 IR with tree structure is painful in the optimization phase.
I got stuck in optimization due to the tree structure for IR, on which it's hard to implement global optimization methods such as register allocation. Specific optimization scheme is necessary for IR design.
Regret 2 Solve new problems with new methods, not complex combinations of old ways.
List some points based on my personal experience, maybe not correct or profound.