Issues in IT

Regardless if you are a developer, operations or both, you face these issues in IT day in, day out:

  • Compiler or interpreter or VM
  • Web apps or web sites
  • Manual or Automated
  • Client or server
  • Physicalization or virtualization
  • Hardware or software
  • GUI or CLI
  • Coupling or cohesion
  • Blocking or non-blocking
  • SQL or NoSQL
  • Abstraction (computer science) or implementation (information technology)

There is a comment from Stack Overflow that captures the essence of scripting languages vs programming languages:

  • Scripts can be run right after writing, executables have to be compiled first.
  • Scripts need a separate environment (such as Python or Bash) to run, while executables only need the operating system.
    • Because of this, an executable can often be faster than the equivalent script, and consumes less memory. However, this is highly implementation dependent.
  • Scripts are usually cross-platform*, while executables generally work on a single platform.
    • You can of course compile executables for several platforms separately if your software doesn’t depend on any platform specifics.

In short,

a script is interpreted, while a program is executed(i.e. the source is first compiled, and the result of that compilation is executed).

However, Node.js blurs the line between script or program. As an example, Node.js actually is a C++ program that consumes JavaScript that the built-in V8 engine then compiles to machine code. In essence,  source code is just that: code.

Your code is either native 1) machine code (compiled) or runs under another abstraction layer: (2. interpreted scripts or 3. virtual machine byte code).