본문 바로가기

글쓰기

소프트웨어, 즉 프로그래밍을 배운다는 의미는

반응형

소프트웨어는 범위가 넓어서 누구나 쓰는 단어다. 하드웨어에 대비되는 말이다. 그렇다고 소프트웨어를 교육한다는 말이 특정한 언어로 작업하는 프로그래밍을 교육한다는 말을 의미하지는 않는다. 여하튼 소프트웨어를 배우는 일은 어떤 언어를 사용하든 사람의 일을 컴퓨터가 알아듣도록 업무 지시하는 구체적 방법, 도구, 기술을 배운다는 의미로 이해할 수 있다. 


소프트웨어란 컴퓨터 기계장치를 뜻하는 하드웨어의 반대어로 만들어진 용어입니다. 컴퓨터 프로그램과 같은 의미로 해석하기도 하며, 소프트웨어는 크게 시스템 소프트웨어와 응용 소프트웨어로 나뉩니다. 


시스템 소프트웨어는 컴퓨터를 사용하기 위해 가장 근본적으로 필요하며, 운영체제(Windows, Linux 등), 컴파일러 등이 이에 해당합니다. 응용 소프트웨어는 운영 체제에서 실행되는 모든 소프트웨어를 뜻하며, 특별히 어느 응용 분야에 사용하기 위해 제작되기도 합니다. 예를 들면 워드 프로세서, 텍스트 편집기 등이 있으며, 운영체제를 제외한 모든 프로그램이라고 표현할 정도로 대부분의 프로그램들이 이에 해당합니다.


모든 프로그래밍 언어의 핵심 요소는 변수, 연산, 제어, 함수다. 어떤 언어도 4가지 필수 요소를 배우지 않고는 한 발자국도 앞으로 나갈 수 없다. 언어를 배우는 기초 요소가 읽기, 쓰기, 말하기라면 프로그래밍을 이루는 기본적인 요소는 바로 변수, 연산, 제어, 함수가 된다. 각각의 특징, 사용법, 기술하는 과정을 배우고자 하는 언어 특성에 맞춰 단계와 절차에 따라 배우는 것이 소프트웨어를 배우는 것이고, 프로그래머들이 늘 하는 일이다.


좀 더 높은 수준의 소프트웨어를 배우게 되면 그냥 배우는 것과는 세가지 차별화 포인트가 있습니다.


첫째는 큰 프로그램을 설계하는 아키텍트 능력입니다. 수만 라인의 코드를 함수 선언부터 전체 구조까지 제대로 작성할 수 있는 설계 능력입니다.


둘째는 하드웨어가 어떻게 프로그램을 실행하는 지에 대한 시스템에 대한 이해입니다. 메모리 할당, 프로그램의 로딩 과정 등에 대한 이해죠.


세번째는 입력의 크기가 크더라도 잘 실행되는 알고리즘 개발 능력입니다. 열 개의 수를 정렬하는 경우나 백만 개의 수를 정렬하는 경우 모두 다 잘 돌아가는 프로그램을 작성하는 능력이죠. 


그러면 질문에 대한 답은 학교 수업을 열심히 잘 듣자는 것과 전공자로서의 차별화 포인트를 만들어야 한다는 것이 되겠네요.


반응형