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]을 출력한다