写代码这么多年,我依然觉得编程很美妙!图灵程序员计算机人工智能

人工智能之父艾伦·图灵曾说过:“编程之所以吸引我,是因为它充满了解决挑战性难题的乐趣。”而科技界巨头比尔·盖茨也曾说:“如果一件事你能够通过编程来做,那么它就值得去做。”这些计算机领域的巨擘们,用其独到的见解强调了编程不仅是一种技术手段,更是一种解决问题的思维模式。

当代有一群用代码改变世界的人,他们用键盘敲击的每一行代码都是对完美程序的不懈追求,每一个函数都是他们对效率的执着。面对错综复杂的技术挑战,他们总能用逻辑思维和创新思维洞察问题的本质,找到最优的方案。对待代码,他们更是像工匠般精益求精。这群数字世界的建筑师,正以前所未有的速度重塑着我们的生活和工作方式。

你还记得,是什么让你最初选择了编程这条路?是儿时对电子游戏的迷恋,还是对未知世界的好奇心?是对未来职业的规划,还是对技术改变世界的信仰?

为什么对编程这么狂热,我自己也解释不来,姑且说说看吧。

在编程的人看来,编程是世上最有意思的事情了。它要比国际象棋之类的游戏复杂得多,你想要什么规则都可以自己设定。按照你定下的规则,它的结果该是什么,就会是什么。

不过,在外行人看来,编程似乎是地球上最无趣的事。

编程刚开始会令人觉得特别刺激,这个原因倒很好解释:因为你让计算机干什么,它就干什么,不仅没有毫厘偏差,而且永远服从、毫无怨言。这本身就很有意思。

虽说一开始是计算机的盲从让你对编程入迷,但是单靠这一点,并不足以让你真正喜欢上编程。事实上,计算机的盲从很快就会让编程变得无趣。编程真正让人欲罢不能的魅力是:如果你想要让计算机干什么事,你必须先弄清楚,怎么样才能让它这么干。

我个人觉得,计算机科学和物理科学有不少相似的地方。它们都是在一个非常基础的层面上,探讨整个学科的运作原理。

当然,不同的是,在物理科学上,你得去弄清楚这个已存在的世界是如何正常运转的;而在计算机科学上,你得从零开始创造出一个新世界来,而且还得设法让它正常运转。

在计算机的世界里,你就是创世者,对这个世界里发生的一切都有最终决定权。如果鼓捣得足够好,你就是这个世界的上帝。当然,这个上帝的地盘就比较小喽。

我这么说,恐怕已经得罪地球上近一半的人了。

但事实就是如此。你可以在计算机上创造出属于自己的新世界,唯一的限制就是计算机本身的性能,还有一点在今天尤为重要,那就是你自己的能力。

比方说造一间树屋吧。你可以造一个带活板门的树屋,这样的树屋实用而稳固。不过这样一间仅为坚固、实用而造的朴素树屋,和一间为了外观漂亮而巧用树木特点来精心雕琢的树屋比起来,人人都看得出来两者间的差别。

造树屋是一种将艺术和工程融合起来的活计。编程也是如此,也正因如此,编程才得以成为一件既有魅力又有价值的事。编程时,编程者往往优先考虑的是趣味性、美观性及震撼力,而非实用性。

编程是一个充满创造力的过程。

最开始吸引我进入编程世界的,是我研究计算机工作原理的过程。我在其间获得的最大乐趣,就是发现了计算机和数学的异曲同工之妙:你可以创造出一个世界来,一个自主制定规则的新世界。

在物理科学中,你会被客观存在的规律所约束,但是在数学和编程中,只要合乎逻辑,什么规则都行得通。

数学问题只要能在数学世界里逻辑自洽,就可以成立,不必受到外部客观逻辑的约束。正如数学家们都知道的,只要逻辑处理得当,就完全可以构建出一套新的数学体系,在新体系中等式“3+3=2”是可以成立的。

事实上,在你自己创造的体系里,想干什么都可以。但是,当这个体系渐渐充实起来,变得越来越复杂,你就得格外注意,别弄出一些自相矛盾的逻辑出来。这个美丽新世界要继续美下去,就容不得一点瑕疵。编程和数学一样,也是这么一回事。

人们之所以会对计算机着迷,一个原因就在于计算机可以让人们游历自己创造的新世界,了解这个新世界能被改造成什么样子。

在数学中,人们往往是开动脑筋,根据经验来假设,从而得出可能性。举个例子,说到几何学,大部分人想到的是欧几里得几何学。但是计算机能够帮助人们将不同的几何学形象化,而不仅仅局限于欧几里得几何学。有了计算机的辅助,就可以把虚构的世界形象化,亲眼看看这些虚构的世界到底是什么样子的。

记得芒德布罗集吗?就是那个基于伯努瓦·芒德布罗等式的分形图像。分形图像是人们利用计算机,对一个纯粹的数学世界的形象化表述。而在计算机出现之前,像这种纯数学,是绝不可能被形象化的。芒德布罗就是在他那个本不存在的世界中,人为地制定了一些规则。虽然分形与客观现实毫无关系,但他们却创造出了一些非常棒的形状。通过计算机和编程,你可以构建新的世界。有时机缘巧合,这个新世界还会特别美妙。

不过,大部分时候,你并不是在创造新世界。你写一个程序,其实只是为了让它执行某个任务而已。在这种情况下,你就不是在创造新世界,而是在这个已存在的计算机世界里解决一个具体问题了。要解决问题,就得好好思考问题。但是,光是坐在计算机前盯着屏幕思考,就能把问题想通,只有一些比较怪异的人才能做到。比如说,像我这种呆子气十足的怪胎就做得到。

计算机上的所有功能要想起作用,都得以操作系统为基础。于是,创造一个操作系统就成了终极挑战。创造一个操作系统,相当于给所有在这部计算机上跑的程序创造了一个全新的生存环境——从根本上说,其实就是在制定这个世界的规则:什么事可以接受、可以做,什么事不可以接受、不可以做。其实,所有的程序都是在制定规则,只不过操作系统制定的是最根本的规则。创造一个操作系统,就相当于为自己创造的一方土地制定宪法,而在计算机上跑的程序则相当于各式各样的普通法律。

有时候,这些普通法律跑不通,那么这时候就要看你的能耐了。你需要找到解决方案,并且能清楚地意识到自己已经循着正确的方式找到了正确答案。

还记得学校里那个总能快速答对问题的家伙吗?他的答案总比其他人来得快,恰恰是因为他没有刻意去寻找正确答案。他未必知道问题本该以什么样的标准思路来解决,他只是以一种合理的思路来考虑问题。因此别人一听到他的答案,就觉得很合乎逻辑。

编程也是如此。你可以靠蛮干来解决问题,跟问题慢慢“磨”,直到它不再是问题为止,看谁磨得过谁。不过这是个愚蠢的办法。你也可以找到正确的方法来解决问题,这样问题就会立马消失。换一个角度看问题,你会突然灵光一闪:问题之所以成为问题,只是因为我原先看问题的方法不对!

这个故事也许是虚构的,道理却十分浅显:伟大的数学家不会采用既烦琐又无趣的方法解决问题,因为他们能理解问题背后的真正内涵,并且能利用这个内涵找到更为简便的方法,从而得出答案。

这个道理放到计算机科学上,绝对也是一样的。没错,同样的问题,你可以随便写个程序来求和,就现在的计算机技术来看,这就跟打个响指一样简单。但是只有才思敏捷的伟大程序员才知道真正的答案。他们知道怎样采用全新的方法,写出一个漂亮的程序来攻克某个问题,并且最终会证明这个新方法就是正确的方法。

我还是很难解释清楚常常闭关三天冥思苦想却徒劳无功,找不到一个漂亮的好方法来解决难题的编程之事到底有什么好令人着迷的。但是,一旦你找到了解决问题的那个漂亮方法,你就会知道,那种感觉是无与伦比的。

《ChatGPT:人类新纪元》

马占凯|著

《这就是ChatGPT》

[美]斯蒂芬·沃尔弗拉姆|著

WOLFRAM传媒汉化小组|译

OpenAICEO,ChatGPT之父山姆·阿尔特曼推荐,国内首部由世界顶级AI学者、科学和技术领域重要的革新者、“第一个真正实用的人工智能”搜索引擎WolframAlpha发明人斯蒂芬·沃尔弗拉姆对ChatGPT最本质的原理的解释的权威之作!

《人工智能简史(第2版)》

尼克|著

本书获得第七届中华优秀出版物图书奖、第八届吴文俊人工智能科技进步奖,入围央视“2017年度中国好书”,获选第十三届“文津图书奖”推荐图书。内容全方位解读人工智能的来龙去脉,一线专家细数行业经典与成败得失;把科学的故事讲得富于思想性,把技术的问题讲得颇具趣味性。

全面讲述人工智能的发展史,几乎覆盖人工智能学科的所有领域,包括人工智能的起源、自动定理证明、专家系统、神经网络、自然语言处理、遗传算法、深度学习、强化学习、超级智能、哲学问题和未来趋势等,以宏阔的视野和生动的语言,对人工智能进行了全面回顾和深度点评。

《理解图灵》

尼克|著

书中首先追溯图灵的生平和思想轨迹,特别是他对智能与机器关系的早期洞察,以及他在计算理论方面的重大贡献——提出图灵机;接着通过分析图灵与同时代其他思想家的交流与辩论,如与哲学家维特根斯坦的深入对话,以及在BBC广播讨论中与神经生理学家杰弗逊的激烈交锋,逐步揭示了图灵对于机器智能的独到见解及其思想的演进过程。

《中国人工智能简史》

林军,岑峰|著

高文院士、李国杰院士、戴琼海院士作序推荐;张钹,沈向洋,杨强,张正友,张建锋,王海峰,王小川联名推荐。

本书为该系列第一卷,梳理了自1979年至1993年中国人工智能领域初期十多年的发展历程,用轻松而真诚的笔触,讲述了为中国人工智能发展寻路的奠基者,并介绍了重要历史事件的来龙去脉,带领读者深入了解中国人工智能发展早期鲜为人知的历史。

《只是为了好玩:Linux之父林纳斯自传(修订版)》

[美]林纳斯·托瓦兹[美]戴维·戴蒙德|著

陈少芸|译

全球程序员推崇的天才“极客”;让微软头疼的鬼才“书呆子”;苹果乔布斯求之不得的“开源领袖”;《时代周刊》评选的“全球最具影响力人物”;——Linux之父林纳斯·托瓦兹亲笔自传。

缔造支撑互联网运行的“巨人的肩膀”;点燃技术开源与创新的“自由的火种”;开辟滋养安卓、鸿蒙诞生的“技术之源头”。读懂“林纳斯之乐”;用黑客精神把握技术创新的现在与未来。

《黑客与画家(10万册纪念版)》

保罗·格雷厄姆|著

阮一峰|译

硅谷创业教父保罗·格雷厄姆畅销近20年的思想经典,一书了解何为黑客精神、如何创造财富与开拓未来。

《硅谷之火》

迈克尔·斯韦因,保罗·弗赖伯格|著

陈少芸,成小留,朱少容|译

美亚评分4.5,科技先锋的传奇故事。本书是一部微型计算机发展史,让读者了解整个20世纪以及至21世纪初计算机从兴起到鼎盛直至今天受到平板电脑和手机等电子产品冲击的整个过程,是一本集历史故事与小说风格于一体的硅谷纪传体书籍。

第3版对一些内容进行了彻底的修订和扩充,延展到了个人计算机革命结束和后PC时代的开始。它讲到了史蒂夫·乔布斯和道格拉斯·恩格尔巴特的去世,比尔·盖茨和史蒂夫·鲍尔默的退休,也讲到了一些先驱退场后的人生经历。新版还涉及个人电脑到云计算和移动设备的过渡、个人计算机时代的结束对自由与权力影响、开源与软件私有的争论等话题。

THE END
1.算法的概念及其特征但其实啊,算法没那么玄乎,它就在咱们的生活里到处蹦跶呢! 您想想,咱每天早上起床,先刷牙洗脸,再穿衣服出门,这一系列的步骤,不就是一种简单的“算法”吗?只不过咱们没把它叫得那么专业罢了。 那到底啥是算法呢?简单说,算法就是解决问题的一系列明确步骤。就好比您要做一道红烧肉,得先准备食材,切好肉,炒糖色https://wenku.baidu.com/view/b6df04096adc5022aaea998fcc22bcd126ff428e.html
2.编程有什么分类和特点?Worktile社区总结起来,编程的分类和特点使得它具有广泛的应用领域和潜力。无论是开发应用软件、嵌入式设备还是解决复杂的算法问题,编程都扮演着重要的角色,并不断创造出更多的可能性和机会。 赞同 5个月前 0条评论 worktile Worktile官方账号 评论 编程可以根据不同的分类方法进行分类,每种分类方法都有不同的特点。以下是https://worktile.com/kb/ask/2137991.html
3.Java集合面试问题40个「附答案」1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。 随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口https://www.oh100.com/kaoshi/java/370200.html
4.C语言重要知识点总结3:算法的概念和特点(程序的灵魂)1.有穷性:一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。一个算法应包括有限的操作步骤,这里的有穷性意思是指“在合理的范围之内”,比如让计算机运算10000年才结束,那该计算就不能算有效的算法,究竟什么算是“合理限度”,由人们的常识和需要判读。 https://blog.csdn.net/weixin_46022083/article/details/107521335
5.Alibaba最新1000多道Java面试题汇总详解,收藏起来慢慢刷!我分享的这份春招 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝https://maimai.cn/article/detail?fid=1728969401&efid=esjJLvGGL4fAr1LArgq_cQ
6.单片机原理及应用教程第4版第1章单片机应用基础概述在线免费本章以计算机的结构思想为引导,首先介绍了计算机和单片机的发展过程、计算机中表示信息的数制和编码及计算机系统结构组成。然后重点介绍单片型计算机(以下简称单片机)应用系统组成、特点及应用开发资源。最后通过单片机一个简单应用示例,使读者初步建立单片机应用的整体概念。 https://fanqienovel.com/reader/7110144623195982860
7.编程语言对比与选型是一种面向对象的编程语言,具有平台无关性和高度可移植性。Java的主要特点之一是其对跨平台的支持,可以在不同的操作系统上运行相同的程序。由于其安全性和可靠性,Java语言在企业级应用、大型系统开发、云平台等领域有着广泛的应用。同时,Java语言也是Android应用程序的首选开发语言,在移动应用开发领域具有重要地位。 https://www.jianshu.com/p/ad8f8b5a6270
8.高中信息技术课程标准(1)结合实例,经历分析问题、确定算法、编程求解等用计算机解决问题的基本过程,认识算法和程序设计在其中的地位和作用。 (2)经历用自然语言、流程图或伪代码等方法描述算法的过程。 (3)在使用计算机解决实际问题的过程中,通过观看演示、模仿、探究、实践等环节,了解顺序、选择、循环三种基本结构及其重要作用,掌握计算机https://www.fqkhzx.cn/index/article/view/id/94.html
9.贝叶斯分类算法(精雅篇)利用MATLAB程序特点进行模式识别算法编程减少了编程的工作量,对于一个成功的软件来说,其内容固然应该是第一位的,但除此之外,图形界面的优劣往往也决定着该软件的档次。MATLAB图形用户界面的优点是工具箱形象直观,利用其自身的GUIDE功能来完成界面结构的设计。 https://www.360wenmi.com/f/cnkey2zkdus2.html
10.Scale概述(上)学习笔记C 语言、C++、java 等语言在学习后具有部分的共同特性,存在大同小异的特点。但 Scala 相对其它语言而言变化较大,部分本身的特色较为有趣。此语言在学习过程中可使得自身的编程思想、编程算法得到一定程度的提升。 4、Spark 特点-函数式编程 引入后使函数更为强大、提倡递归,效率得到大大提升。 https://developer.aliyun.com/article/1079002
11.第5课算法的特征(教学设计)五年级上册信息技术浙教版(8页)书中包含了许多经典的算法问题和案例,对于提高学生的编程能力和算法思维具有很好的帮助。 《算法竞赛入门经典》:这本书适合有一定编程基础的学生,通过讲解各种算法竞赛的问题和解决方案,帮助学生提高算法思维和解决问题的能力。书中包含了大量的算法实例和题解,对于培养学生的算法能力和解决实际问题的能力有很大的帮助。https://m.book118.com/html/2024/0810/7111141150006142.shtm
12.算法是程序的灵魂,让我们从基椽始算法是程序的灵魂,只有掌握了算法,才能轻松地驾驭程序开发。软件开发工作不是按部就班,而是选择一种最合理的算法去实现项目功能。算法能够引导开发者在面对一个项目功能时用什么思路去实现,有了这个思路后,编程工作只需要遵循这个思路去实现即可。本章将详细讲解计算机算法的基础知识,为读者步入后面的学习打下基础。 https://labs.epubit.com/articleDetails?id=NNb6e4b6e6-a18f-4e6d-9cfe-4d2b7a3962f1
13.算法编程编程语言的算法算法 编程 内容精选 换一换 Hyper MPI是什么 心等应用场景,同时该通讯库也可扩展应用于AI、大数据等通用领域。 Message Passing Interface(MPI)是支持多编程语言编程的并行计算通讯应用接口,具有高性能、大规模性、可移植性、可扩展性等特点。 华为高性能通信库(Hyper MPI)是基于Open MPI 来自:百科 查看更多https://www.huaweicloud.com/theme/857518-3-S-undefined
14.编程学习计划(系列八篇)这样可以更好地理解编程语言和算法的应用,并且能够在现实中掌握更多的技能。在实际项目开发中,我们可以选择一些开源项目或者自己开发一些独立的应用程序。以上是编程学习计划的基本步骤。不管是初学者还是有一定编程基础的人,在进行编程学习时都可以参照以上步骤,以便提高自己的编程技能。 通过充分利用各种教学资源,如中国https://www.liuxue86.com/a/5151491.html