every lang allows you to think about things in a new way a language is a tool for thought

basic: think about goto python think about assignments, control blocks java c++ think about objects and types haskell think about functions

programming languages hide details: provide abstractions of machine resources:

  • opcodes, memory locations, number representations, calling conventions, etc (dangerous or confusing details) you can write software without having to understand the registers and stack and the heap and virtual memory , the disc, caching systems … but you no longer can control those things.

why so many langs? TL/1 the one language to rule them all by IBM

  1. but! trade offs: speed vs ease of use
  2. people think in different ways, so they want different langs to write software in different paradigms

today: the cost of compiler is much less relevant since 1990s the cost of runtime still matter today

all languages are universal languages, they can simulate each other no difference in terms of power