我在微软的环境中工作,所以我可以在我遇到的任何指甲上使用我的C#锤子。话虽这么说,什么语言(编译,解释,脚本,功能,任何类型!)补充知道C#,以及用于什么目的?例如,我已将许多脚本功能从已编译的控制台应用程序转移到Powershell脚本中。如果你是一名MS开发人员,你是否在世界上找到了其他语言的利基,如F#,IronRuby,IronPython或类似的东西,以及它们填补了什么样的利基?
注意:这个问题是针对微软开发人员的,因为我无法逃脱并开始在我的公司周围安装LAMP堆栈,因此必须永远支持它。 :)但是,除了您的主要语言之外,请随意提及您认为有兴趣在您的世界中完成某项任务/角色的任何其他语言。
答案 0 :(得分:7)
Python / Perl / Ruby / PowerShell是C#/ VB.NET的重要补充。如果你的老板给你一个文本文件并说它插入数据库一次或两次,那么Perl / Python / Ruby中的任何一个(我不确定powershell但我认为它不是那么困难)应该没问题。解析它。无论哪种方式,对于您的主要应用程序,您可能会陷入C#。您可以使用一种更动态的语言在C#中进行代码生成。
由于您处于Microsoft环境中,因此获得解决方案的最佳机会可能是PowerShell。接下来我会说IronPython或其他与CLR集成的东西。但主要问题是,对于其他人来说,维护你的工作,他们必须知道你正在使用的语言。 MS未来计划更多地使用PowerShell,因此可以更容易地证明PowerShell,然后说Python / Perl / Ruby。
如果您只是处理文本文件一次使用。或者创建一次性代码生成器来生成所有代码,然后打算维护生成的代码,那么无所谓。你是那个将消费结果的人,如果你使用Perl节省时间,那么你就会有更多的权力。但是,如果你正在做一些将被反复使用的东西(比如一个活动的代码生成器,你可以在其中更改模板并运行生成器而不是维护生成的代码),那么其他开发人员在处理你所做的事情时需要知道语言你用过。在Microsoft Shop中学习Perl / Ruby / Python是很难的。但PowerShell似乎更容易。我认为MS宏计划是最终应用程序将通过命令行开关为power shell提供更多功能。假设发生了这种情况,那么PowerShell就更容易理解,因为它会暴露出大量可编写脚本的功能,而这些功能是你不会得到的。
答案 1 :(得分:5)
答案 2 :(得分:2)
我使用python进行原型设计,因为在编辑和实际运行新版本代码之间几乎没有转折时间。我甚至可能最终将它用于一个真实的项目 - 我越用它,我就越喜欢它。
虽然它需要一些习惯作为C#程序员 - 它使用的缩进定义结构系统起初有点奇怪。
答案 3 :(得分:2)
由于您在MS商店,我建议将PowerShell作为一种体面的脚本语言来学习。它与C#配合得很好。 我也是Ruby的粉丝。
答案 4 :(得分:1)
虽然这是一种边缘语言,但我不得不提到Erlang。 Erlang是您工具箱中的一种优秀语言,因为它的不同寻常的优势往往与其他编程平台相称。 Erlang对于构建分布式,并发,容错系统非常有用。它在即时通讯和电话领域得到了很多应用,因为它需要分布式但互连的架构。
答案 5 :(得分:1)
我想要第二或第三个python。具体来说,IronPython(ttp://www.codeplex.com/Wiki/View.aspx?ProjectName = IronPython)可以让你学习python,但也可以访问.net框架的好东西。
这对于与脚本相关的任务非常有用,因此它可能对您的日常编码生活很有用,也是一种以实验性编码/原型设计方式进行处理的好方法。
答案 6 :(得分:1)
也许和Boo一起玩,看看你的想法
Boo at Codehaus.org
Boo at Wikipedia
答案 7 :(得分:1)
如果您使用.Net框架,那么语言实际上并不重要,因为编译器和解释器在任何情况下都会创建相同的IL代码。
如果你离开.Net世界,我认为开发工具和语言是一个工具箱。我努力使用合适的工具来完成手头的工作,考虑到其他开发人员的技能基础以及公司当然寻求的方向(我是一名顾问)。
答案 8 :(得分:0)
我和jjnguy在一起。尝试使用其中一种脚本语言。另外,作为奖励,当你学习Ruby / PythonPearl等时......它是一种网关药物......用于开发其他环境的语言。
答案 9 :(得分:0)
尝试使用普通工具箱之外的语言,可以为您提供以当前最喜欢的语言处理事物的新方法。即使您不将它们用于严肃的项目语言,如Perl(用于数据修改),Lisp(functional programming)和Javascript(prototype based programming)将教会您思考当前问题的新方法语言。
答案 10 :(得分:0)
作为一名网络开发人员,您可以查看XSLT / XPath系列,对于某些类型的XML处理,它们可以是非常强大的工具。
当然,在C#3.x中,Linq2Xml内联了一些类似的功能。
然而,XSLT可以是一种将数据与应用程序中的表示分开的强大方法。
答案 11 :(得分:0)
我对F#和CLR / DLR中的一些其他新语言非常感兴趣。 DLR语言对于你的用户界面可能要好得多,因为它们不会让你投入很多愚蠢的事情。
但是,我认为重要的是要记住学习一门新语言,特别是在一个新的领域,比如函数式编程,总是一种重新训练你的思维的好方法,这样你就会接触到新概念即使您从未使用过这些新语言,也可以用您选择的语言编写更好的代码。
答案 12 :(得分:0)
查看Boo - 它运行在.NET堆栈之上,但其语法更像Python。
答案 13 :(得分:0)
要学习一种补充C#的新语言,我会选择C ++。您可以以“优于p / invoke”方式使用它来访问C#应用程序中的非托管代码。然后,您可以开始使用它来编写内存受限的应用程序和/或性能关键位,如果您发现某些.NET应用程序开始占用所有RAM和/或CPU,或者通常不如你想要。