티스토리 뷰
두 언어 모두 간혹 쓰니까 헷갈려서 아예 더 헷갈리게 나란히 기록해 둔다.
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
- bash
- 정수론
- Reference
- max flow
- python3
- 세그먼트 트리
- stack
- JavaScript
- C++ big number
- 백준
- RUBY
- shell
- 다익스트라
- bash script
- script
- Aho-Corasick
- segment tree
- math font
- number theory
- map
- Dijkstra
- persistent segment tree
- lazy propagation
- dynamic programming
- BOJ
- Shell Programming
- nearest common ancestor
- fenwick tree
- Vim
- javascript array
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |