Assembly language is infrequently used by programmers nowadays, but there are still good reasons to learn the language. It is the most powerful computer programming language available. Whilst assembly language shares very little with high level languages (such as Java, C#, Python etc), and assembly languages for different CPU architectures often have little in common, it gives programmers the insight required to write effective code in high-level languages. Assembly language is also used primarily for direct hardware manipulation, access to specialized processor instructions, or to address critical performance issues. Assembly is excellent for speed optimization.