The Startup
Published in

The Startup

Basic Terminologies and Concepts in Computer World

Photo by Cookie the Pom on Unsplash

Procedural and non-procedural languages

First of all, let us understand the meaning of procedural and non-procedural languages which is quite nicely explained by GeeksforGeeks.

Data Modelling

Data modelling is used to organize information for multiple tables and how they relate to each other together.

Building blocks of relational data model

Entity — It represents any person, place, thing or event which are distinguishable, unique and distinct.

  1. Primary keys — It is a column (or set of columns) whose values uniquely identifies every row in a table.
  2. Foreign keys — One or more columns that can be used together to identify a single row in another table.

JOIN vs. UNION operations

JOIN allows data retrieval from multiple tables in one query. Joins are not physical — they exists for the duration of the query execution. there are many types of joins like — Cartesian/cross join, Inner join, Self join, Left join, Right join, and Full outer join.

SELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City

OOP Concepts

Class — It is a template/blu-print which represents a group of objects that share common properties and behaviour.

Document Object Model (DOM)

According to w3schools.com, Document Object Model (DOM) is a platform and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document.

  • Core DOM — standard model for all document types
  • XML DOM — standard model for XML documents
  • HTML DOM — standard model for HTML documents
The HTML DOM Tree of Objects

Character Encoding

It is used to assign binary values to characters, so that humans can read them. Oldest character encoding used was ASCII.

Device Drivers

When we click on the mouse or press on a keyboard, it sends a byte to the CPU, but the CPU doesn’t know what to do with that byte. Here, device drivers come into the picture. These are the programs that tells the CPU how to run those inputs from the external devices like keyboard, mouse, webcam etc.

Booting process of a computer

In short, it means to start from nothing and follow a series of steps to arrive at a fully operational system.

  1. When the power is ON, BIOS/UEFI runs a process called as Power On Self Test (POST) which performs a series of diagnostic tests to make sure that computer is in proper working order.
  2. Depending on the BIOS/UEFI config, a boot device will be selected which are attached to the system like HDD, Pendrive, CD drive etc. and are configured in a certain boot order.
  3. Then the computer will search for a program called Boot Loader that loads the Operating System.
  4. Once the O.S. is loaded, the kernel also gets loaded, which in turn loads drivers and userspace.

5-Layer network model

OSI network model

OSI stands for Open Systems Interconnection model. It’s a seven layer model. It has two extra layers in addition to the 5 layer model.

HTTP Status Codes

These are the codes or numbers that indicate some sort of error or information messages that occurred when trying to access a web resource.

  • 1xx indicate some informational response like the request was received and continuing process.
  • 2xx indicate that the request is successful.
  • 3xx indicate redirection and further action is needed to be taken to complete the request.
  • 4xx indicate an issue on the client-side.
  • 5xx indicate an issue on the server-side.

AAA (Authentication, Authorization and Accounting)

Authentication is the process of proving the identity of the user.

Common program errors

  1. Syntax errors — Syntax errors occur when the rules of programming language are violated. This error is emitted because the computer is not able to understand the instruction given to it.
  2. Semantics error — The word ‘semantics’ means the set of rules that give the meaning of a statement. So, this error occurs when the statements are not meaningful. For example — “Lina Loves chocolate” is syntactically and semantically correct as this statement obeys English grammar (rules) and also it is meaningful. But the statement “Chocolate loves Lina” is syntactically correct but semantically incorrect as it obeys grammar but it is meaningless. Let’s take another example — x +y = z. This statement is also semantically incorrect as an expression can not come on the left side of an assignment statement.
  3. Type error — This type of error occurs when an operation could not be performed as the operands are not of expected type.
  4. Run-time error — These are the errors that occur during the execution of the program. It generally occurs when some illegal operation is taking place (eg.- dividing a number by zero) or unavailability of some required conditions for execution of the program (eg.- a file that has to be read is not available in the specified location).
  5. Logical errors — These are the errors that give incorrect output due to bad program logic.

Type Conversion

The conversion of one predefined data type to another is called as Type conversion.

  1. Implicit type conversion — This conversion is performed by the compiler without programmer’s intervention.
  2. Explicit type conversion — This conversion is performed by the programmer deliberately. It forces an expression to be of specific type.it is also called as Type Casting.

Statement flow of control

The statements of a program may be executed sequentially, selectively or iteratively. Let’s discuss about each of them.

Calling a function

Call by value — In this method, the values of actual parameters get copied into the formal parameters. It means, the function creates its own copy of argument values and the uses them.

Stylistic guidelines for writing good programs

  1. Meaningful names for identifiers
  • We should assign meaningful names to identifiers viz. variables, functions, classes etc.
  • We should not use similar looking names for identifiers. For example — name and names.
  • We should always assign names to scalar constants (like PI, rho etc.) as it helps in readability.
  • We should avoid tricks while writing programs as it might trouble the readers to understand the intent behind it.
  • We should use standard functions wherever possible in our programs to enhance readability.
  • We should insert an introductory comment at the beginning of a program which explains its functioning in a nutshell.
  • We should also insert explanatory comments wherever applicable. It is done to explain the purpose of the expression.
  • We should also make use of proper indentation which helps in understanding the scopes.
  • Inserting blank lines and spaces enhance the readability.

Web Framework

A web framework is a software tool that provides a way to build and run dynamic websites and web application.

Web Framework Vs. Library

A web framework does the majority of the work and utilizes our code in it to customize itself according to our needs.

Model View Controller (MVC)

The MVC architecture divides an application into three components — Model, View, and Controller.

Microservices Architecture

Microservices architecture is a method of dividing the whole application into small, standalone and independent applications that can be run on different hardwares or server instances. They all communicate with each other over REST APIs and work together to provide the functionality of a complete application.

  1. As the application size gets bigger and bigger, the modularity of the code eventually breaks down and it becomes very difficult to modify such applications. Especially, when a new member joins the team, it becomes very difficult for him/her to understand the big monolithic code.
  2. Once modified, the whole application needs to be tested, as all the components are tightly coupled with each other.
  3. Monolithic applications are not suitable for frequent deployment. If a small modification has been done in the code, then whole application has to be re-deployed.
  4. As the code becomes larger, the IDE will get slower. As a result, the developers become inefficient.
  5. Scalability issue — Running multiple instances of the same application can be expensive sometimes. For example — There is an e-commerce application, which has product display service, cart service and customer care service. On certain occasion, it was predicted that the product display service will receive more traffic. But with monolithic architecture, whole application needs to scaled up to cater the traffic of the product display service. the remaining two services will also gets scaled up but would be of no use. This issue has been solved with microservices architecture.
  6. Flexibility issue — It is very difficult with monolithic architecture to adopt new frameworks or languages because the whole code has to be re-written in the other technology and it will be very expensive.
  1. Microservices architecture provides flexibility as different teams can work on different microservices and these can be built on different languages or platforms. As these microservices would be talking over REST APIs, so there is no worry about using different languages.
  2. Because of small and standalone applications, the IDE doesn’t slows down. It makes the developers productive.
  3. This architecture provides scalability. As per need, individual microservices can be scaled up and down, instead of scaling whole application in case of monolithic architecture.
  4. Fault isolation becomes easier. Since, all the microservices are loosely coupled, it has become much easier to isolate errors.
  5. This architecture also provides the facility of independent deployment of microservices. Small modifications in some component will not require the entire application to be re-deployed.
  1. Developers have to deal with the complexity of connecting all the applications as these applications are independent. So, as the number of application increases, the complexity also increases.
  2. Since, microservices give flexibility to develop individual applications in any language, so the organization needs to take care of this situation very well because different language for the same application can cause delays during fault isolation.
  3. Since, all the services need to communicate with each other, which can result into large number of REST API calls. This can increase the network latency.
  4. All the microservices run inside a container which are replicable. So, if there is one weak spot inside the code of an application, it can bring a disaster for the organization.

Container Orchestration

According to Red Hat, Orchestration is the automated configuration, management, and coordination of computer systems, applications, and services. Orchestration helps IT to more easily manage complex tasks and workflows.

  1. Service discovery — We have to ensure that these standalone applications are in proper communication with each other according to the business logic.
  2. Load balancing — We have to provision a load balancer which will take care of the traffic entering the application reaches the destination server with minimum possible latency.
  3. Secrets, Configuration and Storage management.
  4. Health Checks — We also have to monitor the health of our applications.
  5. Auto-scaling, Auto-restart and Auto-healing of container and nodes.

Twelve — Factor App Methodology

According to Wikipedia, It is a methodology for building Software-as-a-Service (SaaS) applications. For example — Web apps.

  1. Codebase —There should be exactly one codebase for a deployed service. All the codes for an application should be stored in the same Version Control System (e.g.- Git).
  2. Dependencies — We should explicitly declare and isolate dependencies. For Node.js, we have NPM that installs dependencies and keep them isolated from each others. This methodology follows the modularity concept of OOP.
  3. Config — Config files should be stored in the environment.
  4. Backing services — We should treat backing services as attached resource. Backing services like Amazon DynamoDB can be attached or detached by the execution environment.
  5. Build, Release, Run — The delivery pipeline should strictly consist of build, release and run. development best practices like CI/CD should be followed.
  6. Processes — Applications should be deployed as one or more stateless process. For example — the execution environment data of one AWS Lambda function should not be used by another Lambda. Data that needs to be kept should be stored in a state-full service such as a database.
  7. Port binding —Services should make themselves available to other services by specified ports.
  8. Concurrency — It means scaling of individual process depending on load.
  9. Disposability — Maximize robustness with fast startup and graceful shutdown.
  10. Dev/Prod Parity — Keep the dev, staging and prod environment as similar as possible. It can be achieved by AWS SAM, Terraform etc.
  11. Logs — Application should produce logs as event streams.
  12. Admin processes — Any required admin tasks should be kept in source control and packaged with the application.

References

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store