5 Technical Terms That Even Senior Programmers Confuse With (And It’s Embarrassing!)
Dr. Ashish Bamania
I simplify the latest advances in AI, Quantum Computing & Software Engineering for you | Tech Writer With 1M+ views | Software Engineer
These are 5 important programming terms that confuse many software engineers, be they beginner or experienced.
But not anymore!
1. Encryption vs. Hashing vs. Encoding
Encryption is a process of scrambling data so that only authorized parties can unscramble it using a key.
It is used to share sensitive information over non-secure communication channels.
Hashing is a one-way transformation of data into a fixed-size string. Modern hashing techniques (e.g. SHA-256) are impossible to reverse.
Its use cases are:
Encoding is the process of converting data into a different format using a set of rules (e.g. ASCII or Unicode).
2. Concurrency vs. Parallelism
Concurrency is the ability of a system to handle multiple tasks at the same time (even when it has only one CPU core).
Concurrent tasks on one CPU core appear to run simultaneously, even though they may not be. This is because of very fast context switching performed by the CPU between them.
Another technique for performing concurrent operations is Asynchronous programming.
Parallelism is the ability of a system to actually execute multiple tasks simultaneously as in the case of multi-core processors, or in distributed systems using different machines.
All parallelism is a form of concurrency, but not all concurrency is parallelism.
3. Library vs. Framework
A Library is simply a collection of pre-written code that is used to perform common tasks.
It provides developers with functions/ methods that they can use to execute tasks without building things from scratch.
A Framework is pre-written code that provides a foundation/ blueprint for building applications.
领英推荐
It often includes libraries, tools, and APIs needed to create applications.
A fundamental difference between them is described using the Inversion of Control (IoC) principle.
When using a Library, our application code controls the flow of the program by invoking library methods whenever needed.
With a Framework, it instructs where to put our application code, and calls our code as required based on events or conditions.
4. Artificial Intelligence vs. Machine Learning
Artificial Intelligence is a broad area of computer science that aims to build machines capable of performing tasks that usually require human intelligence.
Machine Learning is a subset of AI that uses algorithms to help machines learn from data to identify patterns and make decisions with minimal human intervention.
Its subsets are Supervised, Unsupervised and Reinforcement Learning.
While all machine learning is AI, not all AI is machine learning.
Some AI methods that are not included in ML are:
5. Malware vs. Virus
Malware is any malicious software that is designed to harm a programmable device, service or network.
Some of its examples are Viruses, Trojan Horses, Adware, Spyware, etc.
A Virus is a type of malware that mimics biological viruses in producing copies of itself and inserting them into other programs or executable files without the system administrator’s permission.
It can then spread using those files, and alter and delete data on the computer system.
Malware is a broad category that includes all types of malicious software, including viruses.