티스토리 뷰

두 언어 모두 간혹 쓰니까 헷갈려서 아예 더 헷갈리게 나란히 기록해 둔다.

 

 

1. 우선 둘 모두 한줄 주석(comment)는 #를 이용한다.

 

 

2. C/C++ 은 문자열과 매크로 내부를 제외하면 개행문자를  parsing 과정에서 다른 공백 문자와 동등하게 취급한다.

반면 python, ruby 에서 개행문자는 문법적 요소이다.

 

C/C++ 에서는 변수 선언에서 type 지정자를 선두에 둠으로 인해 발생하는 문법적 모호성을 제거하기 위해 statement 는 ;(세미콜론)로 끝내야 했다.  예를 들어

 

int abc

 

을 보았을 때,  현재까지 abc 가 정수형 변수인지 아니면 returning int 인 함수의 이름인지를 알 수가 없다. 즉,

 

int abc
();

 

의 일부일 수 있는 상황이다. 이렇게 코드를 작성할 이유는 없지만 문법적인 하자는 없다.

 

python 과 ruby 를 포함해서 type 을 지정하지 않는 후기의 언어들은 대부분 ; 와 같은 구분자를 필요로 하지 않고 개행문자를 이용한다.

이것으로도 parsing 에서 문제가 잃어나지 않기 때문.

 

한편, python 은 개행문자를 포함해서 공백문자들이 문법의 일부다. 즉, indentation 에 신경을 써야한다.

 

ruby는 if 나 for 으로 발생하는 block 의 끝을 end 로 명시하므로 들여쓰기(indentation)이 강요되지 않는다.

 

조금 깊이 있는 고찰은 automata 와 compiler 에서 다루기로 한다. 

 

 

3. 기본적인 출력은

 

python3 는 print 이고

 

ruby 는 puts이다. ( ruby 에도 print 가 있지만 개행을 하지 않는다. )

 

그리고 ruby는 함수에서 중괄호 ( , ) 를 강제하지 않는다. (써도 상관은 없다.)

 

puts "..." 대신 puts("...") 을 써도 된다는 얘기다. 또한

 

# num = gets.to_i
num=gets().to_i()

 

위 스크립트의 7번 행을 이처럼 ( ) 를 사용해서 구현할 수 있다.

 

 

4. branch 와 loop

 

다음 키워드들은 은근 헷갈린다.

 

elif (python3) vs elsif (ruby)

 

또한 for loop 구간에서 ruby는 닫힌 구간을 선택하고 있다. 즉 다음과 같은 코드에서

 

for i in 0..4
  puts i
end

 

구간의 끝인 4 를 포함한다.

반응형

'Programming Language > Python3 and Ruby' 카테고리의 다른 글

[python3] 파이썬 f-string  (0) 2022.12.02
Python3 와 Ruby 기초 (2)  (0) 2022.08.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함