Language Comparison
Rosetta Stone
Python / Ruby를 아는 개발자를 위한 지음 문법 레퍼런스. 지음 코드는 Run 버튼으로 바로 실행할 수 있습니다.
WASM 로딩 중...
1. 첫 출력
지음에서 동사는 문장 끝에 온다 — 한국어처럼
Python
print("안녕 여러분")
Ruby
puts "안녕 여러분"
지음
"안녕 여러분"을 출력한다.
2. 변수
이다는 불변(const), 넣는다는 가변(let) — 재할당은 가변만 가능
Python
name = "철수"
print(name)
Ruby
name = "철수"
puts name
지음
이름은 "철수"이다.
이름을 출력한다.
Python
area = 6 * 4
half = area // 2
print(area)
print(half)
Ruby
area = 6 * 4
half = area / 2
puts area
puts half
지음
넓이는 6 * 4이다
반은 넓이 / 2이다
넓이를 출력한다
반을 출력한다
Python
score = 10 # mutable by default
score = score + 5
print(score)
Ruby
score = 10 # mutable by default
score = score + 5
puts score
지음
점수에 10을 넣는다
점수를 점수 + 5로 바꾼다
점수를 출력한다
3. 연산
심볼(+)과 한국어(더하기)를 모두 쓸 수 있다
Python
total = 7 + 8
print(total)
Ruby
total = 7 + 8
puts total
지음
합은 7 + 8이다
합을 출력한다
Python
# same as above — symbolic only
total = 7 + 8
print(total)
Ruby
# same as above — symbolic only
total = 7 + 8
puts total
지음
합은 7 더하기 8이다
합을 출력한다
4. 조건문
이면은 if, 비교 조사(보다 크면)로 자연스럽게. ~고로 한 줄 분기도
Python
score = 85
if score >= 90:
print("A")
elif score >= 80:
print("B")
else:
print("C")
Ruby
score = 85
if score >= 90
puts "A"
elsif score >= 80
puts "B"
else
puts "C"
end
지음
점수는 85이다
점수 >= 90이면
"A"를 출력한다
아니면
점수 >= 80이면
"B"를 출력한다
아니면
"C"를 출력한다
Python
score = 85
if score > 60:
print("합격")
else:
print("불합격")
Ruby
score = 85
if score > 60
puts "합격"
else
puts "불합격"
end
지음
점수는 85이다
점수가 60보다 크면
"합격"을 출력한다
아니면
"불합격"을 출력한다
Python
def gcd(a, b):
return a if b == 0 else gcd(b, a % b)
print(gcd(48, 18))
Ruby
def gcd(a, b)
b == 0 ? a : gcd(b, a % b)
end
puts gcd(48, 18)
지음
최대공약수 함수는 큰수, 작은수를 받아
작은수 == 0이면 큰수를 돌려주고 아니면 최대공약수(작은수, 큰수 % 작은수)를 돌려준다
최대공약수(48, 18)를 출력한다
5. 반복문
인 동안 — 조건이 참인 동안 반복
Python
count = 3
while count > 0:
print(count)
count -= 1
print("시작!")
Ruby
count = 3
while count > 0
puts count
count -= 1
end
puts "시작!"
지음
남은수에 3을 넣는다.
남은수 > 0인 동안
남은수를 출력한다.
남은수를 남은수 - 1로 바꾼다.
"시작!"을 출력한다.
Python
fruits = ["사과", "바나나", "포도"]
for i in range(len(fruits)):
print(fruits[i])
Ruby
fruits = ["사과", "바나나", "포도"]
fruits.each { |f| puts f }
지음
과일들은 ["사과", "바나나", "포도"]이다
차례에 0을 넣는다
차례 < 과일들의 길이인 동안
과일들[차례]를 출력한다
차례를 차례 + 1로 바꾼다
6. 함수
함수 정의도 한국어 어순: 이름 → 매개변수 → 본문
Python
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
print(factorial(5))
Ruby
def factorial(n)
return 1 if n <= 1
n * factorial(n - 1)
end
puts factorial(5)
지음
팩토리얼 함수는 숫자를 받아
숫자 <= 1이면
1을 돌려준다
숫자 * 팩토리얼(숫자 - 1)을 돌려준다
팩토리얼(5)를 출력한다
Python
def double(n):
return n * 2
result = double(5)
print(result)
Ruby
def double(n)
n * 2
end
result = double(5)
puts result
지음
두배 함수는 숫자를 받아
숫자 * 2를 돌려준다
결과는 5를 두배한 것이다
결과를 출력한다
7. 리스트 & 레코드
의는 속성 접근, 에 추가는 메시지 전송, 인덱스 대입도 가능
Python
fruits = ["사과", "배"]
fruits.append("감")
print(len(fruits))
print(fruits[2])
Ruby
fruits = ["사과", "배"]
fruits.push("감")
puts fruits.length
puts fruits[2]
지음
과일들은 ["사과", "배"]이다.
과일들에 "감" 추가.
과일들의 길이를 출력한다.
과일들[2]을 출력한다.
Python
person = {"이름": "영희", "나이": 25}
print(person["이름"])
print(person["나이"])
Ruby
person = {이름: "영희", 나이: 25}
puts person[:이름]
puts person[:나이]
지음
사람은 { 이름: "영희", 나이: 25 }이다
사람의 이름을 출력한다
사람의 나이를 출력한다
Python
addr = {"도시": "서울", "동네": "강남"}
person = {"이름": "영희", "주소": addr}
print(person["주소"]["도시"])
print(person["주소"]["동네"])
Ruby
addr = {도시: "서울", 동네: "강남"}
person = {이름: "영희", 주소: addr}
puts person[:주소][:도시]
puts person[:주소][:동네]
지음
주소는 { 도시: "서울", 동네: "강남" }이다
사람은 { 이름: "영희", 주소 }이다
사람의 주소의 도시를 출력한다
사람의 주소의 동네를 출력한다
Python
nums = [10, 20, 30]
nums[1] = 99
print(nums[1])
Ruby
nums = [10, 20, 30]
nums[1] = 99
puts nums[1]
지음
숫자들은 [10, 20, 30]이다
숫자들[1]을 99로 바꾼다
숫자들[1]을 출력한다