본문 바로가기
웹개발

파이썬 스터디 : 004. 개발언어 핵심정리

by 리플러스 2021. 2. 11.
728x90

 

 

개발 언어로 어떤 일을 할 수 있을까?

저번 시간까지는 개발언어를 통해 실무에서 어떤 정보들을 다룰 수 있는지에 대해 이야기해보았다. 결국 정보는 사용자별로 여러 정보 템플릿이 나뉘게되고. 그 정보 템플릿을 다루는게 개발의 핵심과정이라는 것도 알게됐다. 그렇다면 그 정보들을 실제로 어떻게 다룰 수 있는걸까?

 

복잡하게 생각할거 없다. 대부분의 개발 언어는 이런 일을 하려고 쓴다

 

세상에는 여러가지 개발 언어가 있다. OS를 다루는 C와 C++, 백엔드를 다루는 자바와 파이썬. 프론트 엔드를 다루는 자바스크립트까지. 이런 언어들은 서로 달라보이지만, 결국 똑같은 일을 한다. 데이터를 모아, 필터링해서, 원하는 결과값을 내는 것이다.

-  여러 데이터들을 모아서
-  수식이나 계산, 필터링 처리해서
-  원하는 결과값을 내려고 개발언어를 배운다

 

개발 언어를 배울 때우리가 알아야하는건. 데이터를 어떻게 구분하는지, 수식이나 계산, 필터링 등을 어떻게 하는지. 이런 기본적인 내용들이다. 지금부터 그 내용에 대해서 알아보도록 하자.

 

 

 

개발 언어가 다루는 3가지 : 숫자, 문자, 명령어

개발 언어에서는 크게 세가지를 다룬다. 숫자와 문자, 명령어. 이 세가지다. 그러나 숫자와 문자, 명령어를 나누는 기준이 조금 애매하다. 앱이나 웹처럼 UI가 따로 나뉘어있는 것도 아니고. 여러 텍스트들 중에서 숫자와 문자, 명령어를 '어떻게 구분시키는지'를 한눈에 알기 어렵다. 그래서 마치 모르는 외국어 원문으로 된 복잡한 문서를 보는 것 처럼. 막막함만 생기게 되는 것이다.

 

숫자와 문자열, 명령어. 이 세가지만 기억하자

 

 

개발 언어는 눈으로 보고 이해하는 언어다. 나중에 해외에서 샘플 자료를 보던. 직접 코드를 짜건 간에. 복잡해보이는 코드를 이해하고. 불필요한 부분을 잘라내거나. '더 나은 방식'을 찾아내려면. 눈에 보이는 것들 이전의 정보 단위를 파악하는게 중요하다. 그러니 이번에는 숫자와 문자, 명령어. 이 세가지를 하나씩 구분하고. 정리해보도록 하자.

 

 

 

개발 언어가 다루는 정보 : 숫자

개발 언어에서 가장 혼동하기 쉬운 것들 중 하나가 숫자다. 컴퓨터가 생각하는 숫자는 우리가 생각하는 것들과 조금 다른데. 그 기준은 다음과 같다.

컴퓨터가 인식하는 숫자의 범위

 

너무 당연하게 느껴질 수도 있겠지만. 컴퓨터가 다루는 숫자는 정수와 소수까지이고. 더하기 뺴기, 곱하기, 나누기가 가능한 숫자여야한다. 그러니까 1과 0.1은 되지만, 3%나 10월은 숫자로 인식하지 못한다는 이야기다. 

-  0에서 1의 조합으로 이뤄진 숫자
-  0.001같은 소수점도 숫자로 인식
-  더하기, 빼기, 곱하기, 나누기 가능
월, 일, cm, km, kg, 퍼센트, 개, 명, 리터, 온도, 등 단위는 미포함

 

이게 다야? 싶을 정도로 단순하지만. 실제 사례를 통해 보면, 왜 이런 지점이 중요한지를 알 수 있다. 다음 내용은 필자가  '숫자와 날짜'를 통해 계산을 하려다가 겪었던 문제다.

 

 


 

실제 사례 : 날짜는 숫자가 아니다?

코딩예제를 보다가. 주민등록번호를 입력해서, 사용자의 성별과 출생연도를 확인하는 예제를 발견했다. 그래서 그 내용이 어떤 단위를 거쳐서 만들어지는지를 확인해보기로했다.

 

주민등록번호의 구성정보

 

 

주민등록번호 내부에는 사람이 태어난 연도와, 월일 날짜가 표현되어있다. 게다가 7번째 구분값에는 성별 구분까지 담겨있어서. 이 사람이 현재 몇살이고, 언제 태어난 성별의 사람인지를 확인할 수 있다. 그러니 이 정보를 체크해서, 현재 날짜와 연결해 계산만 해주면 되지않을까? 하고 생각을 했다. 

 

이 사람은 언제 태어났고, 지금은 몇 살인지를 구분해주려고 했다

 

 

머릿속에서 생각할 때는 문제가 없어보였다. 하지만 코드를 쓰는 법을 찾아서 내용을 작성해보니. 계속 에러가 떴다. 오늘 날짜를 달력에서 불러와, 연도 부분만 떼어내서 계산을 하려했던게 문제였다. 

-  1. 현재 날짜를 불러옴 (2021년 00월 00일)
-  2. 날짜에서 연도만 떼어냄 (2021년)
-  3. 이 연도를 사용자가 입력한 주민등록번호를 연결해. 계산을 시도함
4. 코드에서 에러가 뜸

 

물론 정확한 방법을 쓰지 못했을 뿐. 하는 방법이 있긴 했다. 다만 내 경우는 datetime.today라는 규격을 숫자로 바꿔주는 작업을 제대로 하지 못한거였다. 이 과정에서 확실하게 알게된건. 날짜 정보처럼 연, 월, 일 개념이 들어간 정보는. 일정한 순서에 맞게 쓰지 않으면 '단순 숫자'로 인식하지 못한다는 거였다. 

 

 

 

그래서 그냥 연도 구분만 해주기로 했다

 

위의 코드는 주민등록번호의 일곱번째 숫자를 체크해서. 그 사람이 어떤 연도에 태어난, 어떤 성별의 사람인지를 구분해주는 코드다. 기존에 진행한 방식보다 좀 더 단순한 구조로. 주민등록번호의 뒷자리가 1,3일 때의 차이와. 2,4일 때의 차이만 구분해준 것이다.

- 2000년대 이전에 태어난 사람은 앞자리가 1 혹은 2 ( 남 : 1 / 여 : 2 )
- 2000년대 이후에 태어난 사람은 앞자리가 3 혹은 4 ( 남 : 3 / 여 : 4 ) 

 

위의 사례는 정말 초보적인 수준의 문제다. 하지만 '문자열'에 들어있는 숫자와. 그냥 숫자의 차이가 왜 중요한지를 말해주는 사례이기도하다.

 

 


 

 

개발 언어가 다루는 정보 : 문자

개발 언어에서 문자는 숫자와 비교했을 때, 그 차이를 명확하게 알 수 있다. 예를 들어 숫자는 아무리 긴 내용이라해도, 각각의 숫자를 방 하나에 따로 넣어준다. 그래서 '이 숫자의 몇번째 텍스트'를 가져와서 계산에 써줘. 같은 명령을 내릴 수 있다. 반면 글자는 방 하나에 한꺼번에 담겨있고, 숫자와 문자가 뒤섞여있어서 계산에는 쓸 수 없다. 

 

숫자와 문자열의 차이

 

 

컴퓨터가 인식하는 문자는 한국 기준으로 영어와 한글 두가지인데. 파이썬에서는 숫자와 문자를 함께 써야할 경우. 숫자와 문자를 엄격하게 구분해줘야한다. 이건 다른 개발언어도 마찬가지다. 숫자로 인식하길 원하지 않는 경우라면, '문자열' 안에 숫자를 넣어버릴 수 있고. 숫자와 문자를 구분해야한다면, 귀찮더라도 하나하나 내용을 떼어내줘야한다.

-  10월 1일을 표기하려면 

10 (숫자) + (문자) + 1 (숫자) + (문자) 

 

 

컴퓨터는 문자와 숫자를 완전히 다른 것으로 인식한다. 그래서 입력과정 정확한 UI를 써야하고, 입력시 불필요한 문자열이 들어오지 않도록 처리를 해주는 것이다. 그 대표적인 사례로 드롭다운 방식의 입력과, 직접입력 방식을 들 수 있다.

드롭다운 방식의 입력 / 사용자 직접입력시 정보의 차이점

 

파이썬에서 문자를 다시 배열로 만들려면, 추가 작업이 필요하다. 이 경우 숫자나 단어만 떼어내어 계산에 사용할 수 있도록 하는 방식도 있지만. UI 입력시 숫자입력만 가능하게 제한하는 편이 더 나을 것이다.

 

 

 

 

개발 언어가 다루는 정보 : 명령어

개발 언어에서는 명령어(Command) 라는 개념이 있다. 일반 문자나 숫자와 다르게, 특정 기능을 가져오거나. 특별한 기능을 실행할 때 쓰이는 명령어다. UI라는건 결국 텍스트 기반으로 되어있는 이런 명령어들을 시각적으로 묶어둔 개념이다. 다만 내용이 많다고 고민할 필요 없다. 스케치, 피그마나 포토샵에서 자주 쓰는 기능만 쓰는 것처럼. 명령어도 마찬가지다. 자주 쓰는 기능만 쓴다.

 

기본적인 명령들만 외워두면 된다. 다른 것들은 그때그때 찾아보면서 쓰자

 

스케치나 피그마, 포토샵에도 복잡한 명령어는 분명 여럿 있다. 그러나 우리가 실제 쓰는 기능들은 복사 붙여넣기, 드래그 같은 기본적인 것들 아니던가? 이건 개발언어에서도 마찬가지다. 자주 사용하기 때문에 무조건 알아둬야할 것들과. 특정 케이스에서 필요하니 그때그때 알아보면 좋을 것들이 나뉘어있다. 그러니 너무 복잡하게 생각하지 말고, 꼭 써야하는 것들만 머릿속에 담아두도록 하자.

 

 

728x90

댓글