引用 celeron533:我的建议是给编程爱好者的,不是给程序员的。作为职业程序设计师,需要用什么语言就学什么语言呗。但是作为给初学者的推荐,我认为Java在培养编程思维方面的效率非常低。相对地,我认为Python、Ruby、Lisp 这些语言更应该作为初学入门。
第一条太绝对了。存在即合理,如果一个语言真的有种种问题,是不会流行的。
so Java很流行,但我真的不想让同学们一上来就啃它。
编程的终极目的是让计算机替人类完成工作,从而降低人类的劳动强度。
说到编程就离不开编程语言,初学者会为此提很多问题,比如应该先学C++还是Java?Java和C#哪个好?应该学Objective-C吗?
根据楼下坛友反馈,删掉了前两节。
绝对不要学Java
Java 是公司产物。它有很多优点,比如说跨平台。但是今天几乎什么东西都能跨平台——正如不应该为了周围串门而学习开锁,你不应该为了跨平台而学习一门语言。
除此之外,不要学C#,它也是公司产物(有很多职业程序员认为C#比Java优秀,然而大部分语言都比Java优秀)。它们善于解决基础设施问题(比如在Java和C#中,大部分常用的系统功能,都有框架和库,而且效率非常高),因此它们看上去更像重型工程机械——水来土挡,无坚不摧。
虽然你的家人可能根本不懂什么是编程,但你可以尝试跟家里人说“我要学习驾驶重型工程机械”,然后感受一下家里人的态度。
绝对不要钻研微机原理
智力正常的人能够在通读教材之后掌握x86架构,了解诸如VLIW之类的概念。掌握即可,绝对不要钻研。
对于爱好者,最佳钻研方式是想办法去Intel或者nVidia上班,或者准备至少10亿人民币,开一家自己的IC公司。
之所以要专门提这一点,是因为钻研这类技术非常容易让人上瘾——但是实际上几乎学不到任何有用的东西。最终你会更擅长crack,但未必善于make。
而在工作中如果真的有需要,你可以随时开始翻书,无需预先精通。
绝对不要放弃数学
如果数学成绩不好,想办法把数学成绩弄好,比如请1小时100元的家教。而不要花1小时1元的电费研究程序设计。
劳动强度 vs 学习强度
这是对以上几点的总结。
作为爱好者,你的时间是无限的;作为学生,你的时间是无价的。在编程实践中,你会明显地发现,劳动强度和学习强度是两个维度。钻研某些问题时,劳动强度较高,比如如何调用avcodecxx.dll,如何 call Win32API,设计模式,回调参数……而在钻研另一些问题时,学习强度较高,比如如何遍历有向图,如何索引10G k-v对,如何用二叉树构建一个对象……
尽量选择学习强度高的挑战,虽然它们并不能立竿见影产生装逼效果。
[修改于 8年3个月前 - 2016/09/28 17:21:49]
引用 celeron533:我的建议是给编程爱好者的,不是给程序员的。作为职业程序设计师,需要用什么语言就学什么语言呗。但是作为给初学者的推荐,我认为Java在培养编程思维方面的效率非常低。相对地,我认为Python、Ruby、Lisp 这些语言更应该作为初学入门。
第一条太绝对了。存在即合理,如果一个语言真的有种种问题,是不会流行的。
引用 acmilan:米兰又黑JS。我在“动态网页挑战”里面,演示了JS的高级抽象能力:将【顺序处理用户的多次访问】,从【状态机】写法改为【异步+闭包】写法,且不使用任何设计模式。
个人认为吧,首先要精通C语言,然后学习一点C++的皮毛(看懂C++ Primer就够了),然后基本上有三条康庄大道在你面前:
1. 尽快找到饭吃:学Java
2. 尽快做出Windows程序:学C#……
引用 acmilan:响应您的观点,原文已经删掉第一点。
有吃了第五个馒头饱了而忘了第二个馒头之嫌。
先以C#入门并无不妥,但是不要固步自封,不要误入反复设计界面、反复尝试API的歧途。不要过分夸大工具的作用,编程语言只是认识计算机世界的一个窗口而已。
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。