과학

프로그래밍, 프로그래밍을 배우면 무엇을 할 수 있는가?

서론, 프로그래밍이란 무엇인가

Programming. 말 그대로 프로그램을 만드는 것을 프로그래밍이라고 말해. 그렇다면 프로그램은 뭘까? 사실 정의에 대해서는 사람마다 다 말이 조금씩 달라. 가장 무난한 정의를 말하자면 '명령어의 집합' 이라고 말할 수 있을거야.


프로그램은 모두 인터넷 브라우저, 여러분이 하는 게임처럼 거창하지는 않아. 기본적으로 컴퓨터가 인식하는 명령은 입력(읽기), 출력(쓰기), 덧셈, 뺄셈, 곱샘, 나눗셈 정도야. 즉, '명령어의 집합' 이라는 정의에 따르면 1 + 1 의 결과를 출력해주는 명령어 집합도 프로그램이라고 말해. 만약, 프로그래밍을 배운다면 이런 덧셈 뺄셈 하는 프로그램을 만드는것에서 출발하게 될거야.


1. 프로그래밍으로 무엇을 할 수 있는가.

사실 입출력을 제외하면 할 수 있는건 산술밖에 없어. 사칙연산으로 무엇이든 하는거야. 취미로 배우게 되어 무언가를 만들지 않는 이상 용도는 단순해. 계산기로 쓰는거지.


>>> print(10+3*2)
16


이런 단순한 연산부터, 토끼 수를 세는데도 이용할 수 있어.

  • 첫 달에는 새로 태어난 토끼 한 쌍만이 존재한다.
  • 두 달 이상이 된 토끼는 번식 가능하다.
  • 번식 가능한 토끼 한 쌍은 매달 새끼 한 쌍을 낳는다.
  • 토끼는 죽지 않는다.

그렇다면 30개월차의 토끼는 모두 몇마리일까?

>>> def fibonachi(n):
...     if n is 0:
...         return 0
...     if n is 1:
...         return 1
...     else:
...         return fibonachi(n-1) + fibonachi(n-2)
...
>>> print( fibonachi(30) )
832040


정답은 832040 마리야





많은 사람들이 알고있거나 눈치챘겠지만 이건 피보나치 수열을 이용한 문제야. 위키백과에서 수열의 점화식을 보고 프로그램으로 옮겨 결과를 얻는데 모두 3분정도 걸렸어. 여러분은 영어를 잘하니 if, is 같은 단어는 알거라고 생각해. return 은 결과값을 돌려주라는 의미야. 정말 점화식 그대로의 명령어 집합이니 이해했을거라고 생각할게.


프로그래밍은 컴퓨터의 능력, 흔히 컴퓨팅 파워라고 말하는 계산능력을 이용해 복잡하거나 노가다성 문제를 빠르게 해결하는데 매우 탁월해. 그러니깐, 프로그래밍을 배우면 무엇을 할 수 있는가에 대한 답은


직접 하자니 골때리는 문제를 빠르고, 쉽게 해결할 수 있다.


라고 말할 수 있을거야. 그렇다면 직접 하자니 골때리는 문제를 한번 생각해보자.



문제1. 편집

영어로 된 책을 편집하는데 어떤 미친놈이 is 뒤에오는 단수명사에 모두 s, 혹은 es를 붙여버렸다. 책은 384 페이지고 텍스트 파일로 주어져 있다. 여러분은 다시 is 뒤에오는 복수명사를 모두 단수명사로 변경해야 한다.


이 문제를 해결하기 위한 방법은 무엇이 있을까?

  1. 삽질한 놈에게 다시 변경토록 지시한다.
  2. 스크롤을 내리며 일일이 찾아 변경한다.
  3. Ctrl + F를 눌러 is를 검색, 뒤에오는 단어를 변경한다.
  4. 프로그래밍을 한다.


책임을 져야하는 입장인데 아래서 똥을 싸버리면 그만큼 골때리는 일도 없을거야. 그럴땐 무엇보다 직접 해결하는게 가장 속 편하지. 2번은 확실히 아니야. 손가락도 아프고 눈도 빠지고 실수로 놓치고 넘어갈 여지도 너무 커. 3번은 확실하지만 좀 노가다 작업이지? 4번은 직접 타이핑 하는게 아니니 찝찝하지만 가장 빠르게 해결할 수 있는 방법이기도 해.


텍스트를 다루는건 프로그래밍을 이용해도 까다로운 문제야. 하지만, 요즘은 정규표현식이라는 기똥찬 놈이 이런 문제를 해결해 줄 수 있어. 정규표현식, Regular Expression 이라고 말하고 줄여서 Regex, Regexp 라고 쓰는 놈인디 텍스트를 표현하고 다루는데 있어 아주 능력있는 친구야.


>>> import re

>>> print( re.sub("(?P<word>is\s(an?\s)?\w+e?)s", "\g<word>", "Hello, It is a cars. That is pies") )
Hello, It is a car. That is pie.


원문은 "Hello, It is a cars. That is pies", 결과는 Hello, It is a car. That is pie. 제대로 고쳐진걸 확인할 수 있어. 원래는 파일을 읽어와서 바꾸어주는 코드를 짜야겠지만 예제니깐 임의의 문자열을 고쳐주는 코드를 짜봤어. 이상한 기호 범벅인 두 번째 줄이 무슨 의미인지는 굳이 알려고 안해도 돼. 정규표현식이란 놈을 이용하면 단 한줄 만으로도 이런게 가능하다 정도로만 생각해줘.


요즘은 다양한 프로그램에서 문자열 검색, 변경 기능에 정규표현식을 지원하는 경우도 많으니 굳이 C같은 언어가 아닌, 정규표현식만 공부해도 유용할거라고 생각해.


문제2. ??

미안. 비 전공자가 일상 생활에서 컴퓨터하다 맞닥트릴만한 문제가 딱히 떠오르질 않아 ㅠㅠㅠㅠ


액셀에서도 VBA(visual basic for applications)라는 프로그래밍 언어를 지원해. 상경계 직종에서는 엑셀 많이 쓰니깐 Visual basic 공부해도 나쁠건 없을거야. 내가 엑셀을 안쓰니 실제로 프로그래밍까지 해서 문제를 해결해야 할 일이 무어가 있는진 몰라서 예제가 음슴


나중에 채워넣을걸 대비해서 남겨둠.




2. 프로그래밍 시작하기
왜 프로그래밍 언어를 배우려고 하는가, 배워서 어디다 쓰려고 하는가

라는 질문에 답을 할 수 없다면 프로그래밍 언어를 공부하지 않는걸 권유하고 싶어. 프로그래밍은 기술이야. 그리고 기술은 쓰지 않으면 늘기는 커녕 오히려 퇴보하고. 프로그래밍을 배우는걸 권장하는 사람은 다음과 같아.

  1. 컴퓨터를 이용한 작업 중에 귀찮은 문제를 자주 당면하는 사람
  2. 굳이 배워야 할 필요는 없지만, 할 줄 알면 좋은 환경에 있는 사람
  3. 웹 사이트, 어플리케이션, 게임 등을 만들고자 하는 사람
  4. 수학적 문제를 프로그래밍으로 해결하고자 하는 사람 (https://www.acmicpc.net/ https://www.algospot.com/ http://59.23.113.171/)
  5. 당장 사용할 생각이 없고, 사용할 일도 없을것 같지만 학문적 호기심에 꾸준히 해보고자 하는 사람

중요한건 꾸준하게 프로그램을 만드는게 가장 중요해. 그렇지 않다면 공부한것도 까먹고 괜한 시간낭비만 할 가능성이 매우 커. 적어도 꾸준히만 한다면 까먹어도 조금 보면 금방 다시 할 수 있으니깐.


여튼간 필요성을 느끼지 못한다면 그냥 하지 마. 그리고 처음 언어를 접한다면 구글에 "[언어이름] 강좌" 혹은 "[언어이름] 문법" 이런식으로 치면 기초적인 내용이 나올거임.


만약 정말 배우고자 마음먹었다면 언어를 선택할 차례야. 유명한 프로그래밍 언어만 꼽아도 10종은 넘어갈거야. 당연한 말이지만 이왕 시작하는거 자신의 필요, 환경에 맞는 언어를 선택하는게 좋겠지? 언어 선택부터 내용은 다음에 적음 ㅇㅇ

9개의 댓글

2016.03.21
오 깔끔하게 정리 잘 해놨네 추천준다 ㅊㅊ
0
2016.03.21
나한테 도움 많이 되는 글이네 고맙
0
2016.03.21
프로그래밍으로 무엇을 할 수 있냐고?
재밌는 게임을 만들 수 있지!
즐거워! 게임을 만들어! 즐거워! 게임을 만들어!
그리고 야근을 해!
즐거워!
0
프로그래밍으로 무엇을 할 수 있냐고?
부르릉~~
S"야 자바 타!"
a"예! 저 자바할 수 있습니다."
b"잠깐만요! 저 자바 경력 5년입니다!"
S"그럼 너 타"
a"저는 10년입니다!"
S"10년 타"
0
2016.03.23
@여기서제일정상인
'오밤중에 드럼통 모닥불앞에서 비니쓰고 털덥수룩하게 난 사람들 3명이 불쬐고 있는데 앞으로 밴하나가 지나가다 서더니 하는 말.'
0
치킨을 잘... 튀길 수 있다고 배웠습니다.
0
2016.03.23
IF(my_jop.equel("developer") or my_jop.equel("개발자")[
overtime = true;
off_work =false;
weekend = false;
]else[
overtime = false;
off_work =true;
weekend = true;
]
0
2016.03.23
단어 바꾸는건 그냥 notepad++ 로 여러개 열어서 열린 파일 단어 모두 바꾸기하면된다
미친놈처럼 그런걸로 코딩하지말자 ㅜㅜ
0
2016.03.24
@일째 밤샘중
그렇긴 한데 예제 일관성을 위해 모두 파이썬으로 작성함. 그러고보니 예제가 파이썬이라고 적어놓지도 않았넹...
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
563 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 12 27 일 전
562 [과학] 번역)새들은 왜 알을 많이 낳는가? - 후투티의 형제살해 습성... 7 리보솜 3 2024.03.23
561 [과학] 학계와 AI, 그리고 Bitter Lesson (쓰라린 교훈) 26 elomn 35 2024.02.17
560 [과학] 지구의 속삭임, 골든 레코드의 우주 9 Archaea 10 2024.02.16
559 [과학] 잔혹한 과학실험 이야기 <1> 절망의 구덩이 19 개드립하면안됨 37 2024.02.15
558 [과학] 스트레스를 받으면 술이 땡기는 이유 12 동식 16 2024.02.10
557 [과학] 지능은 모계유전이 아니다. 40 울릉특별자치도 35 2024.01.26
556 [과학] 진화를 생각할 때 고려할 것들 23 날씨가나쁘잖아 12 2024.01.17
555 [과학] 학문적(과학적) 접근과 유사 진화심리"학" 26 날씨가나쁘잖아 19 2024.01.15
554 [과학] 호모 사피엔스의 야릇한 은폐된 배란에 대한 남녀 학자의 다... 14 개드립하면안됨 15 2023.12.29
553 [과학] 김영하의 작별인사를 읽고 느낀 점 (스포있음) 21 장문주의 2 2023.11.28
552 [과학] 제4회 포스텍 SF 어워드 공모전 ( SF 단편소설 / SF 미니픽션 ) 2 따스땅 1 2023.11.25
551 [과학] 펌) CRISPR 유전자 가위 치료제 "최초" 승인 12 리보솜 7 2023.11.25
550 [과학] 러시아는 기술산업을 어떻게 파괴시켰는가(펌) 9 세기노비는역사비... 15 2023.11.18
549 [과학] 고양이에 의한 섬생태계 교란과 생물 종의 절멸 (펌) 2 힘들힘들고 6 2023.11.16
548 [과학] 번역) 알츠하이머병 유전자는 어떻게 살아남았는가? 12 리보솜 10 2023.11.15
547 [과학] 『우영우』의 자폐 스펙트럼 장애 개념이 왜곡인 이유 (펌) 47 힘들힘들고 10 2023.11.12
546 [과학] 흑수저 문과충 출신 구글 취직하는 파이썬 특강 -1 14 지방흡입기 11 2023.09.27
545 [과학] 국가별 당뇨 유병율 이거 뭐가 바뀐건지 아는사람? 8 LAMBDA 1 2023.09.27
544 [과학] 물샤워 ㅇㅈㄹ 하는 놈들 봐라 171 철동이 48 2023.09.23