将C#程序移动到另一种语言

wai*_*933 4 .net c# language-comparisons

我目前负责开发在Microsoft .NET C#中创建的第二个程序版本.我没有做任何实际的编程,但我正在为程序员编写规范.我想把它从.NET代码库中删除,但由于Joel在他的博客上说永远不会重写代码,并且他确实提供了很好的推理,我倾向于仔细思考.

所以我的问题是,

(1)有没有简单的过渡方式?(像.NET C#这样的语言)
(2)你会把它从.NET中删除吗?
(3)如果是这样,你会用什么语言?

我想脱离.NET的原因是我对.NET的理解,它必须安装在客户端上.当有更好的方法时,我宁愿不给我的顾客带来不便.

Ric*_*ein 23

这听起来很粗鲁,我冒着被投票的风险,但请原谅我,我会说实话......你说的是,"[你是]负责开发第二版程序的开发Microsoft .NET C#...没有做任何实际的编程...... [希望]将它从.NET代码库中删除".你在听自己吗?你显然没有任何知识或经验来做出这个决定,问题1和3进一步证明了这一点.没有"简单的语言" - 这甚至意味着什么?强大的语言"容易"吗?弱语言"容易"吗?如何轻松过渡到任何不同的东西?即使您有自动翻译代码的东西,运行时和平台和库的差异也使得移植任何非平凡的应用程序变得非常容易.它需要工作和知识.也许对于有很多时间的人来说很容易,但对于大多数有截止日期和现实的人来说都不是这样.


Ran*_*pho 22

除非你从C#转移到某种企业范围从C#转换到另一种语言的一部分,或者除非C#/ .NET无法满足某种有效的技术要求,否则我不会偏离现有的代码库.

您说明了您的原因,因为客户端需要.NET.您的程序客户端/服务器,还是Web应用程序?如果它是基于Web的,那么你是不正确的,客户端不需要.NET,只需要浏览器.

如果程序是客户端/服务器并且已经用C#编写,那么您移动到的任何语言也可能需要某种形式的运行时安装..NET附带了Windows的每个新安装和服务包.

除非您正在尝试针对OSX和Linux用户,在这种情况下,在您做出任何放弃代码库的决定之前,我会考虑认真研究这些市场的价值.Java可能会帮助您更好地帮助您 - 但是您可以使用Mono平台做很多事情,因此即使您定位这些平台,也可以保存C#代码.

编辑:

waiwai933写道:

我知道我不应该做出决定,但我决定不决定谁做出决定.通过"简单语言",我的意思是一种非常类似于C#的语言,因此过渡会更容易.

不幸的是,你运气不好.与C#最接近的语言是Java,但两者之间的差异非常大,您需要进行完全重写; 一个端口根本行不通.你拥有的C#代码不太可能不使用委托和事件 - 它们是无所不在的 - 并且Java中没有类似的构造.WinForms GUI框架(我猜WinForms)与Swing完全不同,没有任何构造可以轻松移植; 它充满了事件和委托.

您正在寻找至少与初始努力一样多的努力来切换平台,可能更多.再加上Java违反了你想要从C#切换的原因:Java需要在客户端上安装运行时.

正如我之前提到的那样,在做出这个决定之前,请仔细研究切换平台可能带来的真正好处.


jri*_*sta 9

我无法理解为什么你想要离开C#和.NET的唯一原因是你不想通过要求他们安装.NET框架来"给你的客户带来不便".

首先,如今,.NET已包含在Windows中.在XP(当前的服务包)中,您获得了.NET 2.0.在Vista中,你得到.NET 3.0.假设您实际上没有使用任何.NET 3.5功能,并且不需要C#3.0中的任何功能,那么"客户的不便"这一论点是相当没有实际意义的.他们不需要下载任何东西或安装额外的东西......它已经存在.

如果您确实需要.NET 3.5和/或C#3.0,那么为您的客户创建预先打包的安装程序并非常容易.对客户没有任何真正的"不便",因为他们无论如何都必须安装您的程序.单个安装可以在单个,无缝,透明的安装过程中处理您的程序及其所有依赖项.如果您希望为客户提供更轻松的时间,则可以选择使用.NET,C#和Visual Studio进行一次性部署.这将为您的客户创建一个简单的站点,可以轻松快速地允许他们下载和安装您的应用程序,并在将来的更新发布时进行更新.这种类型的部署还负责确保下载任何依赖项并将其安装到客户机系统,这只需要执行一次(所有后续更新只需要下载和安装最新版本的已更改程序集.)

正如其他人所提到的,C#和.NET有很多东西可以提供.Microsoft已经在.NET平台上创建了一个广泛的开发生态系统,拥有大量的资源,工具,文档和社区帮助.C#是一种非常干净,现代,前瞻性的语言,它提供了许多工具来帮助您和您的开发人员尽快,简单,高效地解决问题.转向C++意味着你不仅失去了这些有用的进步,而且还继承了手动内存管理的噩梦.迁移到Java意味着你失去了这些有用的进步,但通常也没有真正获益.您可以转移到其他.NET语言,但是您没有解决您提到的唯一问题:您的客户端依赖于.NET框架.

如果你已经有一个用C#开发的系统,我会说不要改变一件事.你会失去很多,并且不会真正获得任何会对你的客户产生重大影响的东西.从长远来看,任何变化都可能对您的公司和开发人员产生更大的影响.您将需要花费在重写或转换代码上的成本,培训开发人员使用新语言所需的成本以及可能的新开发平台,查找和修复当前代码库中已经修复的错误所需的成本,以及列表继续......

在您确定对您的客户来说太不方便之前,您需要了解.NET提供的更多信息.在决定进行如此剧烈且昂贵的变更之前,您需要确保它对您的客户造成不便.

  • 我会投票给这个,但你不能拼错. (3认同)

i_a*_*orf 7

你认为其他什么比C#更好的原因是什么?.NET出了什么问题?如果您有正当理由妨碍您的公司使命,那么您应该考虑重新编写它.

但是,我确实认为这样做是有意义的.C#非常简单明了,最新版本的运行时看起来相当稳定.我仍然不会在其中构建操作系统,但对于最终用户应用程序,它是我的首选语言.

用C++重写它只会成为内存/资源管理的噩梦,转换到Java是一个横向移动,并没有多大意义.

如果您详细说明应用程序是什么,客户端,服务器等,它的作用等等,我们可能会更具体.

但请记住,TANSTAAFL.

编辑:

我不会太担心要求在客户端上安装运行时.假设您的所有用户都是Windows用户,则Vista和Win7都默认安装了最新版本的运行时.随着越来越多的应用程序构建在运行时,越来越多的用户已经将它用于其他应用程序,您可以随时使用您的应用程序重新编写运行时.