什么编程语言范例适合哪种工作?

ech*_*aze 11 paradigms

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

  • 一个程序员可以简单地坚持他/她生活中的一个范例吗?或者换句话说,一把锤子的所有问题都可以减少到指甲吗?
  • 如果不是,哪种工具适合哪种类型的任务?例如:基于Web的桌面与桌面,创建漂亮且响应迅速的界面,能够快速处理数据等.
  • 人们是否需要学习新的范例?对于我过去的两份工作,我的工作场所需要Java和C#.是否有专门使用非OO语言的工作场所?

显然,没有"最好的"语言,但我想知道是否值得投入时间和精力来学习新的范例.提前致谢!

S.L*_*ott 12

"换句话说,一把锤子的所有问题都可以减少到指甲吗?" 是.期.您可能遇到的任何编程语言都将与其他编程语言一样完整.实际上,编程语言的"完整性"的正式定义.

"人们是否需要学习新的范式?" 总是.

实际上有一个技巧可以跟随"范式转变"的起伏.在我职业生涯的最后30年里,我已经看到编程已从相对简单的命令/程序模型发展到许多更丰富的模型,这些模型包括流程和数据之间更好的平衡.

我注意到以下......

部分驱动力是人工智能社区.许多这些"新模型"始于AI知识表示方案.他们在那里获得牵引力,然后他们进入更主流的应用程序.

实体关系模型最初用于知识表示,而不是业务事务.类似地,对象模型用于知识表示.然后模拟人员发现了它.现在我们其他人都拥有它.

这是我的结论.

软件是知识表示.

您对范式或模型或方法或风格的选择基于以下问题的答案:

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

如果问题有对象和关系,OO.如果问题有算法和转换,映射,过滤和减少,功能.如果问题是动态的,变化和灵活,动态.如果问题是静态的并且会迅速扩大,静态.


war*_*ren 9

值得学习替代范式(OO,功能,程序,动态等),因为它可以帮助您以不同的方式思考问题.

例如,考虑以线性方式(我使用它的第一种方式)与使用递归来解决树遍历的区别.或Google将Map和Reduce结合起来帮助他们为互联网编制索引.

应用于旧问题的新思维方式可以帮助打破一些最棘手的问题.


Tom*_*omo 7

范式独立于语言.你可以用C开发OO风格(看看GTK).当我用Java编程时,我主要使用功能样式.

值得了解尽可能多的范例.在一个范例中解决一些问题是微不足道的,并且需要在另一个范例中进行精细的制作.

作为一个(平凡的)示例,比较Java和Ocaml中的quicksort实现,或者更好的是Haskell,在此页面上:http://www.rosettacode.org/rosettacode/w/index.php?title = Quicksort

(这并不意味着功能更好.有一些问题可以通过OO更好地解决).


Joh*_*lan 5

一把锤子的所有问题都可以减少到指甲吗?

呃,是的.你可以用一把锤子解决问题.它只是锯掉了一半的门需要更长的时间.

人们是否需要学习新的范例?对于我过去的两份工作,我的工作场所需要Java和C#.是否有专门使用非OO语言的工作场所?

开发人员必须每15到20年左右这样做.

肯定有整个行业的小型公司使用基于程序的VBA编写基于Access的系统.(我想我已经为大多数人工作了).经典的ASP开发人员不得不学习ASP.NET.Perl开发人员正在学习Python.批量驱动开发让位于事件驱动开发.