【问题标题】:Ruby on Rails vs PHP, leading to OS X/iPhone DevelopmentRuby on Rails 与 PHP,导致 OS X/iPhone 开发
【发布时间】:2010-02-17 19:40:25
【问题描述】:

下午好。我是一名用户体验设计师,精通 XHTML 和 CSS。我涉足了一些 PHP 和 JavaScript,但我对它们并不满意。

我的主要目标是开发 OS X 和 iPhone 软件。我已经获得了有关这些主题的建议,但在面向对象编程方面我正在苦苦挣扎。

我拥有的有关 Mac 开发的书籍包括: Mac OS X 第 3 版的 Cocoa 编程 - Aaron Hillegass, Objective-C 2.0 编程 - Stephen Kochan, 面向对象的思维过程 -Matt Weisfeld

简而言之,我觉得我目前没有足够的编程经验来解决这个问题,所以我想将我的学习转向网络技术。我已经阅读了一些关于 Ruby on Rails 和 PHP 之间的差异。我的问题是,哪个对我的最终目标更有利? Ruby on Rails 最初是面向对象的,而 PHP 不是。

我有两个视频课程,你会建议我从哪个开始?也许我正在以错误的方式解决这个问题?你怎么看?

如果这篇文章是空洞的或翻倍的,我很抱歉。

更新 我整个星期都在学习 PHP 课程。概念现在对我来说似乎很清楚。在接下来的一周中,我计划开始视频培训的 OOP 章节。我很高兴能够利用这些新发现的知识在 Web 应用程序开发方面追求什么。

关于 Objective-C,我知道建议在学习 Objective-C 之前学习 C。在我继续阅读 Aaron Hillegass 的书之前,我应该先试试 C 吗? Learn C,这对于新手来说是最佳选择,还是您有经验的开发人员宁愿看到初学者处理一本书?我应该把 C 完全忘掉,像上面所说的那样用 PHP 学习 OOP 并直接进入 Objective-C 吗?

【问题讨论】:

    标签: php ruby-on-rails objective-c oop


    【解决方案1】:

    如果您已经具备 Javascript 的基本知识,那么您应该继续朝这个方向发展,而不是选择完全不同的语言,例如 Ruby 或 PHP。与 RoR 或 PHP 相比,Javascript 在使用方式上与 Objective-C 有很多共同点。

    服务器端语言从头到尾在瞬间运行小程序,而 Javascript 或 Objective-C 程序的运行时间不确定。两种类型的程序都需要不同的思维方式,当您实际上有一堆随着时间的推移相互交互并且用户可以与之交互的对象时,面向对象编程会更有意义。 PHP 中的对象主要是一种组织代码的方式,它们并没有教你很多关于对象交互的知识。

    因为无论如何都会有一个学习曲线,所以您不妨直接学习 Objective-C,但是如果您真的不想,首先学习 Javascript 是下一个最好的选择。由于您可以在浏览器的控制台中使用它,因此它提供了一种很好的交互式学习方式。 Javascript 的问题是缺乏好的材料,但CrockfordMozilla Reference 可能是最好的起点。

    使用 Javascript 编程通常意味着操作浏览器的 DOM,这是您必须学习的另一个概念。这也意味着必须处理浏览器的怪癖,最好使用 jQuery、MooTools 或 Prototype 等 Javascript 框架/库来处理,这是另一种技术。
    为避免这些额外的学习曲线,您可以在 a bunch of other scenarios 中使用 Javascript,包括桌面版 widgets/gadgets。在用户交互方面,它们的工作方式很像迷你 Cocoa 应用程序,可能是一个很好的起点。

    【讨论】:

      【解决方案2】:

      理解面向对象编程的部分麻烦不在于掌握对象和类的概念,而在于如何有效地使用它们。 Design Patterns 书中概述了最佳策略。虽然此参考资料相当技术性,但它非常全面,详细说明了如何从战略软件设计的角度处理许多常见情况。

      您可以看到,Apple iPhone SDK 完全采用了这种方法,该框架主要建立在 NeXT 所做的工作之上。

      尽管 Ruby,尤其是 Ruby on Rails 并没有那么强烈地偏向于设计模式约定,但可以应用相同的原则。

      如果您愿意接受挑战,这是一本非常有用的参考书。

      对于新开发人员来说,Ruby 比 Objective-C 有很多优势。被解释,很难因为一个简单的错误而崩溃 Ruby,交互式命令行是快速实验的强大工具。另一方面,Ruby 的调试能力严重受限于 Objective-C 和 XCode 环境。尤其是 Ruby on Rails,文档不完整,而且功能集杂乱无章,组织起来并不总是很好。

      Objective-C 并不是特别难学,但完整的 SDK 非常庞大。好消息是它的文档非常好,并且有许多视频教程和代码示例。我想说的是,吸收足够多的知识成为一名高效的 iPhone 开发人员更具挑战性,但你可能会发现这样做更有回报。

      好消息是,两者都得到了各自社区和 Stack Overflow 等地方的大力支持。

      最终,我会查看您打算尝试的项目类型,看看哪个平台最适合。

      【讨论】:

      • 感谢您的帖子。为了澄清我也有兴趣创建 Web 应用程序,RoR 与 PHP 只是我试图在未来 OS X 开发人员之间做出决定的东西。我一定会看看你推荐的书。
      • 您不应该将 RoR 与 PHP 进行比较。 RoR 是一个 Ruby 框架,而 PHP 是一种编程语言。就此而言,您应该将 Ruby 与 PHP 或 RoR 与 Zend Framework/CakePHP/其他十几个 PHP MVC 框架中的任何一个进行比较。
      • 你没有抓住重点。他们之间有很大的不同。 RoR 是一个框架,PHP 不是。
      • 无论技术差异如何,人们都希望开发 Web 应用程序,实现该目标的两种选择是使用 PHP 或 Ruby on Rails。它们具有可比性,因为它们达到了预期的结果。说“PHP 是一种语言”就像说卡车和汽车是不同的,但如果你只想去某个地方,它们都会让你到达那里。另见:en.wiktionary.org/wiki/pedantic
      • 如此挑剔的唯一原因是如果您想要一个“公平”的比较,但无论如何都可以进行比较。 PHP 可以单独用于构建 Web 应用程序,它是专门为这项工作而设计的。 Ruby 只是一门语言,所以甚至要让它“说网络”足以呈现单个页面,这与没有 CGI 模块的 Perl 的难度不同。 Ruby、Perl、Python 和大多数其他语言就是这样。 Coldfusion 和 PHP 比较多。
      【解决方案3】:

      关于C

      你不需要纯 C,除非你真的在做一些尖端的高性能计算。 Cocoa 框架为您将面临的许多常见任务提供了解决方案,或者至少有足够的工具来构建此类解决方案,而无需深入低级 C 的粗糙世界。尽管 C 可能强大而快速,但它是一种非常不安全的语言,这会让你编写大量代码并花费大量时间进行调试。


      正如其他人所说,RoR 是一种框架,而 PHP 是一种语言。所以我先说一下Ruby、JavaScript、PHP。

      红宝石

      Ruby 是一门美妙的语言。在提到的那些中,它是最接近 Objective-C 的一种。与 Objective-C 一样,它使用消息传递模型进行方法调用。有一个wonderful introduction to Ruby 在线。几天后我读了它并喜欢它。不幸的是,Ruby 速度很慢,而且部署起来并不容易。

      PHP

      嗯... PHP。优点:PHP非常容易部署,这可能是它成功的原因。它拥有一个庞大而活跃的社区,建立了一个庞大的生态系统。并且 PHP 非常宽容,因此使用它不需要很多经验。

      你可能感觉到,一定有一个“但是”。好吧,我不想详细介绍,而是引用我的一个朋友,他做了很多 PHP:“PHP 是编程语言中的腐肉”

      PHP 和所有语言一样,都有缺陷。但是 PHP 做到了这一点,它引发了一种行为,被 PHP 支持者称为“PHP bashing”。这是经常出现的事情,即每次有人讨论 PHP 是否好。通常,PHP 程序员会支持 PHP(这是一种合理的行为,假设您在选择语言之前已经彻底考虑了您的选择),并且大多数了解 PHP 和替代方案的程序员都会抱怨很多关于 PHP。我想避免这种情况,因为您可以在 google 上找到关于该主题的足够信息。 >This< question 以愉快和礼貌的方式处理该主题。它没有涵盖整个主题。

      我想说的是,您不应该使用 PHP,因为您认为它会帮助您发展成为程序员,或者因为您认为它是一门好语言。如果您选择 PHP,您应该出于战略原因这样做。您应该使用适当的框架,例如symfonyflow3。请记住,PHP 什么都不提供,您在许多其他语言中都找不到。

      JavaScript

      JavaScript 也是一门优美的语言。离红宝石不是很远。它的面向对象不如 Ruby 强大,但它更适合 functional approaches,因为 Ruby 与 high order functions 有点不一致,它们有几个不可互换的版本,它们的工作方式都有点不同。 JavaScript 也很宽容,但可能超出了应有的程度。现在和在可预见的未来,JavaScript 非常流行,它被用于越来越多的领域。借助 HTML5、CSS3 和 WebGL,人们将能够使用 JavaScript 创建出色的应用程序。但是,您总是需要处理跨浏览器的怪癖。此外,您可能会发现 JavaScript 还有其他限制


      在这三者中,我认为 Ruby 是最优雅和最强大的语言。如果你想发展成为一名程序员,这三者都是最好的选择。

      斧头

      我想推荐我自己的候选人:Haxe。它是一种开源语言,仍然相对年轻且发展非常迅速。它是跨平台的,可以编译到许多不同的平台上。与任何提议的语言(包括 Objective-C)不同,Haxe 是围绕一个非常强大的类型系统构建的,它被证明是通畅的,但非常支持。您可以使用 Haxe 输出 PHP,因此基本上可以轻松部署 Haxe。您还可以输出 JavaScript。我个人使用它来定位 Flash Player。您可以将一种语言用于大量事物。如果您确实选择了这种语言,请不要犹豫join the community。最好是邮件列表或 IRC 频道。

      好吧,我希望这会有所帮助......

      【讨论】:

        【解决方案4】:

        不要绝望!你的 Javascript/CSS 经验足以制作 iPhone 应用程序。查看jQTouch。这是一个 JQuery 插件,可让您使用 Javascript 创建触摸屏友好的移动 web 应用程序。我必须强调 jQTouch 创建的是 Web 应用程序,而不是本机应用程序。缺点是您无法访问本机应用程序拥有的所有 API。好处是 jQTouch 网络应用程序可以在所有带有基于 webkit 的浏览器(iPhone、iTouch、Android 设备等)的手机上运行。在 UI 方面,JQTouch 在维护原生 iPhone 应用的外观、感觉和导航方面做得非常好。

        【讨论】:

          【解决方案5】:

          虽然 PHP 和 Ruby 都是值得了解的有趣语言,并且在你的 UI 设计师职业生涯中都是很好的技能,但我真的鼓励你开始对 Objective-C 进行一些修改。我认为从一些小例子开始并进行一些试验,您很快就会对这种语言感到满意并有信心扩展。

          你说你没有掌握 Objective-C 的编程经验;好吧,现在你有机会学习一些非常好的东西,并有一个真正的目标。这里显然有一个学习曲线,但肯定也会有 Ruby 和 PHP,所以你可以直接学习 Objective-C,以更直接的方式继续学习。

          我读过 Hillegass 的书,它是一个很好的文本,但我不确定它作为一个起点是否完全正确。你看过Scott Stevenson's tutorial吗?如果您决定采用 ObjC 方式,那可能是个好地方。我还认为,一旦您了解了面向对象编程在实践中的工作原理,您很快就会了解其背后的理论。

          【讨论】:

            【解决方案6】:

            值得注意的是,Macruby 编译器的存在,可以为 Mac OS X 创建本地编译的 Cocoa 应用程序。目前不支持 iPhone,但它可以充当桥梁。

            【讨论】:

              【解决方案7】:

              您说您在掌握面向对象编程方面有些困难。如果你决定使用 Ruby on Rails,你真的应该知道 Ruby 是彻头彻尾的面向对象的。在 Ruby 中,一切都是对象。甚至像整数这样的基本类型也不存在。它们是被罩下的物体。它使它成为一种非常有趣的学习语言,但如果您想避免面向对象,请不要去那里。 如果您打算选择 Ruby on Rails 或 PHP,那么您已经知道您将构建一个 Web 应用程序,而不是一个本地设备应用程序。如果您有兴趣开发设备应用程序,您可能需要查看Titanium by Appcelerator。它提供了一种编写面向多种设备的本机设备应用程序的方法,包括 Android、iOS、黑莓和桌面设备。与 Adob​​e Flex(我喜欢它)不同,它编译为本地设备操作码,因此您不会让史蒂夫·乔布斯感到不安。 Titanium 还为您提供了更多可以使用的源语言选择,因此您不必使用 Objective C。您应该能够在 HTML、CSS、JavaScript、Java、Ruby、Python 和 Objective C 方面大获成功。 Appcelerator 最近收购了 Aptana,它制作了一个不错的基于 Eclipse 的 IDE,因此我们应该能够很快获得一个完整的开发环境。 我在这些公司中没有任何形式的经济利益。只是分享...

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-03-10
                • 2010-11-26
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-03-01
                • 1970-01-01
                相关资源
                最近更新 更多