001【第一章·为什么要学习编程】

发布于:2024-10-17 ⋅ 阅读:(11) ⋅ 点赞:(0)

目录

1.1 学习编程的热潮

1.1.1 席卷全球的“编程一小时”

1.1.2 资本汹涌的少儿编程

1.1.3 “再不学编程就晚了”

1.2 为什么要学编程

1.3 什么是“编程”

1.4 怎么学编程

1.4.1 一切都是计算

1.4.2 学编程不是学语法

1.4.3 动手,动手,再动手

1.5 本章小结

1.6 习题


📚 欢迎来到 C 语言学习之旅!

        大家好!我是 Thanks_ks,一个热爱编程的技术博主。鉴于很多同学在大学阶段使用《C 语言程序设计(第 4 版)苏小红等编著》这本书,以及很多考研的同学指定参考书籍也是这本书,我决定开设这个专栏,专门用来讲解这本书的知识点,帮助大家更好地应对应试考试。

        如果你希望在技术上获得更大的提升,我强烈推荐你阅读我的另一个专栏:C 语言从入门到“终于走出来了”,点击此专栏名可跳转至此专栏的详情页面。这个专栏不仅涵盖了 C 语言几乎全部的知识点,还详细介绍了开发工具(如 VS Code、CLion)的调试使用,并配有丰富的实战项目,能够让你更好地掌握 C 语言技能。

🎯 为什么选择这个专栏?

  • 全面覆盖:本专栏将严格按照《C 语言程序设计(第 4 版)苏小红等编著》一书的章节顺序,深入浅出地解析每一个知识点,确保大家能够牢固掌握基础,为后续的进阶学习打下坚实的基础。
  • 实战演练:理论与实践相结合是学习编程的最佳途径。因此,在每个知识点的讲解之后,我都会附上精心挑选的练习题和实战项目,帮助大家在实际操作中加深理解。
  • 工具精通:推荐使用 Visual Studio Code (VS Code) 作为开发环境,搭配 MinGW 工具链,在 Windows 64 位操作系统 上搭建高效的学习平台。关于开发工具的详细使用方法,已经在我的另一个专栏 C 语言从入门到“终于走出来了” 中进行了详细介绍,建议大家前往该专栏自行查阅。

🌱 我们的目标

        通过本专栏的学习,我希望每一位参与者都能够达到以下目标:

  • 扎实基础:掌握 C 语言的核心概念和技术,能够在各种场景下灵活运用。
  • 独立思考:培养解决问题的能力,面对编程挑战时能够独立思考并找到解决方案。
  • 持续成长:建立良好的学习习惯,不断探索新技术,成为 C 语言领域的高手。

🔧 如何开始?

        如果你已经准备好了,就让我们一起踏上这段激动人心的旅程吧!请确保你的电脑上已经安装了 VS Code MinGW,然后打开你的编辑器,准备好迎接新的挑战。如果你在安装过程中遇到任何问题,别担心,我的另一个专栏 C 语言从入门到“终于走出来了” 提供了详细的安装指南和使用技巧,随时欢迎你前往查阅。

        现在,让我们从第一章开始,一起探索 C 语言的奥秘。无论你是编程新手,还是希望巩固基础的老手,这里都将是你成长的起点。让我们携手前进,共同开启 C 语言学习的新篇章!

章节内容导读:

        本章力图从一个客观的角度讲述学习编程的意义。编程已不只是一项专业技能,而是与信息世界对话的工具。身处信息世界的人都应该掌握这个工具。放心,它并没有传说中的那么难。

1.1 学习编程的热潮

        每个时代都有代表性的酷炫技能。比如原始社会是打猎,战争年代是武术,贫乏年代是烧得一手好菜。现在是信息时代、互联网时代,最酷炫的技能是什么呢?PS?做 UP 主?游戏高手?抖音红人?这些看上去是很酷,也够炫,但其实都是使用别人制作的 App 或网站,在别人设定的规则中放飞自我。真正酷炫的,是制定这些让人痴迷、甚至疯狂的规则的人。其背后的核心技能就是编程。

        编程是信息时代的魔法,不会编程的人,只能是 “麻瓜”。《哈利·波特》的世界里,绝大多数麻瓜都不知道魔法的存在,这是幸福的。但我们,都知道编程技术的存在,知道那些能神乎其神施展魔法的人,这让我们怎能安心做个麻瓜呢?更何况,学习编程的旋风已经刮起来了。

1.1.1 席卷全球的“编程一小时”

        2013 年,公益网站 code.org 发起了一个在每年 12 月持续一周的活动,名为 “Hour of Code”,中文译为 “编程一小时”。官方是这样介绍的:

        “编程一小时是一个介绍计算机科学一小时的活动,旨在揭秘编程并说明它是任何人都可以学习的基础知识。

        这个活动得到了时任美国总统巴拉克·奥巴马,以及科技巨头马克·扎克伯格(Facebook 创始人、CEO)、比尔·盖茨(Microsoft 创始人、董事长)等人的支持。他们特意拍摄视频号召人们参加这个活动。

        奥巴马说:“不要只是玩手机,为它编程吧!……无论你是男生还是女生,无论住在城市还是乡村,都要去试试。”

        比尔·盖茨甚至还亲自出镜为初学者制作了教学视频,并勉励大家说:“在今天,编程已经容易了太多。”

        2014 年,活动继续,奥巴马不只继续拍摄视频号召美国人民参加,而且还亲身参与了在白宫举办的一场活动。

        美国的热潮迅速影响全球。时至今日,据 code.org 官网统计,已经有 140 多个国家,超过千万人参加了编程一小时。参加者中年龄最小的只有 4 岁,最大的达到 104  岁。

        截至 2017 年年底,在中国,该活动已举办了 161 场。与美国的 47826 场相比,这个数字实在是小得可怜。但没有人怀疑,中国人也都需要学习编程这一命题。至少风险投资的人们在用真金白银表明态度。

1.1.2 资本汹涌的少儿编程

        读者可能对资本运作并不了解,所以这里先简单科普下。风险投资之所以叫 “风险”,是因为他们的投资,有获得几十、上百甚至上千倍回报的可能;同时,血本无归的可能性也很大。高风险和高回报并存,因为他们投资的主要是初创型公司。

        初创型公司一般都没有盈利,甚至连获取收入的模式都没有,只有一个美好的愿景,俗称 “烧钱”。被烧掉的钱就来自风险投资。如果烧成功了,公司做大了,上市了,那风险投资的回报会非常可观。比如,1999 年,日本软银的孙正义给阿里巴巴投资了 2000 万美元,占了一定的股份。2014 年阿里巴巴在美国上市时,孙正义所持股份价值 580 亿美元,14 年时间翻了接近 3000 倍。2018 年中,阿里巴巴股价比上市时又翻了一番,所以孙正义的股份已价值千亿美元,成为了日本首富。但成功的公司其实是罕有的,创业成功率小于 1%,只不过我们看到的,只有成功者而已。所以更多情况下,投资人的钱是被烧得连灰都不剩的。

        投资人为什么要冒这么大的风险?因为只要投中一个阿里巴巴,回报就远超对几百个不成功公司的投资啊。所以投资的基本逻辑就是找 “风口”,在有更好未来的领域投更有可能成功的公司。风口总是在变,比如我们都感受过的移动互联网、打车、外卖、共享单车等。那汹涌的补贴、红包,都是投资人为了市场份额而洒下的真钱啊。到了 2017 — 2018 年,风口吹向了 “少儿编程”。

        顾名思义,少儿编程的意思就是教少年儿童编程。在其爆发的 2017 年,共有 19 笔总值超 2 亿人民币的融资。但这只是开始。2018 年仅上半年,就有共 18 笔总值近 10 亿人民币的融资。资本汹涌而来,不为别的,就是因为他们相信,会有越来越多的小学生、中学生要接受编程教育,这里有无限商机。尤其浙江省率先全国将信息技术纳入了高考的选考科目范围,更让从业者信心大增。那为什么中小学生都要学习编程呢?可能是因为孩子家长在为自己不懂编程而恐慌吧。

1.1.3 “再不学编程就晚了”

        在 2016年 之前,网上各大在线教育机构提供的各类编程基础课程,学习者是以在校大学生为主,尤其是即将找工作的大三、大四学生。这很好理解,IT 行业薪资高、发展空间大,非计算机专业的希望能转行,计算机专业的希望能更有竞争力,所以会选择在网上学更接近实战的课程。但 2016 年之后,成年人比例就开始逐渐上升,其中不乏已有稳定工作甚至功成名就的人士。

        他们为什么要学编程呢?有一位学员说了这样一句话:

        “再不学编程就晚了!”

        为什么“再不学编程就晚了”?他恐慌的是什么呢?


1.2 为什么要学编程

        人人学编程 ≠ 人人都是程序员

        很多人误解 “人人学编程”,以为其目的是补充程序员的人力空缺,其实不是。程序员不是人人都想当的,更不是人人都能做的。那为什么要人人学编程?为什么 2016 年突然很多成年人开始学编程,随后少儿编程市场就火爆了?那一年发生了什么?

        2016 年 3 月,Google 开发的人工智能围棋软件(AlphaGo)挑战世界冠军、韩国著名围棋棋手李世石,最终以 4:1 获胜。其后的所有人机博弈中,包括 2017 年对弈排名第一的人类棋手柯洁,AlphaGo 都再未败过一局,独孤求败般地退役了。围棋,是人类顶级的脑力竞赛,却被人工智能打败了……人工智能会统治世界吗?人类将何去何从?

        此时,我们最能直接想到的答案是:人工智能是用程序写出来的,只有掌握了编程能力,才能凌驾于人工智能之上。

        基于此,很多人产生了自己或让孩子学编程的念头。听起来好像很有逻辑,但其实,这个论断并不正确。人工智能也可以写代码,这可怎么办呀?在当下,恐慌于人工智能,是大可不必的。但当下可以看到的是,软件已经改变了世界,改变了我们做事的方式,而人工智能可以加剧改变。如果我们能主导、参与,适应这些变化,那么就能更好地利用这些变化。在这个过程中,需要具备一种思维能力,这种能力叫 “计算思维”。编程是学习这种能力的最佳途径。

        美国卡内基·梅隆大学计算机科学系前系主任周以真教授在 2006 年发表了一篇著名的文章——《计算思维(Computational Thinking)》。文中谈到 “计算机科学的教授应当为大学新生开一门称为 ‘怎么像计算机科学家一样思维’ 的课,面向非专业的,而不仅仅是计算机科学专业的学生”,这是因为 “机器学习已经改变了统计学。……计算生物学正在改变着生物学家的思考方式。类似地,计算博弈理论正改变着经济学家的思考方式,纳米计算改变着化学家的思考方式,量子计算改变着物理学家的思考方式”,所以 “计算思维代表着一种普遍的认识和一类普适的技能,每一个人,不仅仅是计算机科学家,都应热心于它的学习和运用”。

        我很赞同她的观点,并尝试用更通俗的语言来解释为什么人人都应该掌握计算思维。我们所处的时代被称作 “信息时代”,计算机是信息处理的核心。商业、农业、工业、教育等都被计算机技术推动着进步。如果能知道计算机是怎么做到这一切的,也就是知道这里蕴含的计算思维是什么,那么可能给个人所在行业的发展带来帮助。否则,就只能浮于表面地应用现成软件而已。比方说,人类一直在用推理来解决很多需要思考的问题,如下棋。所以看到会下棋的程序,很多人都认为这是计算机在思考,很神奇。实际上,计算机从来都不会思考

        1997 年打败国际象棋冠军卡斯帕罗夫的 IBM 深蓝电脑,使用的核心方法叫做 “搜索”,就是尽可能地穷举所有棋步的可能,从中搜索对自己最有利的那一步落子。干的是体力活,一点儿都不智能。2011 年,在一档经典的智力答题节目中,IBM 的 Watson 系统战胜了两位人类冠军。是这个程序的智力超群吗?也不是。Watson 的核心方法还是 “搜索”,搜索的是一块存满了资料,4 TB 大小的硬盘。前面提到的 AlphaGo 横扫人类棋手,使用的核心算法叫 “蒙特卡洛树搜索”。所以你看,计算机在智能方面战胜人类,依靠的是其不知疲倦的高速搜索能力和海量的数据存储能力

        其实想想看,我们自己所谓的智能,是不是很多时候也就是对自己脑中的记忆进行搜索呢?也许有一天大脑的秘密被完全解开,会发现它的工作原理和计算机是类同的。不管怎样,知道了高速海量搜索这个 “计算思维”,就可以将其应用在自己遇到的难题上,用计算机找到答案。

        即便在日常生活中,知晓 “计算思维” 也是大有好处的。比如说 iftt.com 这个网站,提供了非常便利的界面,让用户可以利用计算思维中的 “条件分支” 概念过自动化生活。我就在 iftt.com 上设置了当我走路步数达标,就自动发微博求点赞,而不达标时,则求被嘲笑。因为怕被嘲笑,我自从设了这个自动判定,就再也没有一次不达标。iftt 已经将很多网站、App、智能设备和手机相连接,有很多有趣的玩法。比如一离开工作地点,就给家人发条短信;天气预报明天下雨,就提醒家人带伞;快到家了,自动打开空调;到电影院,手机自动静音。

        周以真教授举例计算思维的作用,还只局限在学术界。在工业界有不少行业,已经被计算思维改变,甚至统治。比如说金融行业的股票、期货买卖,以前是靠交易员、基金经理的经验,但现在,大量的是计算机专业的人在操盘,而他们很少自己动手交易,多数情况都是他们编写的量化交易软件在自动运作,比人为判断对市场变化的响应更快、收益更高。再比如广告行业,以前是所有人都只能看到同样的广告,现在在搜索引擎或朋友圈中,每个人看到的都不一样,是根据个体兴趣而选择性推送的,这就提升了广告效率,也节约了用户时间。

        不过遗憾的是,现在还很少有学校开设 “计算思维” 课程。所以程序设计课在某种程度上肩负了传播计算思维的责任。这也是对于未来不需要靠编程谋生的学生而言,最大意义之所在。通过学习编程,了解什么是抽象、递归、复用、折中等计算思维,能帮助你在各行各业中更有效地利用计算机工具解决复杂问题。

        有的时候,我会有一种貌似很科幻的想法:如果有一种神秘的力量在控制我们所处的世界,那么这个力量的源泉应该是一台强大的计算机(对,和电影《黑客帝国》里的设定类似)。

        这是科幻吗?真不能说是。在斯蒂芬·沃尔夫勒姆的一篇专访《宇宙的本质是计算》中,这位传奇科学家说:“我们的世界就是计算,就是一套简单的规则生成的复杂现象……很多时候人们说的 ‘随机性’……只是证明你还没为这个系统建立完整的模型而已。”

        这段话可以这么理解:物理定律是恒定的,是宇宙运转的原理;数学是物理的基础,所有物理定律都能用数学来表达;数学是复杂的,但无论多复杂的数学公式,都是从最简单的数学公式推导出来的。所以,从最基础的数学出发,就可以描述整个宇宙的运转。描述的过程就是建立数学模型的过程。现在我们描述不了,只不过因为还没有完全建立所有模型。假如模型都有了,那么就可以在计算机中模拟宇宙的一切。如果计算机的速度足够快,快得超过宇宙的运算速度,那么甚至能计算出未来会发生什么,也就是能预测未来。

        如果上述理论正确,那么真的就一切都是计算,一切都可以用计算机来处理,学编程就是了解、控制这一切的最便捷途径。这套理论还只是猜想,但你不觉得,掌握计算思维并通过它来了解、探究和控制这个世界,是很有意思的事情吗?这就是为什么人人都要学编程。


1.3 什么是“编程”

        现在开始正式进入程序的世界,先了解一下什么是编程。

        “编程” 是 “编写程序” 的简称,术语称为 “程序设计”程序是计算机的主宰,控制着计算机该去做什么事。所有托付给计算机去做的事情都要被编写为程序。假如没有程序,那么计算机什么事情都干不了。例如,没有安装 QQ 的计算机就不能上 QQ。如果程序是 “好” 程序,那么计算机在它的指挥下可以又快又好地完成工作;如果程序有错误,那么计算机也会严格按照错误的指令去工作,能造成什么后果,就要看错到什么程度了。所以编程这件工作非常重要。

        如果我们想让计算机做一件事情,但是没有现成的程序可用,就需要编程。编程的第一步是 “需求分析”,就是要弄清楚我们到底要计算机做什么。这个过程貌似无甚复杂,也确实不少人对它不屑一顾。但忽视它的结果就像考试时审题审得不对,后面的解题再漂亮,也拿不到分数,必须从头返工。所以有经验的程序员都会对需求分析相当谨慎。需求分析中最难的事情是开发者和用户之间的交流。用户不懂开发,开发者不懂用户的专业和业务,使双方都会有对牛弹琴的感觉,导致需求分析的过程要持续好几个月,甚至数年。如果开发者之前对专业就有所了解,或者用户懂一点点开发,这件事就好办得多了。这也是非计算机专业学生学习程序设计的一点儿好处。

        编程的第二步是 “设计”,就是搞明白计算机该怎么做这件事。设计的内容主要包括两方面,一方面是设计程序的代码结构,使程序更易于修正、扩充、维护等;另一方面是设计算法、数学建模,用数学对问题进行求解,并用程序实现求解过程。数学部分往往属于非计算机专业范畴,程序设计部分则属于计算机专业范畴。两者的配合非常重要。并不是所有的数学模型都能用程序高效地实现,而有些数学中难以处理的问题,却可以利用计算机的特点巧妙解决。计算思维就体现在这里。

        编程的第三步才是真正编写程序,即把设计的结果变成一行行的代码,输入到程序编辑器中。虽然 Windows 内置的记事本也可用来编写程序,但一个顺手的编辑器可让编码的过程充满惬意。骨灰级的黑客喜欢使用 VIM 或 Emacs,如果有钻研精神,可以试试。新手一般会选择更容易入门的集成开发环境(IDE,Integrated Development Environment),如 Code::Blocks、Microsoft Visual Studio、Sublime Text、ATOM 等。

提示:

        本专栏使用 Visual Studio Code (VS Code) 作为开发环境,结合 MinGW 工具链,在 Windows 64 位操作系统 上搭建高效的学习平台。关于开发工具的详细使用方法,已在我的另一个专栏 C 语言从入门到“终于走出来了” 中进行了详细介绍,建议大家前往该专栏查阅。

        编程的第四步是调试程序,就是将源代码编译,变成可执行的程序,然后运行之,看看是否能满足第一步的要求。如果不满足,就要查找问题,修改代码,再重新编译、运行,直到满意为止。用到的主要工具是编译器调试器,它们一般都已经内置在 IDE 中。如果不使用 IDE,只使用编辑器,则需要单独安装,推荐使用 gcc 编译器和 gdb 调试器。两者是 Unix/Linux、macOS 平台上的主流,在 Windows 平台上亦可使用。

        这个过程说起来没多少,但每一个环节都有很多学问在里面。本书主要讲述的是第三和第四步。前两步虽然也有涉及,但因为程序的规模很小,所以体现得并不多。但读者必须知道,待将来编写大规模的程序时,前两步的重要性是超过后两步的。


1.4 怎么学编程

1.4.1 一切都是计算

        前面 1.2 节提出了 “一切都是计算” 这个观点。不管你是否认同现实世界中一切都是计算,在 “计算” 机里,确实一切都是计算。这是学编程最先要建立的认知。无论要用计算机处理什么,都需要将其变成数字;无论要用计算机解决什么问题,都需要将其转化成计算问题。然后,利用计算机强大的计算能力、存储能力、网络能力,做到人工无法达到的效果。

        比如微信的视频通话,是摄像头按固定的像素数采集你的图像,对每个像素按 0~65535 编码,不同数字代表不同颜色,然后再将每个像素的位置和颜色编码通过网络发送到对方的手机,对方手机将这些信息还原显示到屏幕上。中间过程里还有复杂的数字压缩算法、网络传输算法等参与运作,都是计算。通话时的美颜功能,也是计算,简单说就是改变皮肤所对应像素的颜色值,使其看上去更白,以及在大片皮肤色区域把混在其中的非肤色也变成肤色,就达到了去皱纹、去黑点的效果。

        游戏也无处不是计算。比如吃鸡游戏中,血量、子弹量都是数字,被不同子弹击中不同部位减多少血量,也都是数字。中枪的判断也是数字加计算。你的枪口的指向,敌人身体各个部位的位置,都在一个三维坐标系中数字化了。开枪瞬间,如果敌人的某个部位,正好是枪口指向在坐标系中的直线上的某一点,那么就击中了!敌人减掉相应血量后,如果剩余血量的值小于等于 0,就死亡。当然,实际处理方式有各种优化,各种复杂条件的判断,但核心总归还是数字的计算。

        所以,学编程先要从直观思维转变成数字思维。用数字看待一切,用计算处理一切。比如后面会学到 abcd、ABCD、0123、!@#$ 等字符在计算机中的处理,它们本质上都被编码成了一个数字。像 1,就被编码成 49(这句话很奇葩,但理解了,也就懂了数值编码)。

1.4.2 学编程不是学语法

        编程语言也叫语言,所以很多人在学编程时用学英语的套路,去背单词、记语法。这就南辕北辙了。

        其实学编程更像学射击。枪有很多很多种,手枪、步枪、冲锋枪、狙击枪、机关枪、气枪、猎枪。从任何一种枪上手,都可以学射击,但过程中除了学习这种枪械的特点、功能,比如后坐力大不大、能否连发外,更重要的是学会射击的基本功,比如控制呼吸、了解心跳,什么是三点一线,风向、风速、湿度对弹道的影响,如何控制后坐力提升连发精度,等等。掌握了这些基本功,换一种枪,很快就能上手。

        计算思维,就是编程的基本功。如果走专业路线,那么除计算思维之外,操作系统、分布式、数据结构和算法、网络原理等也都是基本功。不走专业路线,到计算思维为止就够了。所以,学编程不要只关注语法,而是领会语法背后的编程思想,进而是计算思维。这样无论从什么语言学起,将来都能快速上手另一种新语言。

1.4.3 动手,动手,再动手

        学编程必须动手。想学好必须多动手。想学透必须多动手做真实的软件。

        很多计算机专业的学生到毕业时仍不会编程,就是因为动手太少,满脑子只有理论。企业是不只认理论的,你必须能把理论动手实现出来,才愿意录用你。

        如果你的学校为你创造了很多动手编程的机会,那是很幸运的。别偷懒,好好做。如果你的学校没为你创造足够的动手编程机会,那也好,自己创造。

        这本书有很多的实验作业,把它们都做了,甚至用不同的方法多做几次。ACM 网站上有很多编程题,上去把它们一个个地切掉。比如 acm.hit.edu.cn(注意:原文中的链接可能有误或已过期,这里仅作为示例保留)。

扩展:

        在此,博主为大家推荐几个专为编程练习和解题设计的优秀平台,比如牛客网(https://www.nowcoder.com/)和力扣(https://leetcode.cn/)等。这些网站不仅汇聚了大量的编程题目,还为学习者提供了一个实践所学知识、提升编程技能的宝贵平台。无论是初学者还是经验丰富的开发者,都能在这些平台上找到适合自己的挑战,从而不断进步。

        自己给自己找事做,比如写个小游戏,做个丑陋的 app。别求这东西有用、酷炫,就是让自己有程序可编。当然,作品有用酷炫就更好了。

        参加各种编程比赛、创新比赛,别为了拿奖,就为了让自己能动手。读开源软件的代码,为它们贡献代码,哪怕只是贡献中文翻译。

        如果本科阶段写过一万行代码,那么任何公司都会郑重考虑你的。如果写过三万行,那你就是风毛麟角的选手了。


1.5 本章小结

        无论未来在哪个行业,是否从事计算机相关的技术工作,掌握计算思维都是大有裨益,甚至是必须的。学习编程是了解和践行计算思维的最佳途径。而学编程的最佳途径是,不断编程。


1.6 习题

问:查找资料,总结目前排名前 10 的编程语言各自的特点和主要应用领域。

答:编程语言排名网站(TIOBE):https://www.tiobe.com/tiobe-index/

        以下是目前排名前 10 的编程语言各自的特点和主要应用领域的表格总结:

编程语言 特点 主要应用领域
Python 简洁高效、易学、可移植性强、丰富的标准库 Web 开发、数据分析、人工智能、科学计算、游戏开发等
C++ 面向对象、高效、跨平台、可扩展、低级控制 操作系统、数据库管理系统、游戏引擎、网络应用程序、大型企业软件等
Java 面向对象、可移植性、高效性、安全性 跨平台应用、互联网开发、游戏开发、金融领域、大数据处理等
C 简洁高效、灵活、跨平台性强、支持系统级编程 系统软件开发、应用软件开发、嵌入式软件开发、游戏开发等
C# 面向对象、简单易学、安全性、高性能、可移植性 桌面应用程序、Web 应用程序、移动应用程序、游戏开发、大数据处理等
JavaScript 解释型脚本语言、面向对象、函数式编程、事件驱动编程 Web 前端开发、Web 后端开发(如 Node.js)、移动应用程序开发、游戏开发等
Visual Basic 面向对象和可视化的程序设计、事件驱动的运行机制、结构化的程序设计语言 程序设计语言和软件开发工具
Go 高效、并发、简洁、支持轻量级线程和通道 网络编程、高并发服务器、云计算、区块链、人工智能等
Fortran 适用于数值计算、科学计算和工程计算 科学计算、数值分析、工程计算、气象预测等
Delphi/ObjecraS(Object Pascal的扩展) 面向对象、可视化开发环境、事件驱动编程 Windows 桌面应用程序开发、数据库应用程序开发、企业级应用开发等

问:你所在专业最常用的支持二次开发的软件是什么?二次开发的意思是可以为该软件编写插件程序,扩充其功能。它的开发接口都支持什么编程语言?请通过网络等媒体查找答案。

答:在计算机科学与技术专业中,Visual Studio Code (VS Code) 是一个非常常用且支持二次开发的软件。VS Code 通过插件系统允许用户扩展其功能,常见的开发语言包括 TypeScript 和 JavaScript。开发者可以利用这些语言编写插件,增加如语法高亮、代码片段、调试支持等功能,使编辑器更加个性化和高效。


问:查找资料,解释什么是图灵测试。

答:图灵测试是由英国数学家和计算机科学家阿兰·图灵提出的一种测试机器是否具有人类智能的方法。在这个测试中,如果一台机器能够在与人类的文本对话中让多数评委无法区分其与真实人类的区别,那么这台机器就被认为通过了图灵测试,表明它具有一定的智能水平。简而言之,图灵测试是用来评估机器能否表现出与人类似的智能行为的标准


问:程序和软件有何不同?

答:序是指一组指令,用于告诉计算机执行特定任务。而软件则是指计算机系统中的程序及其相关数据和文档的总称。简而言之,程序是软件的一部分,软件除了包含程序外,还包括使程序能够正常运行所需的各种资源。


问:人与计算机之间用什么语言交流?如何实现更有效的人机交流?

答:人与计算机之间的交流主要通过编程语言和图形用户界面(GUI)来实现。编程语言如 Python、Java 等允许用户编写指令控制计算机,而 GUI 则提供了一种直观的操作方式,让用户可以通过点击、拖拽等动作与计算机互动。为了实现更有效的人机交流,可以采用自然语言处理技术,使计算机更好地理解人类语言;同时,优化用户界面设计,使之更加符合人的操作习惯,也能显著提高交流效率。


问:程序开发的基本步骤是什么?

答:程序开发的基本步骤通常包括以下几个阶段:

  1. 需求分析:确定项目的目标和需求,明确用户需要解决的问题。
  2. 设计:根据需求设计软件架构和详细逻辑,规划程序的结构和功能。
  3. 编写程序:按照设计文档编写代码,实现软件的功能。
  4. 调试程序:测试程序,发现并修复错误,确保软件按预期工作。

问:程序在计算机内部是如何运行的?

答:程序在计算机内部的运行过程大致如下:

  1. 加载:程序首先被加载到计算机的内存中。
  2. 编译或解释如果是编译型语言,程序会被编译成机器码;如果是解释型语言,则会在运行时逐行解释执行
  3. 执行:计算机的 CPU 读取内存中的指令并逐条执行,完成程序指定的任务。
  4. 输出:执行结果通过屏幕、文件或其他方式输出给用户。

        整个过程中,操作系统负责管理程序的运行,分配必要的资源如内存和 CPU 时间。