By the time he retires,表明父亲还没退休,意思是等到我父亲退休的时候。所以后面用一般将来时will,而父亲工作40年是一段时间,强调已经达到40年之久,所以需要用到完成时。故结合起来便是将来完成时。
整句话翻译过来即是:等到父亲退休的时候,到那会他已经工作了整整40年了
By the time he retires (到他退休的时候)从retires 是现在时,可知父亲现在尚未退休,退休应该在将来。for almost forty years ( 几乎40年)可知是完成时,有将来有完成,用将来完成时(will have +过去分词),表示从父亲参加工作起到将来退休为止,几乎四十年。
by the time 等到……的时候,为发生的事,will have done ,等到退休的时候,往前看,还是一个动作开始于持续到现在,所以后边接have done