为什么很多人都觉得编程难,难在哪里?
作为一名大二的信息安全学生,在两年期间已经接触了c,c++,java等多种编程语言,也深感编程的困难。在我看来,编程真正的难度不是那些语法,那些东西少则几天多则几个月总能理解。
真正难的是层出不穷的问题和方法,所以我一直觉得,书上讲的东西都不难,难的是你自己去实践那些书上没有的东西。
那为什么很多人都觉得上手编程很难呢?
一、没有接受过解决问题的训练
在初高中的时候,我们受到的教育都是应试教育,许多知识点很多时候都是死记硬背,或者说是去理解它们。
但编程不一样,编程不是只靠记忆和套公式就能实现的。要知道编程的核心,不是语法,不是算法和数据结构,而是如何分解问题——发现规律并且建立起解决问题的模型,找到合适的数据结构的算法,最后写程序实现。
而我们特别是刚入学的大学生,缺乏的恰恰是发现问题、解决问题的思维。我刚开始上手编程也很难,以为只靠死记硬背就可以学好,但学的只是一些基础知识,真正碰到灵活多变的问题还是需要自己去拆解分析的。
二、没有选择合适的起点
每位同学都要根据自身的情况选择最合适的学习方法,如果基础没有打好,却要跟着课堂一起去学习高级语言的编程,肯定会觉得难于上青天。我对于新手目前的推荐是python,如果是计算机专业的学生,跟着老师学就行了,注意巩固复习。
在编程的过程中,到底难在哪里?
一、难在你思路的构建
你学了很多语法,很多API,但遇到不一样的实际问题,不是简单地罗列API就能完成,而是需要你对问题进行分析,通过各种算法、数据结构等进行编程实现。而这个过程肯定是需要试错和大量时间的(如果没有熟练各种方法的话)。
二、做出来容易,做好难
虽然做出来这道题了,但你用的是不是最好的方法呢?这就是所谓的做出来容易,做好难。
写的程序能够解决问题而且没有bug只是基本要求,这里的做好要求你写的程序容易理解,能够让别的接手的程序员看懂为什么这么写,因为通常一个大项目不可能是你一个人完成的,你写的东西很可能是别人的基础模块。
编程是一种沟通,用程序跨越时空之沟通则是一门程序员特有的艺术。 ——阿莱克西斯
接下来给一些我学习上的建议:
一、学好基础知识
当你学到一定程度,知道自己对哪个方向更感兴趣的时候,就不要广撒网了,一定要专注你所选择的领域,做深做精。看书的同时结合项目实践,进而对自己的掌握程度得到反馈。
二、多练多看,阅读别人的代码
我在学习编程的时候就喜欢多看别人的代码,看一些程序员大佬写的代码,看一些标准库的代码,仔细思考他们的编程思维和编程方式。
此外,学习过程中结合项目做一些实践,来明确自己的不足,给自己提供一些正反馈,让自己也更有动力继续学习。
质而言之,编程确实不是一件容易的事,但只要你持之以恒不断精益求精,也肯定能获得一定的成果。
一名大二计算机专业的学生,从接触到现在深知编程的苦。我认为编程的难在于:
1 .缺乏问题解决的思考和锻炼。
在我们接触编程之前,所有人受到的教育都是应试教育,终极目的只有一个:考取理想的学校。每一张张考卷都是一个个堆砌起来的知识点:三角函数,解析几何,数列,函数…...
这么多知识点,很多时候都是死记硬背,或者说得更高级一点,理解它们。即便是强调思辨和分析的“文科类”,也是靠背诵答题模板拿分更容易,就连高分作文都要有标准的框架。
要知道编程的核心,不是编程,不是语法,甚至不是算法或数据结构本身,恰恰是如何分解问题——发现规律建立解决问题模型,映射到合适的数据结构和算法上,最后才根据算法写程序实现。而在我们接受的应试教育中缺乏的恰恰就是发现问题、解决问题的思维。编程,是找出解决方法的能力,把现实问题转换为代码逻辑的能力。只有认清这一点,才能更好地攻克它。
2 .没有学过创造,创新力缺乏
因为填鸭式的教学,我们大部分人的思维都是固定的,完全没法用所学的知识创造出任何东西来。而编程则极需要创造力。
因为没有“题型”和“公式”能把你解决问题的过程简化成填空,编程提出的问题基本都是空而泛,需要根据脑子里的逻辑推断,利用所学编程语言的各项功能组织成代码,来解决问题。
这种情况下,我们只有保持“实验者心态”,不断探索自己的想法,质疑自己的假设,从所犯错误中学习宝贵的经验,才能在编程的魔法世界中得到更多宝藏。
3.缺失“知识共同体”
学编程,往往学的也不仅仅是计算机本身,而是将各行各业,结构力学,生物细胞,光学声学……等千百万个行业,抓住它们的重点,迅速理解并且教给CPU,让它代替人类工作。
而课堂的学科则为了实现教学效益化划分生物、物理、化学、历史.....仿佛每个知识只存在于真空中,与外界事物毫无关联。
这些划分限制了学生的理解,对世间万物运行规律的理解产生了偏差。但其实整个世界都是相互关联、依存、影响。
而编程世界是真实世界的缩影,我们之所以觉得难,其实是因为我们丧失了独立并深入探究知识细节的能力,而计算机是不允许我们冠以笼统的态度求知,因为计算机听不懂模棱两可的语言。
新手学习编程语言时通常不会很了解编程的整体路线,那么会简单以为自己学习编程语言后可以马上上手高大上的项目和应用,结果发现啥也不能干,最后形成了强烈的心理预期反差。这么一来一部分学习者就会产生失落的抗拒感,觉得很难。实际上编程不难,但也不容易,只是刚开始预期太高,包括一些培训机构也时喜欢用一些看起来很吸引人的项目作为噱头去吸引顾客。然而最后等学习者上手后发现,跟自己想的不是一回事。
在学习编程之前需要有系统的规划,包括语言的种类,自身使用的方向定位,学习周期长短等等。这个需要向有经验的前辈进行请教会少走一些弯路。