转跳到内容

关于准备初次尝试C++遇到的一系列问题与求助


推荐贴

标题似乎取得太正经了……:SS03: 但无所谓了已经:mx051:

 

emm …… 长话短说,目前我的高中计算机老师建议我尝试一下C++,然后上机尝试一下竞赛题目,如果成绩可观的话就去参加明年的竞赛。

:SS05:(其实是她上课进度太慢,我实在等不得就自己去翻了下Python文档看看,结果被看到就被建议去尝试一下了……)

 

:SS09:然后的话,目前我读着高一,的数学成绩大考都在130+分,平常的话就在120±5分的范围内浮动;物理不论怎么考都是在87±5分的范围内浮动

 

 

:45080532_SSA(1):我目前堪称了解过的编程语言就只有C#,具体而言就是学过 刘铁锰 的《C#语言入门详解》,

Javascript 了解过一点,但是不多,Python 的话目前学校在教,但进度很慢,几乎就和没学一样

 

 

:mx051:然后关于计算机科学/计算机数学/相关数学领域的东西的话,我只在科普视频里面草草领略过图灵机和数论这两个玩意儿,

然后就是初中教的冯·诺伊曼结构和只知道是“一堆线加一堆圈圈”的图论

 

:1151691507_SSB(4):然后教育资源上,我这里目前可以弄到课程有Udemy,油管和其他一些平台上的,然后电子书有Z-lib,文档有Mozila Developer Network和各大官方语言文档,至于论坛之类的完全没有。

学校本身没有设立相关的竞赛班,只是以”社团“的形式搞搞这个东西,资料课程什么全靠老师为爱发电,所以没有什么资源可言。

 

:YangTuo_391:而我现在的问题是:

我现在值得去尝试学习C++吗?我的水平能支撑起这条道路吗?在当下这么多”新潮流“下C++又能保持自己含金量和在一众编程语言里的优先地位吗?

我要怎么学C++?是竞赛有竞赛的路子,当程序员又有程序员的路子吗?而学习路径的大致方向和规划又是怎么样的?

目前适应与我这个阶段的学习资料有什么?比如哪些课程,哪些书籍是我这个阶段可以尝试的?那再往后面走呢?

我目前获取到的资源充足吗?课程、书籍、文档就足矣,还是需要再加入一些论坛、贴吧?还有什么网站、社区是我要接触、加入的?

 

:mx054:因为我也是第一次接触,所以我对这方面也很是没有头脑。所以我想在这里需求一下诸位大佬意见!

 

 

链接到点评
26 分钟前,Prion说道:

我要怎么学C++?是竞赛有竞赛的路子,当程序员又有程序员的路子吗?而学习路径的大致方向和规划又是怎么样的?

 

还是看你希望的方向。现在我回想起来最好的方式还是直接刷leetcode,语言特性或者算法本身想不明白也没关系,带着疑问看答案

26 分钟前,Prion说道:

目前适应与我这个阶段的学习资料有什么?比如哪些课程,哪些书籍是我这个阶段可以尝试的?那再往后面走呢?

 

https://en.cppreference.com/w/ 语言特性这里基本都有,但是不是教程

 

我想最好还是先尝试做点项目,之后再去看看effective modern c++之类的书

 

c++有个问题,这个行业里头很多技能不重叠。做音频,视频,自动驾驶,可能用的都是c++语言,但是除了这个语言以外的知识也很重要

链接到点评

首先我没学过c++,家里倒是有一本将近800页的'Visual C++ 2013入门经典',你可以找一找类似的书籍,个人来说我不觉得这类书很适合拿来初学,主要是太太太长了,但是如果你在学习过程中有什么实在搞不明白的地方,而stackoverflow上的答案你又觉得太复杂看不懂,那这种书就能提供不错的参考

以前学java我找的是一本叫learn java the hard way的电子书,特征是通过习题来让你一步步学。c++按理说也有类似的入门书,或者你直接上w3school上手也是一个方法。当然每个人学习方式不同,所以也不清楚这是否适合你,只是说这种方式更方便你‘有目的’的去学习各种东西,特别如果你是为了竞赛而且有例题可看的话,了解一些基础之后试着看看竞赛题,搜索答案并且学习大概就是最方便的了

编程的核心在于逻辑,不同语言差异最大的只是语法(当然也有定义变量是否要注明数据类型这种差异,但是某种意义上来说也算语法吧),所谓运行效率的差异往往是不同情况表现不同的,各种功能也都有先人做的library可用,所以你先学啥不是那么重要,虽然我觉得python语法是真的狗屎不要学

,由Dzero修改
链接到点评
1 小时前,Prion说道:

我现在值得去尝试学习C++吗?

让你学c++的老师也不一定会用:mx059: ,骗人学c++天打雷劈,c++是真的很难

c++目前就业方面已经用的不是很多了,可能以前的老项目用c++的屎山还在招人,我们公司原来的项目都是c++的,后面也都用java重构了。

目前光看就业方面,java比较多,面向就业的话还是java吧,当然我的看法还是片面的,c++市面上不缺入门的人,缺资深工程师

都是面向落地的编程,c++在这方面岗位比较少,待遇不错是真的

而且编程这种东西不管什么语言都百变不离其宗,精通一门语言后转成其他的也很好转

如果是编程入门建议是c,学点数据结构,再有兴趣就深挖c++

1 小时前,Prion说道:

我要怎么学C++?

leetcode刷题是成长最快的

如果觉得很无聊,建议是上github找感兴趣的仓库,看别人代码的成长远比自己慢慢琢磨好得多

开始尝试慢慢修改,对开发过程了解了,然后自己写点项目赚点star

1 小时前,Prion说道:

我目前获取到的资源充足吗?课程、书籍、文档就足矣,还是需要再加入一些论坛、贴吧?还有什么网站、社区是我要接触、加入的?

互联网加持下资源肯定充足

如果学习上有问题可以去v2ex.com论坛问问其他人,上面的人基本有问必答,多冷门的问题都有人帮你解决

 

最后的最后,这边建议高中生把精力都放到学习上呢

高考考得分数高点,报个好点学校的计算机专业,大学有大把时间让你研究算法和打比赛,而且你高一的数学成绩和你适合干程序员这两件事没有相关性

我认为高中生最有性价比的事情就是把高考成绩尽可能往上提(虽然不提倡应试教育,但这是事实,如果家境普通还是高考最有性价比),而且你就算现在打比赛也没什么用,高中生的比赛不会给你以后的简历镀金,只可能让你在同龄人之间有点优越感,对你找工作的帮助基本为0

,由emptysuns修改
链接到点评

能看懂Udemy和youtube的课程就已经够了,这些资料足够你打好基础了。提高部分基本分为两个方向,一个是实际应用一个是竞赛,竞赛就刷题,这没什么说的。但需要注意的是,刷题并不能提高你的实际应用能力,尤其是当项目规模稍微大一点,比如像一个RPG游戏这种大概2~3w行代码(不算基本库)的规格,基本就会抓瞎。实际应用能力只能跟着开源项目学,然后自己做一些小项目练习,熟悉面向对象的架构方式。

入门语言其实两个就够,一个是C++,一个是javascript。C++代表着强类型语言,javascript代表着动态类型语言,熟悉这两个其他基本都很容易上手,比如学完javascript再学python基本就很容易,学完C++再学java和C#也容易。

我个人是推荐udemy打基础,书籍辅助查阅,项目用于提高。udemy上的高分课程大多是有经验的前线人员授课,很多知识讲得通俗易懂,不像国内老师只有理论理解没有实践理解,讲出的东西自己都不懂还装懂。书籍知识虽然全,但文字先天的歧义性与信息传达效率问题,导致很多非常简单的问题常常需要长篇大论一番,又浪费时间学习效率又低,很多情况下一个图胜过千百文字,所以书籍适合查阅。项目就不说了,代码本身就是练的越多就越熟练。

,由sizzflior修改
链接到点评

我从小学开始搞信竞,但初中被薄纱后润了。

你是哪个高中?或者说你那个高中在全国排得上号吗?因为信息竞赛还是吃教师资源的。如果一般,我提议润。

再者,信息竞赛目前很吃亏,你在没拿到省一国一后备战高考,高考六科对于你来说完全是空白,数学会有涉及但不针对。但传统学科竞赛就不存在这问题,回来之后至少有一门是完全不用管的,加上学习方法也会不一样。

至于未来,只能说你如果选计算机应该可以前期爽(我听学长说的)

如果真要从零开始学的话,c++信息奥赛一本通应该是必备的,初赛练练就过,主要是学习模版,算法之类的,按着书的章节写,慢慢自然会上来,后期就多刷真题,洛谷力扣都可以。其他什么论坛之类的,顶多就是洛谷交流下题目,其他的完全没必要,有问题就去问老师或者熟练运用百度,99%都可以解决。

信息竞赛提高组应该不可能随便混混就能拿一等奖的,到后期肯定要统一集训啥的,除非你真打算走这条路,不然纯纯浪费时间。我记得现在上机应该只有c++了,前几年java,python就被取消了吧。

最后,润吧,这玩意你自己有兴趣搞搞就行了。现实和竞赛也完全不是一个东西,只是有共通点。我现在偶尔做点自己玩玩的小程序,竞赛那些东西有用,但不多

链接到点评

我有近十年的算法竞赛经历,高中成绩一般但也在 NOI 获过奖,在大学的竞赛中获得过国内比赛的前几名,参加过世界总决赛。自认为是坛里对 cp 是很有发言权的。

 

首先,需要有一个 overview,懒得展开了,直接说结论:

高中阶段如果参加竞赛,几乎一定是应该以升学为目的的。如果是纯兴趣性质的了解,高中阶段用打游戏的态度来学编程就好了。在这种情况学自己感觉有趣的东西就行,不用功利。

1. 如果你的目标不是以后从事 cs 行业,那好好高考。

2. 如果你志在 cs,但不能做到学有余力(至少有高中少上半年然后可以裸分上个吉大这种学校的水平吧),那同样好好高考。

3. 否则,可以尝试以为未来提供帮助为目的学习编程。这种情况下,要学习的就是算法竞赛。考虑就业的视角是没有意义的。

 

大概回答一下问题:

我现在值得去尝试学习C++吗?

对于算法竞赛,语言只是解题的工具。在绝大多数选手手中,cpp 都是 c+stl 而已。语言特性不是必须的,即使有意识的去学习现代 cpp,也只能应用到极少的一部分。

所以,如果你选择算法竞赛,不需要考虑 why cpp 这个问题。未来切换主要使用语言也只需要很小的学习成本而已。

稍微说多一句,即使对于实际工程而言,语言也只是学习成本,不是难以跨越的门槛。

我要怎么学C++?

你学的 & 要学的不是 c++,是算法竞赛。所以你要学的是各种数据结构和算法,是并查集,树状数组,线段树,平衡树...

学习路径:熟练基础语法 —— 学习基础算法/数据结构 —— 奖项驱动,根据成绩决定是停止学习还是继续学习更复杂的算法和数据结构

目前适应与我这个阶段的学习资料有什么?

我个人整个学习过程是没读过任何 cp 相关的书籍的。OJ(openjudge)刷题 + 不会的东西上网搜别人写的博客就足够。但这件事很小马过河,我不多评价。

我只说一点:一定要注意学习资料的质量。找有丰富经验的人帮忙鉴别是最好的,自己鉴别的话,有一个很简单的方法:

如果这份材料格式美观,一般质量不会太差。

我目前获取到的资源充足吗?课程、书籍、文档就足矣,还是需要再加入一些论坛、贴吧?还有什么网站、社区是我要接触、加入的?

算法竞赛在高中五大学科竞赛中,最特别的一点就在于有丰富的自学资源 + 很多选手都是自学出身的。

网站和社群的话:

1. 洛谷:最大的中文社群,质量在平均线以上但讨论氛围很差。社群可以接触但不要投入太多,学习是第一要务。

2. codeforces:全球最大社群,需要一点语言能力。题目和比赛质量高,各种难度梯度都有。

3. atcoder:日本人的 OJ,功能很简洁,没有社群功能。题目很锻炼思维,各种难度梯度都有。

 

最后一点就是劝进/劝退:

你可以说一下你在哪个省,算法竞赛地区发展差异极大。如果在弱省的话,是有付出较小学习成本获得一些性价比很高的奖项的机会的。强省就别想了。

,由l1ll5修改
链接到点评

:YangTuo_4V:语言只是一种工具,语言也大同小异,是用来解决问题的。

:YangTuo_4V:至于算法,其实在大多数应用开发上不太用得上。做一些比较大规模、或者底层的东西才需要。

喜欢什么就去做什么就好,兴趣是最好的老师。

猫猫Cat穿越到里区后,遇见了一只九尾狐狸,完成了她交付的汉化任务后被抚摸。4节操

链接到点评
1 小时前,l1ll5说道:

最后一点就是劝进/劝退:

你可以说一下你在哪个省,算法竞赛地区发展差异极大。如果在弱省的话,是有付出较小学习成本获得一些性价比很高的奖项的机会的。强省就别想了。

emm…… 直接就没有计算机相关产业:1151691507_SSB(4): 在我们这计算机专业是没法在企业找到工作的

链接到点评
于 2024/5/1 于 AM12点41分,Prion说道:

emm…… 直接就没有计算机相关产业:1151691507_SSB(4): 在我们这计算机专业是没法在企业找到工作的

和产业发展没关系,和教育水平有关系。强省和弱省的区别是有多少学校形成了从初中/小学开始培养竞赛选手的产业链条。

算法竞赛和工业界是两回事。算法竞赛水平对在工业界找工作有帮助,但也只是间接关系。

链接到点评
于 2024/4/30 于 PM7点35分,Prion说道:

标题似乎取得太正经了……:SS03: 但无所谓了已经:mx051:

 

emm …… 长话短说,目前我的高中计算机老师建议我尝试一下C++,然后上机尝试一下竞赛题目,如果成绩可观的话就去参加明年的竞赛。

:SS05:(其实是她上课进度太慢,我实在等不得就自己去翻了下Python文档看看,结果被看到就被建议去尝试一下了……)

 

:SS09:然后的话,目前我读着高一,的数学成绩大考都在130+分,平常的话就在120±5分的范围内浮动;物理不论怎么考都是在87±5分的范围内浮动

 

 

:45080532_SSA(1):我目前堪称了解过的编程语言就只有C#,具体而言就是学过 刘铁锰 的《C#语言入门详解》,

Javascript 了解过一点,但是不多,Python 的话目前学校在教,但进度很慢,几乎就和没学一样

 

 

:mx051:然后关于计算机科学/计算机数学/相关数学领域的东西的话,我只在科普视频里面草草领略过图灵机和数论这两个玩意儿,

然后就是初中教的冯·诺伊曼结构和只知道是“一堆线加一堆圈圈”的图论

 

:1151691507_SSB(4):然后教育资源上,我这里目前可以弄到课程有Udemy,油管和其他一些平台上的,然后电子书有Z-lib,文档有Mozila Developer Network和各大官方语言文档,至于论坛之类的完全没有。

学校本身没有设立相关的竞赛班,只是以”社团“的形式搞搞这个东西,资料课程什么全靠老师为爱发电,所以没有什么资源可言。

 

:YangTuo_391:而我现在的问题是:

我现在值得去尝试学习C++吗?我的水平能支撑起这条道路吗?在当下这么多”新潮流“下C++又能保持自己含金量和在一众编程语言里的优先地位吗?

我要怎么学C++?是竞赛有竞赛的路子,当程序员又有程序员的路子吗?而学习路径的大致方向和规划又是怎么样的?

目前适应与我这个阶段的学习资料有什么?比如哪些课程,哪些书籍是我这个阶段可以尝试的?那再往后面走呢?

我目前获取到的资源充足吗?课程、书籍、文档就足矣,还是需要再加入一些论坛、贴吧?还有什么网站、社区是我要接触、加入的?

 

:mx054:因为我也是第一次接触,所以我对这方面也很是没有头脑。所以我想在这里需求一下诸位大佬意见!

 

 

讲真,高中的话想学就学,正常学业成绩不要落下就行。

高中别考虑这么多,想学就先学了再说,到时候不想深入了退坑也没什么损失,你要是走计算机的话这些东西都是有用的,就算你不用C++,对应的知识都有帮助。

总的来说,要学这个东西不难,你不是在干什么开天辟地的大事,拿一本书看看基础,会敲命令行之后再去想象自己想拿C++做什么,想到了之后就尝试去往那个方向做。这不是玩游戏也不是追星,不用在一开始就考虑混圈,高中甚至不需要考虑职业规划,等你学好基础之后自然就知道这条路的价值大不大了,那时候想再换也不晚。

IceFoxy在前往新手村的路上遇见了劫道的风神烈破,收取过路费-4节操

链接到点评
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款