就我所知道的(不多的我承认),目前流行的编程模式是面向对象(Java,C#,Ruby)与功能(F#)。作为一个人是大多熟悉的第一个范例,我有几个问题:

  • 可以编程只是坚持一个范例,所有他/她的生活?或者换句话说,可以对所有的问题被减少到指甲一个锤子?
  • 如果不是,其工具是适用于哪种类型的任务?例如:基于网络与桌面,创造美丽和反应灵敏的接口,能够对紧缩的数据,等等。
  • 有人需要学习一种新的模式呢?对于我过去的两份工作,我的工作场所工作所需要的Java和C#。有没有工作,具体使用非OO的语言?

显然,没有"最好的"的语言,但我想知道是否值得所投入的时间和精力去学习一种新的范例。在此先感谢!

有帮助吗?

解决方案

"或者换句话说,可以对所有的问题被减少到指甲一个锤子?" 是的。期。任何一种编程语言,你可能遇到的将是完整的,因为所有其他人。实际上,有一个正式的定义的"完整性"为一种编程语言。

"有人曾经需要学习一种新的典范?" 总是如此。

实际上,有一招下跌宕起伏的"范式转移".在过去的30年我的职业生涯中,我已经看到,程已经从一个相对较简单的必要/程序性模式的一些更丰富的模型包括一个更好的平衡之间的过程和数据。

我已经注意到了下面...

一部分驱动力是人工智能的社区。许多这些"新模式"开始作为AI知识表示的计划。他们的牵引力,那么他们流淌到更多的主流应用程序。

实体的关系模式最初用于知识的表示,没有商业交易。对象的模式,同样,知识的代表。然后模拟人发现了它。现在剩下的我们有它。

这是我的结论。

软件知识的代表。

你选择的范例或模式或方法或风格是基于回答以下问题:

"我怎样才能最好地表示这个问题呢?"

如果这个问题已经对象和关系,OO。如果这个问题已经算和转换、地图、过滤器和降低,功能。如果问题是动态的,不断变化和灵活的、动态的。如果问题是静态的,并且将扩展迅速,静态的。

其他提示

这是值得学习的替代模式(OO、功能性、程序性的,动态的,等等),因为它会帮助你认为有关的问题以不同的方式。

例如,认为有关的差别在解决一棵树历以线性方式(第一我曾经做到了)与使用递归。还是谷歌的合的地图,并减少,以帮助他们指数互联网。

新的方法来为加的老问题,可以帮助打破一些最困难的问题。

这一模式是独立的语言。你可以开发在OO式在C(看看GTK).当我计划在爪哇,我使用的主要功能的风格。

这是值得知道的多模式成为可能。有些问题是微不足道来解决在一个典范,并且需要微妙的手工艺在另一个。

作为一个(微不足道)的例子中,比较快速排序实现在爪哇和Ocaml,或者更好的是,Haskell,在此网页上: http://www.rosettacode.org/rosettacode/w/index.php?title=Quicksort

(这并不意味着能更好。有问题的更好解决与OO)。

可以的所有问题将减少到指甲一个锤子?

Err是的。你可以解决问题的只是一把锤子。它只是锯门中有一半需要更长的时间。

有人需要学习一种新的模式呢?对于我过去的两份工作,我的工作场所工作所需要的Java和C#。有没有工作,具体使用非OO的语言?

开发者已经这样做的每一个15-20岁左右。

肯定有一个完整的产业中的小公司以访问基础的系统编写程序VBA。(并且我认为我曾为他们中的大多数).经典ASP开发者们需要学习ASP.NET.Perl开发人员正在学习蟒蛇。批驱动的发展方式的事件驱动的发展。

我认为你会找到答案,所有过的委员会。我越工作,我发现它是"有用"知道一些其他人。作为一个C#/VB/SQL服务器开发我找到它更多的帮助对我来说了解一些关于F#以及一些其他语文那里得到的广泛暴露,真的找出什么样的工具是正确的...

动态的东西,害怕废话了我,但红宝石在轨道上是迄今为止最好的发展的系统我看见于网页的东西。我感觉不舒适用于一个真正的大,重型维修项目,但因为它太容易改变的意义的现有编制,完成了代码。也太容易了一个人的编码式,使它成为一门新的语言。

动态/脚本是还好知道为系统管理员和人运行Linux系统。写一个快速的脚本中BASH或红宝石比地狱的努力来实现相同的功能,或C++。

OO使它更容易理解大量的代码。如果你有一个大的团队或多个大队,并需要得到概述,快速,面向对象,使它更容易描述和隔离一个特定的功能。我应该说,正确的编码OO!

我的理解功能良好的多线程,因为一切都往往是不可改变的。

发展中设计和构建能力与面向对象是最可取的技能,为一个伟大的语言无关的职业生涯。

该段当你的代码不是既为其他团队成员那里和该组织作为一个整体。因为该守则将是可以理解的,如果开发人员辞职,公司不需要担心太多。在其他情况下,如果按照功能的风格,它会真正的他人难以明白你做了什么。

如大多数其他人已经说过,你可以,一般使用任何语言,以解决任何问题,通常可以写风格的一个范例在另一个。

如果你需要时间来学会用不同的模式,因为它们旨在然后你做了解不同的事情有关知识表示和解决问题,它可能有用的任何范例的你使用的未来。

虽然有一些调整之间的模式和领域,它通常是最好的选择语言,根据具体环境中的软件需求。

  • 它需要运行在多个桌面平台?
  • 如果它是一个桌面应用程序是否需要有一个乡的外观和感觉?
  • 是的快速迭代的设计很重要
  • 它是如何维持的?
  • 什么第3党系统的不需要工作?
  • 现有的程序员的知识/技能/偏好。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top