Programming Language Classification
Strong vs Weak Typed Languages
Strong Typed Languages
Variables are assigned a type and that cannot change over the course of the program. C, Go
Weak Typed Languages
Variables are not assigned a type, instead can hold values of different data types. JS, Python
Statically vs Dynamically Typed Languages
Statically Typed Languages
Variables are created at compile time and memory set aside for the variables to be used.
Dynamically Typed Languages
Variables are created in memory as the program runs.
Compiled vs Interpreted Languages
Compiled Languages
Source code is converted to machine code or byte code prior to running.
Interpreted Languages
Source code is interpreted line by line on the runtime.
Garbage Collection
Garbage collection in programming is where the program itself releases memory that it used during the runtime. Garbage collection may not be a problem if you don't use certain features of certain languages (calloc, malloc in C). For languages without garbage collectors, the programmer has to be mindful of the memory usage and release them as the program ends without causing memory leaks.
With garbage collector
Java, Go, Python
No garbage collector
C
Compile Time
Fast compile time helps the design-build-test loop to run faster. If the compilation takes time its difficult to continue.
Concurrency
Concurrency is the ability to do simultaneously do multiple tasks in one code.
Multi threading
Multi Processing
Event Loop
Async Processing
Community Support
Community is where you find fellow programmers, may it be discussing new features, asking for help, finding bugs. Having a good community support makes it easier for developers to advance with their projects, unblock issues faster. A good community supported language is much easier to use.