Rails가 Ruby로 작성된 이유는 무엇입니까? [닫은]


9

PHP와 Ruby를 알고 있습니다.

Symfony (PHP 프레임 워크 임)라는 PHP Rails 클론 (선택하지 않은)을 사용하면 Rails의 클론임을 알 수 있습니다. Rails가 이미 존재하기 때문에 Symfony는 어리 석고 (SensioLabs는 영리한 사업입니다) 생각합니다.

Rails가 이미 존재할 때 사람들이 돈을 벌고있는 오픈 소스 프로젝트 외에, 사람들이 PHP에서 Rails 클론을 만드는 이유를 이해하지 못합니다. Rails를 사용하지 않는 이유는 무엇입니까? 분명히 DHH는 Ruby로 Rails를 코딩했습니다.

Symfony를 사용하면 무언가가 옳지 않다고 느끼지만 그것이 무엇인지 모릅니다. 나는 쓰레기 Sitepoint ebook을 통해 Rails를 배웠고 그것을 잊어 버렸으므로 이제 PragProg ebook을 통해 배우고 있으며 그 ebook을 좋아합니다. 나는 Rails를 완전히 알지 못하지만 그것이 어떻게 작동하는지 이해합니다 (Symfony 덕분에). 2 레일스 앱을 만들 수 있도록 전자 책 전체를 다 끝내고 싶습니다. Rails가 완료 할 수없는 Sitepoint ebook을 사용하여 Symfony보다 더 재미 있었고 Ruby의 예쁜 문법과는 아무런 관련이 없다는 것을 기억합니다.

  1. 왜 Rails가 Ruby로 코딩됩니까?
  2. 옳지 않은 PHP Rails 클론은 무엇입니까?
  3. Rails가하고있는 일, Rails 클론이하지 않는 일은 무엇입니까?

4
Ruby는 Rails의 비밀 소스입니다.
Chiron

4
Meh, Ruby on RailsPHP로 구현되는 것을 볼 수 없습니다 .
대안

2
기억이 나면 DHH가 루비를 골랐다 고 팟 캐스트를 들었습니다. 나는 이것이 이번 개발자의 삶의 에피소드 라고 생각합니다 .
Adam Lear

2
@Chris G-믿을 수 없을 정도로 어렵다고 생각합니다. 기본 언어 간의 차이는 엄청나 다. 루비는 영리하고 프로그래밍 언어를 통해 포괄적으로 생각된다. PHP는 게임 후반에 해킹 된 루비 기능이 많은 다른 해킹에 쌓여있는 해킹이다. PHP는 호스팅이 쉽고 성능이 뛰어나지 만 DHH의 우선 순위 였다면 루비를 선택하지 않았을 것입니다. PHP는 실제로 프로그래밍 언어로 설계되지 않았으며 언어 이론 / CS에 관심이있는 사람들은 그 결과에 관심이없는 경향이 있습니다.
glenatron

2
@Glenatron 그 어느 것도 지능적인 PHP 사용자가 ORM과 같은 주요 "레일"기능을 사용하여 아름답고 표현력이 뛰어나고 현대적인 웹 응용 프로그램을 작성하는 것을 막을 수 없습니다. 클로저가 최근에 PHP에 추가되었다는 아이디어는 다른 사람들이이를 사용하지 못하게 막지 않을 것입니다!
Chris G.

답변:


26

1.) 왜 Rails가 Ruby로 코딩됩니까?

Rails는 원래 루비 어로 작성된 Basecamp에 대한 DHH 의 작업에서 추출되었습니다 . 시간이 지남에 따라 Rails의 핵심 개발자는 계속해서 Rails에 더 많은 기능을 추출하고 개발하여 본격적인 프레임 워크가되었습니다.

루비는 수년에 걸쳐 힘과 표현력이 커지면서 프레임 워크에 계속 적합 해 졌기 때문에 작성된 언어이기도합니다. (또한 "C # on Rails"또는 "Java on Rails"는 좋은 동요가 없습니다.)

2.) 옳지 않은 PHP Rails 클론은 무엇입니까?

이것은 실제로 객관적으로 대답 할 수는 없지만 아마도 # 1 때문일 수 있습니다. Rails의 동작과 내부는 Ruby에 존재하고 다른 곳에서는 정확하게 복제하기 어려운 많은 기능을 활용합니다. 예를 들어, PHP에는 Rails에 크게 의존하는 메타 클래스가 없습니다.

Rails가 이미 존재할 때 사람들이 돈을 벌고있는 오픈 소스 프로젝트 외에, 사람들이 PHP에서 Rails 클론을 만드는 이유를 이해하지 못합니다. Rails를 사용하지 않는 이유는 무엇입니까? 분명히 DHH는 Ruby로 Rails를 코딩했습니다.

모든 사람이 새로운 프레임 워크를 배울 수 있도록 새로운 언어를 배울 시간, 예산 또는 성향이 없기 때문입니다.

유적으로, Brainfuck 에 매우 인기있는 웹 프레임 워크가 있다는 것이 밝혀 졌다면 Brainfuck로 애플리케이션을 작성하지 않은 고객을 포기해야합니까? 그것은 사업을 운영하는 방법이 아닙니다.

PHP와 Ruby를 알고 있습니다.

"PHP와 Ruby를 모두 알고 있습니다"와 같은 문장은 아직 깊이, 풍부함 및 특유의 특성을 충분히 인식하지 못하고 있다고 제안합니다.


( 후손을 위해 stackoverflow.com/questions/6972992/… 에서 재현 됨 )
John Feminella

Basecamp의 초기 시도는 PHP에서 시도되었지만 DHH의 만족을 위해 작동하지 않았다고 생각합니다. 따라서 Rails는 Ruby로 코딩되었습니다.
Bryan M.

3
+1-새로운 언어를 배울 수있는 시간이 있습니다. 즉석 프로젝트는 중요하지 않습니다.
JeffO

PHP에는 기본적으로 메타 클래스가 없습니다. 맞습니다. 그러나 PHP 5.3부터 메타 클래스 기능을 구현할 수 있습니다.
Chris G.

6

1. 왜 Rails가 Ruby로 코딩됩니까?

한 번 루비로 프로그래밍하기로 결정했습니다. 이 디자인 결정은 오늘날까지 지속됩니다.

2. 기분이 좋지 않은 PHP Rails 클론은 무엇입니까?

이런 식으로 말을하기 어려운 느낌입니다. 당신은 당신과 더 친밀하고 당신의 감정에 대해 더 많이 알고 있거나 공유하는 사람에게 물어볼 수 있습니다.

3. Rails가하고있는 일, Rails 클론이하지 않는 일은 무엇입니까?

Rails의 정확한 복제본은 Rails의 모든 기능을 정의마다 수행합니다. 따라서 이것은 클론이 정확히 어떻게 수행되었는지에 달려 있습니다. 부품이 다르면 동작이 달라집니다. 예를 들어 다른 언어로 번역 할 경우 다른 언어에는 Rails on Ruby에서 사용하는 언어 기능이 없을 수 있으며, 이는 디자인과 동작에 차이가있을 수 있습니다.


6

왜 Rails가 Ruby로 코딩됩니까?

루비는 메타 프로그래밍을 많이 허용 하고 허용 구문은 메소드 호출처럼 보이지 않는 멋진 API를 만들 수있게 해줍니다.

예를 들어 Rail의 Object Relational Mapper 인 ActiveRecord는이 두 가지를 모두 잘 수행합니다. 먼저 Ruby의 메타 프로그래밍 기능을 사용 하여 데이터베이스의 필드 이름에 해당하는 메소드를 즉석 에서 작성 합니다.

두 번째로, ActiveRecord를 사용하면 객체에 대한 연관을 선언 할 수 있습니다 : a Personmight has_many :books. has_many는 선언처럼 보이지만 실제로는 메서드 호출입니다. (루비는 이것을로 읽습니다 has_many(:books).

루비는 또한 숙련 된 프로그래머의 삶을 더 편하게 만드는 목표를 가지고 있습니다.

루비는 이런 것들을 쉽게 만들어 사람들이 그렇게합니다. 다른 언어는 이것을 어렵게 만들거나 이와 같은 마술은 문화의 일부가 아닙니다. 파이썬 메가 프레임 워크 인 장고 (Django)는 파이썬에서 쉬운 일이 아니기 때문에 메타 마법이 훨씬 적습니다. 언어가 파이썬을 "명시 적 (implicit)이 암시 적 (implicit)보다 묵시적입니다." (저는 PHP 문화 나 웹 프레임 워크에 대해 잘 모릅니다.)

DHH가 Ruby와 사랑에 빠진 이유 중 일부는 Rails에서 이러한 언어 기능을 강력하게 사용합니다.


Rails에서 스캐 폴딩을하기 위해 콘솔을 사용하는 것은 매우 좋지만 이러한 기능은 Symfony에 있습니다. 루비 언어가 메타 프로그래밍을 어떻게 제공하는지에 대한 증거를 찾을 수있는 곳을 알려 주시겠습니까? 수업이 충분하지 않습니까?
desbest

1
Pragmatic Programmers는 Ruby의 Metaprogramming에 관한 책을 가지고 있는데,이 책은 Ruby의 Metaprogramming에 대한 소개 일뿐 아니라 Rails의 메타 프로그래밍에 관한 약 50 페이지를 소비합니다. 단순히 클래스만으로는 충분하지 않다고 생각합니다. 예를 들어, 때때로 메타 프로그래밍은 메소드 체인을 통해 발생합니다 ( "이 함수를 호출 할 때 대신 내 버전의 함수를 호출하십시오. 원본을 호출하거나 호출하지 않을 수 있습니다"). 이것은 Ruby의 메타 프로그래밍 패턴입니다 (레일을 정리하고 사용하기 쉽게 만듭니다)
RyanWilcox

Rails를 마스터 한 후에 읽어야합니다. 모든 것이 혼란스럽게 들립니다.
desbest

PHP에는 ORM 솔루션도 있다고 언급하고 싶습니다. 루비 전용이 아닙니다.
Chris G.

1
phpActiveRecord라는 ActiveRecord의 PHP 구현이 있습니다. 이 모든 것을 사용합니다. 그러나 DHH가 Rails를 만들었을 때 PHP는 그렇게 할 수 없었습니다.
Jamon Holmgren

2

왜 레일을 사용하지 않습니까?

나는 두 사용자 모두에게 약간의 관점을 제시 할 것이다. Ruby / Rails에서 취미 프로그램을 사용하고 직장에서만 PHP를 사용합니다. (참고 : Ruby / Rails를 애호가 환경으로 무시하지는 않습니다. 이것이 바로 내가 사용하는 방법입니다.)

많은 사람들이 루비 / 레일을 인기있는 밴드 왜건과 '다른'때문에 웹 사이트 개발의 성배로 취급합니다. 여러면에서 PHP를 고대의 것으로 무시하는 것만으로는 충분하지 않습니다.

PHP에는 Rails가 제공하는 구문 설탕이 없기 때문에 Symfony는 Rails처럼 느껴지지 않습니다. PHP는 이와 관련하여 개선 중이며 5.3의 클로저 추가로 인해 코드 작성에 많은 차이가 생겼습니다.

내가 틀리지 마, 루비를 사랑하고 레일즈를 사랑해. 그러나 복잡하거나 비싼 웹 사이트 호스팅을 처리하거나 성능이나 '최첨단'에 대해 걱정하지 않으려는 경우 PHP는 오늘날에도 여전히 관련성이 있으며 프레임 워크도 매우 좋습니다.

  • Redbean은 PHP와 함께 훌륭한 ORM 기능을 제공합니다. 교리, 관용구 / 파리, 프로 펠도 마찬가지입니다.
  • Symfony2와 CakePHP는 Rails와 유사한 확장 된 웹 개발 프레임 워크를 제공합니다.
  • CodeIgniter는 부풀림없이 완벽한 프레임 워크 솔루션을 제공합니다.
  • 슬림은 시나트라와 같은 프레임 워크를 제공합니다.

PHP 레일 복제본이 '옳지 않다'고 생각하지 않는 이유는 복제본이 아니며 Rails와 동일하지 않기 때문에 잘못 생각합니다. PHP 솔루션의 단순성과 친숙 함을 느끼십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.