본문 바로가기
기타/멋쟁이사자처럼

[ruby] 프로그래밍을 배우는 이유 / OOP 개념 / 루비를!

by jinbro 2017. 2. 5.

[프로그래밍을 왜 배워?]

프로그래밍을 왜배우는지 깨닫기위해서 컴퓨터가 어떤 것인지부터 알아야한다.


- 컴퓨터는 인간이 하기 귀찮거나 어렵거나 대용량인 데이터들을 계산, 저장을 하는 기계

- 정해진 순서에 의해 데이터를 계산하고 저장하는 기계

- 컴퓨터는 0과 1(이진수 == 바이너리 == 기계어)로 이루어진 기계

-  인간이 쓰는 언어와는 다른 형태(언어)로 이뤄진 기계이다. 


[그럼 다시 프로그래밍을 왜 배워?]

우리가 기억하기 어려운, 기억하기 귀찮은, 자동으로 계산을 해주기를 바라는 등등의 이유로 우리는 컴퓨터를 사용하고 있다. 컴퓨터에게 명령을 내리면서..... 프로그래밍 언어는 컴퓨터에게 명령을 내리기위한 언어이다. 그들과 소통을 하기위한 언어라는 말이다. 우리가 어떤 계산을 해주는 프로그램 혹은 어떤 특정 데이터들을 저장하기위한 용도의 프로그램을 만들려고 한다면 그들과 소통할 수 있는 언어를 사용해야한다.  

근 100년 전만 해도 프로그래밍 언어 라는 것은 배우기가 어려웠었다. 하지만 점차 시간이 지나면서 컴퓨터와 인간이 소통하는 프로그래밍 언어가 사람 중심으로 바뀌어왔고, 요 근래 나오는 언어들은 거의 인간이 일상 생활에서 쓰는 언어와 구조, 형태, 단어 사용 등이 똑같다. 



[루비는 어떤 언어야? OOP!]

루비는 요근래 나온 프로그래밍 언어답게 인간의 언어의 구조, 형태 등이 유사하다.

인간의 언어와 유사하다고 말할 수 있는 것이 바로 루비는 OOP(Object-Oriented-Programming, 객체지향프로그래밍언어)이기 때문이다.

그럼 객체지향프로그래밍이 무엇일까?

객체지향프로그래밍이라는 말 자체가 이해하기 어려울 것이다. 

OOP가 왜 나오게되었는지 배경을 알게되면 이해하는데에 도움이된다.

프로그래밍(컴퓨터에게 명령을 내리는 것)을 할 때 조금 더 인간 중심으로 하자는 것이다.

인간은 세상에 일어나는 모든 일을 누가(주어) + 무엇을 했다(동사)로 표현한다. ex) 내가 프로그래밍을 한다, 친구가 군대를 간다.

컴퓨터에게 명령을 내릴 때도 인간이 세상을 표현하는 것과 같이 하자는데에서 OOP를 사용하게된 것이다.

인간이 세상을 주어와 동사로 표현하듯 인간이 컴퓨터와 소통하는 언어에서도 인간과 대화하는 것처럼 주어 + 동사로 표현하겠다는 것이다.

OOP 개념의 핵심에는 클래스가 있고, 클래스를 객체화하고 객체가 메서드를 사용하는 것이 OOP이다.

ex) 신을 믿지는 않지만 조물주가 있다. 조물주는 사람을 만들어낸다. 사람을 만들어내기위해 필요한 빵판이 있는데 이를 클래스라고 한다. 이 클래스의 이름은 Person이다. 조물주가 Person 클래스를 가지고 우리 가족을 만들어낸다. 같은 사람이지만 각각 다른 특징을 가진 사람이다. 같은 종류이지만 각각 다른 사람이다. 이를 객체라고 한다. Class를 통해 Object(객체)를 만들었다. 이 Object(객체)가 어떤 일을 한다. 어떤 일이 메서드이다. => 나는 학교를 간다. 3개의 Object 중 특정 Object(나)가 학교를 간다(goSchool 이라는 메서드) == OOP를 사용하게된 이유, OOP 특징

그럼 객체지향프로그래밍언어가 루비 밖에 없어? 놉 절대 아니다. 수많은 OOP 언어가 있다. 그렇지만 인간의 언어 구조뿐만 아니라 표현도 유사한 것이 루비이다.



루비로 작성된 코드다. 

코드를 살펴보자면 어떤 것이 저장되었을 때 네이버로 가고, 그렇지않으면 주목해야할 어떤 말이 터져나온다는 말이다.


루비는 객체.메서드 형태로 코드를 만든다. 그렇지 않아보이는 redirect_to, flash[:notice]도 실제 구동되는 코드를 까보면 객체.메서드 형태로 동작을 한다. 프로그래밍하는 입장에서 더 쉽게하라고 그렇게 만들어놨을 뿐이지 실제 동작은 객체.메서드 형태로 동작하는 것임을 명심하자


여기서 드는 의문 중 하나가 아마 이렇게 쉬운 언어만 배우면 나중에 어려운 언어는 어떻게 이해할 것인가이다.

결론부터말하자면 어려운 언어라고 일컬어지는 프로그래밍 언어들도 결국엔 표현이 어렵고 조금 더 복잡할 뿐이지 OOP 개념을 가진 언어라면 루비를 제대로 공부했다고하면 구조가 같기때문에 결코 어렵지않다.

나 같은 비전공자들은 어려운 언어를 가지고 OOP 개념의 프로그래밍언어를, OOP가 아닌 프로그래밍언어라도 구조, 기본 표현방법을 파악하는 것보다 쉬운 언어로 파악하는 것이 좋다. 또한 웹프로그래밍 배움이 필요한 상황이라면 루비가 더더욱 좋다. 레일즈 라는 웹프레임워크가 있기때문이다. 

프레임워크란 어떤 프로그래밍언어를 가지고 어떤 프로그램을 쉽게 만들기위해 필요한 밑바탕을 누군가가 마련해둔 것이다. 밑바탕 안에는 필요한 도구들도 있다. 

웹을 만들 때는 이것저것 고려해야할 것들이 많은데, 딱 내가 만들고싶은 프로그램만 만들 수 있도록, 집중할 수 있도록 밑바탕을 마련해둔 것이다.

그게 바로 레일즈다. 레일즈는 그만큼 강력하다. 레일즈를 통해서 프로그램을 짜기위해서는 루비 기초가 탄탄해야한다. 웹프로그래밍을 조금 더 쉽고, 빠르게 하고 싶다면 루비를 배우자~!


끝으로 살펴보고 누군가 말한 루비 언어의 특징을 살펴볼 것이다.  


- High-level : 사람 말 같고(컴퓨터와 대화하는 언어이지만)

- Interpreted : 편하고(안귀찮고)

- Object-oriented : 상식적이고

- Easy to use : 사용하기 쉽다


이제부터 레일즈를 비롯해서 루비를 공부한 것을 복습하는 차원에서 블로그 포스팅을 해나갈 것이다.

댓글