我没有任何语言基础,首先学了php
学php时我想哭,尽管老师很给力,但配置环境好几次配置不上的那种挫败感太压抑了,再有就是学习语法的那种压抑,完全感觉不到前途.
但学习.net的过程我非常快乐,也许是学php时坚定了语言基础,让我比其他同伴更快掌握了c#,不到一个月,我就能在.net平台上开发高难度程序了.不知道你有没有类似的学习体验?
回复内容:
不太清楚.net,就我的经验而言,如果你第一门语言学的是.net,也许你的问题就要反过来问了,然后会引起知乎上对.net的超级吐槽
开个玩笑,说正经的
对于一个新手而言,天才除外,在没有好的老师引导,学第一门语言的时候都是很枯燥无味的,了解各种概念,一点一点的拼凑知识,如同盲人摸像一般,无法窥得全局。于是我们对自己所学的第一门语言印象深刻,味如嚼蜡也是正常。
至于.net,在我印象中,图灵奖的第一个获得者: Alan Perlis批评.net从2.0到3.0到3.5底层CLR并没有做更新,没有添加任何新的IL指令,所以C#从2.0到3.0中所有的特性都是语法糖,就算从1.0到2.0,也只有一个泛型不是语法糖,其余的新特性也都是如此。
所以.net在语法上可能很不错,因为本人未接触,所以不做评论。
另配置环境和编程几乎是两码事,很多人都说要自己配环境,加深对语言的认识。可惜就我认为,对于新手而言,环境本身就是很麻烦的事情,能省则省,除了打击信心之外没有任何好处,集成环境则可。
1. 有基础了,再学其他语言会很方便
2. 脚本语言(弱类型语言)和编程语言(强类型语言)是两种不同思想的语言。可能你的思考方式更加合适强类型语言。
3. IDE的方便, Visual Studio编写C#语言实在是太爽了,这是不错。但是如果你用编辑器编写C#的话,恐怕更加痛苦。
每个语言都有自己的强项和弱项,语法本身就有很多优缺点。
我个人更加喜欢弱类型语言:
- C#处理JSON,真是个蛋疼的活。用JS或者PHP处理JSON会非常简单。
- C#的第三方库用起来比较困难,文档难读,例子难找。JS和PHP的第三方库多而且好用,文档易读,例子好找。
- C#的第三方库如果返回类型一变化,代码可能会非常难改。
- 方法重载有时候会加深代码阅读困难
- C#的泛型还是不好用。
- C#的各种高大上数据结构用法,实在是步骤繁多,而弱类型的基本基本上覆盖了大量常用的数据结构,而且十分好用。(比如键值表,堆和栈,混合类型数组等都是天然支持的)
- VS的环境必须要非常好的电脑。
所以一般没有特别要求,凡是可以JS解决问题,我都会用JS解决问题。
但是说到学习编程,我建议还是两种程序都学,弱类型学一个PHP或者JS选一个学,强类型程序学一个,C#或者JAVA里面选一个。如果有精力,指针程序学一个C或者C++学一个。然后就能明白各种编程语言的由于和缺点了。
谈谈我浅薄的见解。
基于 Linux 的一系列产品(包括 LAPM 结构)都有着与 Linux 操作系统类似的品质,那就是代码化的自定义功能,许多工作需要操作者自己完成。典型的情况,例如在初次安装 Linux 系统后,可能需要自己下载编译器,自己编译下载的软件包,既而才能安装、运行软件。整个过程足够自助,也可以给操作者提供足够的自定义功能。
但对于刚接触一个产品或平台的人来说,由于对产品、平台的结构和各功能的关系了解不够,很容易陷入进退唯谷的无助境地。操作者很可能只知道一个目的,却不知道其中需要经历哪些步骤。因此很容易产生挫败感。
此外,由于 PHP 是一种脚本语言,很容易出现的一个问题是一个函数可能不知道它位于哪个库中,或者忘记函数名称这样的情况也足以让人、尤其是初学者产生负面情绪。当一个页面代码写完之后,架到 Apache 上调试和测试吧,又突然提示说 Apache 的这个设置不对,那个没有就绪,确实很打击人。
Windows 操作系统中的交互风格不一样,它提倡直接提供面向用户的成品软件,安装即可使用,即使有设置、配置项,也提供足以好的可视化配置工具,甚至足够人性化的向导来帮助完成复杂的操作过程。
从软件方法来说,Windows 上的软件要提供这样的风格就不得不进行更多的封装。比如将一个配置文件封装成代码类,并提供界面。
.NET 本身就是一个提供了足够封装的类库平台,使用 VS 来开发项目也可以极大地提高工作效率。因此我们发现使用 .NET 开发很爽,因为它的项目组织方式、代码结构和编码过程都充斥着这种封装性提供的辅助,让整个开发体验变的舒心;开发工具能够提供足够而且有用的帮助,比如生成(编译)配置(调试模式与发布模式)、常规代码提示、多种预构建的项目模板等。
即使是第一次开发
http://ASP.NET 程序,也不需要担心不记得需要使用 Response 对象中哪个方法来输出文字,也不需要担心不会配服务器,这当然让人信心大增。
需要意识到的是,我不知道题主所谓掌握了 WinForm 开发和
http://ASP.NET 开发是何种掌握。我不认为随便一个人可以在一个月内能够掌握 WinForm 和
http://ASP.NET 开发。正由于入门不难,确实有一批人只知其皮毛就自以为是地认为自己掌握,甚至精通了一种开发工作。
因此,相对来说,如果一个人 PHP 的技术达到 4,那他对 Apache、HTTP、DOM 构成相关领域的知识也有了相当的了解;但对应来说一个人的
http://ASP.NET 的技术达到 4,很可能他对 C# 语言、HTTP、JavaScript 等基础知识的了解可能还局限于<2 的水平。因此基于 .NET 的开发者们,如果能够继续掌握更札实的基础知识,并用于提高日常开发水平,再加上好用的语言和开发平台,其生产力是很高的。
我想,这个问题没必要说到 Windows 或 Linux 平台运维优势劣势的话题上来。我不喜欢有些人言行中有意无意中体现出的一种对基于 Windows 的产品的不屑。
毕竟,如今的年代,时间紧迫,大多数人需要更专注于业务,而不是把珍贵的时间纠结到一个实现是使用 for 循环还是 while 这种问题上去,毕竟开源平台的项目本身也只有少数人在维护,更多开发者只是他们的用户。我们当然应该使用更好的工具来提高生产率,这不是错误的做法。Windows 平台的开发工作,只是受了微软收费生态体系的局限而已;但,我们不能因此否定基于 Windows 的开发工作的便利性和生产力。
我想,如果微软为 Linux 开发一款可以用于开发 C++、Python、PHP、Java 应用、自动完成编译和部署的集成环境,诸位“极客”也不必非要去抵制吧?没必要因为抵触微软而抛弃来自它的优秀思想和工具。
你现在回去学php也会很快。
因为你学习.net的时候有php基础了。。。
我学PHP时,觉得这东西很简单,什么事都帮你干好了,例如写什么上传个文件什么的,居然不用了解stream……,所以学不到什么,只是单纯地能它写东西,要是不学JAVA,C++,很多背后东西都不懂,所以我无法理解为什么楼主会觉得学PHP时的困惑,(逃
对便利的IDE和环境的依赖太严重了,PHP的环境搭建有时可以很复杂,如果对linux和apache配置不了解过程可能会很痛苦。
而.NET系列的都是装完就能用。
新手学PHP如果从搭建环境开始,是会痛苦一些。
另外,选的工具不同,学习时候的感触也是完全不同的,若觉得难找一个好用的IDE再开始也不错。window上用xampp + 一个合适的IDE(netbeans之类),学习过程会很愉快。
那么只能猜测你对一个便利环境的依赖太严重了。
PHP 和开源阵营的优秀分子,.net 是微软的赚钱利器,世界观不同。开源解决方案有非常高的自由度,例如 PHP 可以以 Apache 的 mod 方式运行,也可以配合 nginx 以 FastCGI 方式运行,差别很大。这种开源的解决方案往往只针对某个问题提供一个最小化的解决方案,通过跟其他开源产品组合来产生巨大的威力。例如 FastCGI 方式下的 PHP 可以配合 nginx / memcached 集群提供横向扩展,来承载巨大的访问量。 同时,高自由度和开源软件的设计哲学决定了有很多地方都需要你去学习。因为只有当你了解到所有细节的时候才能算是真正的掌握了这门技术。另外,开源组织往往管理比较松散,没有专门为初学者提供一个良好的入门体验。这也是你学习过程中遇到这种情况的原因之一。
.NET 我了解不多,但是一旦选用 .NET 作为解决方案就意味着配套的系统和数据库都已经被绑定了。这个时候若要想通过自定义配置来提高系统的负载能力就比较困难,基本上只能通过不断的花钱买服务器、定制微软的产品来解决问题。京东就是 .NET 阵营的代表。由于背后有微软这个软件巨头支持,所以 .NET 作为商业产品必然从设计之初就充分考虑了易用性、易学习性。所以上手容易就不难怪了。
你追妹子的时候是对知道打扮、外貌皎好、待人和善的妹子更有兴趣,还是对不会打扮、总是黑着一张脸,性情有点古怪,有时还有点邋遢的萝莉更感兴趣?