- Languages that are compiled to machine instructions, vs compiled to VM bytecode, vs interpreted?
- What do these things mean?
- How do these choices affect the languages and the facilities that they offer to programmers?
- Languages with and without type systems
- Generics
- Different approaches to concurrency
I'm not looking for treatment of standard "programming" topics such as procedural vs OO vs functional.
I'm imagining it might explain the above with reference to:
- C / C++
- Java / C#
- Python / Ruby
- Javascript
It might be fun if it covered many more languages than that, but first things first I would like an introduction to the major features of the programming language landscape focusing on the most popular languages in use today.
Does a book like that exist?
Concepts of Programming Languages (11th Edition) by Robert W. Sebesta
Programming Language Pragmatics by Scott, Michael L.
> - What do these things mean?
Languages are not compiled or interpreted, rather they may have compiler implementations, interpreter implementations, or both!
If the code is ever going to be executed, it needs to be converted to machine instructions at some point.
Consider Java - JVMs started out being like interpreters, but ended up more like compilers once JIT implementations became available, all without changing the language or the bytecode. Additionally, many non-java languages target those same JVMs.
few sites may be, majority is just works on benchmarking comparison https://benchmarksgame-team.pages.debian.net/benchmarksgame/