1. Intro to Software
What is Software
Video games, music players, and internet browsers are all different types of software that have completely different functions. Think of the apps on your phone and your laptop. We spend a lot of time interacting with this type of software but we may not know how it actually works or gets added to our systems. In the last few videos, we learned about networking and the internet. There are tons of applications out there that require the Internet to work. Your social media apps, messaging apps, and others run off(흘러넘치다) the Internet. This Internet integration isn't just magically added to your application, it's built-in to require it to function.
Before we go too far into the world of software, I want to call out some common terms related to software that you might hear. Coding, scripting, and programming are all terms that might seem a little blurry. They generally refer to the same thing but they each have small distinctions. Coding is basically translating one language to another. This can be coding from English to Spanish, English to Morse code or even English to a computer language. When someone builds an application, we refer to it as coding an application. Scripting is coding in a scripting language. We'll talk about scripting languages in a later lesson but scripts are mainly used to perform a single or limited range task. There are languages we can use to build these. Programming is coding in a programming language. Programming languages are special languages that software developers use to write instructions for computers to execute. Larger applications like your web browser, text editors, and music players are all usually written in programming languages. When we use the term software, it generally refers to something that was programmed.
Types of Software
When you rate content, create a piece of art, or engineer something, your work is protected for your use and distribution. There's usually some other caveats(주의사항) depending on the laws in your country but in general, copyright is used when creating original work. Software that is written is also protected by copyright.
Software developers can choose what they do with their software. For commercial software, it's common to let someone else use their software, if they pay for a license. For non-commercial software, a popular option is making it open-source. This means the developers will let other developers share, modify, and distribute their software for free. Score(주목해야 할 점은) Some amazing software efforts have been developed in advance because of open source. One major example is the Linux kernel which is used in the Android OS and in enterprise and personal computers. Hundreds of millions of devices are running Linux at this very second. LibreOffice, GIMP, and Firefox are other examples of open source software. Open source projects are usually contributed by developers who work on the project for free in their free time. These massive software development efforts were essentially built by a community of volunteers.
In I.T. environment, you'll have to pay special attention to the types of software you use. Some may require you to pay multiple licenses to use it, others may be free and open source. It's important to check the license agreement of any software before you install it. We've talked about some of the basics of software, but now let's shift to the two types of software you'll encounter categorized by function. Application Software is any software created to fulfill a specific need, like a text editor, web browser, or graphics editor. System software is software used to keep our core system running, like operating system tools and utilities. There's also a type of system software that we haven't defined yet, called firmware. Firmware is software that's permanently stored on a computer component. Can you think of a firmware that we've talked about already? If you thought of the BIOS, you're right. The BIOS helps startup the hardware on your computer and also helps load up your operating system. So it's important that it's in a permanent location.
I should also call out software versions. These are important because they tell us what features were added to a specific software iteration. You'll encounter lots of software versions while you work with software. Developers might sometimes use a different standard when distinguishing a version. But in general, the majority of versions follow a sequential numbering trend. You might see something like this, 1.2.5 or 1.3.4, which of these do you think is the newer version? It's 1.3.4 because it's a larger number than 1.2.5.
https://en.wikipedia.org/wiki/Software_versioning
Software versioning - Wikipedia
From Wikipedia, the free encyclopedia Giving a unique identifier to each software update "Version number" redirects here. For versioning of other products, see Mark (designation). Software versioning is the process of assigning either unique version names
en.wikipedia.org
Recipe for Computing
Remember that in the 1950s, computer scientists use punch cards to store programs. These punch cards represented bits that the CPU would read and then perform a series of instructions based on what the program was. But storing programs on punch cards was a long and tedious task. The programs had to be kept on stacks and stacks of punch cards. Computer scientists needed a better way to send instructions to a machine, but how? Eventually, a language was invented called Assembly language, that allowed computer scientists to use human readable instructions, assembled into code that the machines could understand. Instead of generating binary code, computer scientists could program using machine instructions, it is like this, take integer from register one, take integer from register two, add integer from register one and register two and output to register four. This example makes it look like a human can read it, but don't be fooled(사실은 읽을 수 없습니다). Let's take an example of saying something simple like, hello world, in Assembly language. It looks pretty robotic.
Don't get me wrong, that's still an improvement over it's binary code cousin. But Assembly language will still register thin veil from machine code(기계어스러운 느낌이 있다). It's still didn't let computer programmers use real human words to build a program. And a program that was written for a specific CPU, could only be run on that CPU or family of CPUs. A program was needed that could run on many types of CPUs. Enter(도입되었다) compiled programming languages. A compiled programming language uses human readable instructions, then sends them through a compiler. The compiler takes the human instructions and compiles them into machine instructions. Admiral Grace Hopper, invented this back in 1959, to help make programming easier. Compilers are a key component to programming, and helped to pave the road that led us to today's modern computing. Thanks to compilers, we can now use something like this, and it will be the same thing as this.
Computer scientists have developed hundreds of programming languages in the past couple of decades to try and abstract the different CPU instructions into it's simpler commands. Along the way, another type of language emerged that was interpreted rather than compiled. Interpreted languages aren't compiled ahead of time(미리). A file that has code written in one of these languages is usually called a Script. The script is run by an interpreter, which interprets the code into CPU instructions just in time to run them. You'll learn how to write code using a scripting language later in this program. Programming languages are used to create programs that can be run to perform a task or many tasks.
Compiled Languages:
- C
- C++
- Java
- etc
Interpreted Languages:
- Python
- JavaScript
- Ruby
- etc
2. Interacting with Software
Managing Software
Programs, software, and applications, are terms that are synonymous with each other. For now we'll go ahead and use the term software to refer to any of these. We've already had a rundown(개요) of the different types of software. There are certain types of software that perform specific functions, like drivers, which allow us to interact with our hardware. There are applications that we use for our day to day job functions. And there are utilities that we use like a calculator, settings, and other tools.
With the seemingly endless options for software, how do we know which ones to use? How do we deal with them in a workplace setting and in our personal lives? Software is always changing. Developers are releasing updates, software companies change, features are added, and so on. This constant change is completely out of our control and it can cause a lot of headaches in the IT world. Let's say the company that builds your payroll(급여) system pushes out a software update that causes settings to change or even worse completely breaks the compatibility(호환성) with your own company. It can happen. You should always test new software before letting your company use it. Another thing to worry about is old software. When you run old software on your machine, you risk being exposed to cyber security attacks that take advantage of software bugs. A software bug is an error in software that causes unexpected results. For now, know that software updates usually contain critical security updates and new features, and have better compatibility with your system. A good guideline is to update your software constantly.
Another problem that plagues the IT world when it comes to software is software management. If you're setting up a computer for someone, you want to make sure that they'll have all the necessary tools they need to hit the ground running(본격적으로 수행하다). That means you'll need to install all the software required for the job. That also means you'll also want to remove software that isn't required for the job. We may not realize if a piece of software we installed is malicious software which causes harm to your computer. It's always a good idea to check if the software comes from a reputable source before you install it. A common industry practice is to not allow users to install software without administrator approval. This prevents users from installing unwanted software because they're actually blocked with an error message that says they need an administrator to enter their login credentials.
Software Automation
By now you've learned what software is, how it integrates with our computer, and how we manage it. It was easy to install, update, and remove software on one machine. But what if you had to do that for multiple machines? That would take up a lot of time. If only(~하면 좋을텐데) there was a way we could have it done automatically for us. Spoiler alert, there is. We use software to help us with this. There are lots of tools out there that help make managing computers easier. We use automation for this. Automation makes processes work automatically. You can even use the tools of automation like programs and scripts to help you with troubleshooting issues. So instead of reading hundreds of lines of log files manually to discover when a particular error occurred on a computer, you could write a script to read the log for you and print out only the relevant line, Software has many uses including making processes more efficient and easier.
That' all for the fifth module.
Remember that practice makes perfect, whether you're learning something new, or trying to improve your skills.
'GCC-Study(完)' 카테고리의 다른 글
[GCC-Study] Troubleshooting (0) | 2024.02.26 |
---|---|
[GCC-Study] Networking (2) (0) | 2024.02.18 |
[GCC-Study] Networking (1) (0) | 2024.02.17 |
[GCC-Study] Operating System (2) (0) | 2024.02.12 |
[GCC-Study] Operating System (1) (0) | 2024.02.11 |