찾다
백엔드 개발파이썬 튜토리얼相比于 Django、Pylon 等 Python 框架,Ruby on Rails 是否有很大的技术优势?

如果有优势,主要的技术优势是什么呢?

回复内容:

我实习时候的指导老师(纯洁的白羊座 @清风 )在给实习生上第一节课的时候说过这个问题,大概的意思是:你的应用做的越大,框架能提供给你的东西就越少。新型框架在一开始开发的时候会带来很大的效率提升,但是往后发展的时候,这种帮助会越来越少,自己的设计会越来越多。

大概是这样的原因,豆瓣至今还在用 Quixote,因为除了路由分发,其他部分任何框架都已经提供不了太大的帮助。框架提供的是框架的工作模式。

所以我觉得对于一般的应用来说,如果能从框架中得到效率优势,那么 Ruby on Rails 也好,Django 也罢,谁多一点谁少一点关系并不很大。反而文档质量、社区活跃程度、有质量的用户数量(就是在 StackOverflow 或者邮件列表有中能真正解决问题的用户数量),这些非技术因素影响会更大。 框架和框架之间当然有区别和优势。

比如 Spring 的事务管理。比如 Rails 的快速原型。另外,“轻型框架 Quixote,Sinatra,node 的一些框架”,甚至“没有框架”,也是一种框架。

而选择框架,应该说不是技术人员考虑的问题(现代语言上的差异,有时候小到根本不值得一提)。架构师才需要考虑这些。

考虑 Scalability 下的成本,用 Spring 的服务器集群来管理事物,是否要比上 Oracla 集群便宜?
考虑快速原型,用 Rails 是否能在一个月内拿出个可用的东西给 VC 看?
考虑用户有邮件模版编辑和自动分发的需求,因为 PHP 有现成的产品,是否优先选择他?
考虑系统涉及大量个人数据,基于安全性的考虑是否选择 Java 的框架?

当需求更多样化的时候,还可能需要混合多个框架。
Spring 的 API + Rails ?
如果有简单事物的大量并发,是否考虑加入 Node?
如果有大量数据的简单索引,是否考虑 NoSQL 数据库?
为了多种语言下的不同的库都很重要,是否考虑用 Python 做粘合剂?

今天混合框架已经很常见了。今后,语言和框架恐怕也难以出现大统一。既然大家各占擅场,根据需求组合才是明智的选择。 ruby不像别的社区那么分裂 个人感受
ruby在DSL上有很大的优势。用来测试的rspec非常好用。 自动化的测试非常重要,没有测试,很多东西根本就没办法做。
元编程。python的程序员似乎很排斥这个,ruby则觉得这东西很好。

django的源代码很长,越长就越不好读。老大要我在many to many表中加个method,我记得我至少改动了3,4个地方才把这个method改过来(不排除我的方法有问题)。觉得理想状态是只要更改一个地方就好。

Berkeley讲开发选择了rails,而且在berkeley此前的课程完全没有ruby。而且berkeley的cs61a,人工智能,都是学python的。


Berkeley在software as a service这门课程的书中说



Why Ruby and Rails? Why Not Java, C++, Python, or Scala?


We want students to understand that in the real world, programmers are rewarded not for the number of lines of code written or for how quickly they can “bash out” a feature, but for functionality delivered with high assurance of stability and while keeping the codebase beautiful andmaintainablefor continued growth. To many students, especially “hotshot” coders who come into a software engineering course with nontrivial programming experience, the methodologies and techniques we use to do this—design patterns, refactoring, test-first development, behavior-driven design—seem a strange and a dubious use of time.

We have found that students are more likely to gradually embrace these practices if given the best possible tools to support the practices. The Rails community has created by far the most seamless, elegant, and comprehensive tool set to support Agile and XP, and the idea of constantly refining and inventing tools that support testing as well as helping produce beautiful application code is a distinguishing characteristic of the Ruby developer ecosystem. While learning Ruby and Rails will be new to most students, juniors and seniors seem to learn it without difficulty, and far superior tools outweigh the learning costs.

A common counterargument in academia is “Our curriculum already teaches language X, so upper-division courses should leverage that knowledge.” We believe this approach optimizes for the wrong thing. First, software professionals are routinely expected to learn new languages by applying concepts from languages they already know, so “learning how to learn” new languages is a good skill to cultivate in class. Second, a language that makes it difficult to write and test beautiful and concise code is a poor vehicle for teaching those techniques, so the only investment being “leveraged” is syntactic knowledge, a hurdle surmounted with relative ease. Thus, even if our students never use Ruby again, they will have learned how to reduce to practice such important ideas as metaprogramming, higher-order programming, functional programming, and use of closures in the service of higher productivity and more maintainable code. We believe these skills will transfer to new languages, framework, and programming systems. Our survey of alumni of the course that led to this book (see Chapter 13) suggests that our belief is well founded. 从一个软件生命周期来看, 一点优势都没, 只是前期开发效率快点, 软件后期的优化, 性能的提升, 那做什么还得做什么, 那点工作量跑不了。 Rails在web开发效率上(这里只说web),我个人觉得要比Python的web framework有优势,具体都优势大概有三个方面:


语言上
虽然Ruby和Python在许多方面很像,但是也有不少差别,总体来说Ruby要比Python灵活(特别是meta programming),所以Ruby更容易创造出expressive的框架,框架也更容易把更多的overhead解决掉。

设计上
Rails是典型的C2C,convention可以很大的加快开发效率(当然也有种种弊端),而Python崇尚explicit,所以要写的代码会多一些,也没那么多的magic,但是学习起来容易些,不会不小心犯错误。

生态系统上
Ruby几乎整个社区都着重在web development上,而且集中在Rails,所以许多新的idea被创造出来(Cucumber, Capybara, Sprocket, Capistrano/Mina),而且gem/bundler让package management更容易,生态系统更发达。而Python的话,Django自己一套生态系统,但是业有许多其他的框架,资源分散,而且其他框架很难成气候,加上Python另一大应用实在科学计算上,所以感觉在web开发的生态系统不如Ruby发达。 在开发中小网站时rails是最快的 rails可以在一分钟内就可以自动生成原型 这是其他框架做不到的 rails的集成方案封装很全 是社会化编程的典范 插件和扩展远超其他的框架 解决方案和资料都跟很丰富 ruby具备其他语言羡慕的完善的元编程机制 会注定它的智能性比其他框架较高

缺点也很明显 集成度过高会导致臃肿和性能降低 网站规模过大需要依赖架构 ruby社区也在解决这个问题 开发了好几个精简和高性能框架 比如sinatra railsapi等 其他的语言也都在学习和模仿rails 差距已经不大了
另外一个缺点是国内的云平台基本都不支持ruby的 历史原因导致的 随着国内php的不断扩张和nodejs的兴起 rails在国内已经错过了最佳发展期了 至于未来rails能否再度火起 就看37signal公司和社区如何面对新的html5浪潮了 我更倾向于Python.灵活. 优势很大。rails可以快速做出产品上线,rails提供一个完整的框架和最佳实践。这是python框架没法比的。 有一点我感觉很好用,就是数据库迁移(migration)功能,Rails是自带的,而其他Python框架都是通过插件去实现的(Django在1.7版才在核心功能中实现migration,目前还在开发中 Migrations | Django documentation )
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Python을 사용하여 텍스트 파일의 ZIPF 배포를 찾는 방법Python을 사용하여 텍스트 파일의 ZIPF 배포를 찾는 방법Mar 05, 2025 am 09:58 AM

이 튜토리얼은 Python을 사용하여 Zipf의 법칙의 통계 개념을 처리하는 방법을 보여주고 법을 처리 할 때 Python의 읽기 및 대형 텍스트 파일을 정렬하는 효율성을 보여줍니다. ZIPF 분포라는 용어가 무엇을 의미하는지 궁금 할 것입니다. 이 용어를 이해하려면 먼저 Zipf의 법칙을 정의해야합니다. 걱정하지 마세요. 지침을 단순화하려고 노력할 것입니다. Zipf의 법칙 Zipf의 법칙은 단순히 : 큰 자연어 코퍼스에서 가장 자주 발생하는 단어는 두 번째 빈번한 단어, 세 번째 빈번한 단어보다 세 번, 네 번째 빈번한 단어 등 4 배나 자주 발생합니다. 예를 살펴 보겠습니다. 미국 영어로 브라운 코퍼스를 보면 가장 빈번한 단어는 "TH입니다.

HTML을 구문 분석하기 위해 아름다운 수프를 어떻게 사용합니까?HTML을 구문 분석하기 위해 아름다운 수프를 어떻게 사용합니까?Mar 10, 2025 pm 06:54 PM

이 기사에서는 HTML을 구문 분석하기 위해 파이썬 라이브러리 인 아름다운 수프를 사용하는 방법을 설명합니다. 데이터 추출, 다양한 HTML 구조 및 오류 처리 및 대안 (SEL과 같은 Find (), find_all (), select () 및 get_text ()와 같은 일반적인 방법을 자세히 설명합니다.

파이썬에서 파일을 다운로드하는 방법파이썬에서 파일을 다운로드하는 방법Mar 01, 2025 am 10:03 AM

Python은 인터넷에서 파일을 다운로드하는 다양한 방법을 제공하며 Urllib 패키지 또는 요청 도서관을 사용하여 HTTP를 통해 다운로드 할 수 있습니다. 이 튜토리얼은 이러한 라이브러리를 사용하여 Python의 URL에서 파일을 다운로드하는 방법을 설명합니다. 도서관을 요청합니다 요청은 Python에서 가장 인기있는 라이브러리 중 하나입니다. URL에 쿼리 문자열을 수동으로 추가하지 않고 HTTP/1.1 요청을 보낼 수 있습니다. 요청 라이브러리는 다음을 포함하여 많은 기능을 수행 할 수 있습니다. 양식 데이터 추가 다중 부문 파일을 추가하십시오 파이썬 응답 데이터에 액세스하십시오 요청하십시오 머리

파이썬의 이미지 필터링파이썬의 이미지 필터링Mar 03, 2025 am 09:44 AM

시끄러운 이미지를 다루는 것은 특히 휴대폰 또는 저해상도 카메라 사진에서 일반적인 문제입니다. 이 튜토리얼은 OpenCV를 사용 하여이 문제를 해결하기 위해 Python의 이미지 필터링 기술을 탐구합니다. 이미지 필터링 : 강력한 도구 이미지 필터

Python을 사용하여 PDF 문서를 사용하는 방법Python을 사용하여 PDF 문서를 사용하는 방법Mar 02, 2025 am 09:54 AM

PDF 파일은 운영 체제, 읽기 장치 및 소프트웨어 전체에서 일관된 콘텐츠 및 레이아웃과 함께 크로스 플랫폼 호환성에 인기가 있습니다. 그러나 Python Processing Plain Text 파일과 달리 PDF 파일은 더 복잡한 구조를 가진 이진 파일이며 글꼴, 색상 및 이미지와 같은 요소를 포함합니다. 다행히도 Python의 외부 모듈로 PDF 파일을 처리하는 것은 어렵지 않습니다. 이 기사는 PYPDF2 모듈을 사용하여 PDF 파일을 열고 페이지를 인쇄하고 텍스트를 추출하는 방법을 보여줍니다. PDF 파일의 생성 및 편집에 대해서는 저의 다른 튜토리얼을 참조하십시오. 준비 핵심은 외부 모듈 PYPDF2를 사용하는 데 있습니다. 먼저 PIP를 사용하여 설치하십시오. PIP는 p입니다

Django 응용 프로그램에서 Redis를 사용하여 캐시하는 방법Django 응용 프로그램에서 Redis를 사용하여 캐시하는 방법Mar 02, 2025 am 10:10 AM

이 튜토리얼은 Redis 캐싱을 활용하여 특히 Django 프레임 워크 내에서 Python 응용 프로그램의 성능을 향상시키는 방법을 보여줍니다. 우리는 Redis 설치, Django 구성 및 성능 비교를 다루어 Bene을 강조합니다.

NLTK (Natural Language Toolkit) 소개NLTK (Natural Language Toolkit) 소개Mar 01, 2025 am 10:05 AM

NLP (Natural Language Processing)는 인간 언어의 자동 또는 반자동 처리입니다. NLP는 언어학과 밀접한 관련이 있으며인지 과학, 심리학, 생리학 및 수학에 대한 연구와 관련이 있습니다. 컴퓨터 과학에서

Tensorflow 또는 Pytorch로 딥 러닝을 수행하는 방법은 무엇입니까?Tensorflow 또는 Pytorch로 딥 러닝을 수행하는 방법은 무엇입니까?Mar 10, 2025 pm 06:52 PM

이 기사는 딥 러닝을 위해 텐서 플로와 Pytorch를 비교합니다. 데이터 준비, 모델 구축, 교육, 평가 및 배포와 관련된 단계에 대해 자세히 설명합니다. 프레임 워크, 특히 계산 포도와 관련하여 주요 차이점

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기