我认为我倾向于使用C#和.net作为学习Web开发的集中语言。我想学习良好的编程基础知识,而且我已经看了很多其他的东西。这四个我把它缩小到C#,Python,Ruby和PHP。是否有理由远离C#(我认为成本问题不会真正适用于我的个人开发者情况,但我可能完全错了)。有什么想法吗?
我意识到这些都是很棒的语言,所以我不想问哪个是最好的。但是,Ruby是第一语言的可行替代方案,还是因为Rails和非传统方法有太多的“魔法”?我喜欢我用这种语言看到的东西。
答案 0 :(得分:27)
这可能会导致火焰战,但我认为C#是一个非常好的语言,可以从Web开发开始。
它是一种功能齐全的面向对象语言,并且是静态类型和编译的。它有很好的文档记录,并且拥有庞大的开发人员社区。
如果您必须在Linux / Apache上运行并且不想使用Mono,那么这将是不使用C#的原因。除此之外,我认为没有令人信服的理由,尤其是ASP.NET MVC,它可以让你摆脱WebForms模型。
这并不是说WebForms必然是坏的,但有些人可能会反对WebForms,因为它引入了其他Web开发平台不固有的抽象。
答案 1 :(得分:21)
如果您使用C#进行Web开发,根据您使用Web技术的经验,我衷心建议您在ASP.NET Web Forms之前使用ASP.NET MVC。
ASP.NET Web窗体是构建ASP.NET应用程序的原始样式,并尝试抽象出许多细节。它允许您构建应用程序,而无需了解引擎盖下发生的事情(发布数据,状态管理)。在我看来,当你进入更复杂的场景时(例如this tutorial proves),这些抽象尽管开始时容易开始“泄漏”。
另一方面,ASP.NET MVC可以更轻松地构建“更接近金属”的网站,同时仍然保持高效。如果您想要对结果HTML进行绝对控制并且不怕cookie,表单标签,发布和查询字符串数据等内容,那么您可能会更喜欢ASP.NET MVC。
当然知道两者都是有益的。但是,如果我现在开始,我可能会开始使用MVC并转移到Forms(然后意识到它有多糟糕并且退回:))。
答案 2 :(得分:20)
没有“最好的语言”。您使用一个工具来实现它的目的,这就是为什么有几个工具。
既然你的问题是“为什么不学习C#”,我会说:
现在,我用Php,Python,Java和C#编程。 Python是我的首选语言,但c#真的是第一个引诱我的MS编程工具:它干净而高效。真的,这是关于你想做什么,而不是宗教问题。
做出你的选择。
据说,C#很糟糕,而且Python摇滚。
答案 3 :(得分:9)
我同意C#是一种非常完整的语言,它的语法清晰且可扩展。已经有大量的网络资源可用,但它很大,但它有效地将您与Windows作为您的平台联系在一起。对于网络而言,这是一个重要的考虑因素。在桌面上窗口是王道,但对于网络服务器来说市场并不是那么占主导地位。
另一个问题是,如果您在网络上查看富媒体,则必须考虑使用Flash和/或Silverlight。如果你去C#那么你就可以在不学习其他语言的情况下使用Silverlight了。
答案 4 :(得分:7)
不要担心费用。编译器可以与Fx SDK的其余部分一起免费使用,甚至可以download Visual Studio for free。
答案 5 :(得分:7)
学习C#的缺点在于它将您与专有平台和软件堆栈联系在一起。现在,有Mono,它可以很好地实现C#和.Net的大部分功能,但主要的和最完整的实现是微软的非自由。
我没有充分利用C#来讨论它对Ruby或Python的技术优点。然而,我可以说,除了自由软件提供的其他好处(在其他地方详细讨论)之外,学习使用甚至回馈自由软件可能非常有教育意义。
答案 6 :(得分:4)
c#是一个很好的语言,因为:
至于网络......
ASP.NET webforms为您带来了很多魔力。 ASP.NET MVC(刚刚发布)几乎没有任何魔力。对于学习,MVC是更好的选择。
答案 7 :(得分:2)
C#是一种很好用的语言。而且,由于您通过Web而不是桌面应用程序使用它,因此您不必担心多平台,因为代码在您的服务器上运行并且输出传递给客户端。话虽如此,你将不得不找到Windows主机(有时可能会有点贵)或使用单声道(这不是那里最新的软件)。虽然缺点很小,但请抓住快递版的副本并继续购买!
答案 8 :(得分:2)
我认为部署成本可能是另一回事,即如果您的项目需要横向扩展,并添加更多服务器以实现负载均衡,甚至是地理位置分散的服务器。通常windows托管运行比linux更多(甚至没有考虑火焰战争的原因)。
答案 9 :(得分:2)
如果您正在进行Web开发,C#可以正常启动。但是,我建议您不要开始使用Web开发进行编程。 Web开发很难做到。比命令行更难的事情。我建议您获得一些编程命令行的良好体验,然后转到GUI,然后转到Web。网络上有很多你需要担心的东西。您必须知道3种语言(HTML,JS,C#(或在此处插入您的服务器端语言))。另外,你必须担心所有的浏览器怪癖和东西。而这甚至没有进入数据库。这通常用于大多数Web应用程序,但会打开另外一堆蠕虫。
答案 10 :(得分:1)
这取决于你想要实现的目标。我在两者中编程并且非常诚实,如果你试图通过编程实现职业生涯,我得到的报酬是.NET编程的两倍。我为PHP开发工作的客户端类型不是支付很多的类型(PHP通常基于保存一些$$$来选择)。 .NET似乎在大公司中更加根深蒂固。
只是我的观察......
答案 11 :(得分:1)
商业上我是C#开发人员。我喜欢C#。 C#是一种强大的强类型语言。安装Resharper后,我可以快速在代码中构建我的想法,并根据自己的意愿进行调整。
每天晚上回家的时候我会用Ruby。即使我没有重构支持(snif。),我发现我在Ruby中比在C#中更有效率。
我写了一个大型ASP.Net应用程序已经工作了几年。我们实现了MVC以尝试将视图与模型分离。总觉得我正在与框架作斗争,而不是与它合作。用于执行Web应用程序的最新.Net框架基于Rails ......仅落后几年。我喜欢这门语言。我喜欢CLR。我不太热衷于.Net。
我发现红宝石社区友好而充满活力。 rails开源社区生成大量的教程和插件,使您可以轻松快速地完成应用程序的组合。
要考虑的另一件事(就选择要学习的语言而言)是ruby是一种面向对象的语言。即使是类也是对象。 C#是一种面向类的语言,即。它为您提供了一种创建对象的方法..首先定义一个类。 (不完全正确..你可以使用codedom在内存中生成程序集..但这绝不容易)。
这看起来似乎是一个微妙的观点,但是存在差异......直到你获得像ruby或smalltalk这样的OO语言的经验,这并不明显是什么。一旦你感觉到通过在运行时混合功能来构建对象的自由等,你就会发现你在C#中所做的所有“解决方法”都会消失。没有接口的安全网确实起初看起来很可怕。
总之,我会学习红宝石..
唯一的问题是..如果你从ruby开始,然后去C#,你会发现自己要去“Aaaaagh!这在红宝石中会更容易”。我知道我这样做。
答案 12 :(得分:1)
我是C#.Net开发人员,我认为这很棒,但我会强调Asp.Net WebForms中的危险。它与大多数其他Web框架不同,并且在幕后做了大量的魔术。正如其他人所说,ASP.Net MVC可能更适合其他Web框架(例如Rails)。 Web Forms抽象了webdev的许多细节,如果你想成为Web开发人员,你最终需要知道。所以,是的,C#很棒,但我会从MVC开始,然后再看看网络表单。另外,我们也非常鼓励其他语言和框架的学习。
答案 13 :(得分:1)
我的建议?了解自己的差异。和他们两个一起玩。如果您有一个项目,请在其中编写原型。否则你将永远受其他人的偏见的支配。
ASP.net(C#)和Ruby on Rails用于备受瞩目的网站,所以你不能错过任何一个。我是否也建议您使用django尝试Python编程?这是我更倾向于网络编程。
答案 14 :(得分:1)
这取决于几件事。 C#和.Net是填充的,并且这些工具非常简单(抱怨Java!Java开发人员在这里说...)但是Windows主机与LAMP(包括Ruby,Python和PHP)相比是昂贵的。
对我而言,这完全取决于您要使用的工具。对于Web服务等,我会使用C#,但对于一个简单的网站PHP,因为它很容易。
这还取决于你所在地的就业市场......在南非,你得到很多更多的C#工作而不是PHP等。当然如果你的自由职业者你很难找到工作
对我而言Ruby再次对我自己的人有好处,但你在这里没有得到任何Ruby工作。
答案 15 :(得分:1)
没有理由远离C#。它和任何语言一样好。例如,Stackoverflow使用它,因此它可以在一个成功的网站上运行,你可以在其中编写作业。
如果你是作为业余爱好编程或者你自己的有限预算,或者你想为编译器/语言的开发做出贡献,那么专有的东西将是一个考虑因素。我猜这些都不是。 (编辑:正如其他人所指出的,C#的开源环境存在。)答案 16 :(得分:1)
考虑到目前为止的所有答案,我想我会查看所提到的所有四种语言。
虽然我已经在PHP中进行了大量的开发,并且遗憾地继续这样做,但我认为PHP从来都不是一种优秀的语言(虽然它有一些很棒的元素),而且现在没有太多的意义了。它仍然非常容易进入,但我认为一般来说,PHP是一个“坏习惯”。
Python是一种很棒的语言,但对我而言,Ruby就是Python的全部内容。我个人会选择Ruby。
C#也是一门很棒的语言,虽然我没有充分利用C#自信地说出任何东西,但我觉得Ruby是更好的选择。
答案 17 :(得分:0)
除了在那些反对“邪恶的微软”的社会群体(甚至是地理区域)中你不受欢迎之外,没有任何不利之处。
语言(更好的.NET平台)非常好。一个重要的事情是,它正在积极发展,导致一些人难以跟上。但与长达一年的停滞相比,我宁愿快速发展。
您可以考虑检查您所在地区的雇主更喜欢技术堆栈。
考虑到许可成本,您可以考虑以下事项:如果它是一个小型站点,您可以免费使用Visual Studio Express / SQL Server Express,这就足够了。如果您想出一些重要的大型交易项目,您可能会找到一种方法来赚取收入并支付许可费用。
答案 18 :(得分:0)
2009年学习C#很棒。
回到白天,当我进入职业世界时,语言景观非常不同。我用C和Modula 3(Pascal替代语言)专业编码。
我的观点是,我会计划随着时间的推移改变技术环境,并在您的职业发展中为此做好计划。
学习多个平台是实现这一目标的好方法。例如,您可以将C#/ .NET作为主要技能,但也可以使用JAVA。当新平台出现时,您可以将其添加为转换或备份技能组。