Group 1 : C, Java, Rust :
{ Expensive, Fast, Preemption } :
kernel-space "OS" thread scheduling :
Single-box-optimised : best raw performance potential under such limitations : scaling-out requires some reinvention, lacking best-in-class-reliability.
Group 2 : BEAM/OTP, Haskell, Go :
{ Cheap, Slow, Preemption } :
user-space "green" thread scheduling :
Web-scale-optimised : BEAM/OTP has best-in-class-reliability, but trails in raw performance until scale-out overtakes scale-up. ( Go has a generalist position; Haskell is more for research; neither of these have BEAM/OTP's unique quality. )
Group 3 : Python, Ruby, PHP, JavaScript, WebAssembly :
{ No Preemption i.e. Only Cooperation } :
global interpreter lock :
Beginner-optimised : best for prototyping : quickest to learn : good-enough for single-box setups : scaling-out requires some reinvention, and lacks both, best-in-class-reliability, and raw performance potential.
- Group 3 : I suppose here, I remain, for now. A puny student.
- As a corollary, work to improve scale-up or scale-out while working in Group 3, is a distraction.
No comments :
Post a Comment