brunch

[솔로프리너] 0. Ruby 언어를 학습을 시작하다.

by 개미

https://www.theodinproject.com/

학습자료는 "디오딘프로젝트"로 시작했습니다.




Rails로 저만의 SaaS를 만들기 전에 언어에 대한 이해가 필요할 것 같아서

루비 학습을 시작했습니다.


저는 이전에 Javascript, Java, Python에 대한 이해가 있습니다.

안드로이드 개발자였고 프론트엔드와 백엔드 개발의 경험이 있습니다.


프로그래밍 강사로도 활동했고요.


다른 언어에 대해서 배우는 것은 크게 문제가 없을 것 같지만

루비는 처음이라서 긴장도 되고, 설레기도 합니다.



0. Ruby의 설치와 시작


여기저기 이동하면서 공부해야하기 때문에 집에 있는 데스크탑이 아닌

맥북을 이용해서 학습하기로 했습니다.


MacOS에서는 brew를 활용합니다.

스크린샷 2025-08-04 오후 6.13.51.png


brew를 통해 받은 rbenv로 ruby 언어 3.4.5를 설치했습니다.

스크린샷 2025-08-04 오후 6.18.16.png




1. 기억하면 좋은 문법들


- Ruby는 모든 표현식이 리턴값을 가집니다. 심지어 출력문인 puts도 리턴값을 가집니다. 명시적인 리턴값이 없을 때는 nil을 리턴합니다. 그래서 출력문인 puts는 nil을 리턴합니다. 신기하네요.


- 문자열을 표현하는 작은 따옴표와 큰 따옴표가 다르게 사용됩니다. 작은 따옴표는 문장 안을 무조건 문자열로 출력합니다. 예를 들어서 개행 문자인 \n도 작은 따옴표로 감싸면 그냥 저 자체로 표기됩니다. 문자열 안에서 변수로 템플릿처럼 쓰거나 특수문자를 쓰려면 모두 큰 따옴표로 감싸야합니다.


- 앞에 콜론: 이 붙으면 심볼이라는 특수한 데이터 형태가 됩니다. 심볼은 싱글턴이자 고유한 것으로 실제로는 정수이지만 문자열처럼 표현합니다. :name 이렇게 쓰면 고유한 상수로서 :name이 쓰입니다. 이것은 싱글턴으로 향후에 변하지 않고 계속 같은 주소값을 리턴합니다.


- 문자열을 숫자로, 숫자를 문자열로 바꿀 때 to_string이 아니라 to_s, to_i 이런 식으로 축약된 메서드가 되어있습니다.


- true, false를 리턴하는 메서드들은 물음표가 붙습니다. 진짜로 컴퓨터에게 질문하는 것 같다는 생각이 듭니다. 예를 들어 6.odd? 라는 표현식은 false를 리턴합니다.


- 변수는 포인터입니다. 그래서 앞에서 선언한 변수(A)를 그대로 다른 변수에 할당(B = A)한 뒤에, 할당된 변수를 조작(B.upcase!)하면 최초에 선언된 변수의 값도 바뀝니다.


- 일반 출력은 puts를 쓰지만, 리턴값까지 함께 보고 싶은 경우에는 print를 씁니다. 리턴값을 알려주니 좋네요. (puts도 값을 출력하고 다음 칸에 리턴값을 출력하긴 합니다.)


- 조건문에서 거짓은 nil, false 2개 뿐입니다.

- 값에서 비교하는 .eql? .equal?은 다릅니다. eql은 값의 타입과 실제 값을 비교하며 equal은 두 개의 값이 정확히 메모리에서 같은 객체인지를 판단합니다. 약간 다릅니다.

- 순수 값만 비교할 때는 ==를 사용합니다.

- <=>라는 연산자가 있습니다. 왼쪽이 더 작으면 -1, 같으면 0, 왼쪽이 더 크면 1을 리턴합니다.


- unless라는 키워드가 있습니다. if not이라는 의미입니다. (조건문)


- 반복문에서 while은 참인 동안 동작하지만, until은 거짓인 동안 동작합니다. 별에 별 키워드가 다 있습니다. 상황에 따라서 사용하기에는 좋지만, 오히려 헷갈릴 수 있다는 단점이 있어보입니다.


-



2. 주의할 것


루비 최신 버전을 설치해도, 계속 MacOS에 기본적으로 설치된 루비 버전이 실행됩니다.

rbenv로 최신버전을 바꾸려면 rbenv -init을 통해 환경변수를 설정해야합니다.


스크린샷 2025-08-04 오후 11.18.56.png

이제서야 최신 버전으로 동작한다는 것을 확인했습니다.





오늘은 여기까지.

다음 글로 찾아 뵙겠습니다.

keyword
매거진의 이전글철학이 있는 프로그래머-<나의 실천편>