![]() |
1
22
除非你正在从C语言转移到另一种语言,或者除非有某种 有效的 C/.NET不能满足的技术要求,我不会从现有的代码库中转移。 您声明您的原因是客户端需要.NET。您的程序是客户机/服务器,还是Web应用程序?如果它是基于Web的,那么您是不正确的,客户机不需要.NET,只需要一个浏览器。 如果程序是客户机/服务器,并且已经用C语言编写,那么您移动到的任何语言都可能需要某种形式的运行时安装。.NET附带了从XP开始的每一个新的Windows安装和服务包。 当然,除非您试图瞄准OSX和Linux用户,在这种情况下,在您做出放弃代码库的任何决定之前,我将考虑对这些市场的价值进行认真的检查。Java可能会帮助你更好地使用——但是你可以在单声道平台上做很多事情,所以即使你瞄准那些平台,你也可以保存你的C代码。 编辑:
不幸的是,你运气不好。与C语言最接近的语言是Java,但两者之间的差异非常重要,以至于需要完成一个完整的重写;一个端口根本无法工作。你所使用的C代码不太可能使用委托和事件——它们是无所不在的,Java中没有类似的构造。winforms gui框架(我猜winforms)与swing是如此不同 没有人 其中的结构将很容易移植; 和 到处都是活动和代表。 您正在考虑的是,切换平台的工作至少与最初的工作一样多,可能更多。加上Java会违反你想从C语言转换的原因:Java需要在客户端安装一个运行时。 正如我之前提到的,仔细看 真实的 在做出这个决定之前,您可能会从交换平台中得到好处。 |
![]() |
2
23
这听起来很粗鲁,我冒着被否决的风险,但请原谅,我会诚实的…你说,“(你)负责开发用Microsoft.NET C创建的第二个版本的程序。”不做任何实际的编程…[想]把它从.NET代码库中去掉”。你听到了吗?你显然没有任何知识或经验来做出决定,问题1和3进一步证明了这一点。没有“简单的语言”——这是什么意思?强大的语言“容易”吗?弱语“容易”吗?怎么可能有一个简单的过渡到任何不同的地方?即使您有自动转换代码的功能,运行时、平台和库之间的差异也会使移植任何不平凡的应用程序变得非常困难。它需要工作和知识。也许对一个拥有 许多 时间,但对大多数人来说,这不是最后期限和现实的问题。 |
![]() |
3
9
我真的不明白为什么你要离开C和.NET,唯一的原因是你不想让你的客户“不便”安装.NET框架。 一方面,现在Windows中包含了.NET。在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提供了很多。微软通过大量的资源、工具、文档和社区帮助,在.NET平台上创建了一个广泛的开发生态系统。C是一种非常干净、现代、前瞻性的语言,它提供了许多工具来帮助您和您的开发人员尽可能快速、简单和高效地解决问题。移动到C++意味着你不仅失去了这些有用的进步,而且还继承了手工内存管理的噩梦。移动到Java意味着你失去了这些有用的进步,但通常也没有真正有用。您可以转向其他.NET语言,但这样做并不能解决您提到的唯一问题:您的客户机依赖于.NET框架。 如果你已经有了一个用C开发的系统,我会说不要改变任何事情。你会失去很多,不会真正获得任何会对你的客户产生重大影响的东西。从长远来看,任何变化都很可能对您的公司和开发人员产生更大的影响。您将在重写或转换代码时投入成本,在新语言和可能的新开发平台上培训开发人员所需的成本,在当前代码库中查找和修复可能已经修复的错误所需的成本,然后列表继续…… 在决定对客户来说太不方便之前,您需要了解更多关于.NET必须提供什么的信息。在决定做出如此巨大和昂贵的改变之前,你需要确保这对你的客户来说确实是一种不便。 |
![]() |
4
7
你认为还有什么比C更好的原因?.NET出了什么问题?如果你有正当理由阻碍你的公司使命,那么你应该考虑重新写它。 然而,我确实看到了做这件事的任何意义。C非常简单和简单,最近版本的运行时看起来相当稳定。我仍然不会在其中构建操作系统,但对于最终用户应用程序,这是我的主要语言。
如果您提供应用程序是什么、客户机、服务器等的详细信息,以及它的功能等,我们可能会更加具体。 但请记住,坦斯塔夫。 编辑: 我不会太担心需要在客户机上安装运行时。假设您的所有用户都是Windows用户,那么Vista和Win7都默认安装了最新版本的运行时。随着越来越多的应用程序建立在运行时上,越来越多的用户已经将它用于其他应用程序,您可以随时用您的应用程序重新确定运行时。 |
![]() |
5
4
(1)有什么简单的过渡方法吗?(像.NET C等语言) 不 (2)你能把它从.net上取下来吗? 没有一个非常令人信服的理由(不会给你的客户带来不便,不是吗!) (3)如果有,有什么简单的语言吗? Java将是最接近于C的类似物,你会损失更多的钱,而且你仍然会给你的客户带来不便。 我之所以想把它从.NET中去掉,是因为我对.NET的理解是,它必须安装在客户机上。如果有更好的方法,我宁愿不给我的顾客带来不便。 正如其他人提到的,这并不是你认为的不便,如果这是你唯一的原因,那么你很可能只是在浪费时间、资源和金钱。简而言之,如果它是付费的,而且有效的话,那就不要戴手套。 |
![]() |
6
2
不会有从C_到.NET之外的自动转换。 您可以轻松地将其转换为BO或VB.NET或其他.NET语言,但是如果您将翻译成C++(非CLI),则库(.NETFramework)将不可用。 这会引起最大的头痛。 |
![]() |
7
2
从C语言到另一种.NET语言的转换是唯一容易的。除此之外,由于所有的语法和库都将发生更改,所以您将以任何方式重新编写应用程序。 我可以问 为什么? 你想离开C?本着您提供的Joel on软件链接的精神,我希望您能够看到坚持当前正在工作的代码库的好处(为了它的价值)。对于这个项目,是否有一个非常令人信服的理由离开.NET? |
![]() |
8
1
从C到Java移动可能是最简单的,因为它们是非常相似的语言。但是,您仍然需要检查所有的代码,并修改很多东西使其成为有效的代码。如果你使用的是C语言的一些最新特性,比如LINQ,因为Java没有类似的功能。 你有充分的理由把它从.net上删除吗?如果不是,就不要。但是如果你真的想在某个时候把它从.NET中去掉,那么越早越好(在代码增长过多之前)。 |
![]() |
9
1
我不明白为什么一家公司会决定从一个稳定的代码库(如.NET)转移到另一个。如果您考虑其他平台,例如从操作系统应用程序迁移到Web应用程序,RubyonRails可能会很好(它的MVC平台很强大)。但是到另一个操作系统应用程序?这将变得困难。 |
![]() |
10
1
(1)有什么简单的过渡方法吗?(像.NET C等语言) 如果简单的意思是相似的,那么在语法中Java是相似的,但是匹配.NETFramework类到Java库将是不平凡的。 (2)你能把它从.net上取下来吗? 不。 (3)如果有,有什么简单的语言吗? 见回答(1) 几个问题来帮助我进一步理解你为什么要这样做; 这对您的客户有何不便?(只安装.NET框架?) 如果你在谈论一个客户端应用程序,那么你也需要在客户端上安装你的应用程序,我不理解这会给你带来更多的不便。 从 your other similar question 你建议你改写C++,这会如何改变不方便级别? 是否要针对非Windows用户群? |
![]() |
11
1
在某些情况下,从C到C++移动可能是有意义的,这样就可以获得非托管代码(即性能)的能力。但很可能这不值得付出努力。 |
![]() |
12
1
正如许多问题的答案一样, 取决于 . 在下面的回答中,我假设您在谈论一个Windows窗体应用程序,因为,当然,如果您谈论的是一个基于Web的产品,那么所有这些都是没有问题的。 听起来你已经(几乎)做出了“把它拿下来”的决定。我强烈建议你仔细考虑一下这个决定。特别是,看看原因。你已经说过了 这个 原因是您不希望.NET运行时依赖项导致问题。一些人提出的反驳是,没有运行时的Windows平台 标准 正在变得稀缺。总有一天,对于一个不依赖50MB下载的精简而简单的程序来说,会有一些令人满意的东西。 最终,你所说的理由是否有效取决于:
毕竟,如果事实证明99%的客户都在一个现代化的平台上,那么正如其他人所指出的,这将成为一个没有问题的问题。 如果 事实证明,在分析了上述理由之后,您应该将重写产品的成本与重写后客户满意度/产品销售的预测改进进行比较。为了证明重写的合理性,后者必须是绝对显著的。当然,我是这么说的,不知道所有的事情,包括:
就一般的编程语言/平台而言,这些天你几乎不能得到比C更好的,所以假设在所有的尽职调查之后,你仍然想“移动”,那么你将被迫选择一些不需要运行时间的东西——唯一可以想象的选择是C/C++或Delphi。 |
![]() |
13
1
答案很简单:将应用程序移到Web上。 所以客户端只需要浏览器。 |
![]() |
14
0
.NET框架是Windows Update的一部分,因此可能每个客户机的计算机上都有它。或者他们运行的是Linux/Mac操作系统,但我认为情况并非如此,因为您的产品版本1已经在.NET中运行。 而且。几乎所有其他主流语言都需要安装一个单独的运行时(Java、PHP等)。 所以我看不到一个合理的过渡原因。 |
![]() |
15
0
到目前为止,大多数回答都是针对C与“其他”的具体问题,但我会回答您需要问的问题:
快速,不做什么:指定实现细节,例如要使用的语言。 做什么:写 User Stories 或者指定所需内容和原因的用例。例如: 作为一个用户,我希望能够通过从Internet下载单个文件来安装和运行软件,这样我就不会因为必须查找和安装其他软件而感到不便。 您可能希望用指标来支持这一点: 作为产品经理,我希望能够查看给定时间段内的软件下载数量和同一时间段内的软件激活数量,以便确定有多少潜在客户成功地安装和运行了软件。 告诉你的团队你想要什么,为什么,他们会为你提供。 |