初学者值得一看:什么是编程/C语言,编程学习建议,编程解疑与误区注意

文章目录

  • :star: 初学者值得一看:什么是编程/C语言,编程学习建议,编程解疑与误区注意
  • 1.什么是编程语言
  • 2.什么是C语言与我的强烈建议 – 先学C,而不是c++,java等
  • 3.C语言的发展史
  • 4.C语言难吗
  • 5.学习编程难吗
  • 6.英语和数学不好可以学编程吗
    • 6.1 英语不好可以学编程吗
    • 6.2 数学不好可以学编程吗
  • 6.各种编程语言间的鄙视链
  • 7.编程学习的心得分享(仅个人心得,仅供参照或选择忽略,勿喷)
    • 7.1 学会做笔记,有自己的笔记库
    • 7.2 :triangular_flag_on_post: 代码不要死记硬背,关键在于理解是干嘛的
    • 7.3 养成良好的编程习惯
      • 7.3.1 一定要格式化代码
      • 7.3.2 标识符规范命名
      • 7.3.3 学会写注释
    • 7.4 程序是用大脑写的,而不是用手写。
    • 7.5 一定要亲自写代码,能听懂与会使用是两码事
  • 8.回答初学者的一些关于编程的疑惑与理解误区(仅个人观点,如意见不同可忽略,勿喷)
    • 8.1 学习C语言我应该用什么编程工具比较好
    • 8.2 认真上好学校的课程就够了吗
    • 8.3 有哪些好的编程学习视频,该如何选择
    • 8.4 我是应该先读书还是先看学习视频呢
    • 8.5 C语言学到哪个程度可以开始自己写代码
    • 8.6 我应该要学习很多编程语言吗
    • 8.7 哪种编程语言更好,误区:我就想学最好的编程语言
    • 8.8 大一上的我需要去纠结走哪个方向吗
    • 8.9 感觉自己初次刷题没思路没感觉怎么办
    • 8.10 如果我在写代码中遇到问题怎么办
    • 8.11 非计算机专业可以学编程吗
  • :bookmark: 小结

?? 初学者值得一看:什么是编程/C语言,编程学习建议,编程解疑与误区注意

?? 来自:中南林业科技大学软件协会学术部:谢添

? 时间:2022 – 10 – 13 至 2022 – 10 – 15

?? 官 :https://www.csuftsap.cn/

?? 如果这个世界真有奇迹,那也只是努力的另外一个名字,据说,每个降临到这个世界的人都自带粮草和地图,会迷途都是因为陷在眼前的一亩三分地,那些去看世界的人脚下一直有远方。

著名的操作系统,最早也是由C语言的设计者之一的使用所写的,再后来随着C语言的诞生,两位C语言的设计者和又用重写了,C语言也伴随着UNIX操作系统成为一种广受欢迎的计算机语言。

补充:Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,由世界顶级黑客发明的著名操作系统 是微创新/改进了 UNIX(但并没有抄袭 UNIX 的源码),使得 Linux 在外观和交互上与 UNIX 非常类似。

对于任何一门语言,都有不同的版本迭代,存在着新特性、代码结构修改或者新标准制定。

美国国家标准委员会(American National Standards Institute)是制定C语言标准的国家机构,C语言标准的发展历程如下:

image-20221013185225467

K&R C:1978年,丹尼斯·里奇(Dennis Ritchie)和布莱恩·科尔尼干(Brian Kernighan)出版了一本书,名叫《The C Programming Language》。这本书被C语言开发者们称为“K&R”,很多年来被当作C语言的非正式的标准说明。人们称这个版本的C语言为“K&R C”。

在GCC编译器中,针对不同版本的C语言标准,可以通过在命令行中使用“-std”选项来选择所需要使用的C语言标准版本。

4.C语言难吗

和 Java、C++、Python、C#、JavaScript 等高级编程语言相比,C语言涉及到的编程概念少,词汇少,思想也简单。C语言学习成本小附带的标准库小,所以整体比较简洁,容易学习,初学者能够在短时间内掌握编程技能,非常适合编程入门。

5.学习编程难吗

编程是一门技术,我也没有权威说它到底难不难,因为对不同人来说这个难与不难的标准有所差别。但我知道,只要你愿意去学,愿意去花时间与心思,是肯定能学会的。每个人的思维逻辑水平有所不同,兴趣点不同,有的人可能学起来吃力,有的人觉得容易。但值得注意的是,任何一门编程语言都是有都是有道理与规律的,我们要在学习的过程中去摸索。

再牛逼的人学好编程也不是一朝一夕的事,浮躁的人搞不好技术的。你一旦开始学习编程,就必须做好投入大量时间与精力的准备。初学者可能总有一个疑问:我多久可以学完C可以学完C++可以学完Java实你不要总想着赶进度,任何一门编程语言的学习不是说看几本书,学了几套视频就能搞定的,需要你不断的练习,编写代码,积累零散的知识点,代码量跟你的编程水平直接相关,没有亲手写过几万行代码,没有拿得出手的项目作品,不能说是一位合格的程序员。

每个人程序员都是这样过来的,开始都是一头雾水,连输出九九乘法表,金字塔,菱形都很吃力,只有通过不断练习才能熟悉,这是一个强化思维方式的过程。知识点可以在短时间内了解,但是思维方式和编程经验需要不断实践才能强化,这就是为什么很多初学者已经了解了C语言的基本概念,但是仍然不会编写代码的原因。程序员被戏称为”码农“,意思是写代码的农民,要想成为一个合格的农民,必须要脚踏实地辛苦耕耘。

不要压力太大,一切编程语言都是纸老虎,一层窗户纸,只要开窍了,就容易了。

6.英语和数学不好可以学编程吗

很多初学者认为,编程语言是由英文组成的,而且会涉及很多算法,自己的英语和数学功底不好,到底能不能学会编程呢p>

6.1 英语不好可以学编程吗

首先,学习编程需要你有英语基础;但是,要求并不高,初中水平完全可以胜任。

编程语言起源于美国,是由英文构成的,其中包括几十个英文的关键字以及几百个英文的函数,除非需要对文本进行处理,否则一般不会出现中文。但是,它们都是孤立的单词,不构成任何英语语句,不涉及任何英语语法。

但是,如果你希望成为非常顶尖的“大神”,那么肯定是要阅读英文的技术资料,因为不是所有的国外资料都会被翻译成中文。

说一个事实,大部分的开发人员和培训机构(黑马,尚硅谷等)的主讲老师英语水平也不是特别优秀,依旧需要借助翻译工具来辅助开发项目。

6.2 数学不好可以学编程吗

编程语言确实涉及到很多算法,有一些还需要高等数学知识,但是,这些算法都已经被封装好了,你直接拿来用就可以,根本不用你重复造轮子。

你需要知道算法设计者都是顶尖的大牛,我们这些绝大部分平凡的人类是没有能力去创建一个优秀的算法的,只需要去学习他们发明的算法并应用就行,即使你看不懂,随着时间的累计很多你都可以选择去直接记住。
但当然,这些优秀的数据结构与算法都涉及很多巧妙与复杂的逻辑需要你去理解,想要学好数据结构和算法,这是一个需要长期学习的过程,每个人都是需要如此。
另外,这些算法都是在很深的底层为我们默默的工作,初级程序员根本不会涉及到算法,即使是别人已经封装好的算法,一般也没有机会使用,我们直接调用就可以了,所以,你就别瞎操心了。

一位顶尖的开发工程师(后转架构师)在谈到这个问题时曾说:我学编程八年了,至今都没有设计过什么真正的算法,大部分底层都给我安排明白了。

6.各种编程语言间的鄙视链

  • 写汇编语言工程师的看不起写C语言的工程师
  • 写C语言的工程师看不起写C++的工程师
  • 写C++工程师的看不起写Java和C#的工程师
  • Java工程师和C#工程师相互鄙视,并且看不起写Python的工程师
  • 写Python的工程师看不起写PHP的工程师
  • 写PHP工程师的看不起写前端JS的
  • 前端程序员看不起美工

7.编程学习的心得分享(仅个人心得,仅供参照或选择忽略,勿喷)

7.1 学会做笔记,有自己的笔记库

你一定要学会做自己的笔记,无论你是用本子做笔记还是用电脑软件做笔记,都要有对知识点的总结,有在学习过程中或 编程/开发 练习中遇到的问题的思考。

随着时间的迁移,你的知识范围与知识深度都会大大提高,人的大脑能装的东西是有限的,你肯定会忘记许多曾经学过的知识。有人说我看书不就行了吗,书上讲的多详细与知识覆盖多广啊际上,你所需要花的查阅成本比看笔记大的多,笔记上应当有你自己对于知识点的理解,有对需要注意的问题的标注。

7.2 ?? 代码不要死记硬背,关键在于理解是干嘛的

这里说的代码不要死记硬背,不是说的不要去记忆一些东西,当然还是有东西需要去记住的。比如说我们C语言的int、double、float、for、while、case、switch、break等等关键字还有C语言的语法等,这些肯定都是需要记的。就像学习英语你不知道单词,不知道语法能学好英语吗的代码就相当于英语语句,记住了英语单词、词组、语法等那么写出英语语句就不会是件特别难的事情了。我们的代码也是如此,掌握了关键字、语法等写出代码也会很轻松。

那哪些东西不要去记呢例子,无论是C语言,还是Java,还是数据库SQL语言等等,都有成百上千往上走的函数/类,这些其实除了一些常用的,其它的我们都不需要去记,你只需要知道在某个语言中应该有某个功能的函数就够了,那我们要用的时候怎么找这个函数呢很简单,到CSDN、博客园、稀土掘金等程序员 区去找就行了。

比如说我想在C语言中生成随机数,但是忘记代码是怎么写来着,直接搜索“”之类的关键词到程序员 区找就行了,肯定是有的,都是前人的经验。

我以C语言为例,带大家来浅浅探讨一段令无数程序员肾上腺素飙升的代码:

【为什么要写#include

是预处理命令,这里可以简单理解为就是标识在源程序编译前进行预先的处理工作。

那处理什么呢接着往后看,后接单词,即,这个词和差不多,在编程世界里一词更为专业,因此我们之后讲解是我用来代替。

因此你应当能理解,就是一个文件名为stdio的头文件,在stdio文件中,包含了许多封装好了的函数供我们程序员使用。

stdio具体又是个怎样的文件呢dio实际是一个缩写,我们把stdio进行一个拆分:

  • std:的缩写,翻译成中文为”“
  • i:的缩写,翻译成中文为“”
  • o:的缩写,翻译成中文为“”

因此 stdio 文件,即是 标准输入输出文件

总结 #include:在源程序编译前导入标准输入输出(流)文件到我们自己的程序(程序也是文件形式)中。

每个头文件中都包含了若干个功能类似的函数,调用某个函数时,要引入对应的头文件,否则编译器找不到函数。你需要知道的是标准输入输出文件中有两个特别重要的函数:

  1. printf:,作用是将内容到控制台面板上
  2. scanf:,作用是通过键盘内容到正在允许的程序中

所以,说到这里,你应当大概能理解我们为什么要我们需要写了吧,因为和函数来自于stdio文件,我们想在自己的代码文件中使用到这两个函数,就不得不在源程序编译前进行预先处理 – 导入stdio文件,这样在编译完源程序进行程序运行时才是以合法形式使用printf和scanf。

暂时你只需要知道stdio文件有这两个函数,实际上该文件中还有许多其它常用函数,这里不做列举。

?? 根据我们上述分析,如果我们没有使用到stdio文件中的函数,是不是就不需要写呢是不需要写的,我们举个例子:

学会深度思考,这样即使你突然忘记了某个代码片段的编写,但回顾时是很容易轻松与上手的。

即使是工作了几十年的程序员,也会对于某些功能模块的代码拿不准记不清,也依旧会去 上搜索,把 上现成的代码复制下来加以修改就可以放到自己的项目中。为什么他们能很快速的知道某段代码是干嘛的,知道某段代码该如何修改呢很简单,一方面是已经有了大量的实践经验,一方面是对这段代码所应该起到的作用,实现某个功能的代码逻辑理解很深刻。

7.3 养成良好的编程习惯

代码的可读性就显得尤为重要。这里的可读,不仅仅是对自己可读,也要对其他人可读。一段只有自己能读懂的代码,可以说价值很低,而且这样的代码随着时间的推移往往自己也读不懂。而可读性强的代码,不仅方便移植与交流,更给调试带来了难以估量的便利。对于一个团队来讲,制定统一的编程规范,好处是显而易见的。通常一个项目是由多个成员共同完成,在项目中,经常互相调用组内成员的代码。如果两个人的编程习惯和风格差异显著,那么将会浪费大量时间在读懂代码上。相反,一致而良好的编程规范,会让合作开发变得轻松而高效。

这里介绍几个我觉得比较重要的编程习惯:

7.3.1 一定要格式化代码

代码格式化,主要是整理,以及(比如通常在运算符左右都有空格)等。目的是使代码缩进清晰,更容易阅读。

? 未格式化的代码

比如这样的代码,你觉得可读性好吗是在实际开发中代码量远比这个多得多,如果程序有bug需要排查,这对修改代码的人无非是一种巨大的痛苦。

? 格式化的代码

7.3.2 标识符规范命名

标识符概念:

  1. 对各种变量、函数、文件等命名时使用的字符序列称为标识符
  2. 凡是可以自己取名字的地方都叫标识符

这里以的规范命名为例:

  1. 命名应当直观且可以拼读,可望文知意,便于记忆和阅读。最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂,用词应当准确。
  2. 命名的长度应当符合原则。C 是一种简洁的语言, 命名也应该是简洁的。例如变量名MaxVal 就比MaxValueUntilOverflow 好用。标识符的长度一般不要过长。
  3. 另外,英文词尽量不缩写,特别是非常用专业名词,如果有缩写,在同一系统中对同一单词必须使用相同的表示法,并且注明其意思。
  4. 当标识符由多个词组成时,每个词的第一个字母大写,其余全部小写。比如、
  5. 尽量避免名字中出现数字编 ,如Value1,Value2 等,除非逻辑上的确需要编 。
  6. 初学者总是喜欢用带数字的变量名或函数名,这样子看上去很简单方便,但其实是一颗颗定时炸弹。这个习惯初学者一定要改过来。

7.3.3 学会写注释

注释:用于说明解释程序代码的文字就是注解。被注释的文字,不会被编译器编译执行,注释就是给自己或其它程序员看的。

注解提高了代码的阅读性。会写注释 是 一个程序员必须要具有的良好的编程习惯。将自己的思维先通过注释整理出来,再用代码去体现。

试想一下,在项目开发中,如果遇到BUG,你或其它程序员需要对你的代码进行修改,可能随着时间推移你也早就忘了某段代码到底是干嘛的了,如果你写了注释,程序员能够快速把握你的代码编写思路,极大提高开发效率。写一手好的代码也是一个高级程序员必备的技能之一。

7.4 程序是用大脑写的,而不是用手写。

简单的说:做事之前,要先过遍脑子。

用大脑写代码的意思就是程序应该是在脑袋里成型的。首先,即便是上边那些混乱的写法,也肯定要过大脑的,毕竟不经过大脑,你其实很难下意识打出一行代码的,但问题就是过大脑的部分实在太少了,每次就那么几行上下文。真正高级的做法是,你能够在脑袋里把整套代码的流程推导一遍,让程序在你的大脑里运行一遍,这时候你会发现写下来会是非常轻松的体力活。有那么一些程序员几乎不加班,但是效率还是很高,那就是因为他们其实无时无刻都能在大脑里写程序。成为一个高级程序最重要的就是要有在大脑里完整的写完一段代码的能力。

如果接受了大脑写代码的说法,那么你会得到一个非常有意思的结论:用的哪种编程语言并不重要,重要的是思想。

7.5 一定要亲自写代码,能听懂与会使用是两码事

纸上得来终觉浅,绝知此事要躬行。

很多学习编程的人在学会某个知识点或者听懂某个算法后就说自己懂了,却没有去上机实验是非常不可取的。有的东西思想其实很简单,但用代码实现起来可能会让你无所适从,可你却没有去实操就不知道有这些问题,这是非常致命的。

代码是一切的基石,看看我们软件界的先辈们吧。决定创造一门“看上去很好”的语言时,如果只是站在高处呐喊,这门语言是划时代的,它有多么优秀,但不去实现,又有何用呢Dennis M. Ritchie的亲自编码实现,C语言不可能诞生,UNIX操作系统也不可能诞生。Linux在聚拢成千上万的开源狂热者对它进行开发和扩展之前,如果没有的编码实现,仅凭他高声呐喊“我要创造一个划时代的操作系统”,有用吗的一切都是以编码实现为前提的,代码是我们前进的基石。这是一个英雄辈出的年代,我们每个人都希望自己被顶礼膜拜,可是这需要资本和实力,而我们的实力体现了我们处理技术问题的能力。

无论你将来的职业发展方向是架构师、设计师、分析师、管理者,还是其他职位,只要还与软件打交道,就有必要打好能亲手写出一手好代码的技术基础。

一个程序员,如果没有亲手写过几万行代码,没有做过几个好的项目,不能说是一个合格的程序员。

8.回答初学者的一些关于编程的疑惑与理解误区(仅个人观点,如意见不同可忽略,勿喷)

8.1 学习C语言我应该用什么编程工具比较好

只是很多高校在教学实践中普遍采用VC或者Dev,因为文件小,安装便捷嘛!不过相对而言,这些软件对初学者往往不够友好,包括界面、提示符、文件系统等等。

而与之对应的,VS凭借它出色的界面、友好的操作方式和完备的体系得到很多开发者的青睐,所以也是奉劝一些仍在坚持学校的软件的学弟学妹入坑VS,只有四个字送给你们:绝对不亏!

8.2 认真上好学校的课程就够了吗

仅仅认真上好学校的课程是远远不够的,原因如下:

  1. 对有些老师而言,教学只是副业,真正花心思的是自己在校外的兼职/工作
  2. 学校课程的教学时长也就十几节课,这对学好一门编程语言只花这点时间教学是远远不够的
  3. 由于时间有限,大部分老师都是讲个大概/总结,只是对知识有个整体教学,没有做到小处着眼,但往往“小处着眼”是学好一门编程语言的关键环节。

8.3 有哪些好的编程学习视频,该如何选择

力推哔哩哔哩上的课程,其实像黑马、比特等IT教育机构都是非常不错的,总有人会问看谁的教学视频比较好,其实说实话,看播放量高的那几个其实都差不多,播放量高的都能说明经过了学长学姐的检验。如果非要说几个我认为不错的C语言教学视频,我比较推荐和的。

8.4 我是应该先读书还是先看学习视频呢

我的建议是先看视频,看完视频再看书。

  1. 从视频获取知识的效率比看书来得快。
  2. 视频通常都是很明确的告诉你核心知识点是什么、哪些是重点、有哪些注意事项。
  3. 我觉得看书就是一个对视频知识点的补充以及对自己从视频上学到知识点的检测,用你在视频中的知识点去看书中所讲是否符合你的预想。

8.5 C语言学到哪个程度可以开始自己写代码

无论何时都可以开始写代码!!!

【你的第一个C语言程序】

Hello World是一个最著名的程序。对每一位程序员来说,这个程序几乎是每一门编程语言中的第一个示例程序。实际上,这个程序的功能只是告知计算机显示Hello World这句话。传统意义上,程序员一般用这个程序测试一种新的系统或编程语言。对程序员来说,看到这两个单词显示在电脑屏幕上,往往表示他们的代码已经能够编译、装载以及正常运行了,这个输出结果就是为了证明这一点。这个测试程序在一定程度上具有特殊的象征意义。在过去的几十年间,这个程序已经渐渐地演化成为了一个久负盛名的传统。几乎所有的程序员,无论是在你之前,或在你之后,当第一次实现与计算机成功沟通之后,在某种程度上,他们的肾上腺素就会急剧上升(激动不已)。

8.6 我应该要学习很多编程语言吗

不需要。在未来我们的职业生涯中,我们大部分人只需要掌握一门编程语言即可,每门语言都有广泛的业务范围。需要明白的是,想要把任意一门编程语言学好都需要花费很长的时间,即使已经工作几年的程序员也依旧要抽出时间对自己从事的编程语言进行深入学习。我们都没有精力去把每门语言都吃透,否则到头来你只是对每门语言有个大概了解,和别人聊起来,一旦涉及到更深入与底层的东西,你就会无所适从。

8.7 哪种编程语言更好,误区:我就想学最好的编程语言

世上没有最好的编程语言,存在即合理,只是每门编程语言所适用与擅长的范围不同。

比如 适合去做底层开发、游戏、游戏引擎等,适合去做web应用、安卓、大数据等,适合去做人工智能等,适合去做 页开发等,是区块链的主力开发语言。学习任何一门语言都需要十几年内功的积累,因此你必须要知道你到底对什么感兴趣,因为如果没兴趣这将对你来说是一个非常难熬与痛苦的学习过程。

8.8 大一上的我需要去纠结走哪个方向吗

完全不需要,就我个人的经历以为,大一上把C语言学好,把与打牢固是非常重要的,因为我本人是如此的,你在大一上学了C,在以后你会发现在很多地方你会见到C语言的影子以及数据结构和算法的学习我们更推荐使用C语言来训练,因为C语言是最干净纯粹的通用经典计算机语言,可以极大帮助我们一拳一脚地养成规范的动作习惯。

8.9 感觉自己初次刷题没思路没感觉怎么办

其实很正常,因为是初次接触当然会有点无所适从,就像你高中学习数学,初次遇到某种类型的题目,可能有坑,大部分人都会踩进去,但第二次、第三次呢,犯错的人会很少很少了,因此学编程刷题目也是一样,先照着写、熟悉套路之后自己再练习会快很多。学习任何东西都需要一个过程,但前提是你一定一定要把自己的基础打牢。

8.10 如果我在写代码中遇到问题怎么办

出现错误不可怕,发现错误并解决的过程是提升代码能力的关键点。你遇到一千个错误或bug,你的能力就能提升一千点。就我个人而言,其实很喜欢修改bug的过程,因为我加深了对这个知识点的认识,别人可能也会遇到同样的问题,我可以帮他点出来并解决确实能增加我学习编程的信息。那我们遇到问题应该遵循哪几个步骤呢p>

  1. 一定要先自己独立思考,学会代码调试与debug
  2. 上程序员 站(比如CSDN、博客园等) / B站 找答案,都是前人的经验总结,有详细的解答与知识补充。
  3. 如果还解决不了,去与同学交流,学习编程一定不要闭门造车,要学会把你的想法说出来,不仅仅是对自己知识的检验,也能够帮助发现自己有哪些观点是错误的。
  4. 与老师交流,这是下下策。

8.11 非计算机专业可以学编程吗

完全可以。编程只是一项技术,与专业无关,你只要有正确的思维逻辑就可以学习编程。

如果是转专业到计算机类的同学,在有些方面还是具有优势的。比如你以前是从金融转到计算机的,现在你的老板要你和你的小伙伴们去做一个财务方面的项目,通常你们先要去了解学习一下金融财务方面的知识,但你以前是金融的,即使你现在不记得了,但现在再次学习肯定比其他人要更快掌握,可以指导他人与更快投入工作。这时你的老大肯定会对你刮目相看。在职场上领导对你赞赏是一件很重要的事情,特别是我们编程专业大部分人都是吃青春饭的,老板的青睐意味着升值,意味着可以往管理方向走,这基本是每个程序员都希望的事情。

?? 小结

?? 我们总结了介绍了编程语言与许多初学者疑惑,遇到任何疑惑联系软件协会

?? 了解更多关注软协官 :https://www.csuftsap.cn/

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114446 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月12日
下一篇 2022年9月12日

相关推荐