파이썬에서 루비로

파이썬도 매우 좋은 범용적인 프로그래밍 언어입니다. 파이썬에서 루비로 넘어오면 파이썬을 배울 때보다 조금 더 구문이 늘었을 뿐이라는 걸 알게 될 것입니다.

비슷한 점들

파이썬처럼, 루비에서도…

  • 대화형 프롬프트가 있습니다. (irb라고 부릅니다.)
  • 커맨드 라인에서 문서를 읽을 수 있습니다. (pydoc 대신 ri 명령을 사용합니다.)
  • 라인 종결이 없습니다. (정상적인 줄 바꿈 제외).
  • 문자열 리터럴은 파이썬의 3따옴표로 감싼 문자열처럼 여러 줄에 걸쳐 입력할 수 있습니다.
  • 괄호는 리스트에, 중괄호는 사전형에 사용합니다.(사전형은 루비에선 “해시”라고 부릅니다.)
  • 배열은 같은 동작을 합니다. (배열을 더하면 하나의 긴 배열을 만들지만, a3 = [ a1, a2 ]처럼 구성하면 배열의 배열이 됩니다.)
  • 객체는 강(strongly)타입인 동시에 동적(dynamically)타입입니다.
  • 모든 것은 객체이며, 변수는 객체의 참조일 뿐입니다.
  • 키워드는 조금 다르지만, 예외는 거의 비슷하게 동작합니다.
  • 내장형 문서화 툴이 있습니다. (루비에서는 rdoc이라 부릅니다.)

다른 점들

파이썬과는 다르게, 루비에서는…

  • 문자열은 변경 가능합니다.
  • 상수(변경할 의도가 없는 변수)를 만들 수 있습니다.
  • 강제적인 대소문자-규칙이 있습니다. (예를 들어, 클래스 이름은 대문자로 시작해야 하고, 변수는 소문자로 시작해야 합니다.)
  • 한 종류의 리스트 컨테이너(배열)밖에 없으며 배열은 변경 가능합니다.
  • 따옴표를 사용한 문자열은 (\t 같은) 이스케이프 시퀀스와 특수한 “표현식 치환” 신택스를 사용할 수 있습니다.(이는 "add " + "strings " + "together"처럼 적을 필요 없이 루비 표현식을 문자열 사이에 넣을 수 있게 합니다.) 홀 따옴표는 파이썬의 r"raw strings"와 같습니다.
  • “새로운 스타일”, “옛날 스타일” 클래스가 없습니다. 한 종류입니다. (파이썬 3 이상은 이 문제가 없습니다만, 파이썬 2와의 완벽한 하위 호환은 되지 않습니다.)
  • 속성을 직접 액세스할 수 없습니다. 루비에서는 전부 메소드 호출입니다.
  • 메소드를 호출할 때의 괄호는 대부분 생략가능합니다.
  • 파이썬의 _자발적인_ 밑줄 __규칙__ 대신 public, private, protected로 액세스를 강제할 수 있습니다.
  • “mixins”은 다중 상속 대신 사용합니다.
  • 빌트인 클래스에 추가하고 수정할 수 있습니다. 두 언어 다 어느 시점에서든 클래스를 열고 수정할 수 있지만, 파이썬은 빌트인 클래스의 수정을 방지하고 있고, 루비는 아닙니다.
  • TrueFalse 대신 truefalse를 받습니다. (그리고 None 대신 nil을 받습니다.)
  • 참거짓을 평가할 때 falsenil만이 거짓 값으로 평가됩니다. (0, 0.0, "", []를 포함해) 나머지는 전부 참입니다.
  • elif 대신 elsif입니다.
  • import 대신 require입니다. 그것 말고는 같습니다.
  • 코드 (아래의 docstring 대신) 위의 평범한 주석을 문서를 생성하는 데 사용합니다.
  • 좀 더 기억해야 하지만, 빨리 배울 수 있는 많은 단축 명령이 있습니다. 단축명령들은 루비를 좀 더 재미있고, 생산적이게 합니다.
  • (파이썬의 del문처럼) 한 번 설정한 변수를 해제하는 방법은 없습니다. 낡은 콘텐츠를 가비지 컬렉션하도록 변수를 nil로 리셋할 수는 있지만 변수는 스코프가 끝날 때까지 심볼 테이블에 남습니다.