* __Scripting Language vs Programming Language__   

  <pre>
  (Scripting Language doesn't need to be compiled before running)   
  A scripting language is used to write scripts. These contain a series of commands that are interpreted one by one at runtime unlike programming languages that are compiled first before running.
  </pre>

  Nowadays, scripts are generally associated with web development where they are widely used to make dynamic web applications. Scripting languages can be divided into two categories:   

    - Server Side Scripting Languages   

    - Client Side Scripting Languages

      

  Server-side scripting languages create the scripts that run on the server and hence minimize the workload of a browser. The functionality of your website is written in those scripting languages. The most commonly used server-side scripting languages are Perl, Ruby, Python, PHP, etc.

  Client-side scripting languages create the scripts that run on the client side (i.e. your browser). These are sent from the server by server-side scripts. Some good examples are JavaScript, jQuery, CSS etc.

  JavaScript is scripting language that runs in the browser.

  Node JS:-   

  Node JS is not a language, it uses JavaScript language as the main programming interface. Node is a desktop application (or runtime environment) that runs JavaScript files. Node runtime can be compared to the JVM Java Virtual Machine or the IDLE Python interpreter.   
  Node.js connects the ease of a scripting language (JavaScript) with the power of Unix network programming. Node.js was built on the Google V8 JavaScript engine.   
  Node.js is an open-source, cross-platform, JavaScript runtime environment that executes JavaScript code outside of a web browser.   
  Written in C, C++, Javascript

  NodeJS is mainly C, C++ which does have to be __compiled down a machine code__ and Javascript is used in order to interface it.



- **Dynamic vs Static Typed Language**

  Dynamically-typed languages perform type checking at runtime, while statically typed languages perform type checking at compile time.



- **Weakly vs Strongly Typed Language**

  Strongly typed language has stricter typing rules at compile time, which implies that errors and exceptions are more likely to happen during compilation. ... A weakly typed language has looser typing rules and may produce unpredictable results or may perform implicit type conversion at runtime.

  

  NOTE:- Javascript is dynamically-typed and weakly-typed language.

  Example, var a = "Hey"

  ​				  a + 17 		

  ​				 //OUTPUT:-  Hey17 

  ​				 (In strongly-typed language, it throws error)



