What Is Computer Programming? de Ning Software Development
What Is Computer Programming? de Ning Software Development
What Is Computer Programming? de Ning Software Development
Donate
Stay safe, friends. Learn to code from home. Use our free 2,000 hour curriculum.
What is Computer
Programming? De ning
Software Development.
Phoebe Voong-Fadel
Front-end Web Developer. Mum of two. I love to cook and bake.
He looked at my laptop screen and inquired again: “But what are you
doing?”
I paused and started to think about this. I’m a web developer and I’m
programming in JavaScript. How do I explain this to a ve year old?
“I write instructions for the computer and the computer does what I
tell it to do. This is called programming,” I explained. Ramy looked
puzzled.
I started doing some research and these were some of the terms I
searched for: “What is computer programming? What is software?”
There are over 600 million search results on Google for “What is
Computer Programming?” It's a bit like going down a rabbit hole – it
can be complicated and overwhelming.
will start with computer programming and then cover computer Donate
programming languages. Then I’ll talk about software and software
development. Finally, I’ll move onto the current trends and the future
of computer programming.
Just one thing to note: you can use the words “Developer” and
“Programmer” to mean someone who writes code.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 3/28
5/1/2020 What is Computer Programming? Defining Software Development.
result.” Donate
But what does that mean?
A computer itself isn’t smart. Yes they’re powerful and have the
potential to carry out tasks much faster than a human. But computers
need a human to write instructions and tell them what to do.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 4/28
5/1/2020 What is Computer Programming? Defining Software Development.
instructions on how to make a cup of tea, it would look like the Donate
following:
Simple, right?
Humans also have intuition. If you can't nd a cup you might then
search the cupboards instead. There’s also reading people’s non verbal
cues like body language.
1. Go to the kitchen
And so forth.
What if instructions like the ones above are not enough? You may
need to add some logic to account for all scenarios. For example: 2)
Locate the kettle. Well, is it an electric kettle or is it a kettle you put on
a hob? You’ll need to add a condition that if it is an electric kettle, then
do xyz. Otherwise, do xyz for a kettle that you put on a hob.
Even when you think that you’ve accounted for every possible
condition and given very speci c instructions, there are things that
you may not foresee. You start making your cup of tea and something
goes wrong. Oh no! Your kettle stops working after you start boiling it.
In this case, your instructions didn’t include lling up your kettle to 0.8
litres to cover the heating element. So the kettle switches off as a
safety measure.
For example, you write a function which adds two numbers: 1 + 1. You
then write a unit test where the expected output is 2. All answers will
fail unless it's 2.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 6/28
5/1/2020 What is Computer Programming? Defining Software Development.
Donate
You go through your code until everything runs without any
unexpected problems. Programming is therefore a detailed oriented
and iterative process where you are continuously improving what you
have previously written.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 7/28
5/1/2020 What is Computer Programming? Defining Software Development.
processing unit (CPU). Think of the CPU as the brain of a computer. Donate
Machine code is made up of ones and zeros. This is called binary.
For example, this is how you would write “Hello World” in binary:
As you can see, binary is not easily readable for humans, so we tend to
avoid programming in machine code!
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 8/28
5/1/2020 What is Computer Programming? Defining Software Development.
think of are the spoken languages we use today. All languages expressDonate
the same idea, but in different ways to another person:
English: Hello
French: Bonjour
Spanish: Hola
JavaScript: alert(“Hello”);
Python: print(“Hello”)
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 9/28
5/1/2020 What is Computer Programming? Defining Software Development.
I’m not going to explore this topic deeply, but if you are interested this
video is a helpful introduction.
repeatedly. For example, you have afternoon tea and have to make ve
Donate
cups of tea for your guests. In order to make one cup of tea, you have
to follow a set of instructions, like my earlier example.
//expected output:
"Make Tea!"
"Make Tea!"
"Make Tea!"
"Make Tea!"
"Make Tea!"
Going back to my earlier example, you ask the user if they want milk in
their tea. If they do want milk, then add milk to tea, else do nothing.
if(milk == true) {
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 11/28
5/1/2020 What is Computer Programming? Defining Software Development.
// add milk
Donate
} else {
// don't add milk
}
biscuits[0]; // “shortbread”
biscuits[1]; // “digestive”
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 12/28
5/1/2020 What is Computer Programming? Defining Software Development.
If you want to get a digestive biscuit, you can access its index position:
biscuits[1] . I can easily nd it because I know where it’s stored.
Remember that the rst item of the array is index 0. So when you refer
to index 1, it’s actually the second item of the array.
What is an algorithm?
An algorithm is a speci c set of instructions that solves a problem. It’s
an abstract concept. Here’s a link to a short video from TED on "What
is an Algorithm?".
Just like in real life, there are often multiple solutions for a coding
problem. For example, say you’re planning on going to a cafe that
you’ve never been to before. There are several ways of getting to your
destination. Some routes take longer than others, but ultimately, they
all get you to the same place. Ideally you want to pick the quickest,
most ef cient, and easiest route.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 13/28
5/1/2020 What is Computer Programming? Defining Software Development.
Donate
The same principle can be applied to programming. There are usually a
few ways to solve a coding problem, and programmers strive to nd
the most elegant and ef cient solution.
Developers often don’t get it right on the rst try! Just as I would
write a rst draft for an article, it’s the same for coding. I would redraft
an article several times, where I may change the structure, edit,
rewrite sections, and cut out unnecessary sentences. In programming
we go through a similar process, and we call this refactoring our code.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 14/28
5/1/2020 What is Computer Programming? Defining Software Development.
Donate
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 15/28
5/1/2020 What is Computer Programming? Defining Software Development.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 16/28
5/1/2020 What is Computer Programming? Defining Software Development.
It might be easier to think of two people who don’t speak the same
language, but they have to work together. John speaks English and
Chloe speaks French. Chloe writes a set of instructions on how to
make a chocolate souf é in French, but John can’t understand it. They
need a translator that can speak both English and French. It’s easier if
the translator can translate Chloe’s instructions in advance before
they start cooking together.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 17/28
5/1/2020 What is Computer Programming? Defining Software Development.
their cooking session. The translator translates each line of John’s Donate
instructions from English to French as Chloe cooks. Because of this, it
takes longer for Chloe to prepare and cook the meal.
Therefore, interpreted languages are slower than compiled languages.
They have to be translated on the y so the computer can understand.
Donate
If you want to become a Software Engineer then Java could be an
option. Java is one of the most popular and in demand languages in the
world. It's a versatile language which can be used for developing small
to large enterprise software.
So think about what role in tech you would like and what kind of
companies you want to work for.
What is software?
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 20/28
5/1/2020 What is Computer Programming? Defining Software Development.
There are several stages of the software life cycle: discovery, design,
programming/creation, testing, and deployment/execution. It also
includes everything else in the software development ecosystem such
as maintenance, documentation, and bug xes.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 21/28
5/1/2020 What is Computer Programming? Defining Software Development.
Donate
No, they’re not quite the same thing. Machine learning is where a
machine learns through experience. Whereas arti cial intelligence is a
broader idea that machines can execute tasks intelligently. Machine
learning is a subset of Arti cial Intelligence.
The big question is: can you replicate human intelligence in a machine?
Can you mimic the way a human learns, reasons, and perceives? Alan
Turing asked this question in his article in 1950:
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 22/28
5/1/2020 What is Computer Programming? Defining Software Development.
difference between the responses of a human and the arti cially Donate
intelligent machine.
After 70 years, AI developers, academics, scientists and researchers
are still trying to answer this question and create an arti cially
intelligent machine. I don’t think we’re there yet. Have you tried
having a conversation with Siri or Alexa? Conversations with these
two devices are still basic. However, I’m sure it’s just a matter of time
before the technology improves.
When I was teaching my son how to recognize a cat, I would show him
pictures of cats. I did this repeatedly until he was able to recognize a
cat without me prompting him.
whether the animal in the picture is a cat or not a cat. It has essentiallyDonate
learned what a cat should look like.
ML is giving your computer data and examples, and in turn, it’s able to
learn for itself like babies and young children do. Instead of
developers giving the instructions to a computer, the computer
creates its own set of instructions to follow – machine learning
algorithms. Machine learning algorithms is a subset of ML, a concept
known as “Deep learning”.
The quote from Sundar Pichai, the CEO of Alphabet Inc, summaries
the importance of AI and ML.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 24/28
5/1/2020 What is Computer Programming? Defining Software Development.
technology and software becomes ever more integrated in our daily Donate
lives. Programming will become ubiquitous.
We will see the continual rise and popularity of ML and AI to assist
developers in the software development process. This includes
automating testing, along with detecting and preventing
vulnerabilities and bugs.
Final words
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 25/28
5/1/2020 What is Computer Programming? Defining Software Development.
Donate
Yet there are only approximately 23.9 million developers in the world
according to the Global Developer Population and Demographic study
2019. To put this in perspective, only 0.3% of the world’s population
knows how to program. As I discussed earlier, our dependency on
software and technology is increasing. According to the US Bureau of
Labor statistics, the demand for software engineers is expected to
grow by 21% from 2018 to 2028. Therefore, we need to increase the
number of developers.
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 26/28
5/1/2020 What is Computer Programming? Defining Software Development.
best resources to learn to code for free. Do some research and nd Donate
out which resource suits your learning style.
If you have any questions or just want to say hello, nd me on Twitter
@PhoebeVF.
If you read this far, tweet to the author to show them you care.
Tweet a thanks
Our mission: to help people learn to code for free. We accomplish this by creating thousands of
videos, articles, and interactive coding lessons - all freely available to the public. We also have
thousands of freeCodeCamp study groups around the world.
Donations to freeCodeCamp go toward our education initiatives, and help pay for servers,
services, and staff.
Trending Guides
Our Nonpro t
About Alumni Network Open Source Shop Support Sponsors Academic Honesty
https://www.freecodecamp.org/news/what-is-computer-programming-defining-software-development/ 28/28