저는 약 18 개월 동안 한 명의 인턴쉽과 몇 개의 보조 프로젝트로 구성된 Python 프로그래머였습니다. 저는 언어에 익숙하다고 생각합니다.
그러나 프로그래밍 분야에서는 Ruby에 많은 관심이 있지만 더 이상 Python에는 관심이없는 것 같습니다.
루비를 배울 때 루비에서 나쁜 습관이되는 파이썬적인 것들이 있습니까? 무엇을주의해야하며 무엇을 피해야합니까?
저는 약 18 개월 동안 한 명의 인턴쉽과 몇 개의 보조 프로젝트로 구성된 Python 프로그래머였습니다. 저는 언어에 익숙하다고 생각합니다.
그러나 프로그래밍 분야에서는 Ruby에 많은 관심이 있지만 더 이상 Python에는 관심이없는 것 같습니다.
루비를 배울 때 루비에서 나쁜 습관이되는 파이썬적인 것들이 있습니까? 무엇을주의해야하며 무엇을 피해야합니까?
답변:
Plone / Zope 컨설턴트 였을 때 2003-5 년에 Python을 다시 사용했습니다. 그런 다음 2006 년에 루비를 줍기 시작했습니다. 나는 뒤돌아 본 적이 없다. 다른 사람들이 다른 프로그래밍 언어와 문화에 더 편하다고 생각하지만 루비는 파이썬보다 훨씬 나아졌습니다.
필자는 개인적으로 루비에 비해 파이썬은 약간 안정적이고 부드러 우면서도 신뢰할 수있는 일꾼이라고 생각합니다. 루비는 훨씬 더 재미있다. 그것은 더 예쁘게 보이는 언어이며, 실무자들을 놀라게하는 많은 재미 있고 펑키 한 일을 할 수 있습니다. 파이썬 사람들이 루비를 너무 위험해서 공격한다고 들었습니다. 클래스를 다시 열기가 너무 쉽고 무자비하고 무책임한 일을하는 것은 너무나 쉽습니다. 그러나 그것은 루비가 나에게 액션 어드벤쳐 코미디 로맨스처럼 느끼게 만드는 부분입니다. 반대로 파이썬은 이케아 가구와 비슷합니다. 쾌적하고 편안하며 신뢰할 수 있습니다. 그러나 결코 놀라지 않고 숨을 쉬지 않습니다.
필자의 관점에서 루비에 대한 두 가지 가장 좋은 점은 파이썬과 크게 구별되는 두 가지입니다. 먼저, Ruby는 Perl의 영향을 많이받습니다. 파이썬은 안티 펄이라는 것을 자랑스럽게 생각합니다. 그러나 펄에서 빌린 루비는 실용적으로 큰 가치가 있습니다. 예를 들어 정규 표현식을 사용하십시오. 루비에서는 정규 표현식을 자연스럽게 작성할 수 있습니다 (예 :) if mystring =~ /^\s+hello word!/ ...
. 파이썬에서는 모든 것이 균등하게 예측 가능한 구문을 따르도록 만드는 것에 대해 파이썬이 너무 항문 적이기 때문에 그렇게 많지는 않습니다. 루비에서는 STDIN을 즉시 사용할 수 있습니다 input = STDIN.read
. 파이썬에서, 당신이해야 할 import sys
다음과
sys.stdin.read()
. 이것들은 파이썬이 Perl로부터 멀어지고 규칙적으로 규칙을 유지하려는 노력이 각 경우에 올바른 느낌을 취하는 루비의 의지에 의해 뒤지는 두 가지 예일뿐입니다.
루비와 파이썬을 구별하는 또 다른 점은 루비가 리스프에 훨씬 더 가까운 반면에 파이썬은 명령형 프로그래밍 언어입니다. 루비에게 유리한 점이라고 생각합니다.
Ruby보다 Lisp와 유사한 기능이 많기 때문에 Python보다 Ruby에서 더 적은 코드로 더 많은 작업을 수행 할 수 있습니다. 예를 들어, Ruby의 모든 명령문 및 제어 구조는 값을 리턴합니다 return
. 명령문을 사용하지 않고 Ruby에서 벗어날 수 있습니다 . if
문 조차도 값으로 평가되므로 다음과 같은 내용을 쓸 수 있습니다.
result = if output == 'hello'
[some code here]
"world"
else
[some other code here]
"there"
end
파이썬에서는 작성해야합니다
if output == "hello":
[some code here]
result = "world"
else:
[some other code here]
result = "there"
파이썬은 result =
두 번 입력 합니다. 그것은 너무 건조하지 않습니다 (반복하지 마십시오). 이와 같이 Lisp와 같은 특성 때문에 Ruby가 Python보다 DRY보다 더 많은 인스턴스가 있습니다. 루비를 만든 Matz는 Lisp 배경에서 나왔습니다.
어떤 사람들은 루비가 메타 프로그래밍 (일명 동적 프로그래밍)에서 파이썬의 엉덩이를 걷어차 있다고 말합니다. 파이썬 사람들은 메타 프로그래밍이 너무 위험하다고 말하거나 이론적으로 루비가 파이썬에서 할 수있는 모든 메타 프로그래밍 작업을 다르게 수행 할 수 있다고 말합니다. 그러나 모든 사람들이 동의하는 한 가지는 메타 프로그래밍이 Ruby에서보다 Python에서 훨씬 덜 일반적이라는 것입니다. 메타 프로그래밍은 여행이기 때문에 너무 나쁩니다.
하루가 끝나면 루비와 파이썬이 모두 일을 끝낼 수 있다고 생각합니다. C와 Java에 비해 Ruby와 Python은 거의 동일합니다. 그들은 표현적이고 생산적인 고급 언어입니다.
그래서 그것은 당신의 성격으로 귀결됩니다.
예측 가능하고 규칙적이며 안전한 것을 좋아합니까? 명령형 프로그래밍 스타일이 마음에 드십니까? 언젠가 구글에서 일하고 싶습니까? 펄은 혼란스러운 지옥의 산란이라고 생각합니까? 파이썬을 고수하십시오.
프로그래밍 결과를 달성 할 수있는 가장 간결한 방법을 찾는 데 큰 즐거움을 느끼십니까? 규칙 성과 균일성에 지루합니까? 자신 만의 스타일로 코드를 자유롭게 작성하고 자신 만의 멋진 트릭을 만들 수있는 공간이 많은가? C보다 Lisp에 대한 선호도가 더 높습니까? 소프트웨어 프로그래밍에 획기적인 공헌을 한 것에 대해 큰 감탄을 느끼고 있지만 그것이 조금 덜 비밀스럽고 추악 할 수 있기를 바랄 뿐입니 까? 다른 사람들이시를 생각하는 것과 같은 코드를 생각하십니까? 루비를 사용해보십시오.
result = "world" if output=="hello" else "there"
완벽하게 유효한 파이썬 (및 3 자 더 짧음)입니다.
때에 따라 다르지.
나를 위해 파이썬은 루비보다 훨씬 쉽게 잡을 수 있으며 두 언어는 다른 목적을 가지고 있습니다.
파이썬은 저급 공상적인 것들이 많은 고전적인 언어이므로 C와 비교하여 깨끗하고 쉽게 유지합니다. 파이썬에는 루비에 대한 야심이 없습니다. 루비에는 더 많은 고급 기능이 있습니다.
루비를 배우는 것은 당신에게 상처를주지 않을 것입니다. 새로운 것을 발견 할 것입니다. 그러나 파이썬이 단순한 프로그래밍 패러다임에 가까워서 많은 생산성 향상을 통해 C의 성공을 거두었습니다. 루비는 일반적인 프로그래밍 개념 인 체계와 모든 "우수한"언어로 나아가려는 사람들에게 더 유용합니다.
모든 것은 틈새가 있습니다. 예를 들어 Python (django)은 GoogleApp Engine의 일류 시민이며 많은 생물 정보 프로젝트에 사용되는 언어 또는 선택입니다. 파이썬에는 많은 시장 가치가 있습니다 (파이썬으로 많은 일을했기 때문에 많은 원치 않는 직업 전망을 얻습니다).하지만 루비도 다른 지역에 있습니다. 의심 할 여지없이 여기에서 여러 번 들었으므로 항상 더 많은 언어를 배우는 데 도움이되므로 루비를 배우십시오. 복잡할까요? 사용 가능한 언어와 프레임 워크가 서로 비슷하기 때문에 COBOL을 배우는 것보다 훨씬 덜 복잡합니다. 한 가지 예는 Ruby의 gem 과 python의 pip 입니다.
언어는 도구이며 모든 도구를 목적으로합니다. 더 많은 도구를 알고있을수록 더 빠르고 쉽고 정확하게 트리 하우스를 구축 할 수 있습니다.
루비를 배워야합니까? 예.
새로운 언어를 배우는 것은 항상 가치가 있으며 (특히, 다른 언어로 프로그래밍 패러다임을 적용하는 경우) 다른 언어로 프로그래밍 할 때도 더 능숙해질 수 있습니다. 예를 들어 Lisp에서 알고있는 대부분의 함수형 프로그래밍을 선택하여 필요할 때 Python 및 Ruby에 적용했습니다.
어려울까요? 파이썬을 배웠다면 루비도 배울 수있을 것입니다.
또한 지금 일자리를 찾고 있다면 유용합니다. 기술에 대한 호기심을 가지고 있으며 스스로 스스로 배울 수 있다는 것을 보여줍니다.
c2.com 에서 Ruby와 Python을 잘 비교했습니다 .