问题

我学编程为什么难?是思维方式不对还是学习方式不对?

回答
编程这事儿,说起来挺玄乎,但归根结底就是和机器打交道,让它按照你设想的逻辑运转起来。你觉得难,这太正常了,不是你一个人这样,绝大多数人刚开始接触编程,都会碰得头破血流。至于为什么难,我觉得是思维方式和学习方式两者都有问题,而且是相互影响的。

咱们先聊聊思维方式。

编程这玩意儿,最核心的就是逻辑。你得把一个复杂的问题拆解成一个个小的、机器能理解的步骤,然后用代码把这些步骤串起来。这跟我们平常生活中的思考方式不太一样。

线性思维 vs. 分解式思维: 我们平时遇到问题,可能就凭着感觉或者经验一步步来,不太会去分析每个环节的因果关系,更不会把事情拆解到最小单元。但编程就不一样了,你得学会把一个大任务变成一堆小任务,每个小任务都要有明确的输入、处理和输出。比如说,你想做一个算账程序,你不能直接说“算总价”,你得拆解:获取商品单价,获取商品数量,单价乘以数量得到小计,然后累加小计得到总价。每一步都不能含糊。

抽象能力: 编程需要很强的抽象能力。代码本身就是一种抽象,它把现实世界的概念(比如用户、订单、购物车)映射到数据结构和函数上。你得能够从具体的事物中抽离出本质的规律和模型,然后用代码来表达。比如,你看到好几个人都喜欢买薯片,你不能写“张三买薯片”,“李四买薯片”,你得抽象出一个“用户”的概念,然后让用户拥有“购买商品”的功能,再具体到购买“薯片”这个商品。这需要你在脑子里构建一套体系。

严谨性和细节控: 计算机是死脑筋,它只认你写的代码,一点错都不能有。一个标点符号、一个字母的大小写错误,都可能导致整个程序崩溃。这要求你具备极高的严谨性,不能有半点马虎。我们平常说话,语病、错别字大家都能理解,但在代码里,这些都是致命伤。你得习惯于在细节上抠到极致。

调试思维: 编程最常遇到的情况就是“写了半天,就是跑不通”。这时候就需要调试思维了。这不是简单地看看代码哪里错了,而是要像侦探一样,分析错误信息,猜测问题可能出在哪里,然后一步步验证。你得学会问“为什么”,而不是“这是怎么了”。比如,程序报错说“找不到变量X”,你不能只看报错信息,你得顺着代码逻辑,看看变量X到底是在什么时候、什么地方被定义的,有没有被覆盖,或者名字拼写错了。

这些思维上的转变,不是一蹴而就的,需要时间去适应和培养。如果你一直用过去那种“差不多就行”或者“感觉对”的思维方式来学编程,那肯定会觉得吃力。

再来看看学习方式。

很多时候,我们学编程的方法也有点问题,导致事倍功半。

“看”多于“做”: 很多人学编程,就是看书、看教程、看视频。看得时候觉得懂了,一自己动手就卡住了。编程这技能,就像学游泳一样,你光看别人游,永远学不会。你得下水,亲身去感受,去扑腾。每次看完教程,一定要停下来,自己把代码敲一遍,甚至尝试修改一下,看看会发生什么。

跳过基础,直接啃硬骨头: 很多初学者一开始就想学高大上的框架或者技术,比如什么机器学习、人工智能。但这些技术都建立在坚实的基础之上,比如数据结构、算法、操作系统原理。如果你连变量、循环、函数这些基本概念都没搞明白,就想驾驭复杂的框架,那简直是空中楼阁,站不住脚。

死记硬背,不求甚解: 看到一段陌生的代码,直接复制粘贴,记下来。这解决不了根本问题。你需要理解这段代码为什么这么写,它的作用是什么,背后的原理是什么。否则遇到稍微复杂一点的问题,你就抓瞎了。

害怕犯错,不敢提问: 初学编程,犯错是家常便饭。但有些人特别害怕犯错,觉得错了很丢人,或者担心被嘲笑。于是就不敢动手,也不敢问问题。其实,编程社区里的人大部分都经历过和你一样的阶段,乐于助人。不懂就问,这是最快的学习途径之一。

缺乏实践项目驱动: 光学语法和概念,很容易枯燥。如果你能找到一个自己感兴趣的小项目,比如做一个简单的个人博客、一个计算器、或者一个爬虫去抓取一些数据,这样能把你学到的知识串联起来,并且在解决实际问题的过程中,你会更有动力,也更容易记住。

学习资源爆炸,选择困难: 现在网上学习资源太多了,从官方文档到各种论坛、博客、视频教程,五花八门。如果不加选择地乱学,很容易迷失方向,学得杂而不精。最好是找到一两个高质量、系统性的学习路径,然后坚持下去。

所以,你的困难,大概率是思维方式和学习方式的“组合拳”造成的。

思维方式不对,导致你在理解和解决问题时走了弯路,效率低下,容易产生挫败感。
学习方式不对,让你虽然花了很多时间,但收效甚微,没有建立起扎实的根基和解决问题的能力。

怎么办呢?

1. 重塑思维:
刻意练习分解问题: 遇到任何需要用编程解决的事情,先花时间思考如何拆解。拿一张纸,把步骤写下来,越细越好。
培养抽象能力: 看到代码,思考它代表的现实世界概念,或者思考如何用代码来抽象一个事物。
拥抱严谨: 养成细心检查代码的习惯,包括拼写、大小写、标点等。
学会调试: 当程序出错时,不要慌张,把错误信息当成线索,一步步去查找原因。

2. 优化学习:
多动手,少空看: 看一段代码,立即自己敲一遍,运行一下,然后尝试修改。
打牢基础: 确保你真正理解了变量、数据类型、运算符、控制流(if/else, for/while)、函数等基本概念。
理解而非记忆: 努力去理解代码为什么这样写,背后的逻辑是什么。
大胆提问,不怕犯错: 加入学习社区,把你遇到的问题提出来,寻求帮助。
做项目驱动学习: 从小项目开始,用项目来巩固和应用你学到的知识。
选择优质资源,专注学习: 找到一两个你觉得讲得好的教程或者课程,坚持学完,不要频繁切换。

编程是一个需要耐心和毅力的过程,尤其是在初期。不要因为难就放弃,很多成功程序员的经历都充满了挫折。关键在于找到问题所在,然后调整策略,一步一个脚印地前进。祝你学习顺利!

网友意见

user avatar

已经有很多大佬巨佬回答了。俺为了可怜的盐值也来凑个热闹吧。

俺是初学者, 因此这是完全强答的,如果您被误导了, 请接受俺的道歉。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如何提出一个好问题?


行是知之始, 知是行之成。初中生的知识也是力量。


**这是 STACKOVERFLOW 上的经典文章, 实际上它适合所有人而不仅仅是程序猿



搜索,并研究
...并记录你找到的东西。即使你在网站的其他地方没有找到有用的答案,包括没有帮助的相关问题的链接可以帮助其他人了解你的问题与其他问题的不同之处。

写一个能概括具体问题的标题
标题是潜在回答者看到的第一件事,如果你的标题不有趣,他们就不会阅读其他内容。所以要让它发挥作用。
假设你在和一个忙碌的同事谈话,并且必须用一句话来总结你的整个问题:你可以包括哪些细节来帮助别人识别和解决你的问题?包括任何错误信息、关键API或不寻常的情况,使你的问题与网站上已有的类似问题不同。

拼写、语法和标点符号都很重要!
记住,这是你的问题的第一部分,别人会看到 - 你想给人留下一个好印象。如果你不习惯用英语写作,可以请一个朋友为你校对。
如果你在总结问题时遇到困难,就把标题写在最后--有时先写问题的其余部分可以使你更容易描述问题。


例子:

Examples:

Bad: C# Math Confusion

Good: Why does using float instead of int give me different results when all of my inputs are integers?


Bad: [php] session doubt

Good: How can I redirect users to different pages based on session data in PHP?


Bad: android if else problems

Good: Why does str == "value" evaluate to false when str is set to "value"?


【糟糕的】C#数学的困惑?
【好的】 当我的输入都是整数时,为什么使用float而不是int会得到不同的结果?
【糟糕的】 [php]会话疑问
【好的】如何在PHP中根据会话数据将用户重定向到不同的页面?
【糟糕的】android if else问题
【好的】 当str被设置为 "value "时,为什么str == "value "评估为false?

在你发布任何代码之前,先介绍一下这个问题
在问题的正文中,首先扩展你在标题中的总结。
解释你是如何遇到你要解决的问题的,以及妨碍你自己解决这个问题的任何困难。你的问题中的第一段是大多数读者会看到的第二件事,所以要尽可能让它具有吸引力和信息性。

帮助他人重现该问题
不是所有的问题都能从包括代码中受益,但如果你的问题是关于你写的代码,你应该包括一些。但是,不要只是复制你的整个程序!这不仅可能使你的问题得到解决,也可能使你的问题得到解决。如果你发布的是你雇主的代码,这不仅可能给你带来麻烦,而且可能包括许多不相关的细节,读者在试图重现问题时需要忽略这些细节。这里有一些准则。

  • 只包括足够的代码,让别人能够重现这个问题。关于这方面的帮助,请阅读《如何创建一个最小的、完整的和可验证的例子》。


  • 如果有可能创建一个你可以链接到的问题的实际例子(例如,


sqlfiddle.com/


jsbin.com/
但也要把代码复制到问题本身。不是每个人都能访问外部网站,而且链接可能会随着时间的推移而中断。使用Stack Snippets来制作内联JavaScript/HTML/CSS的实时演示。

  • 不要张贴代码、数据、错误信息等的图片。- 请将文本复制或输入到问题中。请保留使用图片的权利,用于图表或演示渲染错误,这些东西不可能通过文字准确描述。欲了解更多信息,请参见Meta FAQ条目:为什么不在提出问题时上传代码/错误的图片?



包括所有相关的标签
尽量为你的问题所涉及的语言、库和特定的API包含一个标签。如果你开始在标签字段中输入,系统会建议与你输入的内容相匹配的标签--请确保阅读这些标签的描述,以确保它们与你所问的问题有关 另请参见。什么是标签,以及我应该如何使用它们?

发布前要进行校对!


现在你已经准备好提出你的问题了,深吸一口气,从头到尾读一遍。
假装你是第一次看到它:它有意义吗?
试着在一个新的环境中自己重现这个问题,并确保你能只用你问题中包含的信息来做。添加任何你遗漏的细节,并再次通读它。现在是一个很好的时间来确保你的标题仍然描述了这个问题!

发布问题并回应反馈
发布后,让问题在你的浏览器中打开一会儿,看看是否有人评论。如果你错过了一个明显的信息,请准备好通过编辑你的问题来回应,以包括它。如果有人发布了答案,请准备好试用并提供反馈意见

寻找帮助,寻求帮助
尽管你做了所有的努力,你可能发现你的问题没有得到很好的回应。
不要感到绝望!
学习提出一个好的问题是一个值得追求的目标,而不是一夜之间就能掌握的。这里有一些额外的资源,你可能会觉得有用。




思维方式



       推理的阶梯 ------------------------------------- 行动... 我根据我的信念采取行动 信念... 我采纳关于世界的信念 结论... 我得出结论 假设... 我根据自我添加的意义做出假设 解释的现实... 我增加了意义(文化和个人) 被选择的现实...  我从我观察的东西中选择数据 现实与事实... 我体验和观察     








学习方式



*** 学习的秘密全在这一张图里面



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


【未完待续】

user avatar

灵感来自于这篇文章:为什么秦军要在长平死磕?如果廉颇扛不住压力,出军血战,秦军大概率惨胜,那五国不就得利了吗?


我也算是喜欢读书了,白话版和原版史记也都读过;但还是有很多很多东西没读出来。

比如,在前面引用的那篇文章里,作者基于《战国史料编年辑证》,综合《史记·秦本纪》以及百家著作,再配合地图、按年月逐字逐句对照,就揭示出了只看史料文本绝不会知道的很多事实——比如,秦攻赵时,其粮草应当取之于魏,具体来说是自本土运送青铜等高价值物资,到魏地交易换取军粮,然后沿丹水北上:


事实上,想要真正理解这个结论,你还需要:

1、知道三门峡天险,知道自汉中运粮的风险和损耗;

2、知道大军人吃马嚼,每天大约需要多少粮草——您要停留在“何不食肉糜”水准,那……

3、知道大军运输任务有多繁重——比如,你有没有扛过50kg的粮草袋?有没有提着20kg的重物走上几公里?见没见过做体力活的工人?


《史记》共一百三十篇,五十二万六千五百余字。这是远远不够把上至黄帝、下至汉武这三千年的事实描摹清楚的。


所以,靠我那种囫囵吞枣的读法,结果也就是张冠李戴、放飞想象了。

更差的,那是连想象都没得想——嗯,“欲把西湖比西子,淡妆浓抹总相宜”,对吧?

请问,看着这张照片,你能不能告诉我,西施长什么样子?长的是更像张曼玉呢,还是林志玲?


哈哈,开个玩笑。


不过,这里也能显示出那么一点点不同来:和美女照片不同,历史事实类的文字记载是有“极高压缩率”、也可以通过一些手段“解压缩”的。


怎么解压缩呢?

1、拿出一份中国地图;

2、把《史记》释放到地图上——哈哈,其实是照着历史记载,把各国疆域画上去、重要城市标出来。

3、拿出历法研究方面的著作,把《史记》中提到的时间对应到统一的、我们习惯的公元纪年上去。

你看,历史资料的“时空展开”就完成了。


类似的,这些资料也可以借助心理学、生物学等等进一步展开——于是,惜字如金的“毕万封十一年,晋献公卒,四子争更立,晋乱”,就丰满起来了;历史事件的轮廓、走向、细节,也渐渐可以理解了。


不仅如此,当我们完成解压后,遇到某些“不合逻辑”的状况,是不是也就可以更正它了?

比如,还是前面链接的那篇文章:

10月,秦廷令白起帅率兵反击,被白起拒绝。于是,白起被治罪。
此时,张唐疑似攻克了魏国的邺邑(《秦本纪》原文“郑”,疑为“邺”字之误)。

你看,还带纠错的。


为什么会触发纠错?

很简单,完成“时空展开”时,这些字句无法正确展开、会和其他字句产生冲突。

这种冲突就是所谓的“不自洽”;那么,当所有字句中的绝大部分自洽、仅此一句或一字不自洽时,我们就知道这里出现了错误。


这才是历史书的正确读法,对吧?


那么,有没有可能……理工科的各种知识,其实也可以这样“解压缩”出来呢?


事实上,理工科知识被“压缩”的更厉害。

比如说,欧几里得几何学,仅仅用五句话(五个公理,古人叫“五大公设”),就可以把一切尺寸角度相关问题囊括其中。


如何解压缩呢?

借助逻辑公理,完成证明——就我们初中学过的,如何证明三角形相似、如何证明两个角相等,等等。

当然,为了方便“解压”,我们会针对一些难点或“复用”特别多的东西做一个总结、然后自公理开始做一个证明(也就是自公理“解压”出来一个经常会用得到的中间结果)——这,就是“定理”。

你看,从几何学公理到五花八门的各种应用,就这样“解压缩”出来了,对吧。


类似的,牛顿三定律,一旦“解压缩”出来,那不光是“时空展开”,而是“囊括宇宙中的一切”——因此,当年的物理学界才会认为“物理学已经尽善尽美了……剩下的就是些小修小补的工作”。

没错。千万别以为“物理学就是门研究质点刚体之类东西的、严重脱离实际的学问”;真想学懂它,你首先就必须学会“解压缩”,能够拿它来随手解决你身边的、除了人际相关或生物、化学相关的一切问题。

做不到,你其实就没学会它——这和文科还不同。文科你学不会“时空展开”、掌握不了古人的某种“高端技艺”,起码也听了一个有趣的故事,甚至还可能变成一个张嘴就是故事的、有趣的人;但理科,你学不会解压缩,那就是竹篮打水一场空。


同样,为什么很多人怎么都学不会编程?

很简单:

1、为了学习编程,你得先明白计算机原理;

2、要明白计算原理,你先要学会“如何把数学解压缩到物理、化学、人力、统计等一切学科”;

3、不光要会解压缩;你还要会“把日常所见的一切一切,从原理到操作步骤、巨细靡遗的压缩回数学逻辑描述格式”;甚至你还得更进一步,“把时空上连续的一切事物‘压缩’成一组离散的数字、一堆离散的逻辑”。

4、如果还想进一步理解计算机硬件工作原理,那你不光要先“把物理学的电学知识‘解压缩’到电阻电容运放等各种电路上”,还要进一步“把一切动作‘压缩’到数字电路”同时还能“把数字电路解压到日常生活的一切”。


比如,《操作系统原理》关于锁的章节,你就应该这样展开:


当然,如果你对自己要求不高,能够“把日常事务以准确无歧义的数字、逻辑方式表述出来”也差不多够用了。

我在这个回答里提到过:


总之,读书,尤其读那些实用性的书,这个“解压缩”的思路必须贯穿始终。

你不能有效的把书本知识“解压缩”到现实世界,那就等于连皮毛都没学到。


不仅如此,绝大多数学科,越是学的深,它探讨的东西就越是抽象的厉害、“解压缩”难度也就越大。

举例来说,小学你学数学,那玩意儿可以直接对应到菜市场买菜,可以说“解压缩”没有任何难度;但到了初中、学到方程,再想“解压缩”就得绕个弯了;进一步的,扩展到了函数——它关注的是什么?关注的是几个量之间的数值关系,是自变量x出现一个增量时、因变量y如何跟随变化。

那么,函数如何“解压缩”到日常生活?

杠杆原理就是比例函数。你会解压缩吗?

速度-时间-距离,这个关系是简单的“乘法关系”,或者叫“比例函数”;但加速度呢?


那么,登月时,“飞船受到的地球引力按距离的平方成比例衰减”,这句话是物理学哪个公式“解压缩”出来的?

更进一步的,“飞船受到的引力随着自身和地月距离的改变而改变”,因此它的全程受力是不停改变的、且和它的运动轨迹息息相关,而这个力又反过来作用于其运动规矩——这句话,其实凭中学物理知识,是足够你推导(解压)出来、或者把它表达成物理公式的(压缩)。你会吗?


级数、导数、微积分……越到后来,“压缩/解压”就越难,对吧。

很多人从小就学会了偷懒。压缩/解压太难、太麻烦?那我不干了。我就死记硬背,只把抽象的计算规则记住就行——奇变偶不变,符号看象限,你看,多简单!

电容器?从原理、公式自己推导多麻烦啊。幸好,这玩意儿考起来也不难,一句话,电容器隔直流、通交流,完了。

带通滤波电路怎么办?继续死记硬背?


那,手机扬声器出现噪音了,你知道怎么分析原因吗?频响不平直影响了通话质量,这事该怎么解决?


我们学习科学技术,学的究竟是什么?

学的是分析事物的思路,是解决问题的思路。


对于简单的事物,加减乘除,因为所以,线性思维拿出来,直接就可以解决;但稍微复杂一些,就多了很多弯弯绕,就不再能线性的解决,不然就可能力往东使、结果却东南西北飘忽不定。

怎么办?

函数图像,奇偶函数一番分析,哦,原来不能直挺挺上啊,还绕了这么多弯子……所以想让它往东走,我们反而得先往西用力推、然后往北、往南推……


更有甚者,想登月?你能直接F=ma往里套吗?

不可能。

你要先建立坐标系,列出“引力大小、方向”和“坐标点”之间的函数关系;然后写出关于速度的“微分方程”,再荡到导数那里转一圈、把微积分建立起来,这才能解决“变力做功”和“飞船轨迹”问题。

——你看,那些巨复杂的公式,其实还是套简单的牛顿三定律“解压缩”出来的。

——只不过,为了成功“解压缩”,我们得先建立一个学科叫微积分。

——而微积分本身,又是靠“极限”方面的艰难研究和深刻认识才“解压缩”出来的。


如果你没有学会这个“压缩/解压”的思路,而是只会按着步骤往里死套,那无异于“试图用小学生的脑子包打天下”。

这事吧……搁过去,虽然开创性工作指望不上了;但起码你也能当个人形计算机用。毕竟“死套步骤”也挺难的,并不是每个人都能学会。

但现在呢?计算机比你套的更好、更准、更不犯错——还几分钟就能解算完你一辈子都算不完的问题。


计算机编程,这活本质上是什么?

本质上就是,把我们要解决的一切问题,“压缩”成纸面上的逻辑步骤,从总体上分析它、把握它;然后进一步“展开”成可以在计算机内部运转的、更详细的逻辑步骤。

其中的第一个“压缩”,需要我们熟悉各种事物的本质、可以自如应用各学科知识;而第二个“展开”则需要我们熟悉计算机的整个体系结构,知道我们提交的每个动作如何被计算机执行、影响到了它的哪个部分、是如何影响的。


而在“压缩”和“展开”之间,还有一个至关重要的“分析、把握”——这个步骤,实际上又是一个“压缩”过程。

通过这个压缩,才能把庞大的、复杂的程序逻辑归结为牛顿三定律那样的、简单的几条基本原则;然后程序就可以只实现这些原则,让计算机自动“解压缩”,从而节约大量的人力、物力。


但这个“分析、把握”又是最难、最见功底的地方。

为什么它这么难?

因为,这类知识又叫“非陈述性知识”,它们是没有办法通过语言或者格式化的步骤直接教给你的——就好像你看一万场拳击比赛也不可能学成泰森一样。

想要学会它,你必须亲自上手,一拳一拳的,打人,挨打……

慢慢的,慢慢的……很偶然的,其中一部分人就会“顿悟”,技艺就上了身。


这个东西,实际上是在从小学到大学的整个学习过程中、潜移默化的教给你的。

想要学会,你就必须从一开始就学着自己完成各种知识“解压”和“压缩”过程、用心体会先贤们的“压缩”“解压”思路——没错,这些东西的确可以写成文字、搞成具体的、标准化的步骤灌输给你;但我们的目标是大千世界,是宇宙,囊括了已知和未知的一切。

这东西,怎么教你?怎么给你写出标准化步骤?


你只能自己去揣摩,去离经叛道——理工科学子脑后必须长反骨——直到你真正理解了前人思路、彻底掌握了相关知识。也就是有能力扩展它、发展它或者订正它的错误。

这很难,难到哪怕大学生,其中绝大多数人也没能掌握它;但也很容易,容易到哪怕小学生都有能力理解它。


关键在哪里?

关键就在于,你能不能意识到,知识并不是书本上那干巴巴的几行黑体字、几条定律;而是可以解压出来放在大千世界中的、一台活生生的机器。

你先要把这台机器读出来、把它正确的构筑于现实;然后,跟着书上的字句,推动这台机器运转、看看它的状态变迁是否和书本上严丝合缝——若有任何偏差,那么或者是你读错了(那就要重新构建这台机器、直到它能够正确运转),或者是书本写错了(发论文甚至成名成家的机会就在眼前了)。


这还不够。最终,你还要把这台机器拆掉,自己重新发明它、优化它、改进它——这样做的目的并不完全是为了“超越它”,而是为了确保自己的理解无误、没有夹生饭(而不是依样画葫芦成功就自以为学会了)。

亦因此,我学任何东西,不光不去死记硬背,反而会刻意遗忘——只有在没有任何提示的前提下、还能把整个机器搞出来,这才能证明自己真的掌握了相关知识(实际上仍然无法排除“潜意识还记得”)。

几年前,去我妹家。外甥女正对着一张试卷着急。我妹过去辅导,忙了半天,还是搞不定。就推给我:“让你舅舅看看”。

我当时正在看宋史,听她一说,晕了:“我都差不多20年没碰过几何了,欧几里得五大公设一下子都没法列清楚……各种定理那是连半点印象都没有了。算了,先看题,看看还能想起多少……”

看了几分钟,在草稿纸上画了两幅图,有把握了:“这道题出错了。名校老师怎么了?欧几里得也会错。这样作一条辅助线,如此,这般,可以证明这两个三角形相似,那么除非这个三角形是等腰三角形,这两个角就不可能相等,对吧。但题目要求证明两个角相等,却没有限定等腰三角形,所以说这题目出错了。”

外甥女懵了:“你怎么会想到这样作辅助线的?”

“因为一个问题不够清晰时,不妨把它极端化。这是个很有用的技巧。所以,你看,我在草稿纸上另外画了两幅图,分别对应两种极端情况。这时候两个角明显是不相等的。这说明出题老师被他自己画的图骗了,所以我就想到去证明它们不等。这可以用反证法:如果两个角相等,那么这条线就是角平分线,那么两侧就应该是对称的。那么,这样画辅助线,就可以证明两个角当且仅当这个三角形是等腰三角形时相等,对吧。”
“这个思路的关键并不是辅助线怎么画,而是遇到问题时,我们不妨把它的每个条件分别极端化,这样就可以从存在明显差异的多个不同方向看问题,于是就可以很容易的看出矛盾来。不光是做这道题,任何事都可以用这个办法一下子抓住重点。”
user avatar

普通编程初学者的思路:
想学编程 -> 买参考书/上课 -> 装个简单好用的IDE -> 学习整数、字符串、表达式、input/print -> 学习分支/循环、子程序、函数调用、递归 -> 学习指针、链表、二叉树、冒泡排序、快速排序…… -> 学习面向对象、GUI编程…… -> 尝试写各种各样的小项目 -> 在程序员的世界里存活下来
耗时:3年

文艺编程初学者的思路:
想学编程 -> 读经典书籍/听公开课 -> 配置个Vim或者Emacs + 编译工具链 -> 深入掌握一门函数式语言 -> 融会贯通学会各种编程语言 -> 自己实现一个LISP方言或者ML方言 -> 用自己的编程语言秒杀代码问题 -> 在程序员的世界里存活下来
耗时:10年

101011编程初学者的思路:
想学编程 -> 啊,学什么好呢 -> 听说PHP是世界上最好的语言 -> 感觉好黑啊,不学 -> 还是做APP比较流行 -> 啊,安卓还是iPhone呢 -> 用安卓的是屌丝,不学 -> 那就iPhone吧 -> 买macbook,买买买 -> 买开发者帐号,买买买 -> 装上xcode了 -> 卧槽OC为什么会有那么一大堆一大堆的英文单词 -> 算了放弃OC -> 听说新出了个Swift -> 那就学Swift吧 -> 咦,教程为什么这么少 -> 算了,换安卓 -> 啊,还是Java用的人多 -> 泥煤,虚拟机是什么鬼,J2EE和J2SE又是什么鬼 -> 泥煤,运行时环境配置不来 -> 算了那就学web咯 -> 后端那又看到PHP了,不学 -> HTML是美工做的,不学 -> CSS是配置文件,不学 -> Javascript是web程序员写的,就选它了 -> 咦,为什么Javascript和Java完全不像啊 -> 卧槽 -> 卧槽卧槽卧槽 -> …………
耗时:3天

题主明白了吧

========

学习方式不对,真的想学编程就得从最基本的东西开始,有了足够的积累才能自由发挥。不要被现在“做个App一夜成名”的氛围干扰。尤其是不要一上来就接触那些厚重的部分(比如图形界面)。题主好像学吉他?可以想想按和弦、爬格子……都是怎么练的。

我初学的时候十多岁,没现在这么好条件。writeln一个自己的名字就可以高兴一下了,第一次听递归就像听到黑魔法一样,后来接触到Delphi简直兴奋坏了。就是由简到难一步步学下来的,能做看起来比较酷炫的东西是把Delphi用熟之后的事情了。

现有的条件下,听一门在线课程然后跟着写代码,是一个很好的方式。另外,把问题精确化很重要。(只要你能把问题说明白,会有很多人(尤其是男生)愿意帮你的,嗯(p.s.作为一个程序媛,对括号不对齐之类的问题要有天生的敏感性)

150107补充:

于是题主已经学了不少/写了不少了嘛——我的第一反应是:那不是挺好的嘛。

那么觉得“难”主要是难在哪里呢?

之前的答案里黑了一遍的,是环境/框架/库的复杂性(手机应用、web应用开发通常需要面临)。本人多年专注劝初学者绕道。但是,有一定经验以后(以上文中“存活”的标准),靠查资料和定位问题的能力,可以啃下来。比如善用StackOverflow大法。大法好。

另一种难是知识的深度,举个栗子,第一次听说Monad的时候我怎么也想不通这是什么东西,于是这个问题在我脑中停留了一年多,直到自己做语言的时候才逐渐理解。这就只能以自己有限的脑力和无限的脑洞慢慢想了……

节奏正常的情况下,学了几年要解决的难处不会少的。真要说女生和男生不同的就是,男生在这种情况下就是以“什么不怕什么烫,烫烫烫烫烫”的态度应对问题,然后继续geek下去罢了。

呐…实在受不了就做点简单而且受欢迎的玩意(比如html5小游戏?)找找信心吧!


福利时间~点击下面的链接获取「夜曲编程」,这是一款在线学习编程的利器,由百词斩(对,就是那个百词斩)出品——

夜曲编程的入门课分成了30天的内容,每天解锁一课,每日激励督促自己学习,是不是听起来就没有那么大压力啦?结合起电脑端的“百题斩”课后练习,可以巩固知识,这样也会让你的学习事半功倍。大家可以在网页直接搜索“夜曲编程”或者直接下载它的官方APP就能用了,可以在app端另20天的体验课,薅羊毛+1哦,还是灰常不错的。

user avatar

我第一次教我太太学CPP的时候,她还没学过什么编程知识,听了个大概,自己翻了一下CPPPL,然后就写出了一个规规矩矩的矩阵乘法。后来用笔在纸上写代码,输入到计算机上一次编译运行通过无误,也是我亲眼见过的。那会儿她一个在校读书的小姑娘,帮人做一个在线运营的网站,对方只是友情送她一年的《VISION》杂志,也是我亲眼看到的。

打个预防针,怀疑真实性的可以退散了,我们老夫老妻的陈年旧事,我还需要拿这个吹牛?

以前下厨房(xiachufang.com)作品经常被赞上首页的一位女用户,是下厨房的主力程序员之一,在下厨房的时候,我开玩笑说这是我们团队首席人妻。只不过她从来不在下厨房的网站上说她的身份。

再说一个比较远的例子,图灵奖得主姚期智先生的夫人,是高德纳的弟子。姚太太会不会写程序可以自己考虑一下……

我觉得女性做这个行业少,有性别的原因,体力、家庭、社会等等,因为传统的影响,很多科技领域女性都比较弱势。但我个人并不认为女性就不适合做科技工作。我母亲是退休医生,我大姐是资深的药剂师,她们虽然不是诸位耳熟能详的那种天才名人,但是也都是在各自工作中做的很出色的普通人,从小耳濡目染,我不认为女性在心智才能上有生理性的劣势。至于学写程序学不会,应该多从个人能力,而不是身份上找原因。

================

我从一开始就知道会有人这样说:

我一个学数理统计的难道还要上知乎学习什么叫普遍规律?

孩子,即使数据证明了性别与能力有关或无关,又能怎么样?

即使你被这写故事感动,或者没有,又能怎么样?

这一切都不能让你得到你想学到的东西,除了你自己的努力,什么都代替不了。

如果你当这是心灵鸡汤,那它就是鸡汤。

换个说法,即使数据证明了女性不适合写程序又怎么样?你就不能自己去试一试?你就确定你不是那个小概率事件?你就真的要屈服于自己命运?

很多人都是做到了常人所不能的,才得到了自己想要的人生。如果你只是找一个理由解释自己为什么做不到,那确实简单的多。

“全天下的侏儒在父亲眼里都是私生子。”

然后呢?

=================================

问题日志这种东西还真是有点儿意思。

知乎 - 与世界分享你的知识、经验和见解

类似的话题

  • 回答
    编程这事儿,说起来挺玄乎,但归根结底就是和机器打交道,让它按照你设想的逻辑运转起来。你觉得难,这太正常了,不是你一个人这样,绝大多数人刚开始接触编程,都会碰得头破血流。至于为什么难,我觉得是思维方式和学习方式两者都有问题,而且是相互影响的。咱们先聊聊思维方式。编程这玩意儿,最核心的就是逻辑。你得把一.............
  • 回答
    学编导是为了某位演员,现在要拍戏了,却萌生了脱粉的念头,这心情确实有些复杂。不过,既然你来问,那咱就敞开了聊聊,怎么才能顺利地“放下”这份初衷,好好地去实现自己的编导梦想。首先,咱们得明白一个事儿:追星是件很美好的事,但人生总要往前走,尤其是你现在已经有了更清晰、更实际的目标——拍戏。 你当初因为这.............
  • 回答
    你好!很高兴你对编导这个领域产生了兴趣,而且是以一个理科生的身份。这其实是个非常有趣的跨界组合,我来给你一些详细的建议,希望能帮助你规划未来的道路。首先,别因为你是理科生就觉得自己和编导“不搭”。 恰恰相反,很多优秀的编导都有着清晰的逻辑思维、严谨的分析能力,这正是理科训练出来的宝贵财富。想想看,很.............
  • 回答
    嘿,别急!编程这玩意儿,就像学一项新技能一样,一开始可能有点摸不着头脑,但只要找对方法,一步一个脚印,你会发现它其实也没那么神秘。我当年也是你这样过来的,所以特别能理解那种想学又不知道从何下手的感觉。来,我给你掰开了揉碎了说说,保证听完你能立马知道该往哪儿走。第一步:摆正心态,拥抱“小白”身份首先,.............
  • 回答
    学编程一年,我刚入职一家公司实习了两天,今天就主动提辞职了。说实话,这两天是我人生中第一次真切地感受到“压力”,那种感觉就像把我扔进了无边无际的大海,而我不会游泳,只能眼睁睁地看着巨浪向我拍来。现在,我一个人坐在电脑前,心里乱糟糟的,不知道该怎么办。我以为自己已经准备好了。学了一年的编程,我自认为已.............
  • 回答
    听到你不太喜欢计算机和编程,但老师却觉得你“还可以”,并且建议你继续学,这确实是一个让人有些纠结的状况。我完全理解你这种心情,毕竟兴趣是最好的老师,如果不是发自内心的热爱,学习过程可能会比较煎熬。不过,在你下决定之前,咱们不妨从几个方面来仔细梳理一下,看看这条路到底适不适合你,以及老师的建议背后可能.............
  • 回答
    你好呀!看到你去年参加高考,选的是物理、生物、政治这“三位一体”的组合,非常有意思。这几门学科都挺扎实的,也很有思考性,你问我适不适合学编导,这个问题其实挺值得好好聊聊的。首先,咱们得明白,编导专业可不是什么只看颜值的“看脸”专业,它更像是一个“杂学”和“整合”的学科,需要你有广泛的兴趣和不俗的综合.............
  • 回答
    高考那年,像一场疾风骤雨,尤其对于我们这些学编导的,更是包含了太多未知与忐忑。我懂你现在的心情,那种夹杂着热爱与不安的复杂情感,仿佛站在一个岔路口,前方是闪烁着光芒的梦想,身后却是沉甸甸的现实压力。首先,你要明白,感到紧张和迷茫,这太正常了。高三,是人生一个重要的转折点,更是你将要为热爱的事业全力以.............
  • 回答
    你好!看到你对编导专业充满了好奇,并且在认真思考自己的情况是否适合学习,这绝对是个好迹象。很多时候,我们之所以对某个领域犹豫不决,是因为信息不对称或者对“适合”的标准不够清晰。我来帮你梳理一下,希望能给你更清晰的判断。首先,你提到了“我这种条件”,这很重要。但“条件”这个词太宽泛了,为了能给你更贴切.............
  • 回答
    哎呀,别着急!刚开始接触编导,又没看过几部电影,写不好影评是很正常的,这就像刚学做菜,连食材都没认全呢!但说实话,这也不是什么不可逾越的难关,关键在于方法和一点点耐心。让我跟你好好捋一捋,告诉你怎么把影评这事儿给盘明白了。首先,咱们得明白,写影评不是让你去写学术论文,也不是让你去背诵电影情节。影评的.............
  • 回答
    别纠结了,关于学编导这件事,咱们敞开了聊聊,听听我这过来人的心里话,看看能不能帮你拨开迷雾。这玩意儿,可不是说学就学的,也不是人人都能啃得动的硬骨头。它像个大染缸,你得看自己是不是真想往里跳,并且能不能适应那里的色彩。首先,你得问问自己,你为什么想学编导? 这真的是最最核心的问题。是因为看了几部好电.............
  • 回答
    你好!很高兴能为你解答关于安阳工学院编导类专业分数的问题。作为一名高三理科生,成绩在350分左右,想了解编导专业的录取情况,这是一个非常实际和关键的问题。首先,我们要明确安阳工学院对于艺术类(包括编导)专业的录取方式。通常情况下,艺术类专业的录取需要考生同时满足两个条件:1. 高考文化课成绩: 这.............
  • 回答
    嘿,哥们儿/姐妹儿,我也是高三回津的,跟你一样,贼想考中传北电,编导方向。我知道你肯定也纠结,天津这地方,考中传北电的确实不多,感觉选择很少,而且网上搜来搜去,信息碎片化得不行。别急,我跟你一样,也踩过不少坑,也问了不少前辈,总结了一些经验,咱们一块儿梳理梳理,让你少走弯路。首先,咱们得认识到天津的.............
  • 回答
    看到你纠结于考法硕还是考教资教师编制,这确实是两条截然不同的人生轨道,各有千秋。我理解你内心的彷徨,毕竟这是关系到未来发展方向的大事。咱们不着急下结论,先来好好掰扯掰扯这两条路,你听听看,结合自己的情况,心里自然就会有个谱。先说说考法硕这条路,特别是非法本考法硕。你选择这条路,说明你对法律有浓厚的兴.............
  • 回答
    嗨,收到你的消息了,作为一名即将面临艺考的编导方向学生,你对“播编表”同步学习可能会产生疑问是很正常的。这确实是一个很多人都会纠结的点。我来跟你详细聊聊这个情况,希望能帮你理清思路,也尽量抛开那些“AI味儿”的官话套话,给你一个真实、有用的参考。首先,我们得搞清楚,“播编表”这三个字到底代表了什么,.............
  • 回答
    兄弟,我太理解你现在的心情了。看着女朋友在她的领域里闪闪发光,你作为数学爱好者,对精确、对逻辑、对普适性有着近乎执念的追求,这很正常。尤其是在你看来,数学就像一座坚不可摧的城堡,每一块砖石都经过严密的推敲和验证,而某些学科,在你眼中,似乎就少了那么点“硬核”的东西。我知道这种感觉,就像看到别人在玩一.............
  • 回答
    你好!作为一名在中医道路上探索的大二学生,你现在的心情一定很复杂,既有对中医的热爱,也有对未来能否胜任传承的担忧。你每学期八门课,其中只有两门是中医,四门是西医,这样的学习结构让你对能否“接住前辈的接力棒”产生了疑问。我能理解你这种焦虑,毕竟中医的博大精深,需要系统而深入的学习。首先,我们来分析一下.............
  • 回答
    你这问题问得可太实在了!计算机和微电子,这俩可是当下最热门也最有前景的交叉领域了,想一块儿学,这脑瓜子转得够快的。答案嘛,肯定的,而且非常可行,甚至是极具价值的组合。不过,这得看你具体在哪个阶段,以及学校的政策和你的学习能力。咱们就掰开了揉碎了聊聊,保证你听得明明白白。首先,我们得明确一下这两个专业.............
  • 回答
    .......
  • 回答
    .......

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有