首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么 C++ 对于初学者来说是一场噩梦?

问:为什么 C++ 对于初学者来说是一场噩梦?

答:我认为大多数初学者程序员认为学习 C 语言比高级语言更困难的原因之一是因为要学习 C 你需要同时学习两件事:

了解内存模型的工作原理。

了解 C 语言的工作原理。

这两项任务都不是极其复杂,但如果不小心同时执行这两项任务可能会令人困惑。讽刺的是,在我的大学,电气工程专业的学生会在学习 C 语言之前先学习 PIC 汇编语言,C 语言是一种非常简单的汇编语言,但需要了解内存模型。因为他们一次一个地执行这些步骤,所以他们看起来不像那些刚刚学习 C 作为第一语言的人那么困惑。

另一方面,C++ 是一种多范式语言,试图在易用性与零监听效率之间进行权衡。这使它遇到了 C 所面临的问题,但它不是同时学习两个任务,而是更像是十几个任务,因此陷入了陷阱。更糟糕的是,它是一个定制系统,偏向于用户喜欢的术语和模式,而不是一般的计算机科学实践。然而,如果您不只是尝试学习如何使用它,而是尝试了解为什么它是这样的,那么学习 C++ 并不那么困难。   

问:开始学习编程的最佳方式是什么?为什么你会推荐 Python 而不是其他语言?

答:Python 是学习编程的一种很好的语言,但是学习编程不仅仅只是学习一种编程语言。学习编程的最佳方法是编写程序,然后从比您更有经验的人那里获得反馈。

我推荐 Python 的一个原因是它是一种“金发姑娘”语言——不太难也不太容易。它非常强大,并且具有您在高级编程语言中寻找的所有功能。它是通用的,您可以将其用于各种应用程序开发。

Python 可用于编写过程式程序和面向对象程序。并不是每个人都同意这一点,但我建议您从过程式编程开始,并在处理面向对象编程之前精通它。

问:为什么 Rust 被认为是一种创新的编程语言?

答:Rust 承诺以零成本抽象进行软件工程。

根据我的经验,就所需程序员的注意力而言,它提供的抽象根本不是“零成本”(我是从拥有 25 年以上经验、曾尝试过 Smalltalk 和 Haskell 的软件工程师的角度来谈论的)

但 Rust 确实有机会分享 C++ 的蛋糕,而且我比 C++ 更喜欢它。

此外,它的借用检查器也是语言设计创新进入公共领域的罕见例子。

问:64位“时代”从什么时候开始?什么时候 64 位处理器成为常态,而 32 位支持开始减少?

答:在主流桌面上,64 位时代真正开始于 2006 年 Windows Vista 的发布。Windows Vista 需要大量 RAM。4 GB 是运行 Windows Vista 的最低要求。不仅如此,当时所有性能足以运行 Windows Vista 的处理器都支持 64 位,而 32 位处理器已经过时了。当然,这意味着唯一可以运行 Windows Vista 的是 Intel Core 2 Duo。此时,大多数应用程序和游戏都支持 64 位,虽然 32 位版本仍然存在,但在游戏中,如果有 64 位版本,任何东西的 32 位版本都会逊色。早在 2003 年,主流桌面就已经出现了技术上支持 64 位的操作系统和处理器,但大多数人即使拥有 AMD Athlon 3700+,也只安装了 32 位操作系统。

在智能手机上,64 位时代始于 2014 年 Android 5.0“Lollipop”(API 级别 21)的发布。Android 5 中的新功能是 64 位支持,第一批 64 位智能手机现在已成为昂贵的旗舰产品。2016 年,Dolphin 模拟器取消了对 32 位设备的支持,因为显然直到 2016 年他们这样做才有意义。由于 Android 生态系统的碎片化,32 位支持虽然在减少,但对于那些想要使用 32 位设备的人来说仍然存在。2011年或2012年买的手机,拒绝升级。32 位支持早在 2016 年就开始减少,但仍然存在。不过,大多数 Android 原生的在线垃圾现在只支持 64 位手机。

问:GOTO 语句已经过时了吗?如果是这样,为什么?如果没有的话可以在C++程序中使用吗?

答:C++ 没有块标签,所以摆脱深度嵌套循环的唯一快速方法是 goto,在 Perl 中你可以说“last”,否则你必须做很多额外的编码,这是不值得的努力。

编译器会告诉您是否不恰当地跳过构造函数等,但这通常是由于跳入嵌套块的中间,应该正确处理跳出。

一般来说,如果您可以看到它去了哪里并且知道它在那里,那么 goto 就不会令人困惑,但我通常保留大量使用机器生成的代码,而不是为人类设计的。

问:人工智能和机器学习之间的主要区别是什么?机器学习是人工智能的一部分吗?

人工智能(AI):

答:将人工智能想象成一台超级智能的计算机,可以像人类一样思考和做出决策(甚至更聪明!)。人工智能旨在创建能够执行通常需要人类智能的任务的机器或软件,例如理解自然语言、识别图像、下棋或驾驶汽车。人工智能就像一把大伞,涵盖了计算机中所有“智能”的事物。

机器学习(ML):

机器学习就像人工智能的一个子集。这是一种让计算机从经验中学习和改进的方法,而无需为每项任务进行明确的编程。可以将其视为通过向计算机显示大量猫和非猫图像来教计算机识别照片中的猫。您不必告诉计算机如何识别猫,而是让计算机通过学习示例来自行解决。机器学习是人工智能的一部分,专注于学习和适应。

因此,简单来说,机器学习是人工智能中使用的一种工具或技术,旨在让计算机学习并更好地完成任务,而人工智能的更广泛目标是创建可以模仿人类思维和决策的智能机器。

问:为什么C++不能在嵌入式系统中取代C?

答:它已经被用于嵌入式系统中。

我第一次体验它是作为手机 Symbian 操作系统的一部分。这当然是嵌入式、软实时和完全 C++ OOP。

PIC 微控制器的 32 位芯片上有一个 C++ 库。

所以C++没有理由不能继续使用。除非你不想。

问:哪些行业最迫切需要运用人工智能?

答:人工智能最紧迫的应用是在医疗保健行业,它有可能彻底改变医疗诊断、治疗和研究。人工智能能够分析大量数据集并做出预测,有助于早期疾病检测、药物发现、个性化治疗计划和简化管理任务。持续的全球健康挑战凸显了流行病学、疫苗开发和医疗基础设施管理方面对人工智能驱动解决方案的迫切需求,以拯救生命和资源。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OawroUtpYZq9toiHuCfX7BlA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券