我已经使用C和C ++在Linux中进行了大约3年的编程,最近有兴趣为企业开发商业软件。 比方说,我发现我可以成功,但他们只使用Windows。 然而,我对Windows API没有任何经验。 我有几个问题:
我应该学习.NET吗?
我是否需要学习C#才能使用.NET,还是可以坚持使用C ++?
在Cygwin下使用–no-cygwin选项编译使用GCC的情况如何? 我对可移植性感兴趣,我担心如果我开始为VC ++编写代码,我可能会被绑定到Windows。
文件移动 – 操作系统如何知道是否更新主文件表或复制和删除?
如果启用了Windows Update,请从.NET进行检查
WinForm:与VS2010中的现有菜单合并ContextMenuStrip MenuItem
如何使用Windows + m键盘快捷键最小化我的应用程序?
如何给程序更多的权限,比用户启动它
哪里是做我的基本阅读的好地方?
还有什么可以告诉我有关从Linux转换到Windows编程?
Windows Server / Datacenter:设置> 64核心的cpu亲和力
在Windows上有一个posix SIGTERM的替代品吗? – (轻松杀死控制台应用程序)
性能监视器.NET CLR Networking 4.0.0.0实例命名
如何确定一个System.Diagnostics.Process是32位还是64位?
可靠地检测到我的另一个应用程序正在运行
我面对完全相同的问题,我很高兴我尝试.NET。 我希望这个信息可以帮助你:
我应该学习.NET吗?
我会高度推荐它。
我是否需要学习C#才能使用.NET,还是可以坚持使用C ++?
你可以坚持使用C ++,但我相信你会喜欢学习C#,请尝试一下。 你也可以把它们混合起来。 .NET的主要挑战是学习所有的库,以帮助你(所以你不需要重新发明轮子)。 经常使用msdn并尝试获取基本类和程序集的映射 。
如果你来自C ++,这是一个有趣的经验,你不应该有重大的问题。
哪里是做我的基本阅读的好地方?
我将从轻量级开始,检查免费的Visual Studio工具,软件和示例,转到MSDN文档并编译MSDN中的一些示例(如何访问文件 ,…)。 正如你所看到的,你会发现C#和C ++的例子并排。
那么当然, 通过CLR的C#书籍最终还是需要阅读的。
可移植性
确保你在Mono和多个平台上运行你的代码。
未来的投资
投资学习.NET框架将会得到回报。 现在学习所有新的工具是很昂贵的,.NET知道你可以发展。 新的功能和语言出现了,但基本的类仍然是你的时间/努力投资更受控制。
我应该学习.Net吗?
取决于你是否觉得这将有利于你正在看的利基。 例如,如果你的利基是一个桌面应用程序,这可能是一个好主意,因为,恕我直言,开发WinForms,WPF GUI比C ++版本更容易,
我是否需要学习C#才能使用.Net,或者我可以坚持使用C ++吗?
C#不是必需的,使用C ++ / CLI可以在仍使用C ++的同时利用.Net。 但是,我倾向于只使用C ++ / CLI来重点关注托管代码和本地代码之间的互操作。 这种发展特别好。 如果你切换到更主流的应用程序,我想你会发现C#或VB.Net将会更好的适应你。 大多数在线样本都是面向这些语言的。 特别是很大一部分工具是针对这些语言的(WinForms和WPF设计者开始)。
担心编写不可移植的代码,并被绑定到VC ++
我相信这个意见会稍微不受欢迎。 但是你已经提到了,你正在使用的是Windows特有的。 如果您只能在Windows上运行,那么编写可移植代码有什么意义? 这不是一个Windows的偏见出来,如果平台倒过来,我会做出完全相同的论点。
我不是说便携式代码是一件坏事。 这实际上是一件非常好的事情。 但是,如果没有使用可移植性的可能性,为什么不利用平台呢?
答案取决于你想要实现的程序类型。
如果您想要实现一些系统实用程序,那么答案与* nx世界上的答案几乎相同:您将不得不使用C语言进行编程以获得最佳结果,并且非常了解Win API。
对于其他事情,C#可能是今天的路要走。 它是现有的dotNet语言中最好的语言IMO。
学习Windows API确实是一件好事,但我建议使用一些脚本语言进行更快速的实验(Lua与Alien库,Python,AutoIt等)。 关于它的好处是,你可能知道其中的一些,来自* nx社区。
既然你担心可移植性,我建议你使用C#特别注意操作系统特定的东西,如路径分隔符,文件名区分大小写等。你可以在MonoDeveloper网站上找到一些关于它的好的文章。 Java也是一个很好的方法 – 我不是专家,但是从我所知道的交易语言的复杂性,速度和原生的感觉(从C#角度来看)更好的可移植性。
最新的MonoDevelop使您甚至可以加载Visual Studio项目,尽管我从来没有个人认为这样做。
我应该学习.NET吗?
是。
我是否需要学习C#才能使用.NET,还是可以坚持使用C ++?
从技术上讲,不,你不必学习.NET的C#。
如果我开始写VC ++,我可能会绑定到Windows。
这是一个Windows商店,对不对? 谁在乎,如果Windows程序是可移植的, 如果你唯一的目标是Windows ?
哪里是做我的基本阅读的好地方?
堆栈溢出。
还有什么可以告诉我有关从Linux转换到Windows编程?
买一台Windows机器和Visual Studio。 不要试图半个Unix。 花大量的时间和精力学习微软之路。 就像有一个Unix的方式,有一个MS的方式。 两者都适用于各自的系统。
祝好运并玩得开心点!
你将要销售商业Windows软件。 检查业务。 找出他们还买什么,并检查推荐的平台信息。 这会给你一个很好的想法,他们拥有什么,瞄准什么。
你可能想学习.NET(嘿,你将不得不学习一个新的框架),如果你擅长C ++,C#不会很难学。 这似乎是当今标准的开发环境,可能是出于很好的原因。
如果您担心可移植性,请使用C ++编写后端,并隔离与系统相关的部分。 如果您要将Windows软件出售给企业,它必须看起来像Windows软件。 它必须像他们期望的那样行事。 不要在跨平台方面妥协UI的任何优势; 相反,在逻辑上分开用户界面。 您以后可以随时为其他平台重写。
同样,继续使用Visual Studio。 这是一个很好的环境,虽然我有时会错过gcc,gdb和make,但是它可能会让你更清楚你正在编写一个Windows程序。 如果你使用Cygwin和gcc,你可能不会像Windows程序员那样思考,这意味着它不会像Windows程序,这意味着你的潜在客户将会遇到问题,这意味着更少的钱和更多的机会抢先市场占领市场。
我发现转向Windows编程并不困难。 只要知道你正在学习新东西,而且有些东西在Windows中是标准的,而不是在Unix中。 如果你不害怕学习新东西,你会好起来的。
还有一件事:Unix应用程序经常因笨重的用户界面而臭名昭着。 Unix用户倾向于更多的技术人员,他们不太关注事物的外观,并且更加宽容丑陋的界面。 在Windows商业软件世界里,外观和易用性很重要,而实际的用户很可能是那些计算机的智力模型极为不准确的人,如果他们面对他们,他们不会识别一行Python代码。
你将需要一个相当有吸引力的用户界面,可以很容易地被那些不关心计算机本身的人使用。 这是我们很多人的一个延伸。 如果你不认为iPhone有什么特别的地方,那么你就需要另一个观点。 阅读用户界面,找到其他人有一些艺术感和可用性的一些想法,任何东西。 UI设计与编程技巧不同,许多人只有其中一个(在这里,人们往往是熟练的程序员,可能有一些UI技能)。
如果您对代码的可移植性感兴趣,则必须同时生成Linux版本和Windows版本。 如果您试图编写Windows代码,而只是考虑到可移植性,那么您将始终以Windows特定的元素为代码。
如果你打算使用Windows,那么不妨学习C#。 C#其实很酷。 它比C ++具有更多的Lisp特性。 学习它是直接的。 你最好的学习资源是谷歌,但如果你是一个学习书籍,去购买任何书籍的C#。
这一切都取决于。 如果您选择使用C ++,而且您正在开发一个GUI应用程序,则可以从中选择几个GUI框架( wxWidgets , GTK ),其中大部分也是平台可移植的。 如果您只专门针对Windows,将.NET库作为依赖项不是问题,并且您不介意学习新(但仍然熟悉)语言的时间,那么C#可能会更好案件。
您可以使用C ++进行.NET开发,但它将是C ++(C ++ / CLI)的一个稍微修改过的版本。 说实话,你不妨学习C#。 (我个人认为C#是一个美丽的语言,但我们去。)
在框架本身方面,还有很多东西要比语言学得更多 – 尽管语言的功能越来越强大,图书馆的发展更加迅速。
尽管如此,所有这些仍然比学习Win32本地API更简单(IMO)。
对于基本的阅读,我会推荐“简单的C#3.0”和“通过C#的CLR”。 (当我还没有逾期的时候吃晚饭的时候,链接就来了…)
很多人似乎都忽略了“UNIX与Windows开发差异”的原始问题,所以我会稍微谈一谈。
关于我应该学习C#:
我认为你需要在某个时候学习像C#[1]这样的语言。 问题不在于你是否应该学习,而在于什么时候学习。
关于C#的替代类似语言:
Java是另一种非常类似于C#的语言。 Java IMO是C#和IMO的父亲我更喜欢Java。
我给你一个比喻来解释我对Java的偏好。 爪哇有这个儿子C#谁看到了他父亲的所有成功。 儿子嫉妒,并试图做他父亲做同样的事情。
在这种情况下,MS是试图把老父亲上台的暴发户的儿子。 然而,暴发户C#缺少一些关键的事情国际海事组织:
真正实现跨平台
更小的技巧库拥有C#的更短的寿命(或者我喜欢把它称为一个更小的预先制作的乐曲)
上述两个要点我更喜欢Java。
[1-footnote]当我说“像C#这样的语言”时,我指的是其他语言具有相似的特征。 具体的功能如:垃圾收集,从一开始就面向对象的100%(与OO中的C ++黑客攻击),内置于xml-type-documentation(想想javadoc),可以灵活地做许多不同的事情。
关于我应该学习.NET:
我只做了一小部分C#,但是从这么小的数量我注意到,当你做C#时,.NET是非常需要的。 (我明白,C#是非常非常乱的.NET和难以剥离。)我的理解,我可能是错误的…大多数/所有的C#的标准主库是C#,因此你需要有.NET如果你正在做C#。
回到原始问题“UNIX和Windows开发之间的差异”:
Windows开发不是多样化的IMO ……只有一个开发环境 ,MS环境是MS编译器和MS IDE,它们都被封装在一个Visual Studio产品系列中 。
Windows开发侧重于GUI驱动的工具。
数百个编译器/文本编辑器/ IDE /等等, Linux开发更加多样化。 (我说这是多种多样的,但事实上, 大多数Linux开发实际上使用一系列通用工具非常相似:GCC / GDB / GREP / FIND / VIM / EMACS / CTAGS / CScopE以及一些选择的源代码库)。
Linux开发侧重于命令行界面驱动的工具。
这是一个很好的问题。 你需要确定的第一件事是如果你需要编写跨平台的代码。 如果你这样做,那么C / C ++是使用一些跨平台UI库的最佳路径。
如果没有,那么我强烈推荐使用Visual Studio 2008 SP1的.NET 3.5。 我也推荐使用WPF,而不是WinForms。
绝不是MSFT去投资本地代码开发; 但是C#.NET 3.5 WPF和相关工具是应用程序开发的未来 – 特别是Line of Business类型的东西。
我相信你会发现这非常有效率和易于学习。 你也可以在这里免费获得很好的开发工具。
你使用什么基于Linux的图书馆? QT? GTK? 有可能是这些库的Windows端口。 如果你需要保持平台独立,坚持你所知道的。 如果你看到自己只需要成为Windows,那么只有当你转换一个.NET解决方案。
我是否需要学习C#才能使用.NET,还是可以坚持使用C ++?
去用C#。 C#和.net是一个很好的组合。
另外,不是严格的编程相关,而是有点Unix与Windows。 Unix一直有一个优秀的外壳,使程序员的生活更轻松。 Windows现在也有。 了解一下Powershell以及如何编写cmd-let,这将为您节省大量时间。
Powershell是Redmond在一段时间内最好的产品之一。
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
没有。 不要学习.NET – 学习C#..它像任何东西去操场。 一旦你得到了它的窍门..你将能够在1/10的时间完成项目..
但是用C#/ .NET你会学习不良习惯。 我现在回到了C ++。 我有C ++ 12年,然后C#5年,现在C ++ 6个月。
尽管完成项目需要6倍左右的时间(6个月vs 1个月),但我觉得C ++代码具有艺术感,而C#代码是通用的。 像BestBuy一样。
我是完全反C ++ / CLI或任何其所谓的。 如果你需要深入到CLR的层面,那就不要走回C ++了,否则你最终会花费你所有的时间去处理一些像事件同步这样的任意C#设计“特性”。
我的下一个目标可能是.NET Powershell来管理我的C ++服务器应用程序。
我做了10年前的Unix移植到Windows ..我试着回到FreeBSD或Linux …我曾经喜欢vi ..但VS是目前为止最好的IDE。 只是得到vs2010亲+ reshaper和阅读这两本书。 第一个是C#的核心,但其.NET 2.0,这是很好..因为它最容易开始编写C + +风格的代码。 下一本书将会持续你几年。
http://www.amazon.com/2-0-Practical-Guide-Programmers-Guides/dp/0121674517
http://www.amazon.com/gp/reader/0735627045/ref=sib_dp_pt#reader-link
希望这可以帮助。
也。 没有理由不编写2012年的门户c + +代码。cmake + VS2010 + boost + crossroads-io
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。