我认为我倾向于使用C#和.net作为学习Web开发的集中语言.我想学习良好的编程基础知识,而且我已经看了很多其他的东西.这四个我把它缩小到C#,Python,Ruby和PHP.是否有理由远离C#(我认为成本问题不会真正适用于我的个人开发者情况,但我可能完全错了).有什么想法吗?
我意识到这些都是很棒的语言,所以我不想问哪个是最好的.但是,Ruby是第一语言的可行替代方案,还是因为Rails和非传统方法有太多的"魔法"?我喜欢我用语言看过的东西.
这很可能导致火焰战,但我认为C#是一个非常好的语言,可以从Web开发开始.
它是一个功能齐全的面向对象语言,是静态类型和编译的.它有很好的文档记录,并且拥有庞大的开发人员社区.
如果您必须在Linux/Apache上运行并且不想使用Mono,那么这将是不使用C#的原因.除此之外,我认为没有令人信服的理由,尤其是ASP.NET MVC,它可以让你摆脱WebForms模型.
这并不是说WebForms必然是坏的,但有些人可能会反对WebForms,因为它引入了其他Web开发平台不固有的抽象.
如果您使用C#进行Web开发,根据您使用Web技术的经验,我衷心建议您在ASP.NET Web Forms之前使用ASP.NET MVC.
ASP.NET Web Forms是构建ASP.NET应用程序的原始样式,并试图抽象出许多细节.它允许您构建应用程序,而无需了解引擎盖下发生的事情(发布数据,状态管理).在我看来,当你进入更复杂的场景时(这些教程证明),这些抽象虽然一开始很容易开始"泄漏" .
另一方面,ASP.NET MVC可以更轻松地构建"更接近金属"的网站,同时仍然保持高效.如果您想要对结果HTML进行绝对控制并且不怕cookie,表单标签,发布和查询字符串数据等内容,那么您可能会更喜欢ASP.NET MVC.
当然知道两者都是有益的.但是,如果我现在开始,我可能会开始使用MVC并转移到Forms(然后意识到它有多糟糕并且退回:)).
没有"最好的语言".您使用一个工具来实现它的目的,这就是为什么有几个工具.
既然你的问题是"为什么不学习C#",我会说:
如果您计划使用其他操作系统,那么Windows(Mono无法比较).
如果在环境中工作或与非友好的人工作(例如:银行,科学家)
如果你在env工作或与其他优秀技术专家一起工作(永远不要低估好主人的使用).
如果您认为自由软件非常重要,那么使用MS产品是不值得的.
如果你不喜欢MS Visual Studio(在没有好的IDE的情况下使用c#是一件痛苦的事).
如果您计划编写.net不适合的东西(例如嵌入式设备,脚本,实时,容错系统,AI等).
如果您是Web开发人员并且无法负担Windows Server许可证.
如果你想学习基础知识的编程,包括简单的功能和快速和脏的脚本.
现在,我用Php,Python,Java和C#编程.Python是我选择的语言,但c#真的是第一个引诱我的MS编程工具:它干净而高效.真的,这是关于你想做什么,而不是宗教问题.
做出你的选择.
这就是说,C#糟透了,Python也很糟糕.
我同意C#是一种非常完整的语言,它的语法清晰且可扩展.已经有大量的网络资源可用,但它很大,但它有效地将您与Windows作为您的平台联系在一起.对于网络而言,这是一个重要的考虑因素.在桌面上窗口是王道,但对于网络服务器来说市场并不是那么占主导地位.
另一个问题是,如果您在网络上查看富媒体,则必须考虑使用Flash和/或Silverlight.如果你去C#那么你就可以在不学习其他语言的情况下使用Silverlight了.
不用担心成本.编译器可以和Fx SDK的其他部分一起免费使用,甚至可以免费下载Visual Studio.
学习C#的缺点在于它将您与专有平台和软件堆栈联系在一起.现在,有Mono,它可以很好地实现C#和.Net的大部分功能,但主要的和最完整的实现是微软的非免费的.
我没有充分利用C#来讨论它对Ruby或Python的技术优点.然而,我可以说,除了自由软件提供的其他好处(在其他地方详细讨论)之外,学习使用甚至回馈自由软件可能非常有教育意义.