日期 | 修改人 | 修改内容 |
---|---|---|
2023年2月12日 | 北极的大企鹅 | 添加了C语言的新比喻 |
序号 | 问题 | 描述 |
---|---|---|
1 | 难易程度怎么样? | 这里的难易程度,不是对已经有一门编程语言入门的人来讲的难易程度,很多介绍的机构,个人,教授都是以自己已经会了编程的评价标准来衡量的,已经会了编程有了基础的人看待问题的思维逻辑已经系统化了,跟真的零基础的人理解事物的概念是不同的,虽然我是一个会编程的人,但是,作者进行了深入思考和回顾自身初学时遇到的痛点问题,进行了反向思维推导,来看待这个问题,作者的标准就是初学者是否具备计算机基础知识,这个基础知识就比较多了,并不是你会打个游戏,你会看个电影,用个百度就是你有基础知识了,基础知识本身就很多,作者认为计算机专业最难的也是基础知识,抽象的基础知识很多数据结构,操作系统,在计算机领域都叫做基础知识,但是,它们也是最难的,就算从事多年的计算机开发,依然需要反复研读和理解的基础知识,所以,是否掌握基础知识的评价标准确实是可以验证你对编程入门的难易掌握程度。 |
2 | 环境配置是否复杂? | 这个问题真的是累哭了多少开始信心满满的初学者,本来怀着百分之二百的热情来加入编程队伍,结果一上来你不是教我怎么写出可以搞定一切qq账户的代码,而是来个一个莫名奇妙的环境变量配置,很多小伙伴满脸黑人问号的问what,这就好比你本来去跟小哥哥/小姐姐去相亲,结果去了不是相亲,而是先讲讲财产怎么分割,离婚后孩子归谁一样,让人即莫名其妙又无可奈何,初学编程的小伙伴有多少人被环境变量搞得痛苦哀嚎呢?只有他们自己知道. 所以,一门语言是否有个复杂的(相对初学者)环境变量配置也是很多初学者痛苦的源泉,他们不想去做环境配置工作,因为经常出现一些他们无法搞定的问题,因此,这个问题也成为选择学习编程语言的一个难度门槛. |
3 | 是否可视化界面? | 这也是劝退更多初学者的一大难题,也是编程入门的一项基础工作,一门语言一开始就用一个黑漆漆的运行界面,让很多初学者都很畏惧,毕竟大家在多年的使用计算机的习惯中,已经被微软的可视化界面征服了,形成了使用可视化界面的习惯,如果一门语言的开发是使用一个黑漆漆的运行界面,也会使得一些小伙伴迅速放弃,并自我催眠认为这门语言学起来好困难啊! |
4 | 编译器操作复杂度? | 很多初学者平时知识浏览浏览网页,看看视频,对于一款专业的软件的使用一般都很困难,毕竟很多人无法熟练的使用word排版,制作精良的ppt和生成优美的excel表格图标,现在让他们使用一款全英文的编译器,对于那些英语不是很精通,不喜欢英语的初学者,一下就像一座大山一样压倒了他们对于编程语言的选择,所以,编译器是否操作复杂也是要作为选择编程语言的一个重要参数指标. |
5 | 学习的时间成本? | 大家总是对很多事务存在着开始新鲜,久处厌烦的状态,因此,能不能是一门短时间学会的编程语言,也是成为对于编程语言的选择的一个指标,这个时间成本可以参考很多培训机构的时间表,他们的官网或者咨询会告诉你培训多久能学会这门语言,一般的都是半年左右,压缩了课程,每天要学习八个小时以上,这样也会拖得很多初学者失去了昨日的热忱,因此,能否快速的学会一门编程语言,也是成为了编程语言选择的要素 |
6 | 相关性学习时间的长短? | 有些东西就会分散初学者学习主语言的注意力,这就跟你同时学多门课程分散注意力一样,比如既学数学又学物理,对于理科思维好的人是锦上添花,但是,对于理科思维不那么活跃的人来说就是痛苦,同样的就是既学文言文又学英语,也是对于另一些人同样的痛苦,这也会或多或少的拖慢一个初学者对于主要编程语言的学习,有时会起到促进作用,而其他的时候就是滞待作用。因此,选择一门编程语言的时候,要去了解其要学习多少相关性的知识,这些相关性的知识可能跟当前学习的编程语言无关,比如学习Java的整套,除了Java还要学习MySQL,Linux,git,Redis,JSP .... 这些就跟学习Java本身是无关的,你不会因为不会写MySQL而写不出Java本身的代码,但是,你要学习建立一个网站,又必须学习MySQL,这就会分散你学习Java的注意力,因此,你要探究一个编程语言是不是存在众多的分散你注意力的辅助语言,这也是一门语言选择的条件之一. |
这张图应该很多选择语言的初学者都看过,它的含义到底是什么呢,含义就是越靠近底层的语言越困难,这个困难指的是对于人类的识别难度来说的,而越靠近上层的方向就会越简单,这个简单指的是人的理解和阅读来说,比如最底层的机器语言就是一串0101,给你20个零一,你能迅速明白什么意思,还是给你一个单词Add,你更能理解其是什么含义,这件事对于普通人来讲就不言而寓了,因此,面向对象的语言,才成为更好学的编程语言,但是,很多语言在语法上也是互相借鉴(抄袭的),很多语法和格式也是类似或相近的,因此,一个人掌握了这个思维方式,他看其他语言长得像,那必然也是可以看明白的,就像有个人他们家族都有一个特色,左眼睛大,那么,你遇到一个左眼睛大的人,在不考虑其他类似的家族的情况下,你首先会想这个人是不是跟左眼大家族有关系,因此,一门语言入门,就会很多门语言通用,比如最最经典的C语言,C++就是对C语言进行了借鉴,因此两者在很多语法上是类似的,Java(另一个名字C++--)又是借鉴了C++,因此语法也是类似的,相近的还有Python/JavaScript/Php,因此,他们可以统称为类C语言,这也是为什么学校推荐学习C语言,你把他们借鉴的祖先都学会了,那你学那些儿子孙子,不也是手到擒来,因此,你会发现,那个C语言很好的同学,C++也会学的很好,Java也会很好,Python也会很好,而一个C语言学的不好的,其他语言一般也会很好,毕竟这些语言是一脉相承的,很多共同点,那么你有一个点没学会,那么后期可能就在众多类似的语言的相同地方栽跟头.
编程语言的难易程度只是相对于人类来讲的,比如你对这门语言的理解,跟你的生活是否相近,越跟你的生活相近,那么你思考其他越不费劲,越遥远,你理解越困难,但是,对于计算机而言,只有效率和空间的区别,而没有理解的问题,所以,选择编程语言的本身关键问题就是:
你个人能够快速的理解的编程语言,就是最好入门语言
难点 | 描述 | |
---|---|---|
专业术语 | 很多想要入门的初学者都会在这一步上徘徊很久,找到一门入门书籍,每个字都认识,放在一起就是不知道什么意思,归根到底就是专业术语的储备不够,就像你读一篇英语文章,有你认识的单词,有你不认识的单词,何在一起必然你也很难连贯的理解整个句子的含义,熟悉专业术语就像理解众多单词一样,只不过这次不是记住单词,而是记住名词解释. | |
翻译 | 很多初学者学了编程,但是,看到编程题目很难将汉字转化为程序,究其原因就是难以将汉字的表达方式转化为程序的代码形式,这个就像你读数学题目,要找到已知量和未知量,而程序需要找到什么是变量,什么是值,在哪里变化,而这种操作,本博主认为就是在翻译自然语言到程序语言的过程. | |
数据结构 | 由于这门语言是一种强类型的语言,因此,你要想很好的使用必须能够清楚的知道一个量到底是什么数据类型,而这个类型就要学习一门课程叫做"数据结构",因此,学习前还要理解数据结构,才能很好的使用这门语言. | |
语法 | 语言号称是语法简介,但是,这门语言的语法灵活性很高,因此,变化的方式很多,很多初学入门者很难快速的找到语法规律,同样一个题目,可能有多种编写方式,而初学者对于这种变化是很难快速直观的感受到的. | |
数组 | 这个概念可以跟数学的集合概念相互映衬理解,同时还要有线性代数的基础,毕竟数组的很多操作都是在遵循线性代数的规律,线性代数学的好的小伙伴,在这里还是能够很好的驾驭 | |
算法 | 这个概念在数学中叫做解题步骤,在计算机领域又进行了自己的定义和抽象化的描述,因为计算机的同一个题目很多时候,有多个解法,所以一般算法是不固定的,这样很多初学者就会产生困惑,到底应该怎么做这个题目,一个题目可以用for循环,可以用while,可以用do while,那么我该用哪个,也是初学者很困惑的问题 | |
内存溢出 | 这个问题也是经常遇到的,因为这门语言比较靠近底层,因此,需要研究内存的问题,就要学习操作系统这门核心课程,因此,很多初学者也是不甚理解 | |
指针 | 这可以说是C语言的灵魂也不为过,但是,指针的操作又涉及了很多内存,内存地址的问题,这些问题也是要理解一些计算机组成原理和操作系统才会更好的理解概念,因此,有这两门的基础,还是会更好的理解这个概念. | |
结构体 | 结构体本身就是在现有的数据类型不够的情况下,自定义一个数据类型,这里也需要有数据结构基础傍身,你才能快速理解使用. |
如果你是上述入门C语言困难,又想学习编程语言的小伙伴,那么,可能面向对象的语言也是一个不错的选择,C语言是一个面向过程的语言,看看刚刚的图片可以知晓,它是比较接近底层的,因此,他比面向对象的语言更加难学,因此,入门语言的小伙伴,你可以选择相对C语言更简单的面向对象的语言,比较经典的是C++/Java/Python,难易程度也是可以这么排列的
C++<Java<Python
如果你对学习C语言入门比较有阴影,那么,可以选择在外型上比较差异大的Java,但是,Java需要配置环境变量,Python也需要配置环境变量,好在现在有很多网页上直接运行代码的方案,可以解决初学者对于环境变量的配置困难,但是,网页版的环境无法实现输入功能,这也是一大困难,因此,最好还是能够熟练掌握环境变量的配置.
Python是目前很多985高校推荐的入门编程语言,斯坦福大学也是用这门语言教学入门,可能一些高校发现了C语言对于初学者的困难程度和痛苦,Python相对于C语言需要经常强调数据类型来说,它是一门弱类型语言,你不用关注每个变量的数据类型是什么,这对于数据结构基础不好的小伙伴,简直就是一个福音,因此,对于数据结构不好的小伙伴,选择Python入门编程,无疑也是一种快乐.
前端和后端在很时候是相对的,这里做个简单的模糊比喻,比如你的计算机是一个台式机,你从显示器看到的内容可以理解为是前端,你的机箱主机就是后端,因此,简单的理解就是可以看到的内容就是前端的输出结果,而你一般看不到的就是后端的内容.
所以如果喜欢可视化界面,做什么都可以直观的,快速的看到的小伙伴,在编程语言入门的选择的时候,就可以考虑从前端入门,这种方式的难度又比从后端入门更加简单快速了.
这里推荐的前段入门编程语言选择就是HTML+CSS+JavaScript,这三个也被叫做网页三剑客,如果能够学会这三个也是属于编程入门,JavaScript相对于后端多数开发语言都是更加简单,便捷的,没有数据类型的复杂概念,能够快速在网页上看到结果,对于很多习惯可视化的入门者都是友好的,对于零基础的小伙伴也是一个好的入门方案,而且,JavaScript也是类C语言,学过后,再看C语言,你就会发现你能看懂很多了.
序号 | 重点 | 描述 |
---|---|---|
1 | 难易程度怎么样? | 前端难度<后端难度 面向对象语言<面向过程语言 高级开发语言<低级开发语言<机器语言 |
2 | 环境配置是否复杂? | 前端环境 < 后端环境 < 系统环境 |
3 | 是否可视化界面? | 前端开发语言的可视化程度大于后端开发语言的可视化程度 |
4 | 编译器操作复杂度? | 后端开发语言的编译器操作复杂程度大于一些前端开发语言的编译器(比如HTML是记事本难度就比其他集成编译器简单很多) |
5 | 学习的时间成本? | 前段开发语言的入门学习时间少于后端开发语言的入门时间 |
6 | 相关性学习时间的长短? | 网页三剑客学习的相关性时间学习少于整套后端语言的学习时间 |
序号 | 重点 | 描述 |
---|---|---|
1 | 代码能够运行起来 | 对于一个入门初学者,不需要深入全面的了解各种知识原理,最重要的第一步,是让自己写的代码都能够跑起来,跑起来能够带来信心,跑起来能够带来力量,跑起来能够支撑你继续努力的学下去. |
2 | 能够处理简单的小问题 | 在代码跑起来的时候,一定会遇到这样的,那样的问题,比如少写了个分号,少写了个括号,单词拼写错误,这种常见的问题,自己能够找到并且改正,也是进步的原动力,这就涉及到认真,眼神好和会读报错信息 |
3 | 会使用百度工具 | 很多初学者入门之后,能够发现问题,能够找到问题,但是,解决问题能力还不够,因此,要学会使用百度,很多初期的问题都是可以在百度上找到的,每次遇到问题,也要记录总结,才能不断进步 |
4 | 熟练安装编译器和配置环境 | 这个难倒无数初学者的问题,真的是做个开发者必备的技能,所以,要把它的属性点点满,首先找到一个图文并茂,步骤清晰详细的安装文档,然后,比对安装的编译器版本,看看其可视化的界面是否跟文章基本一致,然后,按照文章的步骤仔仔细细一步步执行,很多时候就是细节出了小问题,因此要单独拿出一部分时间,就是反复的做安装这个工作,安装和配置环境真的是一个孰能生巧的事情,就跟你组装模型一样,反复多做几次,十次每次都认真做,一定能够将这个问题解决的 |
5 | 选择一门语言入门后,一定要把它完整学完 | 很多初学者选择一门语言后,今天看两个觉得好简单,然后,明天遇到困难了,就去学别的简单的内容了,这样是不对的,无论选什么语言,都要认认真真从头到尾完整的学完一整套,遇到不会的可以记录下自己的问题,很多前期的问题,都会在整套学完得到解答,不要死扣一个概念原理不放,初期的时候,由于知识储备不够,生扣一个概念和原理,是不明智的,就像考试遇到不能马上解答的题目,老师也是建议你先跳过,如果时间充裕在最后过来思考一样,计算机的学习也是遵循这个原则,先整体后局部,整体系统学过,再反过来思考曾经的问题,就会形成知识覆盖,因为学习了更高级的知识,所以,初级的知识问题就会迎刃而解,你学会了二十以内的加减法,让你做十以内的加减法,肯定是手到擒来. |
条条大路通罗马,有人出生在罗马,所以,面对同一个问题,站在不同的角度,不同的资源,不同的逻辑思维,所得到的结论,会存在千丝万缕的差异,因此,编程语言入门也是这样的,要根据自己的实际情况出发,具体问题,具体分析,你记忆力不是超级好,学习新事物的能力不是一级棒,没关系,你换个方式方法,依然是王者,没有最好的解决方案,最适合自己的就是最好的,C语言是强大,是鼻祖,是权威,但是,也不是保证人人都可以学会的语言,如果你走C语言入门学不同,学不懂,学着费劲,那干嘛不找一个更轻松,更便捷的解决方案,C语言就像武功中的独孤九剑,可以解决计算机里所有的问题,可是你是个连劈砍都没学会的人,给你剑谱你也看不懂学不会,不如给你一份初级剑法入门,等你学会一套剑法,再去领悟高深的剑法,岂不事半功倍,权威的是好的,但不一定是适合你的,就像给你马云一样的创业的资金,你也不一定成为第二个马云,成功只能借鉴,不能雷同,入门编程只能选择自己合适的,不能靠人云亦云,同样在一个教室上课,同样一个老师,还有打满分和不及格的,你就能说不及格的同学一定不如打满分的同学吗,那只是不及格的同学在这个方面不擅长,没准不及格的同学打游戏一个虐五个,打满分的同学打游戏一个打不过呢,所以要善于发现自己的长处,不断找寻适合自己的,才是学习和理解一切的最好方案,选择比努力更重要.
实属个人观点,觉得喜欢的可以关注,点赞加收藏,您的支持就是所有爱好者的前进动力.