为什么有人说C++是最难学的编程语言? (4个回答)

从事嵌入式开发多年,有三种语言玩的比较多C/C++ java,从编程语言的难度来讲C++是最难得,而且也是最难入门的编程语言,很多编程老手都是这个结论,为什么C++是最难学的编程语言,虽然难学但还是很多编程老手喜欢研究它,更是很多架构师的最爱。

现在以个人的观点讲述为什么C++是最难的编程语言,其实在C++基础语法部门看不出这门编程语言有多难,难在泛型编程和面向对象的特性展示,几乎每个知识点都附带着很多细节点,而且更加要命的是C++语法规则还在不停的延伸,几乎长期玩C++都有一种通病总是觉得这门语言学不完,就连C++的创始人都说自己有时候都看不懂这门编程语言了,linux的创始人对于这门编程语言成见也非常大,有点故弄玄虚的感觉。

如果单纯从学校的理论角度去学习这门编程语言其实看不出有多难,因为基础语法的学习掺杂的东西就比较少,很多在学校学过这种语言的大学生觉得自己的基础应该还可以结果真正开始做项目的时候傻眼了,原来还有这么多自己不懂的语法知识,只靠那点皮毛根本解决不了问题,所以要想学好这门编程语言首先要做好充分的心理准备,起码几个月的时间在迷糊期度过。至于具备什么条件才能学好C++,这种没有定论很多大学生在学校自学了C++,还没毕业就通过网络途径找到工作了,所以编程语言的学习从来都不是固定的。

在网络上认识一个大学生,本身对编程很感兴趣,特别是对C++感兴趣,完全靠着一腔热血把这门语言给学好了,并且不断拓展知识面,有关C++的书籍研究了不下五本,并且借着这种势头还不断通过看书拓展自己编程基本功,还没毕业去找工作就成了抢手货,所以不要给自己设置界限,不一定非要参加培训通过自身的努力也一定可以。由于经常在网上写点东西,遇到一些大学生经常写技术文章,开始的时候不会写,后来坚持的时间长了越写越有感觉,再加上网络信息非常发达,有一些猎头或者技术高手在网络上发现有可塑的人才也会主动联系,所以很多大学生还没出校门就把自己的工作给搞定了,不要轻易否定自己。

在这里插入图片描述
其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C++交流群1075673198,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。

游戏开发,大数据和服务器方面开发,网络开发,嵌入式开发等,现在很多主流的客户端都是用C++完成的,安卓内核框架和谷歌浏览器绝大部分代码都是C++完成,不用担心这门编程语言不行了之类的鬼话,由于这门语言相对比较难入门起来相对费劲。

难也只是相对的,只要觉得感兴趣就去全力去学,学的时候不要考虑是不是能找到合适的工作,编程要能学好必须能下功夫,软件开发讲究的水到渠成,功夫到位了自然就能做项目了。

希望能帮到你。

从这个趣事就可以看出C++是非常难学的编程语言,在主流的高级生产级编程语言中可以说是最难学的编程语言了,从入门到精通最难的编程语言,从入门到放弃最简单的编程语言,可以说是名符其实。

C++语言是C的超集,1982年,美国尔实验室(AT&T公司)Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,从此C++编程语言诞生,面向对象的到来、STL标准库的诞生,以及微软等大公司的支持,让C++逐渐流行起来。但是C++从一开始就是一门复杂的编程语言。

从通用性上来讲,C++不局限于一个领域或者少数领域,而且没有明显的倾向性,比如PHP最擅长的就是web开发,Java最擅长的就是复杂业务逻辑处理,C#做桌面开发非常方便,而C语言最擅长的就是系统级别的开发,而Python则是最主要的人工智能研究语言。但是C++不一样,没有明确的倾向性,并且功能还非常强大。
在这里插入图片描述
其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C++交流群1075673198,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。

C++可以完成系统级的开发,垂直领域的特定应用开发,甚至在教学科研以及嵌入式等等领域都能够很好的完成,这就是最大的问题,那么注定每一个方面都要做得很好。

从多范式来讲,C++不是彻底的面向对象编程语言,也不是纯面向过程的编程语言,也不是标准的泛型编程语言,这玩意儿是多范式的。也就是反过来说,她即是面向过程编程语言,也是面向对象编程语言,还对泛型程序也有很好的支持。知道什么问题了吗?对的,就是她什么功能都很全!

所以其实C++之难学,难于上青天的关键在于C++太强大了,功能太多了。 这样一个通用型、多范式的编程语言,当然是非常难学。但是在很多领域,比如系统级开发,大型游戏开发等领域C++还有着巨大的优势,因为C++毕竟是仅次于C语言的运行效率的编程语言,何况它还支持面向对象。

题主的问题描述中四个“?” 我能回答两个半。由于本人是非专业人士,所以一下回答仅供参考。

这个问题我不确定。

在我看来既然C/C++能够“长盛不衰”这么多年,足以说明它们的价值。单凭这一点就足够说明问题的了。

不过虽然我不是很专业,但是我也知道不用的领域会更多的应用不同的语言,尤其是题主还是自学,那么除非你的目的性很明确——比如从事某个岗位的职业,否则还是应该从比较容易上手的、应用比较普遍的语言入手比较好。 所谓先上路,路上在慢慢想! 比如你完全可以先选择比较容易上手的Python。

能!

这个问题我能回答的原因是因为我家孩子9岁的时候开始学习的C/C++,我们学的比较慢一周也就是两次课(前大半年一周一次),纵然是如此,目前为止孩子基本上也已经把语法部分(即编程语言的本身)都学完了。 只要不是算法太复杂的问题,孩子大都是可以做出来的。 目前孩子正在开始学习各种算法。

我之所以说“能”是基于这近一年来孩子的表现以及二十年前我学C语言时候的一些经验总结出来的。

但是,我必须要说名两个问题:

1、能否学的好,完全取决于你的努力程度而不是“理论上的可能性”。

很简单的道理,当你看书学或者看视频学(网上资源跳多了)的时候,你仅仅是照着课程内容敲打一边代码就行了还是会做笔记、会找相关题目练习这两种学习的方式直接决定你后面的学习效果。 就我孩子的学习情况来看,孩子的掌握程度基本上取决于投入练习的时间长短(当然,还有动脑程度)。

2、语言仅仅是一个工具。

编程语言仅仅是一个工具而已,当你工作时候更多的是要用这个工具去解决具体的问题。举个最最容易理解的例子:学习数学、物理的时候各种公式的本身并不难理解,但是当你应用的时候就会发现“ 我去!这题怎么做? ”。同样的道理,语言你可以短时间内(两三个月足以达到入门级)学个七七八八, 但是当你真的想用这个东西来解决问题的时候,往往会发现无从下手,甚至连点思路都木有!

因为我和孩子学习C/C++是因为我们想试试参加一下NOIP,所以我们的经验有限,但是这些道理也是很多老师、朋友跟我分享过的,我觉得是有道理的。 比如我家孩子每节课听的都自认为没问题,但是一旦开始做题了,尤其是稍微复杂一些的问题时候,基本上就跪了!

老师、朋友们跟我说解决这个问题没有什么捷径可以走,就是多练、多读(读程序)、多想、多交流!

这个问题不难回答,但是我说不全,所以只能借助网络尽可能的把它主要能做的事情给你罗列一些:

C/C++主要用于操作系统软件底层开发比如开发操作系统,各种协议软件,硬件驱动,嵌入式,服务器,或者算法研究,游戏开发,还有各种图形处理,总之那里的性能需求和运行速度比较高的,那就用C/C++。可能这么说觉得太笼统了,我再直白点比如手机,飞机、动车、机器人、大数据、人工智能、仿真等等都能用的上!

无论你的规划、计划是如何,你都要先“出发”,只有在前进的路上你才会发现各种各样的问题,也才能更有针对性的解决。认真学、多练、多交流你一定行的。

最后给你讲一个我觉得还不错的案例: 我的一位超级远房的亲戚孩子,高中毕业啥也没考上,最后去了我们这里的一个还算老牌的计算机培训机构,学了2年多的编程,后来推荐工作之后认真努力的学、做,几年下来这孩子现在一年收入也是很不错的。 当然,这种事儿不具有“普遍性”,是否“成才”很大程度上还是要取决于个人的努力情况。如果你有这个毅力,那么就去做吧!

加油!

对于正在学习C/C++的同学来说,C语言可能不难,但是当自学C++的时候,总会出现各种问题,就像是一个恶性循环不懂所以不想看,关键是没有·一个由浅到深的过程,刚开始就让人无力,那怎么样从浅到深学习C++呢?

首先,C++面向对象式的编程对开发者隐藏了很多细节,而面向过程的思维方式是一下子不能适应这粗象的思维方式。先把C语言打扎实了,着手练习用C语言实现各种常见算法和各个课后习题,等到算法研究了些时候,慢慢的不再代码注意细节(细节已达到编码时随手可写出的程度)之后,再来看C++语言,顶多几天就能适应,完全可以像学C语言一样的容易,那时可深入学习C++。

学习C++可以从《C++编程思想》开始,学习基本语法和面向对象程序设计思想。然后如果有项目可以跟着项目学习,借鉴前辈的经验。如果没有项目则可以借鉴书籍,例如《深入浅出MFC》等,通过一段时间的演练,相信对抽象,封装,多态,继承等就会有较深的认识了。

接着可以接触下《C++ primer》,《Effective C++》,《More Effective C++》等书,借鉴大家的经验,修正自身的一些毛病和问题。再往后就可以了解下设计模式相关的一些书籍,然后在实践中靠自己多积累。

不必为C++的某个语法问题而慌乱,不必为不懂C++某项技术而迷茫,选择一个领域,选择一个范式,专注于C++的一个子集。在此过程中,努力去领悟C++编程的思想,一旦顿悟定将妙用无穷。

C++是广博的,它涵盖面如此之大,让它如何能简单。希望各位都能善待自己所学的C++

C++很多人学到后面都放弃了,但只要学过这门语言的人,编程意识都会比同一阶层的人来得更好一些。比如我就有看过java编程的人在内存这块完全没有任何意识的,但学过C++的人,或多或少会去留意一下有没有释放内存,是不是内存可以共用等等。

我从指针跟内存这两块来说说为什么C++很多人认为是最难的编程语言吧。C++用的人多,骂得人也多。学起来不容易,用起来出起问题来,也是不带含糊的,排查的时候那是更崩溃的。所以现在很多企业都不大愿意去碰C++,真的是对员工的技能要求比较高。

指针跟内存,基本上是分不开的两块,指针指向一块不被分配的内存地址时,天知道会怎么样,崩也不一定就崩在那一行,自己创建内存,释放内存,这个必要从一开始要耶刻到脑海里的习惯,不然只创建不释放,哪天程序挂得不知所措。

总之能用好C++的人,都是一个挺好习惯的人,细节的注意会比较好一些。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
文献综述 计算机科学与技术 基于 JAVA 的模拟 ATM 系统的设计与实现 ATM 是 Automatic Teller Machine 的缩写,即自动柜员机。它是有计算机控制的持 卡人自我服务型的金融专用设备。 ATM 机可以向持卡人提供提款、存款、查询余额、更 改密码等功能。ATM 不仅能接受本行本地卡,还可以通过网络功能接受异地卡、他行卡, 同时为持卡人提供每日 24 小时服务。 随着 Internet 的蓬勃发展,ATM 网上银行作为电子商务的一种形式正以方便、快捷 的优势,逐步成为新兴的经营模式和理念,人们已经不再满足于排队等待办理各种业务, 而是渴望着能够充分享受网络所带来的更加多的便利。ATM 银行系统正适应了当今社会快 节奏地生活,使顾客可以方便快捷轻松地办理各种实物银行所能办理的各种业务,大大节 约了时间和实物银行所需的人力,物力,财力等[1]。 一、ATM 系统 模拟 ATM 系统就是对提款机操作系统在个人 PC 上及主流操作平台中的编程实现,其开 发主要包括后台数据库的建立和维护及前端应用程序的开发制作两个方面。用户在 ATM 客 户端登陆,实现取款、查询、转账、密码修改等业务操作,银行管理员在后台实现对银行 数据库信息的增删改查等操作。 二、ATM 系统使用的开发语言   人们在 ATM 系统的开发时,使用了各种不同的计算机语言,本系统采用 Java 语言作 为开发语言,因为 Java 语言是一个具有简单、面向对象、多线程、分布性、体系结构中 立、安全性等方面优点的语言。  Java 语言由理解和信奉网络计算梦想的一个小巧而专注的开发组设计的,虽然该语言 最初的实施方案有点缺陷,但为了这个梦想,设计者们很少在技术上妥协,结果诞生了一 种专为以相互通信为主要目的的设备而设计的语言。其许多技术上的优点都可能会引导嵌 入系统开发者选择 Java。 优点一,Java 与处理器无关。传统上,嵌入程序就是针对特定的微处理器设计并在其 上运行的,而 C 语言程序的可移植性则可通过编译或交叉编译来保障。但是利用 Java,一 个程序可以存储在一个系统上,而被下载并运行在完全不同的另一个系统上;设备可能从 不同地方下载一些程序在一个处理器上运行,或者不同的处理器运行同一个程序,并通过 网络在相互间传递数据。使用 Java,一个嵌入式系统就可能成为一个通用的通信设备,能 下载并运行能完成特定任务的程序。 优点二,Java 是一种纯粹面向对象的语言,Java 类被组织成一个等级层次,在层次结 构中,一个子类能够继承其超类的行为,并可用子类所具备的一些特有功能来扩展其超类 的功能。其对象模型是能定义对应真实事物的数据结构,使得程序的任务和任务如何实现 二者之间的转换变得基本上透明。 优点三,由于有了 JVM,一个 Java 应用程序与操作系统或硬件完全隔绝,因此计算机 病毒或其他作祟的代码就很难获得对设备的控制。其虚拟机是主机设备和那些可能难以确 定其质量和可靠性的软件之间的一个保护层[2]。 优点四,JBuilder 继承了 C++Builder/Delphi 的特点,在可视化上使用简便。由于 Java 本身语言的特点使得他们在网络开发中具有高人一等的表现,而且面向对象特性高, 支持的组件技术也非常多,跨平台的特性也使得它在现在和未来的开发中占据越来越重要 的地位。 三、ATM 系统的发展及未来研究方向  为提高国内新增 ATM 应用效果,要求国内银行必须紧跟 ATM 技术发展动态, 开辟 ATM 新 的业务运用领域。 1.安全性能提高 主要用于顾客身份合法性识别和认证上采用更加先进安全的技术。例如: (1)美国新泽西一家公司发明了虹膜识别技术,利用人的瞳孔与指纹的独一无二性来识别 顾客身份。 (2)德国西门子公司带有容貌识别系统的 ATM,机器只有在看到持卡人本人的容貌后才会 出钞,有效避免持卡人因卡遗失、密码泄漏造成资金损失。 (3)NCR 最新推出的自动出纳机是"对讲机",用录制好的信息回答一些简单问题。视频 自动出纳机组可在视频显示盘上看到讲话人的头像、磁带,可用于提醒顾客关于银行提供 的诸多服务[3]。 2.应用领域扩大及新功能的增加,为用户提供更加方便快捷的服务 (1)上网。即将开发的网络柜员机,使用户可以通过 ATM 登录 Internet,获取个人帐户历 史信息,并在银行间自由调度资金,也可通过任何一台网络 ATM 支付帐单。 (2)手机取款。法国电信公司推出用手机在 ATM 上取款,还可通过手机买票, 订票费记录 在电话费帐单上。 (3)投资理财。建立客户关系管理系统,经过对客户数据的深入挖掘分析,向客户提供投资 理财方案,提高 ATM 服务功能,减少柜台服务压力。 (4)兑换硬币。在日本,中小学生把零用
### 回答1: 这个问题没有确切的答案,因为“最好的”编程语言取决于你的目标和用途。对于某些人来,最好的编程语言可能是那种能够让他们快速实现目标的语言,而对于其他人来,最好的编程语言可能是那种更容易学习的语言。常见的编程语言包括C、C++、Java、Python、JavaScript等。 ### 回答2: 作为一个AI助手,我认为没有一个编程语言可以被成是“最好”的。每种编程语言都有其独特的优点和适用的场景。以下是几种常用的编程语言的简要描述: 1. Python:易学易用,有丰富的库和强大的生态系统,适合初学者和数据分析等领域。 2. Java:跨平台性好,适用于大型企业级应用程序和安卓应用开发。 3. C++:高性能,适用于系统开发、游戏开发和嵌入式系统等。 4. JavaScript:用于网页前端开发,并且也可以用于后端开发(Node.js),非常流行。 5. Swift:苹果公司推出的编程语言,用于iOS和macOS应用开发。 6. Ruby:简洁优雅,强调开发者的幸福感,适用于Web应用开发。 7. Go:由Google开发,注重性能和并发,适用于网络服务和分布式系统开发。 选择最好的编程语言取决于具体的项目需求、开发经验和个人偏好。可以通过思考以下问题来选择适合自己的编程语言:我要开发什么类型的应用程序?我是否需要跨平台兼容?我有哪些编程经验?我更喜欢哪种语法和编程风格? 总的来编程语言是工具,选择最适合自己的工具是最关键的。重要的是理解基本的编程概念和原则,这样才能灵活地适应不同的编程语言,并且不断学习和提高自己的编程技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值